diff options
author | Jun Wako <wakojun@gmail.com> | 2015-04-24 16:26:14 +0900 |
---|---|---|
committer | Jun Wako <wakojun@gmail.com> | 2015-04-24 16:26:14 +0900 |
commit | 1fe4406f374291ab2e86e95a97341fd9c475fcb8 (patch) | |
tree | 1be0e16b4b07b5a31ea97ec50a9eb13a288c3d27 /tool/mbed/mbed-sdk/libraries/tests | |
parent | a20ef7052c6e937d2f7672dd59456e55a5c08296 (diff) |
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
b9e0ea0 Merge commit '7fa9d8bdea3773d1195b04d98fcf27cf48ddd81d' as 'tool/mbed/mbed-sdk'
7fa9d8b Squashed 'tool/mbed/mbed-sdk/' content from commit 7c21ce5
git-subtree-dir: tmk_core
git-subtree-split: b9e0ea08cb940de20b3610ecdda18e9d8cd7c552
Diffstat (limited to 'tool/mbed/mbed-sdk/libraries/tests')
193 files changed, 46647 insertions, 0 deletions
diff --git a/tool/mbed/mbed-sdk/libraries/tests/KL25Z/lptmr/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/lptmr/main.cpp new file mode 100644 index 0000000000..170fc46987 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/lptmr/main.cpp @@ -0,0 +1,48 @@ +#include "mbed.h" + +volatile unsigned int ticks = 0; + +DigitalOut led(LED_BLUE); + +extern "C" void lptmr_isr(void) { + // write 1 to TCF to clear the LPT timer compare flag + LPTMR0->CSR |= LPTMR_CSR_TCF_MASK; + + ticks++; +} + +int main() { + /* Clock the timer */ + SIM->SCGC5 |= SIM_SCGC5_LPTMR_MASK; + + /* Reset */ + LPTMR0->CSR = 0; + + /* Compare value */ + LPTMR0->CMR = 1000; + + /* Enable interrupt */ + LPTMR0->CSR |= LPTMR_CSR_TIE_MASK; + + /* Set interrupt handler */ + NVIC_SetVector(LPTimer_IRQn, (uint32_t)lptmr_isr); + NVIC_EnableIRQ(LPTimer_IRQn); + + /* select LPO for RTC and LPTMR */ + LPTMR0->PSR = LPTMR_PSR_PCS(3); // ERCLK32K -> 8MHz + LPTMR0->PSR |= LPTMR_PSR_PRESCALE(2); // divide by 8 + + /* Start the timer */ + LPTMR0->CSR |= LPTMR_CSR_TEN_MASK; + + led = 0; + while (true) { + wait(1); + led = 1; + printf("%d\n", ticks); + + wait(1); + led = 0; + printf("%d\n", ticks); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/KL25Z/pit/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/pit/main.cpp new file mode 100644 index 0000000000..3b13af2730 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/pit/main.cpp @@ -0,0 +1,48 @@ +#include "mbed.h" + +extern "C" { +volatile uint32_t msTicks; + +void SysTick_Handler(void) { + msTicks++; +} + +void Delay(uint32_t dlyTicks) { + uint32_t curTicks; + + curTicks = msTicks; + while ((msTicks - curTicks) < dlyTicks); +} +} + +int main() { + SysTick_Config(SystemCoreClock / 1000); + + SIM->SCGC6 |= SIM_SCGC6_PIT_MASK; // Clock PIT + PIT->MCR = 0; // Enable PIT + + // Timer 1 + PIT->CHANNEL[1].LDVAL = 0xFFFFFFFF; + PIT->CHANNEL[1].TCTRL = 0x0; // Disable Interrupts + PIT->CHANNEL[1].TCTRL |= PIT_TCTRL_CHN_MASK; // Chain to timer 0 + PIT->CHANNEL[1].TCTRL |= PIT_TCTRL_TEN_MASK; // Start timer 1 + + // Timer 2 + PIT->CHANNEL[0].LDVAL = 0xFFFFFFFF; + PIT->CHANNEL[0].TCTRL = PIT_TCTRL_TEN_MASK; // Start timer 0, disable interrupts + + DigitalOut led(LED_BLUE); + while (true) { + Delay(1000); + led = !led; + + uint64_t ticks = (uint64_t)PIT->LTMR64H << 32; + ticks |= (uint64_t)PIT->LTMR64L; + printf("ticks: 0x%x%x\n", (uint32_t)(ticks>>32), (uint32_t)(ticks & 0xFFFFFFFF)); + + ticks = (~ticks) / 24; + uint32_t us = (uint32_t)(0xFFFFFFFF & ticks); + + printf("us : 0x%x\n", us); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/KL25Z/rtc/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/rtc/main.cpp new file mode 100644 index 0000000000..31d7e64d26 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/rtc/main.cpp @@ -0,0 +1,72 @@ +#include "mbed.h" + +DigitalOut status_led(LED_BLUE); +DigitalOut error_led(LED_RED); + +extern "C" void RTC_IRQHandler(void) { + error_led = 0; +} + +extern "C" void RTC_Seconds_IRQHandler(void) { + error_led = 0; +} + +extern "C" void HardFault_Handler(void) { + error_led = 0; +} + +extern "C" void NMI_Handler_Handler(void) { + error_led = 0; +} + +void rtc_init(void) { + // enable the clock to SRTC module register space + SIM->SCGC6 |= SIM_SCGC6_RTC_MASK; + SIM->SOPT1 = (SIM->SOPT1 & ~SIM_SOPT1_OSC32KSEL_MASK) | SIM_SOPT1_OSC32KSEL(0); + + // disable interrupts + NVIC_DisableIRQ(RTC_Seconds_IRQn); + NVIC_DisableIRQ(RTC_IRQn); + + // Reset + RTC->CR = RTC_CR_SWR_MASK; + RTC->CR &= ~RTC_CR_SWR_MASK; + + // Allow write + RTC->CR = RTC_CR_UM_MASK | RTC_CR_SUP_MASK; + + NVIC_EnableIRQ(RTC_Seconds_IRQn); + NVIC_EnableIRQ(RTC_Seconds_IRQn); + + printf("LR: 0x%x\n", RTC->LR); + printf("CR: 0x%x\n", RTC->CR); + wait(1); + if (RTC->SR & RTC_SR_TIF_MASK){ + RTC->TSR = 0; + } + RTC->TCR = 0; + + // After setting this bit, wait the oscillator startup time before enabling + // the time counter to allow the clock time to stabilize + RTC->CR |= RTC_CR_OSCE_MASK; + for (volatile int i=0; i<0x600000; i++); + + //enable seconds interrupts + RTC->IER |= RTC_IER_TSIE_MASK; + + // enable time counter + RTC->SR |= RTC_SR_TCE_MASK; + + +} + +int main() { + error_led = 1; + rtc_init(); + + while (true) { + wait(1); + status_led = !status_led; + printf("%u\n", RTC->TSR); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/all/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/all/main.cpp new file mode 100644 index 0000000000..a3794f1005 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/all/main.cpp @@ -0,0 +1,19 @@ +#include "mbed.h" + +DigitalOut out(p5); +#if defined(TARGET_LPC1114) +AnalogIn in(p20); +#else +AnalogIn in(p19); +#endif + +volatile float w, x, y, z; +int main() { + while(1) { + z = x * y / w; + printf("Hello World %d %f\n", out.read(), z); + if(in > 0.5) { + out = !out; + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/cenv/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/cenv/main.cpp new file mode 100644 index 0000000000..293cf4366d --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/cenv/main.cpp @@ -0,0 +1,8 @@ +#include "mbed.h" + +volatile int x, y, z; +int main() { + while(1) { + z = x * y; + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/float_math/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/float_math/main.cpp new file mode 100644 index 0000000000..b7f5566398 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/float_math/main.cpp @@ -0,0 +1,8 @@ +#include "mbed.h" + +volatile float w, x, y, z; +int main() { + while (1) { + z = x * y / w; + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/mbed/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/mbed/main.cpp new file mode 100644 index 0000000000..aa99784a3b --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/mbed/main.cpp @@ -0,0 +1,16 @@ +#include "mbed.h" + +DigitalOut out(p5); +#if defined(TARGET_LPC1114) +AnalogIn in(p20); +#else +AnalogIn in(p19); +#endif + +int main() { + while(1) { + if(in > 0.5) { + out = !out; + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/printf/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/printf/main.cpp new file mode 100644 index 0000000000..5121426a19 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/printf/main.cpp @@ -0,0 +1,5 @@ +#include "mbed.h" + +int main() { + printf("Hello World!"); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/data.cpp b/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/data.cpp new file mode 100644 index 0000000000..d946b36bc1 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/data.cpp @@ -0,0 +1,94 @@ +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +** Test input signal contains 1000Hz + 15000 Hz +** ------------------------------------------------------------------- */ + +float32_t testInput_f32_1kHz_15kHz[320] = +{ ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, +-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, +-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, +-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, +-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, +-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +}; + +float32_t refOutput[320] = +{ ++0.0000000000f, -0.0010797829f, -0.0007681386f, -0.0001982932f, +0.0000644313f, +0.0020854271f, +0.0036891871f, +0.0015855941f, +-0.0026280805f, -0.0075907658f, -0.0119390538f, -0.0086665968f, +0.0088981202f, +0.0430539279f, +0.0974468742f, +0.1740405600f, ++0.2681416601f, +0.3747720089f, +0.4893362230f, +0.6024154672f, +0.7058740791f, +0.7968348987f, +0.8715901940f, +0.9277881093f, ++0.9682182661f, +0.9934674267f, +1.0012052245f, +0.9925859371f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, -0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f +}; + diff --git a/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/main.cpp new file mode 100644 index 0000000000..f6bdb4b7ce --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/main.cpp @@ -0,0 +1,65 @@ +#include "arm_math.h" +#include "math_helper.h" +#include <stdio.h> + +#define BLOCK_SIZE 32 +#define NUM_BLOCKS 10 + +#define TEST_LENGTH_SAMPLES (BLOCK_SIZE * NUM_BLOCKS) + +#define SNR_THRESHOLD_F32 140.0f +#define NUM_TAPS 29 + +/* ------------------------------------------------------------------- + * The input signal and reference output (computed with MATLAB) + * are defined externally in arm_fir_lpf_data.c. + * ------------------------------------------------------------------- */ +extern float32_t testInput_f32_1kHz_15kHz[TEST_LENGTH_SAMPLES]; +extern float32_t refOutput[TEST_LENGTH_SAMPLES]; + +/* ------------------------------------------------------------------- + * Declare State buffer of size (numTaps + blockSize - 1) + * ------------------------------------------------------------------- */ +static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1]; + +/* ---------------------------------------------------------------------- + * FIR Coefficients buffer generated using fir1() MATLAB function. + * fir1(28, 6/24) + * ------------------------------------------------------------------- */ +const float32_t firCoeffs32[NUM_TAPS] = { + -0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f, + +0.0085302217f, -0.0000000000f, -0.0173976984f, -0.0341458607f, -0.0333591565f, + +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f, + +0.2229246956f, +0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f, + -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f, +0.0080754303f, + +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f +}; + +/* ---------------------------------------------------------------------- + * FIR LPF Example + * ------------------------------------------------------------------- */ +int main(void) { + /* Call FIR init function to initialize the instance structure. */ + arm_fir_instance_f32 S; + arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], BLOCK_SIZE); + + /* ---------------------------------------------------------------------- + * Call the FIR process function for every blockSize samples + * ------------------------------------------------------------------- */ + for (uint32_t i=0; i < NUM_BLOCKS; i++) { + float32_t* signal = testInput_f32_1kHz_15kHz + (i * BLOCK_SIZE); + arm_fir_f32(&S, signal, signal, BLOCK_SIZE); + } + + /* ---------------------------------------------------------------------- + * Compare the generated output against the reference output computed + * in MATLAB. + * ------------------------------------------------------------------- */ + float32_t snr = arm_snr_f32(refOutput, testInput_f32_1kHz_15kHz, TEST_LENGTH_SAMPLES); + printf("snr: %f\n\r", snr); + if (snr < SNR_THRESHOLD_F32) { + printf("Failed\n\r"); + } else { + printf("Success\n\r"); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/dsp/mbed/fir_f32/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/dsp/mbed/fir_f32/main.cpp new file mode 100644 index 0000000000..d5e98d58ee --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/dsp/mbed/fir_f32/main.cpp @@ -0,0 +1,53 @@ +#include "mbed.h" +#include "dsp.h" + +#define BLOCK_SIZE (32) +#define NUM_BLOCKS (10) +#define TEST_LENGTH_SAMPLES (BLOCK_SIZE * NUM_BLOCKS) + +#define SAMPLE_RATE (48000) + +#define SNR_THRESHOLD_F32 (50.0f) + +float32_t expected_output[TEST_LENGTH_SAMPLES]; +float32_t output[TEST_LENGTH_SAMPLES]; + +/* FIR Coefficients buffer generated using fir1() MATLAB function: fir1(28, 6/24) */ +#define NUM_TAPS 29 +const float32_t firCoeffs32[NUM_TAPS] = { + -0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f, + +0.0085302217f, -0.0000000000f, -0.0173976984f, -0.0341458607f, -0.0333591565f, + +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f, + +0.2229246956f, +0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f, + -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f, +0.0080754303f, + +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f +}; +#define WARMUP (NUM_TAPS-1) +#define DELAY (WARMUP/2) + +int main() { + Sine_f32 sine_1KHz( 1000, SAMPLE_RATE, 1.0); + Sine_f32 sine_15KHz(15000, SAMPLE_RATE, 0.5); + FIR_f32<NUM_TAPS> fir(firCoeffs32); + + float32_t buffer_a[BLOCK_SIZE]; + float32_t buffer_b[BLOCK_SIZE]; + for (float32_t *sgn=output; sgn<(output+TEST_LENGTH_SAMPLES); sgn += BLOCK_SIZE) { + sine_1KHz.generate(buffer_a); // Generate a 1KHz sine wave + sine_15KHz.process(buffer_a, buffer_b); // Add a 15KHz sine wave + fir.process(buffer_b, sgn); // FIR low pass filter: 6KHz cutoff + } + + sine_1KHz.reset(); + for (float32_t *sgn=expected_output; sgn<(expected_output+TEST_LENGTH_SAMPLES); sgn += BLOCK_SIZE) { + sine_1KHz.generate(sgn); // Generate a 1KHz sine wave + } + + float snr = arm_snr_f32(&expected_output[DELAY-1], &output[WARMUP-1], TEST_LENGTH_SAMPLES-WARMUP); + printf("snr: %f\n\r", snr); + if (snr < SNR_THRESHOLD_F32) { + printf("Failed\n\r"); + } else { + printf("Success\n\r"); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/export/mcb1700/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/export/mcb1700/main.cpp new file mode 100644 index 0000000000..bc1d2c6748 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/export/mcb1700/main.cpp @@ -0,0 +1,24 @@ +#include "mbed.h" + +BusOut leds(P1_28, P1_29, P1_31, P2_2, P2_3, P2_4, P2_5, P2_6); +AnalogIn in(P0_25); + +int main() { + while (true) { + float value = 8.0 * in.read(); + printf("analog in: %f\n\r", value); + + int led_mask = 0; + if (value > 0.5) led_mask |= 1 << 0; + if (value > 1.5) led_mask |= 1 << 1; + if (value > 2.5) led_mask |= 1 << 2; + if (value > 3.5) led_mask |= 1 << 3; + if (value > 4.5) led_mask |= 1 << 4; + if (value > 5.5) led_mask |= 1 << 5; + if (value > 6.5) led_mask |= 1 << 6; + if (value > 7.5) led_mask |= 1 << 7; + leds = led_mask; + + wait(1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.cpp b/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.cpp new file mode 100644 index 0000000000..5fc6e8568e --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.cpp @@ -0,0 +1,43 @@ +/* mbed Microcontroller Library - SPIHalfDuplex + * Copyright (c) 2010-2011 ARM Limited. All rights reserved. + */ +#include "SPIHalfDuplex.h" + +#if DEVICE_SPI + +#include "spi_api.h" +#include "pinmap.h" + +#define GPIO_MODE 0 +#define SPI_MODE 2 + +namespace mbed { + +SPIHalfDuplex::SPIHalfDuplex(PinName mosi, PinName miso, PinName sclk) : SPI(mosi, miso, sclk) { + _mosi = mosi; + _miso = miso; + _sbits = _bits; +} + +void SPIHalfDuplex::slave_format(int sbits) { + _sbits = sbits; +} + +int SPIHalfDuplex::write(int value) { + int t_bits = _bits; + pin_function(_mosi, SPI_MODE); + int ret_val = SPI::write(value); + if (ret_val != value) { + return -1; + } + format(_sbits, _mode); + pin_function(_mosi, GPIO_MODE); + ret_val = SPI::write(0x55); + format(t_bits, _mode); + pin_function(_mosi, SPI_MODE); + return ret_val; +} + +} // end namespace mbed + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.h b/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.h new file mode 100644 index 0000000000..14633b8555 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.h @@ -0,0 +1,85 @@ +/* mbed Microcontroller Library - SPIHalfDuplex + * Copyright (c) 2010-2011 ARM Limited. All rights reserved. + */ +#ifndef MBED_SPIHALFDUPLEX_H +#define MBED_SPIHALFDUPLEX_H + +#include "platform.h" + +#if DEVICE_SPI + +#include "SPI.h" + +namespace mbed { + +/** A SPI half-duplex master, used for communicating with SPI slave devices + * over a shared data line. + * + * The default format is set to 8-bits for both master and slave, and a + * clock frequency of 1MHz + * + * Most SPI devies will also require Chip Select and Reset signals. These + * can be controlled using <DigitalOut> pins. + * + * Although this is for a shared data line, both MISO and MOSI are defined, + * and should be tied together externally to the mbed. This class handles + * the tri-stating of the MOSI pin. + * + * Example: + * @code + * // Send a byte to a SPI half-duplex slave, and record the response + * + * #include "mbed.h" + * + * SPIHalfDuplex device(p5, p6, p7) // mosi, miso, sclk + * + * int main() { + * int respone = device.write(0xAA); + * } + * @endcode + */ + +class SPIHalfDuplex : public SPI { + +public: + + /** Create a SPI half-duplex master connected to the specified pins + * + * Pin Options: + * (5, 6, 7) or (11, 12, 13) + * + * mosi or miso can be specfied as NC if not used + * + * @param mosi SPI Master Out, Slave In pin + * @param miso SPI Master In, Slave Out pin + * @param sclk SPI Clock pin + * @param name (optional) A string to identify the object + */ + SPIHalfDuplex(PinName mosi, PinName miso, PinName sclk); + + /** Write to the SPI Slave and return the response + * + * @param value Data to be sent to the SPI slave + * + * @returns + * Response from the SPI slave + */ + virtual int write(int value); + + /** Set the number of databits expected from the slave, from 4-16 + * + * @param sbits Number of expected bits in the slave response + */ + void slave_format(int sbits); + +protected: + PinName _mosi; + PinName _miso; + int _sbits; +}; // End of class + +} // End of namespace mbed + +#endif + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.cpp b/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.cpp new file mode 100644 index 0000000000..7594e40473 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.cpp @@ -0,0 +1,52 @@ +/* mbed Microcontroller Library - SerialHalfDuplex + * Copyright (c) 2010-2011 ARM Limited. All rights reserved. + */ +#include "SerialHalfDuplex.h" + +#if DEVICE_SERIAL + +#include "pinmap.h" +#include "serial_api.h" + +namespace mbed { + +SerialHalfDuplex::SerialHalfDuplex(PinName tx, PinName rx) + : Serial(tx, rx) { + + gpio_init(&gpio, tx, PIN_INPUT); + gpio_mode(&gpio, PullNone); // no pull +} + +// To transmit a byte in half duplex mode: +// 1. Disable interrupts, so we don't trigger on loopback byte +// 2. Set tx pin to UART out +// 3. Transmit byte as normal +// 4. Read back byte from looped back tx pin - this both confirms that the +// transmit has occurred, and also clears the byte from the buffer. +// 5. Return pin to input mode +// 6. Re-enable interrupts +int SerialHalfDuplex::_putc(int c) { + int retc; + + // TODO: We should not disable all interrupts + __disable_irq(); + + serial_pinout_tx(gpio.pin); + + Serial::_putc(c); + retc = Serial::getc(); // reading also clears any interrupt + + pin_function(gpio.pin, 0); + + __enable_irq(); + + return retc; +} + +int SerialHalfDuplex::_getc(void) { + return Serial::_getc(); +} + +} // End namespace + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h b/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h new file mode 100644 index 0000000000..0ba13d38e5 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h @@ -0,0 +1,82 @@ +/* mbed Microcontroller Library - SerialHalfDuplex + * Copyright (c) 2010-2011 ARM Limited. All rights reserved. + */ +#ifndef MBED_SERIALHALFDUPLEX_H +#define MBED_SERIALHALFDUPLEX_H + +#include "platform.h" + +#if DEVICE_SERIAL + +#include "Serial.h" +#include "gpio_api.h" + +namespace mbed { + +/** A serial port (UART) for communication with other devices using + * Half-Duplex, allowing transmit and receive on a single + * shared transmit and receive line. Only one end should be transmitting + * at a time. + * + * Both the tx and rx pin should be defined, and wired together. + * This is in addition to them being wired to the other serial + * device to allow both read and write functions to operate. + * + * For Simplex and Full-Duplex Serial communication, see Serial() + * + * Example: + * @code + * // Send a byte to a second HalfDuplex device, and read the response + * + * #include "mbed.h" + * + * // p9 and p10 should be wired together to form "a" + * // p28 and p27 should be wired together to form "b" + * // p9/p10 should be wired to p28/p27 as the Half Duplex connection + * + * SerialHalfDuplex a(p9, p10); + * SerialHalfDuplex b(p28, p27); + * + * void b_rx() { // second device response + * b.putc(b.getc() + 4); + * } + * + * int main() { + * b.attach(&b_rx); + * for (int c = 'A'; c < 'Z'; c++) { + * a.putc(c); + * printf("sent [%c]\n", c); + * wait(0.5); // b should respond + * if (a.readable()) { + * printf("received [%c]\n", a.getc()); + * } + * } + * } + * @endcode + */ +class SerialHalfDuplex : public Serial { + +public: + /** Create a half-duplex serial port, connected to the specified transmit + * and receive pins. + * + * These pins should be wired together, as well as to the target device + * + * @param tx Transmit pin + * @param rx Receive pin + */ + SerialHalfDuplex(PinName tx, PinName rx); + +protected: + gpio_object gpio; + + virtual int _putc(int c); + virtual int _getc(void); + +}; // End class SerialHalfDuplex + +} // End namespace + +#endif + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/analog/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog/main.cpp new file mode 100644 index 0000000000..88f65ef042 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog/main.cpp @@ -0,0 +1,82 @@ +#include "test_env.h" + +#if defined(TARGET_K64F) | defined (TARGET_K22F) +AnalogIn in(A0); +AnalogOut out(DAC0_OUT); + +#elif defined(TARGET_KL25Z) +AnalogIn in(PTC2); +AnalogOut out(PTE30); + +#elif defined(TARGET_KL05Z) +AnalogIn in(PTB11); // D9 +AnalogOut out(PTB1); // D1 + +#elif defined(TARGET_KL46Z) +AnalogIn in(PTB0); +AnalogOut out(PTE30); + +#elif defined(TARGET_LPC1549) +AnalogIn in(A0); +AnalogOut out(D12); //D12 is P0_12, the DAC output pin + +// No DAC on these targets: +//TARGET_NUCLEO_F030R8 +//TARGET_NUCLEO_F070RB +//TARGET_NUCLEO_F103RB +//TARGET_NUCLEO_F401RE +//TARGET_NUCLEO_F411RE +#elif defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +AnalogIn in(A0); +AnalogOut out(A2); // DAC output + +#elif defined(TARGET_ARCH_MAX) +AnalogIn in(PA_0); +AnalogOut out(PA_4); + +#elif defined(TARGET_DISCO_F407VG) +AnalogIn in(PC_5); +AnalogOut out(PA_4); + +#elif defined(TARGET_DISCO_F429ZI) +AnalogIn in(PC_3); +AnalogOut out(PA_5); + +#elif defined(TARGET_MAX32600MBED) +AnalogIn in(AIN_7P); +AnalogOut out(AOUT_DO); + +#else +AnalogIn in(p17); +AnalogOut out(p18); + +#endif + +#define ERROR_TOLLERANCE 0.05 + +int main() { + bool check = true; + + for (float out_value=0.0; out_value<1.1; out_value+=0.1) { + out.write(out_value); + wait(0.1); + + float in_value = in.read(); + float diff = fabs(out_value - in_value); + if (diff > ERROR_TOLLERANCE) { + check = false; + printf("ERROR (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff); + } else { + printf("OK (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff); + } + } + + notify_completion(check); +}
\ No newline at end of file diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_in/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_in/main.cpp new file mode 100644 index 0000000000..157885df36 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_in/main.cpp @@ -0,0 +1,58 @@ +/* + * Version of the Analog test, + * Intended for use by devices which + * don't have analog out. + * + * Connect 'control' to pin 21 of an mbed LPC1768 + * Connect 'analogInput' to pin 18 of an mbed LPC1768 + * Connect 'TX/RX' to pins 27 and 28 of an mbed LPC1768 + * + * Upload: +*/ +#include "test_env.h" + +#define ERROR_TOLERANCE 0.05 + +#if defined(TARGET_LPC1114) + +AnalogIn analogInput(dp4); +DigitalOut control(dp5); +DigitalOut indicator(LED1); + +#else + +#endif + +uint8_t successes = 0; + +int main() { + control = 0; + + for (int i = 0; i < 10; i++) { + // Read value, + float expectedValue = i * 0.1; + float value = analogInput.read(); + + if (value > expectedValue + ERROR_TOLERANCE || value < expectedValue - ERROR_TOLERANCE) { + // Failure. + printf("ERROR (out:%.4f) - (in:%.4f) = (%.4f)"NL, expectedValue, value, fabs(expectedValue - value)); + } + else { + printf("OK (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff); + successes++; + } + + control = 1; + indicator = 1; + wait(0.1); + control = 0; + indicator = 0; + } + + if (successes > 8) { + notify_success(true); + } + else { + notify_success(false); + } +}
\ No newline at end of file diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_pot/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_pot/main.cpp new file mode 100644 index 0000000000..2f64bcbb6e --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_pot/main.cpp @@ -0,0 +1,29 @@ +#include "mbed.h" +#include "test_env.h" + +AnalogIn pot1(A0); +AnalogIn pot2(A1); + +#define TEST_ITERATIONS 20 +#define MEASURE_MIN 0.01 + +int main(void) { + MBED_HOSTTEST_TIMEOUT(10); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(AnalogIn potentiometer test); + MBED_HOSTTEST_START("analog_pot"); + + bool result = false; + float val1, val2; + + for (int i = 0; i < TEST_ITERATIONS; i++) { + val1 = pot1.read(); + val2 = pot2.read(); + + const char *succes_str = val1 > MEASURE_MIN || val2 > MEASURE_MIN ? "[OK]" : "[FAIL]"; + result = result || (val1 > MEASURE_MIN || val2 > MEASURE_MIN); + printf("Pot values %f, %f\r\n", val1, val2); + wait(0.001); + } + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/basic/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/basic/main.cpp new file mode 100644 index 0000000000..c4a50988bf --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/basic/main.cpp @@ -0,0 +1,9 @@ +#include "test_env.h" + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Basic); + MBED_HOSTTEST_START("MBED_A1"); + MBED_HOSTTEST_RESULT(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/blinky/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/blinky/main.cpp new file mode 100644 index 0000000000..3e6293939f --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/blinky/main.cpp @@ -0,0 +1,12 @@ +#include "mbed.h" + +DigitalOut myled(LED1); + +int main() { + while(1) { + myled = 1; + wait(0.2); + myled = 0; + wait(0.2); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/bus/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/bus/main.cpp new file mode 100644 index 0000000000..4ab61ac1f4 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/bus/main.cpp @@ -0,0 +1,19 @@ +#include "mbed.h" +#include "test_env.h" + +BusOut bus1(D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15); +BusOut bus2(A5, A4, A3, A2, A1, A0); +int i; + +int main() +{ + notify_start(); + + for (i=0; i<=65535; i++) { + bus1 = i; + bus2 = i; + wait(0.0001); + } + + notify_completion(true); +}
\ No newline at end of file diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/bus_out/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/bus_out/main.cpp new file mode 100644 index 0000000000..35fccc4fa1 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/bus_out/main.cpp @@ -0,0 +1,82 @@ +#include "mbed.h" +#include "test_env.h" + +namespace { +BusOut bus_out(LED1, LED2, LED3, LED4); +PinName led_pins[4] = {LED1, LED2, LED3, LED4}; // Temp, used to map pins in bus_out +} + +int main() +{ + notify_start(); + + bool result = false; + + for (;;) { + const int mask = bus_out.mask(); + int led_mask = 0x00; + if (LED1 != NC) led_mask |= 0x01; + if (LED2 != NC) led_mask |= 0x02; + if (LED3 != NC) led_mask |= 0x04; + if (LED4 != NC) led_mask |= 0x08; + + printf("MBED: BusIn mask: 0x%X\r\n", mask); + printf("MBED: BusIn LED mask: 0x%X\r\n", led_mask); + + // Let's check bus's connected pins mask + if (mask != led_mask) { + break; + } + + // Checking if DigitalOut is correctly set as connected + for (int i=0; i < 4; i++) { + printf("MBED: BusOut.bit[%d] is %s\r\n", + i, + (led_pins[i] != NC && bus_out[i].is_connected()) + ? "connected" + : "not connected"); + } + + for (int i=0; i < 4; i++) { + if (led_pins[i] != NC && bus_out[0].is_connected() == 0) { + break; + } + } + + // Write mask all LEDs + bus_out.write(mask); // Set all LED's pins in high state + if (bus_out.read() != mask) { + break; + } + // Zero all LEDs and see if mask is correctly cleared on all bits + bus_out.write(~mask); + if (bus_out.read() != 0x00) { + break; + } + + result = true; + break; + } + + printf("MBED: Blinking LEDs: \r\n"); + + // Just a quick LED blinking... + for (int i=0; i<4; i++) { + if (led_pins[i] != NC && bus_out[i].is_connected()) { + bus_out[i] = 1; + printf("%c", 'A' + i); + } else { + printf("."); + } + wait(0.2); + if (led_pins[i] != NC && bus_out[i].is_connected()) { + bus_out[i] = 0; + printf("%c", 'a' + i); + } else { + printf("."); + } + } + printf("\r\n"); + + notify_completion(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/call_before_main/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/call_before_main/main.cpp new file mode 100644 index 0000000000..7b3bac203f --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/call_before_main/main.cpp @@ -0,0 +1,21 @@ +#include "test_env.h" + +namespace { + bool mbed_main_called = false; +} + +extern "C" void mbed_main() { + printf("MBED: mbed_main() call before main()\r\n"); + mbed_main_called = true; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Call function mbed_main before main); + MBED_HOSTTEST_START("MBED_A21"); + + printf("MBED: main() starts now!\r\n"); + + MBED_HOSTTEST_RESULT(mbed_main_called); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/can/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/can/main.cpp new file mode 100644 index 0000000000..a05321a907 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/can/main.cpp @@ -0,0 +1,53 @@ +#include "mbed.h" + +Ticker ticker; +DigitalOut led1(LED1); +DigitalOut led2(LED2); + +#if defined(TARGET_LPC1549) +// LPC1549 support only single CAN channel +CAN can1(D2, D3); +#else +CAN can1(p9, p10); +#endif + +#if defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) +CAN can2(p34, p33); +#elif defined (TARGET_LPC1768) +CAN can2(p30, p29); +#endif +char counter = 0; + +void printmsg(char *title, CANMessage *msg) { + printf("%s [%03X]", title, msg->id); + for(char i = 0; i < msg->len; i++) { + printf(" %02X", msg->data[i]); + } + printf("\n"); +} + +void send() { + printf("send()\n"); + CANMessage msg = CANMessage(1337, &counter, 1); + if(can1.write(msg)) { + printmsg("Tx message:", &msg); + counter++; + } + led1 = !led1; +} + +int main() { + printf("main()\n"); + ticker.attach(&send, 1); + CANMessage msg; + while(1) { +#if !defined(TARGET_LPC1549) + printf("loop()\n"); + if(can2.read(msg)) { + printmsg("Rx message:", &msg); + led2 = !led2; + } +#endif + wait(0.2); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/can_interrupt/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/can_interrupt/main.cpp new file mode 100644 index 0000000000..3fad7ff625 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/can_interrupt/main.cpp @@ -0,0 +1,60 @@ +#include "mbed.h" + +Ticker ticker; +DigitalOut led1(LED1); +DigitalOut led2(LED2); + +#if defined(TARGET_LPC1549) +// LPC1549 support only single CAN channel +CAN can1(D2, D3); +#else +CAN can1(p9, p10); +#endif + +#if defined(TARGET_LPC4088) +CAN can2(p34, p33); +#elif defined (TARGET_LPC1768) +CAN can2(p30, p29); +#endif +char counter = 0; + +void printmsg(char *title, CANMessage *msg) { + printf("%s [%03X]", title, msg->id); + for(char i = 0; i < msg->len; i++) { + printf(" %02X", msg->data[i]); + } + printf("\n"); +} + +void send() { + printf("send()\n"); + CANMessage msg = CANMessage(1337, &counter, 1); + if(can1.write(msg)) { + printmsg("Tx message:", &msg); + counter++; + } + led1 = !led1; +} + +#if !defined (TARGET_LPC1549) +void read() { + CANMessage msg; + printf("rx()\n"); + if(can2.read(msg)) { + printmsg("Rx message:", &msg); + led2 = !led2; + } +} +#endif + +int main() { + printf("main()\n"); + ticker.attach(&send, 1); +#if !defined (TARGET_LPC1549) + can2.attach(&read); +#endif + while(1) { + printf("loop()\n"); + wait(1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/cpp/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/cpp/main.cpp new file mode 100644 index 0000000000..48254315a6 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/cpp/main.cpp @@ -0,0 +1,86 @@ +#include "test_env.h" + +#define PATTERN_CHECK_VALUE 0xF0F0ADAD + +class Test { + +private: + const char* name; + const int pattern; + +public: + Test(const char* _name) : name(_name), pattern(PATTERN_CHECK_VALUE) { + print("init"); + } + + void print(const char *message) { + printf("%s::%s\n", name, message); + } + + bool check_init(void) { + bool result = (pattern == PATTERN_CHECK_VALUE); + print(result ? "check_init: OK" : "check_init: ERROR"); + return result; + } + + void stack_test(void) { + print("stack_test"); + Test t("Stack"); + t.hello(); + } + + void hello(void) { + print("hello"); + } + + ~Test() { + print("destroy"); + } +}; + +/* Check C++ startup initialisation */ +Test s("Static"); + +/* EXPECTED OUTPUT: +******************* +Static::init +Static::stack_test +Stack::init +Stack::hello +Stack::destroy +Static::check_init: OK +Heap::init +Heap::hello +Heap::destroy +*******************/ +int main (void) { + MBED_HOSTTEST_TIMEOUT(10); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(C++); + MBED_HOSTTEST_START("MBED_12"); + + bool result = true; + for (;;) + { + // Global stack object simple test + s.stack_test(); + if (s.check_init() == false) + { + result = false; + break; + } + + // Heap test object simple test + Test *m = new Test("Heap"); + m->hello(); + + if (m->check_init() == false) + { + result = false; + } + delete m; + break; + } + + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/cstring/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/cstring/main.cpp new file mode 100644 index 0000000000..69f89735de --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/cstring/main.cpp @@ -0,0 +1,100 @@ +#include "mbed.h" +#include "test_env.h" +#include <string.h> + +#define BUFFER_SIZE 256 +#define CLEAN_BUFFER(BUFF) memset(BUFF, 0x00, BUFFER_SIZE) + +#define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,-1,-4231,-999,-4123,-32760,-99999 +#define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999 +#define FLOATS 0.002,0.92430,15.91320,791.77368,6208.2,25719.4952,426815.982588,6429271.046,42468024.93,212006462.910 + + +int main() +{ + char buffer[BUFFER_SIZE] = {0}; + bool result = true; + bool cmp_result; + + { + CLEAN_BUFFER(buffer); + sprintf(buffer, "%i %d %i %d %i %d %i %d %i %d %i %i", NEGATIVE_INTEGERS); + cmp_result = TESTENV_STRCMP(buffer, "-32768 -3214 -999 -100 -1 0 -1 -4231 -999 -4123 -32760 -99999"); + printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer); + result = result && cmp_result; + } + + { + CLEAN_BUFFER(buffer); + sprintf(buffer, "%u %d %u %d %u %d %u %d %u %d %u %d", POSITIVE_INTEGERS); + cmp_result = TESTENV_STRCMP(buffer, "32768 3214 999 100 1 0 1 4231 999 4123 32760 99999"); + printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer); + result = result && cmp_result; + } + + { + CLEAN_BUFFER(buffer); + sprintf(buffer, "%x %X %x %X %x %X %x %X %x %X %x %X", POSITIVE_INTEGERS); + cmp_result = TESTENV_STRCMP(buffer, "8000 C8E 3e7 64 1 0 1 1087 3e7 101B 7ff8 1869F"); + printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer); + result = result && cmp_result; + } + + { + CLEAN_BUFFER(buffer); + sprintf(buffer, "%f %f %f %f %f %f %f %f %f %f", FLOATS); + cmp_result = TESTENV_STRCMP(buffer, "0.002000 0.924300 15.913200 791.773680 6208.200000 25719.495200 426815.982588 6429271.046000 42468024.930000 212006462.910000"); + printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer); + result = result && cmp_result; + } + + { + CLEAN_BUFFER(buffer); + sprintf(buffer, "%g %g %g %g %g %g %g %g %g %g", FLOATS); + cmp_result = TESTENV_STRCMP(buffer, "0.002 0.9243 15.9132 791.774 6208.2 25719.5 426816 6.42927e+006 4.2468e+007 2.12006e+008"); + cmp_result = cmp_result || TESTENV_STRCMP(buffer, "0.002 0.9243 15.9132 791.774 6208.2 25719.5 426816 6.42927e+06 4.2468e+07 2.12006e+08"); + printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer); + result = result && cmp_result; + } + + { + CLEAN_BUFFER(buffer); + sprintf(buffer, "%e %E %e %E %e %E %e %E %e %E", FLOATS); + cmp_result = TESTENV_STRCMP(buffer, "2.000000e-003 9.243000E-001 1.591320e+001 7.917737E+002 6.208200e+003 2.571950E+004 4.268160e+005 6.429271E+006 4.246802e+007 2.120065E+008"); + cmp_result = cmp_result || TESTENV_STRCMP(buffer, "2.000000e-03 9.243000E-01 1.591320e+01 7.917737E+02 6.208200e+03 2.571950E+04 4.268160e+05 6.429271E+06 4.246802e+07 2.120065E+08"); + printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer); + result = result && cmp_result; + } + + { + CLEAN_BUFFER(buffer); + char str[] ="- This, a sample string."; + char * pch = strtok (str," ,.-"); + while (pch != NULL) { + strcat(buffer, pch); + pch = strtok (NULL, " ,.-"); + } + cmp_result = TESTENV_STRCMP(buffer, "Thisasamplestring"); + printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer); + result = result && cmp_result; + } + + { + CLEAN_BUFFER(buffer); + char str[] = "This is a sample string"; + char key[] = "aeiou"; + char *pch = strpbrk(str, key); + while (pch != NULL) + { + char buf[2] = {*pch, '\0'}; + strcat(buffer, buf); + pch = strpbrk(pch + 1,key); + } + cmp_result = TESTENV_STRCMP(buffer, "iiaaei"); + printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer); + result = result && cmp_result; + } + + notify_completion(result); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/detect/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/detect/main.cpp new file mode 100644 index 0000000000..1508a13cbf --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/detect/main.cpp @@ -0,0 +1,15 @@ +#include "mbed.h" +#include "test_env.h" + +int main() { + MBED_HOSTTEST_TIMEOUT(10); + MBED_HOSTTEST_SELECT(detect_auto); + MBED_HOSTTEST_DESCRIPTION(Simple detect test); + MBED_HOSTTEST_START("DTCT_1"); + + notify_start(); + printf("MBED: Target '%s'\r\n", TEST_SUITE_TARGET_NAME); + printf("MBED: Test ID '%s'\r\n", TEST_SUITE_TEST_ID); + printf("MBED: UUID '%s'\r\n", TEST_SUITE_UUID); + MBED_HOSTTEST_RESULT(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/dev_null/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/dev_null/main.cpp new file mode 100644 index 0000000000..adde6b8d22 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/dev_null/main.cpp @@ -0,0 +1,30 @@ +#include "mbed.h" +#include "test_env.h" + +class DevNull : public Stream { +public: + DevNull(const char *name = NULL) : Stream(name) {} + +protected: + virtual int _getc() { + return 0; + } + virtual int _putc(int c) { + return c; + } +}; + +DevNull null("null"); + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(dev_null_auto); + MBED_HOSTTEST_DESCRIPTION(stdout redirected to dev null); + MBED_HOSTTEST_START("EXAMPLE_1"); + + printf("MBED: re-routing stdout to /null\r\n"); + freopen("/null", "w", stdout); + printf("MBED: printf redirected to /null\r\n"); // This shouldn't appear + // If failure message can be seen test should fail :) + MBED_HOSTTEST_RESULT(false); // This is 'false' on purpose +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalin_digitalout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalin_digitalout/main.cpp new file mode 100644 index 0000000000..08fc12b784 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalin_digitalout/main.cpp @@ -0,0 +1,74 @@ +#include "test_env.h" + +#if defined(TARGET_LPC1114) +DigitalOut out(dp1); +DigitalIn in(dp2); + +#elif defined(TARGET_LPC1549) +// TARGET_FF_ARDUINO cannot be used, because D0 is used as USBRX (USB serial +// port pin), D1 is used as USBTX +DigitalOut out(D7); +DigitalIn in(D2); + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +DigitalOut out(PC_7); +DigitalIn in(PB_8); + +#elif defined(TARGET_ARCH_MAX) || \ + defined(TARGET_DISCO_F407VG) || \ + defined(TARGET_DISCO_F429ZI)|| \ + defined(TARGET_DISCO_F401VC) +DigitalOut out(PC_12); +DigitalIn in(PD_0); + +#elif defined(TARGET_FF_ARDUINO) +DigitalOut out(D7); +DigitalIn in(D0); + +#elif defined(TARGET_MAXWSNENV) +DigitalOut out(TP3); +DigitalIn in(TP4); + +#elif defined(TARGET_MAX32600MBED) +DigitalOut out(P1_0); +DigitalIn in(P4_7); + +#else +DigitalOut out(p5); +DigitalIn in(p25); + +#endif + +int main() { + MBED_HOSTTEST_TIMEOUT(10); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(DigitalIn DigitalOut); + MBED_HOSTTEST_START("MBED_A5"); + + out = 0; + wait(0.1); + if (in != 0) { + printf("ERROR: in != 0\n"); + MBED_HOSTTEST_RESULT(false); + } + out = 1; + wait(0.1); + if (in != 1) { + printf("ERROR: in != 1\n"); + MBED_HOSTTEST_RESULT(false); + } + + MBED_HOSTTEST_RESULT(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalinout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalinout/main.cpp new file mode 100644 index 0000000000..9335651769 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalinout/main.cpp @@ -0,0 +1,95 @@ +#include "test_env.h" + +#if defined(TARGET_LPC1114) +DigitalInOut d1(dp1); +DigitalInOut d2(dp2); + +#elif defined(TARGET_LPC1549) +// TARGET_FF_ARDUINO cannot be used, because D0 is used as USBRX (USB serial +// port pin), D1 is used as USBTX +DigitalInOut d1(D2); +DigitalInOut d2(D7); + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +DigitalInOut d1(PC_7); +DigitalInOut d2(PB_8); + +#elif defined(TARGET_ARCH_MAX) || \ + defined(TARGET_DISCO_F407VG) || \ + defined(TARGET_DISCO_F429ZI)|| \ + defined(TARGET_DISCO_F401VC) +DigitalInOut d1(PC_12); +DigitalInOut d2(PD_0); + +#elif defined(TARGET_FF_ARDUINO) +DigitalInOut d1(D0); +DigitalInOut d2(D7); + +#elif defined(TARGET_MAXWSNENV) +DigitalInOut d1(TP3); +DigitalInOut d2(TP4); + +#elif defined(TARGET_MAX32600MBED) +DigitalInOut d1(P1_0); +DigitalInOut d2(P4_7); + +#else +DigitalInOut d1(p5); +DigitalInOut d2(p25); + +#endif + + +int main() +{ + MBED_HOSTTEST_TIMEOUT(10); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(DigitalInOut); + MBED_HOSTTEST_START("MBED_A6"); + + bool check = true; + + d1.output(); + d2.input(); + d1 = 1; + wait(0.1); + if (d2 != 1) { + printf("MBED: First check failed! d2 is %d\n", (int)d2); + check = false; + } + d1 = 0; + wait(0.1); + if (d2 != 0) { + printf("MBED: Second check failed! d2 is %d\n", (int)d2); + check = false; + } + + d1.input(); + d2.output(); + d2 = 1; + wait(0.1); + if (d1 != 1) { + printf("MBED: Third check failed! d1 is %d\n", (int)d1); + check = false; + } + d2 = 0; + wait(0.1); + if (d1 != 0) { + printf("MBED: Fourth check failed! d1 is %d\n", (int)d1); + check = false; + } + + MBED_HOSTTEST_RESULT(check); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/dir/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/dir/main.cpp new file mode 100644 index 0000000000..feb3241057 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/dir/main.cpp @@ -0,0 +1,78 @@ +#include "mbed.h" + +void led_blink(PinName led) { + DigitalOut myled(led); + while (1) { + myled = !myled; + wait(1.0); + } +} + +void notify_completion(bool success) { + if (success) { + printf("{success}\n"); + } else { + printf("{failure}\n"); + } + + printf("{end}\n"); + led_blink(success ? LED1 : LED4); +} + +#define TEST_STRING "Hello World!" + +FILE* test_open(char* path, const char* mode) { + FILE *f; + f = fopen(path, mode); + if (f == NULL) { + printf("Error opening file\n"); + notify_completion(false); + } + + return f; +} + +void test_write(FILE* f, const char* str) { + int n = fprintf(f, str); + if (n != strlen(str)) { + printf("Error writing file\n"); + notify_completion(false); + } +} + +void test_close(FILE* f) { + int rc = fclose(f); + if (rc != 0) { + printf("Error closing file\n"); + notify_completion(false); + } +} + +int main() { + LocalFileSystem local("local"); + + FILE *f; + char* str = TEST_STRING; + char* buffer = (char*) malloc(sizeof(unsigned char)*strlen(TEST_STRING)); + int str_len = strlen(TEST_STRING); + + printf("Write files\n"); + char filename[32]; + for (int i=0; i<10; i++) { + sprintf(filename, "/local/test_%d.txt", i); + printf("Creating file: %s\n", filename); + f = test_open(filename, "w"); + test_write(f, str); + test_close(f); + } + + printf("List files:\n"); + DIR *d = opendir("/local"); + struct dirent *p; + while((p = readdir(d)) != NULL) { + printf("%s\n", p->d_name); + } + closedir(d); + + notify_completion(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/dir_sd/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/dir_sd/main.cpp new file mode 100644 index 0000000000..f28c45fea3 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/dir_sd/main.cpp @@ -0,0 +1,119 @@ +#include "mbed.h" +#include "SDFileSystem.h" + +void led_blink(PinName led) +{ + DigitalOut myled(led); + + while (1) { + myled = !myled; + wait(1.0); + } +} + +void notify_completion(bool success) +{ + if (success) + printf("{success}\n"); + else + printf("{failure}\n"); + + printf("{end}\n"); + led_blink(success ? LED1 : LED4); +} + +#define TEST_STRING "Hello World!" + +FILE *test_open(char *path, const char *mode) +{ + FILE *f; + + f = fopen(path, mode); + if (f == NULL) { + printf("Error opening file\n"); + notify_completion(false); + } + + return f; +} + +void test_write(FILE *f, const char *str) +{ + int n = fprintf(f, str); + + if (n != strlen(str)) { + printf("Error writing file\n"); + notify_completion(false); + } +} + +void test_close(FILE *f) +{ + int rc = fclose(f); + + if (rc != 0) { + printf("Error closing file\n"); + notify_completion(false); + } +} + +DigitalOut led2(LED2); + +int main() +{ +#if defined(TARGET_KL25Z) + SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); +#elif defined(TARGET_nRF51822) +//SDFileSystem sd(p20, p22, p25, p24, "sd"); + SDFileSystem sd(p12, p13, p15, p14, "sd"); +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) + SDFileSystem sd(D11, D12, D13, D10, "sd"); +#elif defined(TARGET_LPC11U37H_401) + SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd"); +#else + SDFileSystem sd(p11, p12, p13, p14, "sd"); +#endif + led2 = 1; + wait(0.5); + FILE *f; + char *str = TEST_STRING; + char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING)); + int str_len = strlen(TEST_STRING); + + printf("Write files\n"); + char filename[32]; + for (int i = 0; i < 10; i++) { + sprintf(filename, "/sd/test_%d.txt", i); + printf("Creating file: %s\n", filename); + f = test_open(filename, "w"); + led2 = 0; + test_write(f, str); + test_close(f); + } + + printf("List files:\n"); + DIR *d = opendir("/sd"); + if (d == NULL) { + printf("Error opening directory\n"); + notify_completion(false); + } + + struct dirent *p; + while ((p = readdir(d)) != NULL) + printf("%s\n", p->d_name); + closedir(d); + + notify_completion(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/div/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/div/main.cpp new file mode 100644 index 0000000000..951e5ab8c5 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/div/main.cpp @@ -0,0 +1,44 @@ +#include <utility> // std::pair +#include "mbed.h" +#include "test_env.h" + +uint32_t test_64(uint64_t ticks) { + ticks >>= 3; // divide by 8 + if (ticks > 0xFFFFFFFF) { + ticks /= 3; + } else { + ticks = (ticks * 0x55555556) >> 32; // divide by 3 + } + return (uint32_t)(0xFFFFFFFF & ticks); +} + +const char *result_str(bool result) { + return result ? "[OK]" : "[FAIL]"; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Integer constant division); + MBED_HOSTTEST_START("MBED_26"); + + bool result = true; + + { // 0xFFFFFFFF * 8 = 0x7fffffff8 + std::pair<uint32_t, uint64_t> values = std::make_pair(0x55555555, 0x7FFFFFFF8); + uint32_t test_ret = test_64(values.second); + bool test_res = values.first == test_ret; + result = result && test_res; + printf("64bit: 0x7FFFFFFF8: expected 0x%lX got 0x%lX ... %s\r\n", values.first, test_ret, result_str(test_res)); + } + + { // 0xFFFFFFFF * 24 = 0x17ffffffe8 + std::pair<uint32_t, uint64_t> values = std::make_pair(0xFFFFFFFF, 0x17FFFFFFE8); + uint32_t test_ret = test_64(values.second); + bool test_res = values.first == test_ret; + result = result && test_res; + printf("64bit: 0x17FFFFFFE8: expected 0x%lX got 0x%lX ... %s\r\n", values.first, test_ret, result_str(test_res)); + } + + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/echo/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/echo/main.cpp new file mode 100644 index 0000000000..ccd882560c --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/echo/main.cpp @@ -0,0 +1,26 @@ +#include "mbed.h" +#include "test_env.h" + +#define TXPIN USBTX +#define RXPIN USBRX + + +namespace { + const int BUFFER_SIZE = 48; + char buffer[BUFFER_SIZE] = {0}; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(echo); + MBED_HOSTTEST_DESCRIPTION(Serial Echo at 115200); + MBED_HOSTTEST_START("MBED_A9"); + + Serial pc(TXPIN, RXPIN); + pc.baud(115200); + + while (1) { + pc.gets(buffer, BUFFER_SIZE - 1); + pc.printf("%s", buffer); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/echo_flow_control/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/echo_flow_control/main.cpp new file mode 100644 index 0000000000..327bca62d4 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/echo_flow_control/main.cpp @@ -0,0 +1,34 @@ +#include "mbed.h" + +#if defined(TARGET_LPC1768) +#define UART_TX p9 +#define UART_RX p10 +#define FLOW_CONTROL_RTS p30 +#define FLOW_CONTROL_CTS p29 +#define RTS_CHECK_PIN p8 +#else +#error This test is not supported on this target +#endif + +Serial pc(UART_TX, UART_RX); + +#ifdef RTS_CHECK_PIN +InterruptIn in(RTS_CHECK_PIN); +DigitalOut led(LED1); +static void checker(void) { + led = !led; +} +#endif + +int main() { + char buf[256]; + + pc.set_flow_control(Serial::RTSCTS, FLOW_CONTROL_RTS, FLOW_CONTROL_CTS); +#ifdef RTS_CHECK_PIN + in.fall(checker); +#endif + while (1) { + pc.gets(buf, 256); + pc.printf("%s", buf); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.cpp new file mode 100644 index 0000000000..a7d3185e54 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.cpp @@ -0,0 +1,92 @@ +#include "test_env.h" + +// Const strings used in test_end +const char* TEST_ENV_START = "start"; +const char* TEST_ENV_SUCCESS = "success"; +const char* TEST_ENV_FAILURE = "failure"; +const char* TEST_ENV_MEASURE = "measure"; +const char* TEST_ENV_END = "end"; + + +static void led_blink(PinName led, float delay) +{ + if (led != NC) { + DigitalOut myled(led); + while (1) { + myled = !myled; + wait(delay); + } + } + while(1); +} + +void notify_start() +{ + printf("{{%s}}" NL, TEST_ENV_START); +} + +void notify_performance_coefficient(const char* measurement_name, const int value) +{ + printf("{{%s;%s;%d}}" RCNL, TEST_ENV_MEASURE, measurement_name, value); +} + +void notify_performance_coefficient(const char* measurement_name, const unsigned int value) +{ + printf("{{%s;%s;%u}}" RCNL, TEST_ENV_MEASURE, measurement_name, value); +} + +void notify_performance_coefficient(const char* measurement_name, const double value) +{ + printf("{{%s;%s;%f}}" RCNL, TEST_ENV_MEASURE, measurement_name, value); +} + +void notify_completion(bool success) +{ + printf("{{%s}}" NL "{{%s}}" NL, success ? TEST_ENV_SUCCESS : TEST_ENV_FAILURE, TEST_ENV_END); + led_blink(LED1, success ? 1.0 : 0.1); +} + +bool notify_completion_str(bool success, char* buffer) +{ + bool result = false; + if (buffer) { + sprintf(buffer, "{{%s}}" NL "{{%s}}" NL, success ? TEST_ENV_SUCCESS : TEST_ENV_FAILURE, TEST_ENV_END); + result = true; + } + return result; +} + +// Host test auto-detection API +void notify_host_test_name(const char *host_test) { + if (host_test) { + printf("{{host_test_name;%s}}" NL, host_test); + } +} + +void notify_timeout(int timeout) { + printf("{{timeout;%d}}" NL, timeout); +} + +void notify_test_id(const char *test_id) { + if (test_id) { + printf("{{test_id;%s}}" NL, test_id); + } +} + +void notify_test_description(const char *description) { + if (description) { + printf("{{description;%s}}" NL, description); + } +} + + +// -DMBED_BUILD_TIMESTAMP=1406208182.13 +unsigned int testenv_randseed() +{ + unsigned int seed = 0; +#ifdef MBED_BUILD_TIMESTAMP + long long_seed = static_cast<long>(MBED_BUILD_TIMESTAMP); + seed = long_seed & 0xFFFFFFFF; +#endif /* MBED_BUILD_TIMESTAMP */ + return seed; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.h new file mode 100644 index 0000000000..bfb2c44d2d --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.h @@ -0,0 +1,74 @@ +#ifndef TEST_ENV_H_ +#define TEST_ENV_H_ + +#include <stdio.h> +#include "mbed.h" + +#define NL "\n" +#define RCNL "\r\n" + +// Const strings used in test_end +extern const char* TEST_ENV_START; +extern const char* TEST_ENV_SUCCESS; +extern const char* TEST_ENV_FAILURE; +extern const char* TEST_ENV_MEASURE; +extern const char* TEST_ENV_END; + +// Test result related notification functions +void notify_start(); +void notify_completion(bool success); +bool notify_completion_str(bool success, char* buffer); +void notify_performance_coefficient(const char* measurement_name, const int value); +void notify_performance_coefficient(const char* measurement_name, const unsigned int value); +void notify_performance_coefficient(const char* measurement_name, const double value); + +// Host test auto-detection API +void notify_host_test_name(const char *host_test); +void notify_timeout(int timeout); +void notify_test_id(const char *test_id); +void notify_test_description(const char *description); + +// Host test auto-detection API +#define MBED_HOSTTEST_START(TESTID) notify_test_id(TESTID); notify_start() +#define MBED_HOSTTEST_SELECT(NAME) notify_host_test_name(#NAME) +#define MBED_HOSTTEST_TIMEOUT(SECONDS) notify_timeout(SECONDS) +#define MBED_HOSTTEST_DESCRIPTION(DESC) notify_test_description(#DESC) +#define MBED_HOSTTEST_RESULT(RESULT) notify_completion(RESULT) + +/** + Test auto-detection preamble example: + main() { + MBED_HOSTTEST_TIMEOUT(10); + MBED_HOSTTEST_SELECT( host_test ); + MBED_HOSTTEST_DESCRIPTION(Hello World); + MBED_HOSTTEST_START("MBED_10"); + // Proper 'host_test.py' should take over supervising of this test + + // Test code + bool result = ...; + + MBED_HOSTTEST_RESULT(result); + } +*/ + + +// Test functionality useful during testing +unsigned int testenv_randseed(); + +// Macros, unit test like to provide basic comparisons +#define TESTENV_STRCMP(GIVEN,EXPECTED) (strcmp(GIVEN,EXPECTED) == 0) + +// macros passed via test suite +#ifndef TEST_SUITE_TARGET_NAME +#define TEST_SUITE_TARGET_NAME "Unknown" +#endif + +#ifndef TEST_SUITE_TEST_ID +#define TEST_SUITE_TEST_ID "Unknown" +#endif + +#ifndef TEST_SUITE_UUID +#define TEST_SUITE_UUID "Unknown" +#endif + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/file/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/file/main.cpp new file mode 100644 index 0000000000..8f573f4e30 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/file/main.cpp @@ -0,0 +1,78 @@ +#include "test_env.h" +#include "semihost_api.h" + +Serial pc(USBTX, USBRX); + +#define FILENAME "/local/out.txt" +#define TEST_STRING "Hello World!" + +FILE *test_open(const char *mode) { + FILE *f = fopen(FILENAME, mode); + if (f == NULL) { + printf("Error opening file"NL); + notify_completion(false); + } + return f; +} + +void test_write(FILE *f, char *str, int str_len) { + int n = fprintf(f, str); + + if (n != str_len) { + printf("Error writing file"NL); + notify_completion(false); + } +} + +void test_read(FILE *f, char *str, int str_len) { + int n = fread(str, sizeof(unsigned char), str_len, f); + + if (n != str_len) { + printf("Error reading file"NL); + notify_completion(false); + } +} + +void test_close(FILE *f) { + int rc = fclose(f); + + if (rc != 0) { + printf("Error closing file"NL); + notify_completion(false); + } +} + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Semihost file system); + MBED_HOSTTEST_START("MBED_A2"); + + pc.printf("Test the Stream class\n"); + + printf("connected: %s\n", (semihost_connected()) ? ("Yes") : ("No")); + + char mac[16]; + mbed_mac_address(mac); + printf("mac address: %02x,%02x,%02x,%02x,%02x,%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + + LocalFileSystem local("local"); + + FILE *f; + char *str = TEST_STRING; + char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING)); + int str_len = strlen(TEST_STRING); + + // Write + f = test_open("w"); + test_write(f, str, str_len); + test_close(f); + + // Read + f = test_open("r"); + test_read(f, buffer, str_len); + test_close(f); + + // Check the two strings are equal + MBED_HOSTTEST_RESULT((strncmp(buffer, str, str_len) == 0)); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.cpp new file mode 100644 index 0000000000..0eb30f56cd --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.cpp @@ -0,0 +1,57 @@ +/* mbed TextDisplay Display Library Base Class + * Copyright (c) 2007-2009 sford + * Released under the MIT License: http://mbed.org/license/mit + */ + +#include "TextDisplay.h" + +TextDisplay::TextDisplay(const char *name) : Stream(name) { + _row = 0; + _column = 0; +} + +int TextDisplay::_putc(int value) { + if(value == '\n') { + _column = 0; + _row++; + if(_row >= rows()) { + _row = 0; + } + } else { + character(_column, _row, value); + _column++; + if(_column >= columns()) { + _column = 0; + _row++; + if(_row >= rows()) { + _row = 0; + } + } + } + return value; +} + +// crude cls implementation, should generally be overwritten in derived class +void TextDisplay::cls() { + locate(0, 0); + for(int i=0; i<columns()*rows(); i++) { + putc(' '); + } +} + +void TextDisplay::locate(int column, int row) { + _column = column; + _row = row; +} + +int TextDisplay::_getc() { + return -1; +} + +void TextDisplay::foreground(int colour) { + _foreground = colour; +} + +void TextDisplay::background(int colour) { + _background = colour; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.h new file mode 100644 index 0000000000..51694ab1be --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.h @@ -0,0 +1,52 @@ +/* mbed TextDisplay Library Base Class + * Copyright (c) 2007-2009 sford + * Released under the MIT License: http://mbed.org/license/mit + * + * A common base class for Text displays + * To port a new display, derive from this class and implement + * the constructor (setup the display), character (put a character + * at a location), rows and columns (number of rows/cols) functions. + * Everything else (locate, printf, putc, cls) will come for free + * + * The model is the display will wrap at the right and bottom, so you can + * keep writing and will always get valid characters. The location is + * maintained internally to the class to make this easy + */ + +#ifndef MBED_TEXTDISPLAY_H +#define MBED_TEXTDISPLAY_H + +#include "mbed.h" + +class TextDisplay : public Stream { +public: + + // functions needing implementation in derived implementation class + TextDisplay(const char *name = NULL); + virtual void character(int column, int row, int c) = 0; + virtual int rows() = 0; + virtual int columns() = 0; + + // functions that come for free, but can be overwritten + virtual void cls(); + virtual void locate(int column, int row); + virtual void foreground(int colour); + virtual void background(int colour); + // putc (from Stream) + // printf (from Stream) + +protected: + + virtual int _putc(int value); + virtual int _getc(); + + // character location + short _column; + short _row; + + // colours + int _foreground; + int _background; +}; + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.cpp new file mode 100644 index 0000000000..8e70c3c299 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.cpp @@ -0,0 +1,98 @@ +/* mbed TextLCD Library + * Copyright (c) 2007-2009 sford + * Released under the MIT License: http://mbed.org/license/mit + */ + +#include "TextLCD.h" +#include "mbed.h" + +/* + * useful info found at http://www.a-netz.de/lcd.en.php + * + * Initialisation + * ============== + * + * After attaching the supply voltage/after a reset, the display needs to be brought in to a defined state + * + * - wait approximately 15 ms so the display is ready to execute commands + * - Execute the command 0x30 ("Display Settings") three times (wait 1,64ms after each command, the busy flag cannot be queried now). + * - The display is in 8 bit mode, so if you have only connected 4 data pins you should only transmit the higher nibble of each command. + * - If you want to use the 4 bit mode, now you can execute the command to switch over to this mode now. + * - Execute the "clear display" command + * + * Timing + * ====== + * + * Nearly all commands transmitted to the display need 40us for execution. + * Exceptions are the commands "Clear Display and Reset" and "Set Cursor to Start Position" + * These commands need 1.64ms for execution. These timings are valid for all displays working with an + * internal clock of 250kHz. But I do not know any displays that use other frequencies. Any time you + * can use the busy flag to test if the display is ready to accept the next command. + * + * _e is kept high apart from calling clock + * _rw is kept 0 (write) apart from actions that uyse it differently + * _rs is set by the data/command writes + */ + +TextLCD::TextLCD(PinName rs, PinName rw, PinName e, PinName d0, PinName d1, + PinName d2, PinName d3, const char *name) : TextDisplay(name), _rw(rw), _rs(rs), + _e(e), _d(d0, d1, d2, d3) { + + _rw = 0; + _e = 1; + _rs = 0; // command mode + + // Should theoretically wait 15ms, but most things will be powered up pre-reset + // so i'll disable that for the minute. If implemented, could wait 15ms post reset + // instead + // wait(0.015); + + // send "Display Settings" 3 times (Only top nibble of 0x30 as we've got 4-bit bus) + for(int i=0; i<3; i++) { + writeByte(0x3); + wait(0.00164); // this command takes 1.64ms, so wait for it + } + writeByte(0x2); // 4-bit mode + + writeCommand(0x28); // Function set 001 BW N F - - + writeCommand(0x0C); + writeCommand(0x6); // Cursor Direction and Display Shift : 0000 01 CD S (CD 0-left, 1-right S(hift) 0-no, 1-yes + cls(); +} + +void TextLCD::character(int column, int row, int c) { + int address = 0x80 + (row * 40) + column; // memory starts at 0x80, and is 40 chars long per row + writeCommand(address); + writeData(c); +} + +int TextLCD::columns() { + return 16; +} + +int TextLCD::rows() { + return 2; +} + +void TextLCD::writeByte(int value) { + _d = value >> 4; + wait(0.000040f); // most instructions take 40us + _e = 0; + wait(0.000040f); + _e = 1; + _d = value >> 0; + wait(0.000040f); + _e = 0; + wait(0.000040f); // most instructions take 40us + _e = 1; +} + +void TextLCD::writeCommand(int command) { + _rs = 0; + writeByte(command); +} + +void TextLCD::writeData(int data) { + _rs = 1; + writeByte(data); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.h new file mode 100644 index 0000000000..9a29792183 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.h @@ -0,0 +1,30 @@ +/* mbed TextLCD Library Base Class + * Copyright (c) 2007-2009 sford + * Released under the MIT License: http://mbed.org/license/mit + */ +#include "TextDisplay.h" + +#ifndef MBED_TEXTLCD_H +#define MBED_TEXTLCD_H + +class TextLCD : public TextDisplay { +public: + + TextLCD(PinName rs, PinName rw, PinName e, PinName d0, PinName d1, PinName d2, PinName d3, const char *name = NULL); + virtual void character(int column, int row, int c); + virtual int rows(); + virtual int columns(); + + // locate, cls, putc, printf come from derived class + +protected: + + void writeByte(int value); + void writeCommand(int command); + void writeData(int data); + + DigitalOut _rw, _rs, _e; + BusOut _d; +}; + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/main.cpp new file mode 100644 index 0000000000..145a684a7e --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/main.cpp @@ -0,0 +1,30 @@ +#include "mbed.h" +#include "TextLCD.h" + +int main() { + printf("printf to stdout\n"); + + // printf to specific peripherals + Serial pc(USBTX, USBRX); + pc.printf("Serial(USBTX, USBRX).printf\n"); + + TextLCD lcd(p14, p15, p16, p17, p18, p19, p20, "lcd"); // rs, rw, e, d0-d3, name + lcd.printf("TextLCD.printf\n"); + + // change stdout to file + LocalFileSystem local("local"); + freopen("/local/output.txt", "w", stdout); + printf("printf redirected to LocalFileSystem\n"); + fclose(stdout); + + // change stdout to LCD + freopen("/lcd", "w", stdout); + printf("printf redirected to TextLCD\n"); + fclose(stdout); + + DigitalOut led(LED1); + while (true) { + led = !led; + wait(1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/fs/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/fs/main.cpp new file mode 100644 index 0000000000..2dc525cd08 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/fs/main.cpp @@ -0,0 +1,32 @@ +#include "mbed.h" +#include "rtos.h" +#include "SDFileSystem.h" + +#define FILE_LOC "/sd/test.txt" + +Serial pc(USBTX, USBRX); +Serial gps(p28, p27); +Serial test(p9,p10); + +SDFileSystem sd(p11, p12, p13, p14, "sd"); + +DigitalOut myled(LED1); +DigitalOut sdled(LED2); + +void sd_thread(void const *argument) { + while (true) { + sdled = !sdled; + FILE *fp = NULL; + fp = fopen(FILE_LOC, "w"); + if( fp != NULL ) fclose(fp); + Thread::wait(1000); + } +} + +int main() { + Thread sdTask(sd_thread, NULL, osPriorityNormal, DEFAULT_STACK_SIZE * 2.25); + while (true) { + myled = !myled; + Thread::wait(1000); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/heap_and_stack/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/heap_and_stack/main.cpp new file mode 100644 index 0000000000..a127efedb4 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/heap_and_stack/main.cpp @@ -0,0 +1,76 @@ +#include "test_env.h" + +static char *initial_stack_p; +static char *initial_heap_p; + +static char line[256]; +static unsigned int iterations = 0; + +void report_iterations(void) { + unsigned int tot = (0x100 * iterations)*2; + printf("\nAllocated (%d)Kb in (%u) iterations\n", tot/1024, iterations); +#if !defined(TOOLCHAIN_GCC_CR) + // EA: This causes a crash when compiling with GCC_CR??? + printf("%.2f\n", ((float)(tot)/(float)(initial_stack_p - initial_heap_p))*100.); +#endif +#ifdef TOOLCHAIN_ARM +#ifndef __MICROLIB + __heapvalid((__heapprt) fprintf, stdout, 1); +#endif +#endif +} + +void stack_test(char *latest_heap_pointer) { + char stack_line[256]; + iterations++; + + sprintf(stack_line, "\nstack pointer: %p", &stack_line[255]); + puts(stack_line); + + char *heap_pointer = (char*)malloc(0x100); + + if (heap_pointer == NULL) { + int diff = (&stack_line[255] - latest_heap_pointer); + if (diff > 0x200) { + sprintf(stack_line, "\n[WARNING] Malloc failed to allocate memory too soon. There are (0x%x) free bytes", diff); + report_iterations(); + puts(stack_line); + } else { + puts("\n[SUCCESS] Stack/Heap collision detected"); + report_iterations(); + } + return; + } else { + heap_pointer += 0x100; + sprintf(line, "heap pointer: %p", heap_pointer); + puts(line); + } + + if ((&stack_line[255]) > heap_pointer) { + stack_test(heap_pointer); + } else { + puts("\n[WARNING] The Stack/Heap collision was not detected"); + report_iterations(); + } +} + + +int main (void) { + char c; + initial_stack_p = &c; + + initial_heap_p = (char*)malloc(1); + if (initial_heap_p == NULL) { + printf("Unable to malloc a single byte\n"); + notify_completion(false); + } + + printf("Initial stack/heap geometry:\n"); + printf(" stack pointer:V %p\n", initial_stack_p); + printf(" heap pointer :^ %p\n", initial_heap_p); + + initial_heap_p++; + stack_test(initial_heap_p); + + notify_completion(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/hello/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/hello/main.cpp new file mode 100644 index 0000000000..9e1e195e9a --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/hello/main.cpp @@ -0,0 +1,13 @@ +#include "test_env.h" + +int main() +{ + MBED_HOSTTEST_TIMEOUT(5); + MBED_HOSTTEST_SELECT(hello_auto); + MBED_HOSTTEST_DESCRIPTION(Hello World); + MBED_HOSTTEST_START("MBED_10"); + + printf("Hello World\r\n"); + + while(1); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_MMA8451Q/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_MMA8451Q/main.cpp new file mode 100644 index 0000000000..2e17aea5a4 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_MMA8451Q/main.cpp @@ -0,0 +1,56 @@ +#include "mbed.h" +#include "MMA8451Q.h" +#include "test_env.h" + +#ifdef TARGET_KL05Z +#define SDA PTB4 +#define SCL PTB3 + +#elif TARGET_K20D50M +#define SDA PTB1 +#define SCL PTB0 + +#else +#define SDA PTE25 +#define SCL PTE24 +#endif + +namespace { + const int MMA8451_I2C_ADDRESS = 0x1D << 1; // I2C bus address + const float MMA8451_DIGITAL_SENSITIVITY = 4096.0; // Counts/g +} + +float calc_3d_vector_len(float x, float y, float z) { + return sqrt(x*x + y*y + z*z); +} + +#define TEST_ITERATIONS 25 +#define TEST_ITERATIONS_SKIP 5 +#define MEASURE_DEVIATION_TOLERANCE 0.025 // 2.5% + +int main(void) { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(MMA8451Q accelerometer); + MBED_HOSTTEST_START("KL25Z_5"); + + DigitalOut led(LED_GREEN); + MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); + bool result = true; + printf("WHO AM I: 0x%2X\r\n\n", acc.getWhoAmI()); + + for (int i = 0; i < TEST_ITERATIONS; i++) { + if (i < TEST_ITERATIONS_SKIP) { + // Skip first 5 measurements + continue; + } + const float g_vect_len = calc_3d_vector_len(acc.getAccX(), acc.getAccY(), acc.getAccZ()) / MMA8451_DIGITAL_SENSITIVITY; + const float deviation = fabs(g_vect_len - 1.0); + const char *succes_str = deviation <= MEASURE_DEVIATION_TOLERANCE ? "[OK]" : "[FAIL]"; + result = result && (deviation <= MEASURE_DEVIATION_TOLERANCE); + printf("X:% 6d Y:% 6d Z:% 5d GF:%0.3fg, dev:%0.3f ... %s\r\n", acc.getAccX(), acc.getAccY(), acc.getAccZ(), g_vect_len, deviation, succes_str); + wait(0.5); + led = !led; + } + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_SRF08/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_SRF08/main.cpp new file mode 100644 index 0000000000..7923e926ff --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_SRF08/main.cpp @@ -0,0 +1,15 @@ +#include "mbed.h" +#include "SRF08.h" + +DigitalOut led(LED1); + +SRF08 srf08(p28, p27, 0xE0); // SDA, SCL pin and I2C address + +int main() { + printf("started\n"); + while (1) { + printf("Measured range : %.2f cm\n",srf08.read()); + wait(1.0); + led = !led; + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_TMP102/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_TMP102/main.cpp new file mode 100644 index 0000000000..163ea88d2b --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_TMP102/main.cpp @@ -0,0 +1,51 @@ +#include "test_env.h" +#include "TMP102.h" + +#if defined(TARGET_KL25Z) +TMP102 temperature(PTC9, PTC8, 0x90); + +#elif defined(TARGET_LPC812) +TMP102 temperature(D10, D11, 0x90); + +#elif defined(TARGET_LPC4088) +TMP102 temperature(p9, p10, 0x90); + +#elif defined(TARGET_LPC2368) +TMP102 temperature(p28, p27, 0x90); + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) || \ + defined(TARGET_LPC824) || \ + defined(TARGET_FF_ARDUINO) || \ + defined(TARGET_MAXWSNENV) +TMP102 temperature(I2C_SDA, I2C_SCL, 0x90); + +#else +TMP102 temperature(p28, p27, 0x90); +#endif + +int main() { + MBED_HOSTTEST_TIMEOUT(10); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(DigitalIn DigitalOut); + MBED_HOSTTEST_START("MBED_A4"); + + float t = temperature.read(); + + printf("TMP102: Temperature: %f\n\r", t); + // In our test environment (ARM office) we should get a temperature within + // the range ]15, 30[C + bool result = (t > 15.0) && (t < 30.0); + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom/main.cpp new file mode 100644 index 0000000000..e6fd0d0d75 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom/main.cpp @@ -0,0 +1,155 @@ +#include "test_env.h" + +/****************************************************************************** +* This will test an I2C EEPROM connected to mbed by writing a predefined byte at +* address 0 and then reading it back and comparing it with the known byte value a +* number of times. This test was written specifically for reproducing the bug +* reported here: +* +* https://mbed.org/forum/bugs-suggestions/topic/4128/ +* +* Test configuration: +* +* set 'ntests' to the number of iterations +* set 'i2c_speed_hz' to the desired speed of the I2C interface +* set 'i2c_delay_us' to the delay that will be inserted between 'write' and +* 'read' I2C operations (https://mbed.org/users/mbed_official/code/mbed/issues/1 +* for more details). '0' disables the delay. +* define I2C_EEPROM_VERBOSE to get verbose output +* +* The test ran with a 24LC256 external EEPROM memory, but any I2C EEPROM memory +* that uses two byte addresses should work. +******************************************************************************/ + +#if defined(TARGET_KL25Z) +I2C i2c(PTC9, PTC8); + +#elif defined(TARGET_KL46Z) +I2C i2c(PTC9, PTC8); + +#elif defined(TARGET_K64F) +I2C i2c(PTE25, PTE24); + +#elif defined(TARGET_K22F) +I2C i2c(PTE0, PTE1); + +#elif defined(TARGET_K20D50M) +I2C i2c(PTB3, PTB2); + +#elif defined(TARGET_LPC812) +I2C i2c(P0_10, P0_11); + +#elif defined(TARGET_LPC1549) +I2C i2c(P0_23, P0_22); + +#elif defined(TARGET_LPC11U68) +I2C i2c(SDA, SCL); + +#elif defined(TARGET_DELTA_DFCM_NNN40) +I2C i2c(I2C_SDA0, I2C_SCL0); + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) || \ + defined(TARGET_FF_ARDUINO) +I2C i2c(I2C_SDA, I2C_SCL); + +#else +I2C i2c(p28, p27); +#endif + +namespace { +const int ntests = 10000; +const int i2c_freq_hz = 400000; +const int i2c_delay_us = 0; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(I2C EEPROM read write test); + MBED_HOSTTEST_START("MBED_A19"); + + const int EEPROM_MEM_ADDR = 0xA0; + const char MARK = 0x66; + int fw = 0; + int fr = 0; + int fc = 0; + int i2c_stat = 0; + bool result = true; + + i2c.frequency(i2c_freq_hz); + printf("I2C: I2C Frequency: %d Hz\r\n", i2c_freq_hz); + + printf("I2C: Write 0x%2X at address 0x0000 test ... \r\n", MARK); + // Data write + { + char data[] = { 0, 0, MARK }; + if ((i2c_stat = i2c.write(EEPROM_MEM_ADDR, data, sizeof(data))) != 0) { + printf("Unable to write data to EEPROM (i2c_stat = 0x%02X), aborting\r\n", i2c_stat); + notify_completion(false); + return 1; + } + + // ACK polling (assumes write will be successful eventually) + while (i2c.write(EEPROM_MEM_ADDR, data, 0) != 0) + ; + } + + printf("I2C: Read data from address 0x0000 test ... \r\n"); + // Data read (actual test) + for (int i = 0; i < ntests; i++) { + // Write data to EEPROM memory + { + char data[] = { 0, 0 }; + if ((i2c_stat = i2c.write(EEPROM_MEM_ADDR, data, 2, true)) != 0) { + printf("Test %d failed at write, i2c_stat is 0x%02X\r\n", i, i2c_stat); + fw++; + continue; + } + } + + // us delay if specified + if (i2c_delay_us != 0) + wait_us(i2c_delay_us); + + // Read data + { + char data[1] = { 0 }; + if ((i2c_stat = i2c.read(EEPROM_MEM_ADDR, data, 1)) != 0) { + printf("Test %d failed at read, i2c_stat is 0x%02X\r\n", i, i2c_stat); + fr++; + continue; + } + + if (data[0] != MARK) { + printf("Test %d failed at data match\r\n", i); + fc++; + } + } + } + + result = (fw + fr + fc == 0); + printf("EEPROM: Test result ... [%s]\r\n", result ? "OK" : "FAIL"); + + if (!result) { + printf("Test Statistics:\r\n"); + printf("\tTotal tests: %d\r\n", ntests); + printf("\tFailed at write: %d\r\n", fw); + printf("\tFailed at read: %d\r\n", fr); + printf("\tData mismatch: %d\r\n", fc); + printf("\tTotal failures: %d\r\n", fw + fr + fc); + } + + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom_line/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom_line/main.cpp new file mode 100644 index 0000000000..26459e874f --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom_line/main.cpp @@ -0,0 +1,147 @@ +#include "test_env.h" + +/****************************************************************************** +* This will test an I2C EEPROM connected to mbed by writing a predefined byte at +* address 0 and then reading it back and comparing it with the known byte value a +* number of times. This test was written specifically for reproducing the bug +* reported here: +* +* https://mbed.org/forum/bugs-suggestions/topic/4128/ +* +* Test configuration: +* +* set 'ntests' to the number of iterations +* set 'i2c_speed_hz' to the desired speed of the I2C interface +* set 'i2c_delay_us' to the delay that will be inserted between 'write' and +* 'read' I2C operations (https://mbed.org/users/mbed_official/code/mbed/issues/1 +* for more details). '0' disables the delay. +* define I2C_EEPROM_VERBOSE to get verbose output +* +* The test ran with a 24LC256 external EEPROM memory, but any I2C EEPROM memory +* that uses two byte addresses should work. +******************************************************************************/ + +// Test configuration block +namespace { +const int ntests = 1000; +const int i2c_freq_hz = 400000; +const int i2c_delay_us = 0; +// const int EEPROM_24LC256_SIZE = (256 * 1024 / 8); // 256 kbit memory +} + +// End of test configuration block + +#if defined(TARGET_KL25Z) +I2C i2c(PTC9, PTC8); + +#elif defined(TARGET_KL46Z) +I2C i2c(PTC9, PTC8); + +#elif defined(TARGET_K64F) +I2C i2c(PTE25, PTE24); + +#elif defined(TARGET_K22F) +I2C i2c(PTE0, PTE1); + +#elif defined(TARGET_K20D50M) +I2C i2c(PTB3, PTB2); + +#elif defined(TARGET_LPC812) +I2C i2c(P0_10, P0_11); + +#elif defined(TARGET_LPC1549) +I2C i2c(P0_23, P0_22); + +#elif defined(TARGET_LPC11U68) +I2C i2c(SDA, SCL); + +#elif defined(TARGET_DELTA_DFCM_NNN40) +I2C i2c(I2C_SDA0, I2C_SCL0); + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) || \ + defined(TARGET_FF_ARDUINO) +I2C i2c(I2C_SDA, I2C_SCL); + +#else +I2C i2c(p28, p27); +#endif + +#define PATTERN_MASK 0x66, ~0x66, 0x00, 0xFF, 0xA5, 0x5A, 0xF0, 0x0F + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(I2C EEPROM line read write test); + MBED_HOSTTEST_START("MBED_A25"); + + const int EEPROM_MEM_ADDR = 0xA0; + bool result = true; + + i2c.frequency(i2c_freq_hz); + printf("I2C: I2C Frequency: %d Hz\r\n", i2c_freq_hz); + + printf("I2C: Lines pattern write test ... "); + int write_errors = 0; + for (int i = 0; i < ntests; i++) { + char data[] = { 0 /*MSB*/, 0 /*LSB*/, PATTERN_MASK }; + const int addr = i * 8; // 8 bytes of data in data array + data[0] = ((0xFF00 & addr) >> 8) & 0x00FF; + data[1] = (addr & 0x00FF); + + if (i2c.write(EEPROM_MEM_ADDR, data, sizeof(data)) != 0) { + write_errors++; + } + + while (i2c.write(EEPROM_MEM_ADDR, NULL, 0)) ; // wait to complete + + // us delay if specified + if (i2c_delay_us != 0) { + wait_us(i2c_delay_us); + } + } + + printf("[%s]\r\n", write_errors ? "FAIL" : "OK"); + printf("I2C: Write errors: %d ... [%s]\r\n", write_errors, write_errors ? "FAIL" : "OK"); + + printf("I2C: Lines pattern read test ... "); + int read_errors = 0; + int pattern_errors = 0; + for (int i = 0; i < ntests; i++) { + char data[8] = { 0 }; // General puspose buffer + const int addr = i * 8; // 8 bytes of data in data array + data[0] = ((0xFF00 & addr) >> 8) & 0x00FF; + data[1] = (addr & 0x00FF); + + // Set address for read + if (i2c.write(EEPROM_MEM_ADDR, data, 2, true) != 0) { + } + + if (i2c.read(EEPROM_MEM_ADDR, data, 8) != 0) { + read_errors++; + } + + static char pattern[] = { PATTERN_MASK }; + if (memcmp(pattern, data, sizeof(data))) { + pattern_errors++; + } + } + + printf("[%s]\r\n", read_errors ? "FAIL" : "OK"); + printf("I2C: Read errors: %d/%d ... [%s]\r\n", read_errors, ntests, read_errors ? "FAIL" : "OK"); + printf("EEPROM: Pattern match errors: %d/%d ... [%s]\r\n", pattern_errors, ntests, pattern_errors ? "FAIL" : "OK"); + + result = write_errors == 0 && read_errors == 0; + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master/main.cpp new file mode 100644 index 0000000000..392be3218c --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master/main.cpp @@ -0,0 +1,45 @@ +#include "mbed.h" +#include "test_env.h" + +#define SIZE (10) +#define ADDR (0x90) + +#if defined(TARGET_KL25Z) +I2C i2c(PTE0, PTE1); +#elif defined(TARGET_nRF51822) +I2C i2c(p22,p20); +#elif defined(TARGET_FF_ARDUINO) || defined(TARGET_MAXWSNENV) +I2C i2c(I2C_SDA, I2C_SCL); +#else +I2C i2c(p28, p27); +#endif + +int main() { + bool success = true; + char buf[] = {3, 2, 1, 4, 5, 6, 7, 8, 9, 10}; + char res[SIZE]; + + i2c.write(ADDR, buf, SIZE); + i2c.read(ADDR, res, SIZE); + + // here should be buf[all]++ + i2c.write(ADDR, res, SIZE); + i2c.read(ADDR, res, SIZE); + + // here should be buf[all]+=2 + i2c.write(ADDR, res, SIZE); + i2c.write(ADDR, res, SIZE); + + // here should be buf[all]+=3 + i2c.read(ADDR, res, SIZE); + i2c.read(ADDR, res, SIZE); + + for(int i = 0; i < SIZE; i++) { + if (res[i] != (buf[i] + 3)) { + success = false; + break; + } + } + + notify_completion(success); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master_slave/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master_slave/main.cpp new file mode 100644 index 0000000000..f94b59f3db --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master_slave/main.cpp @@ -0,0 +1,60 @@ +#include "mbed.h" +#include "test_env.h" +#include <stdio.h> + +#define ADDR (0xA0) +#define FREQ 100000 + +// ******************************************************** +// This tests data transfer between two I2C interfaces on +// the same chip, one configured as master, the other as +// slave. Works on the LPC1768 mbed. +// +// Wiring: +// p28 <-> p9 +// p27 <-> p10 +// pull-up resistors on both lines +// ******************************************************** + +I2CSlave slave(p9, p10); +I2C master(p28, p27); + +int main() +{ + char sent = 'T', received; + + master.frequency(FREQ); + slave.frequency(FREQ); + slave.address(ADDR); + + // First transfer: master to slave + master.start(); + master.write(ADDR); + master.write(sent); + if(slave.receive() != I2CSlave::WriteAddressed) + { + notify_completion(false); + return 1; + } + slave.read(&received, 1); + if(sent != received) + { + notify_completion(false); + return 1; + } + master.stop(); + + // Second transfer: slave to master + master.start(); + master.write(ADDR | 1); + if(slave.receive() != I2CSlave::ReadAddressed) + { + notify_completion(false); + return 1; + } + slave.write(received); + received = master.read(0); + slave.stop(); + notify_completion(received == sent); +} + diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_mma7660/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_mma7660/main.cpp new file mode 100644 index 0000000000..54b1687aa9 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_mma7660/main.cpp @@ -0,0 +1,26 @@ +#include "mbed.h" +#include "test_env.h" +#include "MMA7660.h" + +#if defined(TARGET_FF_ARDUINO) +MMA7660 MMA(I2C_SDA, I2C_SCL); +#else +MMA7660 MMA(p28, p27); +#endif + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(I2C MMA7660 accelerometer); + MBED_HOSTTEST_START("MBED_A13"); + + if (!MMA.testConnection()) + MBED_HOSTTEST_RESULT(false); + + for(int i = 0; i < 5; i++) { + printf("x: %f, y: %f, z: %f\r\n", MMA.x(), MMA.y(), MMA.z()); + wait(0.2); + } + + MBED_HOSTTEST_RESULT(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_slave/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_slave/main.cpp new file mode 100644 index 0000000000..1b24b3cd4b --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_slave/main.cpp @@ -0,0 +1,36 @@ +#include "mbed.h" +#include "test_env.h" + +#define SIZE (10) +#define ADDR (0x90) + +#if defined(TARGET_KL25Z) +I2CSlave slave(PTE0, PTE1); +#elif defined(TARGET_LPC4088) +I2CSlave slave(p9, p10); +#else +I2CSlave slave(p28, p27); +#endif + + int main() { + char buf[SIZE]; + + slave.address(ADDR); + + while (1) { + int i = slave.receive(); + switch (i) { + case I2CSlave::ReadAddressed: + slave.write(buf, SIZE); + for(int i = 0; i < SIZE; i++){ + } + break; + case I2CSlave::WriteAddressed: + slave.read(buf, SIZE); + for(int i = 0; i < SIZE; i++){ + buf[i]++; + } + break; + } + } + } diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/interrupt_chaining/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/interrupt_chaining/main.cpp new file mode 100644 index 0000000000..65bc3ef699 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/interrupt_chaining/main.cpp @@ -0,0 +1,111 @@ +#include "mbed.h" +#include "InterruptManager.h" +#include "cmsis.h" +#include "test_env.h" + +#if defined(TARGET_LPC1768) || defined(TARGET_LPC4088) +#define TIMER_IRQ TIMER3_IRQn +#elif defined(TARGET_LPC11U24) || defined(TARGET_LPC1114) +#define TIMER_IRQ TIMER_32_1_IRQn +#elif defined(TARGET_KL25Z) +#define TIMER_IRQ LPTimer_IRQn +#elif defined(TARGET_LPC2368) +#define TIMER_IRQ TIMER3_IRQn +#else +#error This test can't run on this target. +#endif + +Serial pc(USBTX, USBRX); + +Ticker flipper_1; +DigitalOut led1(LED1); +int led1_state = 0; +void flip_1() { + if (led1_state) { + led1 = 0; led1_state = 0; + } else { + led1 = 1; led1_state = 1; + } +} + +class Sender { +public: + Sender(Serial&s, char c): _s(s), _c(c) {} + void send() { _s.putc(_c); } +private: + Serial& _s; + char _c; +}; +Ticker flipper_2; +Sender s1(pc, '1'); +Sender s2(pc, '2'); + +#if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC4088) || defined(TARGET_LPC2368) || defined(TARGET_LPC1114) +# define LED_NAME LED2 +#elif defined(TARGET_KL05Z) +# define LED_NAME LED2 +#else +# define LED_NAME PTE31 +#endif + +DigitalOut led2(LED_NAME); +int led2_state = 0; +void flip_2() { + if (led2_state) { + led2 = 0; led2_state = 0; + } else { + led2 = 1; led2_state = 1; + } +} + +void testme(void) { + pc.putc('!'); +} + +class Counter { +public: + void inc(void) { + count ++; + } + int get_count(void) const { + return count; + } +private: + static int count; +}; + +int Counter::count = 0; + +int main() { + led1 = 0; + led2 = 0; + uint32_t initial_handler, final_handler; + Counter c; + + // Test chaining inside Serial class + flipper_1.attach(&flip_1, 1.0); // the address of the function to be attached (flip) and the interval (1 second) + flipper_2.attach(&flip_2, 2.0); // the address of the function to be attached (flip) and the interval (2 seconds) + + // Test global chaining (InterruptManager) + printf("Handler initially: %08X\n", initial_handler = NVIC_GetVector(TIMER_IRQ)); + InterruptManager *pManager = InterruptManager::get(); + pFunctionPointer_t ptm = pManager->add_handler(testme, TIMER_IRQ); + pFunctionPointer_t pinc = pManager->add_handler_front(&c, &Counter::inc, TIMER_IRQ); + printf("Handler after calling InterruptManager: %08X\n", NVIC_GetVector(TIMER_IRQ)); + + wait(4.0); + + if (!pManager->remove_handler(ptm, TIMER_IRQ) || !pManager->remove_handler(pinc, TIMER_IRQ)) { + printf ("remove handler failed.\n"); + notify_completion(false); + } + printf("Interrupt handler calls: %d\n", c.get_count()); + printf("Handler after removing previously added functions: %08X\n", final_handler = NVIC_GetVector(TIMER_IRQ)); + + if (initial_handler != final_handler) { + printf( "InteruptManager test failed.\n"); + notify_completion(false); + } + + while(1); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin/main.cpp new file mode 100644 index 0000000000..53da68f5b6 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin/main.cpp @@ -0,0 +1,146 @@ +#include "test_env.h" + +DigitalOut myled(LED1); +DigitalOut led2(LED2); + +volatile int checks = 0; +void in_handler() { + checks++; + led2 = !led2; +} + +#if defined(TARGET_KL25Z) +#define PIN_OUT PTC6 +#define PIN_IN PTA5 + +#elif defined(TARGET_KL05Z) +#define PIN_OUT PTB11 +#define PIN_IN PTB1 + +#elif defined(TARGET_LPC812) +#define PIN_OUT D10 +#define PIN_IN D11 + +#elif defined(TARGET_LPC1114) +#define PIN_OUT dp1 +#define PIN_IN dp2 + +#elif defined(TARGET_LPC1549) +// TARGET_FF_ARDUINO cannot be used, because D0 is used as USBRX (USB serial +// port pin), D1 is used as USBTX +#define PIN_OUT D2 +#define PIN_IN D7 + +#elif defined(TARGET_LPC4088) +#define PIN_IN (p11) +#define PIN_OUT (p12) + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +#define PIN_IN PB_8 +#define PIN_OUT PC_7 + +#elif defined(TARGET_ARCH_MAX) || \ + defined(TARGET_DISCO_F407VG) || \ + defined(TARGET_DISCO_F429ZI)|| \ + defined(TARGET_DISCO_F401VC) +#define PIN_OUT PC_12 +#define PIN_IN PD_0 + +#elif defined(TARGET_RZ_A1H) +#define PIN_OUT D1 +#define PIN_IN D5 + +#elif defined(TARGET_FF_ARDUINO) +#define PIN_OUT D0 +#define PIN_IN D7 + +#elif defined(TARGET_MAXWSNENV) +#define PIN_OUT P0_0 +#define PIN_IN P0_1 + +#elif defined(TARGET_MAX32600MBED) +#define PIN_OUT P1_0 +#define PIN_IN P4_7 + +#else +#define PIN_IN (p5) +#define PIN_OUT (p25) + +#endif + +DigitalOut out(PIN_OUT); +InterruptIn in(PIN_IN); + +#define IN_OUT_SET out = 1; myled = 1; +#define IN_OUT_CLEAR out = 0; myled = 0; + +void flipper() { + for (int i = 0; i < 5; i++) { + IN_OUT_SET; + wait(0.2); + IN_OUT_CLEAR; + wait(0.2); + } +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(InterruptIn); + MBED_HOSTTEST_START("MBED_A7"); + + IN_OUT_CLEAR; + //Test falling edges first + in.rise(NULL); + in.fall(in_handler); + flipper(); + + if(checks != 5) { + printf("MBED: falling edges test failed: %d\r\n",checks); + MBED_HOSTTEST_RESULT(false); + } + + //Now test rising edges + in.rise(in_handler); + in.fall(NULL); + flipper(); + + if (checks != 10) { + printf("MBED: raising edges test failed: %d\r\n", checks); + MBED_HOSTTEST_RESULT(false); + } + + //Now test switch off edge detection + in.rise(NULL); + in.fall(NULL); + flipper(); + + if (checks != 10) { + printf("MBED: edge detection switch off test failed: %d\r\n", checks); + MBED_HOSTTEST_RESULT(false); + } + + //Finally test both + in.rise(in_handler); + in.fall(in_handler); + flipper(); + + if (checks != 20) { + printf("MBED: Simultaneous rising and falling edges failed: %d\r\n", checks); + MBED_HOSTTEST_RESULT(false); + } + + MBED_HOSTTEST_RESULT(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin_2/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin_2/main.cpp new file mode 100644 index 0000000000..0f12f6e976 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin_2/main.cpp @@ -0,0 +1,71 @@ +#include "mbed.h" + +#if defined(TARGET_LPC4088) +InterruptIn button(p18); +InterruptIn button1(p17); +InterruptIn button2(p16); +InterruptIn button3(p15); +InterruptIn button4(p14); +InterruptIn button5(p13); +InterruptIn button6(p12); +InterruptIn button7(p11); +InterruptIn button8(p10); +InterruptIn button9(p9); +DigitalOut led(LED1); +DigitalOut flash(LED4); + +#elif defined(TARGET_LPC1114) +InterruptIn button(p30); // SW2 (User switch) +InterruptIn button1(p5); +InterruptIn button2(p6); +InterruptIn button3(p7); +InterruptIn button4(p9); +InterruptIn button5(p10); +InterruptIn button6(p12); +InterruptIn button7(p13); +InterruptIn button8(p14); +InterruptIn button9(p15); +DigitalOut led(LED1); +DigitalOut flash(LED2); + +#else +InterruptIn button(p30); +InterruptIn button1(p29); +InterruptIn button2(p28); +InterruptIn button3(p27); +InterruptIn button4(p26); +InterruptIn button5(p25); +InterruptIn button6(p24); +InterruptIn button7(p23); +InterruptIn button8(p22); +InterruptIn button9(p21); +DigitalOut led(LED1); +DigitalOut flash(LED4); +#endif + +void flip() { + led = !led; +} + +int main() { + flash = 0; + led = 0; +#if defined(TARGET_LPC1114) + button.mode(PullUp); +#endif + button.rise(&flip); // attach the address of the flip function to the rising edge + button1.rise(&flip); + button2.rise(&flip); + button3.rise(&flip); + button4.rise(&flip); + button5.rise(&flip); + button6.rise(&flip); + button7.rise(&flip); + button8.rise(&flip); + button9.rise(&flip); + + while(1) { // wait around, interrupts will interrupt this! + flash = !flash; + wait(0.25); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/modserial/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/modserial/main.cpp new file mode 100644 index 0000000000..7db8c6876d --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/modserial/main.cpp @@ -0,0 +1,115 @@ +/* + * To run this test program, link p9 to p10 so the Serial loops + * back and receives characters it sends. + */ +#include "mbed.h" +#include "MODSERIAL.h" + +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); +DigitalOut led4(LED4); + +MODSERIAL pc(USBTX, USBRX); + +/* + * As experiement, you can define MODSERIAL as show here and see what + * effects it has on the LEDs. + * + * MODSERIAL uart(TX_PIN, RX_PIN, 512); + * With this, the 512 characters sent can straight into the buffer + * vary quickly. This means LED1 is only on briefly as the TX buffer + * fills. + * + * MODSERIAL uart(TX_PIN, RX_PIN, 32); + * With this, the buffer is smaller than the default 256 bytes and + * therefore LED1 stays on much longer while the system waits for + * room in the TX buffer. + */ +MODSERIAL uart(p9, p10); + +// This function is called when a character goes from the TX buffer +// to the Uart THR FIFO register. +void txCallback(MODSERIAL_IRQ_INFO *q) { + led2 = !led2; +} + +// This function is called when TX buffer goes empty +void txEmpty(MODSERIAL_IRQ_INFO *q) { + led2 = 0; + pc.puts(" Done. "); +} + +// This function is called when a character goes into the RX buffer. +void rxCallback(MODSERIAL_IRQ_INFO *q) { + led3 = !led3; + pc.putc(uart.getc()); +} + +int main() { + int c = 'A'; + + // Ensure the baud rate for the PC "USB" serial is much + // higher than "uart" baud rate below. (default: 9600) + // pc.baud(9600); + + // Use a deliberatly slow baud to fill up the TX buffer + uart.baud(1200); + + uart.attach(&txCallback, MODSERIAL::ModTxIrq); + uart.attach(&rxCallback, MODSERIAL::ModRxIrq); + uart.attach(&txEmpty, MODSERIAL::ModTxEmpty); + + // Loop sending characters. We send 512 + // which is twice the default TX/RX buffer size. + + led1 = 1; // Show start of sending with LED1. + + for (int loop = 0; loop < 512; loop++) { + uart.printf("%c", c); + c++; + if (c > 'Z') c = 'A'; + } + + led1 = 0; // Show the end of sending by switching off LED1. + + // End program. Flash LED4. Notice how LED 2 and 3 continue + // to flash for a short period while the interrupt system + // continues to send the characters left in the TX buffer. + + while(1) { + led4 = !led4; + wait(0.25); + } +} + +/* + * Notes. Here is the sort of output you can expect on your PC/Mac/Linux host + * machine that is connected to the "pc" USB serial port. + * + * ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV + * WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR + * STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN + * OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ + * KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF + * GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB + * CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ Done. R + * + * Of interest is that last "R" character after the system has said "Done." + * This comes from the fact that the TxEmpty callback is made when the TX buffer + * becomes empty. MODSERIAL makes use of the fact that the Uarts built into the + * LPC17xx device use a 16 byte FIFO on both RX and TX channels. This means that + * when the TxEmpty callback is made, the TX buffer is empty, but that just means + * the "last few characters" were written to the TX FIFO. So although the TX + * buffer has gone empty, the Uart's transmit system is still sending any remaining + * characters from it's TX FIFO. If you want to be truely sure all the characters + * you have sent have left the Mbed then call txIsBusy(); This function will + * return true if characters are still being sent. If it returns false after + * the Tx buffer is empty then all your characters have been sent. + * + * In a similar way, when characters are received into the RX FIFO, the entire + * FIFO contents is moved to the RX buffer, assuming there is room left in the + * RX buffer. If there is not, any remaining characters are left in the RX FIFO + * and will be moved to the RX buffer on the next interrupt or when the running + * program removes a character(s) from the RX buffer with the getc() method. + */ diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/pin_toggling/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/pin_toggling/main.cpp new file mode 100644 index 0000000000..5eb809a2ff --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/pin_toggling/main.cpp @@ -0,0 +1,10 @@ +#include "mbed.h" + +DigitalOut out(p5); + +int main() { + while (true) { + out = 1; + out = 0; + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/portinout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/portinout/main.cpp new file mode 100644 index 0000000000..22f2c66b3b --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/portinout/main.cpp @@ -0,0 +1,139 @@ +#include "test_env.h" + +#if defined(TARGET_K64F) +#define P1_1 (1 << 16) +#define P1_2 (1 << 17) +#define PORT_1 PortC + +#define P2_1 (1 << 2) +#define P2_2 (1 << 3) +#define PORT_2 PortC + +#elif defined(TARGET_LPC11U24) +#define P1_1 (1 << 9) // p0.9 +#define P1_2 (1 << 8) // p0.8 +#define PORT_1 Port0 + +#define P2_1 (1 << 24) // p1.24 +#define P2_2 (1 << 25) // p1.25 +#define PORT_2 Port1 + +#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368) +#define P1_1 (1 << 9) // p0.9 -> p5 +#define P1_2 (1 << 8) // p0.8 -> p6 +#define PORT_1 Port0 + +#define P2_1 (1 << 1) // p2.1 -> p25 +#define P2_2 (1 << 0) // p2.0 -> p26 +#define PORT_2 Port2 + +#elif defined(TARGET_LPC4088) +#define P1_1 (1 << 7) // p0.7 -> p13 +#define P1_2 (1 << 6) // p0.6 -> p14 +#define PORT_1 Port0 + +#define P2_1 (1 << 2) // p1.2 -> p30 +#define P2_2 (1 << 3) // p1.3 -> p29 +#define PORT_2 Port1 + +#elif defined(TARGET_LPC1114) +#define P1_1 (1 << 9) // p0.9 +#define P1_2 (1 << 8) // p0.8 +#define PORT_1 Port0 + +#define P2_1 (1 << 1) // p1.1 +#define P2_2 (1 << 0) // p1.0 +#define PORT_2 Port1 + +#elif defined(TARGET_KL25Z) +#define P1_1 (1 << 4) // PTA4 +#define P1_2 (1 << 5) // PTA5 +#define PORT_1 PortA + +#define P2_1 (1 << 5) // PTC5 +#define P2_2 (1 << 6) // PTC6 +#define PORT_2 PortC + +#elif defined(TARGET_nRF51822) +#define P1_1 (1 << 4) // p4 +#define P1_2 (1 << 5) // p5 +#define PORT_1 Port0 + +#define P2_1 (1 << 24) // p24 +#define P2_2 (1 << 25) // p25 +#define PORT_2 Port0 + +#elif defined(TARGET_MAXWSNENV) +#define P1_1 (1 << 0) +#define P1_2 (1 << 1) +#define PORT_1 Port0 + +#define P2_1 (1 << 0) +#define P2_2 (1 << 1) +#define PORT_2 Port1 + +#elif defined(TARGET_MAX32600MBED) +#define P1_1 (1 << 0) // P1_0 +#define P1_2 (1 << 1) // P1_1 +#define PORT_1 Port1 + +#define P2_1 (1 << 7) // P4_7 +#define P2_2 (1 << 6) // P4_6 +#define PORT_2 Port4 + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +#define P1_1 (1 << 6) // PC_6 +#define P1_2 (1 << 5) // PC_5 +#define PORT_1 PortC + +#define P2_1 (1 << 8) // PB_8 +#define P2_2 (1 << 9) // PB_9 +#define PORT_2 PortB +#endif + +#define MASK_1 (P1_1 | P1_2) +#define MASK_2 (P2_1 | P2_2) + +PortInOut port1(PORT_1, MASK_1); +PortInOut port2(PORT_2, MASK_2); + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(PortInOut); + MBED_HOSTTEST_START("MBED_A11"); + + bool check = true; + + port1.output(); + port2.input(); + + port1 = MASK_1; wait(0.1); + if (port2 != MASK_2) check = false; + + port1 = 0; wait(0.1); + if (port2 != 0) check = false; + + port1.input(); + port2.output(); + + port2 = MASK_2; wait(0.1); + if (port1 != MASK_1) check = false; + + port2 = 0; wait(0.1); + if (port1 != 0) check = false; + + MBED_HOSTTEST_RESULT(check); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/portout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/portout/main.cpp new file mode 100644 index 0000000000..cf8f4d2ba6 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/portout/main.cpp @@ -0,0 +1,47 @@ +#include "mbed.h" + +# if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) +# define LED_PORT Port1 +# define LED1 (1 << 18) // P1.18 +# define LED2 (1 << 20) // P1.20 +# define LED3 (1 << 21) // P1.21 +# define LED4 (1 << 23) // P1.23 +# elif defined(TARGET_LPC11U24) || defined(TARGET_LPC1114) +# define LED_PORT Port1 +# define LED1 (1 << 8) // P1.8 +# define LED2 (1 << 9) // P1.9 +# define LED3 (1 << 10) // P1.10 +# define LED4 (1 << 11) // P1.11 +# elif defined(TARGET_MAXWSNENV) +# define LED_PORT Port1 +# define LED1 (1 << 4) // P1.4 +# define LED2 (1 << 6) // P1.6 +# define LED3 (1 << 7) // P1.7 +# define LED4 0 +# elif defined(TARGET_MAX32600MBED) +# define LED_PORT Port7 +# define LED1 (1 << 0) // P7.0 +# define LED2 (1 << 6) // P7.6 +# define LED3 (1 << 4) // P7.4 +# define LED4 0 +# endif + +#define LED_MASK (LED1|LED2|LED3|LED4) + +int mask[4] = { + (LED1 | LED3), + (LED2 | LED4), + (LED1 | LED2), + (LED3 | LED4) +}; + +PortOut ledport(LED_PORT, LED_MASK); + +int main() { + while (1) { + for (int i=0; i<4; i++) { + ledport = mask[i]; + wait(1); + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/portout_portin/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/portout_portin/main.cpp new file mode 100644 index 0000000000..6fb02990e6 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/portout_portin/main.cpp @@ -0,0 +1,135 @@ +#include "test_env.h" + +#if defined(TARGET_K64F) || defined(TARGET_KL05Z) +#define P1_1 (1 << 16) +#define P1_2 (1 << 17) +#define PORT_1 PortC + +#define P2_1 (1 << 2) +#define P2_2 (1 << 3) +#define PORT_2 PortC + +#elif defined(TARGET_LPC11U24) +#define P1_1 (1 << 9) // p0.9 +#define P1_2 (1 << 8) // p0.8 +#define PORT_1 Port0 + +#define P2_1 (1 << 24) // p1.24 +#define P2_2 (1 << 25) // p1.25 +#define PORT_2 Port1 + +#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368) +#define P1_1 (1 << 9) // p0.9 -> p5 +#define P1_2 (1 << 8) // p0.8 -> p6 +#define PORT_1 Port0 + +#define P2_1 (1 << 1) // p2.1 -> p25 +#define P2_2 (1 << 0) // p2.0 -> p26 +#define PORT_2 Port2 + +#elif defined(TARGET_LPC4088) +#define P1_1 (1 << 7) // p0.7 -> p13 +#define P1_2 (1 << 6) // p0.6 -> p14 +#define PORT_1 Port0 + +#define P2_1 (1 << 2) // p1.2 -> p30 +#define P2_2 (1 << 3) // p1.3 -> p29 +#define PORT_2 Port1 + +#elif defined(TARGET_LPC1114) +#define P1_1 (1 << 9) // p0.9 +#define P1_2 (1 << 8) // p0.8 +#define PORT_1 Port0 + +#define P2_1 (1 << 1) // p1.1 +#define P2_2 (1 << 0) // p1.0 +#define PORT_2 Port1 + +#elif defined(TARGET_KL25Z) +#define P1_1 (1 << 4) // PTA4 +#define P1_2 (1 << 5) // PTA5 +#define PORT_1 PortA + +#define P2_1 (1 << 5) // PTC5 +#define P2_2 (1 << 6) // PTC6 +#define PORT_2 PortC + +#elif defined(TARGET_nRF51822) +#define P1_1 (1 << 4) // p4 +#define P1_2 (1 << 5) // p5 +#define PORT_1 Port0 + +#define P2_1 (1 << 24) // p24 +#define P2_2 (1 << 25) // p25 +#define PORT_2 Port0 + +#elif defined(TARGET_MAXWSNENV) +#define P1_1 (1 << 0) +#define P1_2 (1 << 1) +#define PORT_1 Port0 + +#define P2_1 (1 << 0) +#define P2_2 (1 << 1) +#define PORT_2 Port1 + +#elif defined(TARGET_MAX32600MBED) +#define P1_1 (1 << 0) // P1_0 +#define P1_2 (1 << 1) // P1_1 +#define PORT_1 Port1 + +#define P2_1 (1 << 7) // P4_7 +#define P2_2 (1 << 6) // P4_6 +#define PORT_2 Port4 + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +#define P1_1 (1 << 6) // PC_6 +#define P1_2 (1 << 5) // PC_5 +#define PORT_1 PortC + +#define P2_1 (1 << 8) // PB_8 +#define P2_2 (1 << 9) // PB_9 +#define PORT_2 PortB +#endif + +#define MASK_1 (P1_1 | P1_2) +#define MASK_2 (P2_1 | P2_2) + +PortOut port_out(PORT_1, MASK_1); +PortIn port_in (PORT_2, MASK_2); + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(PortOut PortIn); + MBED_HOSTTEST_START("MBED_A10"); + + port_out = MASK_1; + wait(0.1); + int value = port_in.read(); + if (value != MASK_2) { + printf("[Test high] expected (0x%x) received (0x%x)\n", MASK_2, value); + notify_completion(false); + } + + port_out = 0; + wait(0.1); + value = port_in.read(); + if (value != 0) { + printf("[Test low] expected (0x%x) received (0x%x)\n", 0, value); + notify_completion(false); + } + + notify_completion(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm/main.cpp new file mode 100644 index 0000000000..b7b3550098 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm/main.cpp @@ -0,0 +1,174 @@ +#include "test_env.h" + +/* Timer/Match Register Pinout Options + +CT16B0/MR0 p5 (P0_9) +CT16B0/MR1 p6 (P0_8) +CT16B0/MR2 p34 (P1_15) + +CT16B1/MR0 p36 (P0_21) +CT16B1/MR1 p20 (P0_22) and p14 (P1_23) + +CT32B0/MR0 p25 (P1_24) +CT32B0/MR1 p26 (P1_25) and USBTX (P0_19) +CT32B0/MR2 p10 (P1_26) + */ + +float value = 0.75; + +int main() { +#if defined(TARGET_FF_ARDUINO) + PwmOut pwm(D9); + + pwm.period_ms(10); + pwm.write(value); + + float result = floor(pwm.read() * 100 + 0.5) / 100; // round it to 0.xx + printf("Initialize PWM on pin D9 with duty cycle: %.2f\n", result); + + notify_completion(result == value ? true : false); + +#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC11U24) || defined(TARGET_LPC4088) + PwmOut pwm_p25(p25); + PwmOut pwm_p26(p26); + + pwm_p25.write(0.75); + pwm_p26.write(0.50); + + printf("Initialize PWM on pin 25 with duty cycle: %.2f\n", pwm_p25.read()); + printf("Initialize PWM on pin 26 with duty cycle: %.2f\n", pwm_p26.read()); + +#elif defined(TARGET_LPC1114) + PwmOut pwm_dp24(dp24); // P0_1 + PwmOut pwm_dp18(dp18); // P1_9 + + pwm_dp24.write(0.75); + pwm_dp18.write(0.50); + + printf("Initialize PWM on pin 24 with duty cycle: %.2f\n", pwm_dp24.read()); + printf("Initialize PWM on pin 18 with duty cycle: %.2f\n", pwm_dp18.read()); + +#elif defined(TARGET_nRF51822) + PwmOut pwm_p24(p24); + PwmOut pwm_p25(p25); + + pwm_p24.write(0.75); + pwm_p25.write(0.50); + + printf("Initialize PWM on pin 24 with duty cycle: %.2f\n", pwm_p24.read()); + printf("Initialize PWM on pin 25 with duty cycle: %.2f\n", pwm_p25.read()); + +#elif defined(TARGET_DISCO_F100RB) + PwmOut pwm_1(PB_3); + PwmOut pwm_2(PB_4); + + pwm_1.write(0.75); + pwm_2.write(0.50); + + printf("Initialize PWM on pin PB_3 with duty cycle: %.2f\n", pwm_1.read()); + printf("Initialize PWM on pin PB_4 with duty cycle: %.2f\n", pwm_2.read()); +#elif defined(TARGET_DISCO_F051R8) + PwmOut pwm_1(PA_7); + PwmOut pwm_2(PC_7); + + pwm_1.write(0.75); + pwm_2.write(0.50); + + printf("Initialize PWM on pin PA_7 with duty cycle: %.2f\n", pwm_1.read()); + printf("Initialize PWM on pin PC_7 with duty cycle: %.2f\n", pwm_2.read()); +#elif defined(TARGET_DISCO_F303VC) + PwmOut pwm_1(PA_8); + PwmOut pwm_2(PA_9); + + pwm_1.write(0.75); + pwm_2.write(0.50); + + printf("Initialize PWM on pin PA_7 with duty cycle: %.2f\n", pwm_1.read()); + printf("Initialize PWM on pin PC_7 with duty cycle: %.2f\n", pwm_2.read()); +#elif defined(TARGET_MAXWSNENV) + PwmOut pwm_1(TP2); + PwmOut pwm_2(TP4); + + pwm_1.write(0.75); + pwm_2.write(0.50); + + printf("Initialize PWM on pin TP2 with duty cycle: %.2f\n", pwm_1.read()); + printf("Initialize PWM on pin TP4 with duty cycle: %.2f\n", pwm_2.read()); +#elif defined(TARGET_DISCO_F407VG) + PwmOut pwm_1(PD_12); + PwmOut pwm_2(PD_13); + + pwm_1.write(value); + pwm_2.write(0.50); + + float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx + + printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result); + printf("Initialize PWM on pin PD_13 with duty cycle: %.2f\n", pwm_2.read()); + + notify_completion(result == value ? true : false); +#elif defined(TARGET_DISCO_F429ZI) + PwmOut pwm_1(PA_0); + + pwm_1.write(value); + + float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx + + printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result); + + notify_completion(result == value ? true : false); +#elif defined(TARGET_MTS_MDOT_F405RG) + PwmOut pwm_1(PA_0); + + pwm_1.write(value); + + float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx + + printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result); + + notify_completion(result == value ? true : false); +#elif defined(TARGET_MTS_DRAGONFLY_F411RE) + PwmOut pwm_1(PA_0); + + pwm_1.write(value); + + float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx + + printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result); + + notify_completion(result == value ? true : false); +#elif defined(TARGET_MTS_MDOT_F411RE) + PwmOut pwm_1(PA_0); + + pwm_1.write(value); + + float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx + + printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result); + + notify_completion(result == value ? true : false); +#elif defined(TARGET_UBLOX_C029) + PwmOut pwm_1(PA_0); + + pwm_1.write(value); + + float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx + + printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result); + + notify_completion(result == value ? true : false); +#elif defined(TARGET_MAX32600MBED) + PwmOut pwm_1(P1_2); + PwmOut pwm_2(P1_3); + + pwm_1.write(0.75); + pwm_2.write(0.50); + + printf("Initialize PWM on pin P1.2 with duty cycle: %.2f\n", pwm_1.read()); + printf("Initialize PWM on pin P1.3 with duty cycle: %.2f\n", pwm_2.read()); +#else +#error This test is not supported on this target. +#endif + + notify_completion(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm_led/pwm.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm_led/pwm.cpp new file mode 100644 index 0000000000..c30dfc4fbd --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm_led/pwm.cpp @@ -0,0 +1,54 @@ +#include "mbed.h" + +#if defined(TARGET_K64F) +#define TEST_LED D9 + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +#define TEST_LED D3 + +#elif defined (TARGET_K22F) || \ + defined (TARGET_LPC824) +#define TEST_LED LED_GREEN + +#elif defined (TARGET_MAXWSNENV) +#define TEST_LED LED_GREEN + +#elif defined (TARGET_DISCO_F407VG) +#define TEST_LED LED1 + +#else +#error This test is not supported on this target. +#endif + +PwmOut led(TEST_LED); + +int main() { + float crt = 1.0, delta = 0.05; + + led.period_ms(2); // 500Hz + while (true) { + led.write(crt); + wait_ms(50); + crt = crt + delta; + if (crt > 1.0) { + crt = 1.0; + delta = -delta; + } + else if (crt < 0) { + crt = 0; + delta = -delta; + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/reset/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/reset/main.cpp new file mode 100644 index 0000000000..b38218e706 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/reset/main.cpp @@ -0,0 +1,17 @@ +#include "mbed.h" + +Serial pc(USBTX, USBRX); + +extern "C" void mbed_reset(); + +int main() { + pc.printf("start\n"); + wait(1); + + unsigned int counter = 0; + while(1) { + pc.printf("%u\n",counter++); + wait(1); + mbed_reset(); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp new file mode 100644 index 0000000000..9912c671b6 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp @@ -0,0 +1,67 @@ +#include "mbed.h" +#include "test_env.h" +#include "mbed_rpc.h" + +void foo(Arguments *args, Reply *reply) { + reply->putData<float>(args->getArg<float>() * 3.3); +} + +bool rpc_test(const char *input, const char *expected) { + char outbuf[RPC_MAX_STRING] = {0}; + bool result = RPC::call(input, outbuf); + printf("RPC: %s -> ", input); + + if (result == false) { + printf("Procedure call ... [FAIL]\r\n"); + } else if (strncmp(outbuf, expected, RPC_MAX_STRING) != 0) { + printf("'%s' != '%s' ... [FAIL]\r\n", outbuf, expected); + result = false; + } else { + printf("'%s' ... [OK]\r\n", outbuf); + } + return result; +} + +#define RPC_TEST(INPUT,EXPECTED) result = result && rpc_test(INPUT,EXPECTED); if (result == false) { notify_completion(result); exit(1); } + +int main() { + float f = 0; + bool result = true; + // Variable + RPCVariable<float> rpc_f(&f, "f"); + RPC_TEST("/f/write 1", ""); + RPC_TEST("/f/read", "1"); + + // Function + RPCFunction rpc_foo(&foo, "foo"); +#if defined(TOOLCHAIN_ARM_MICRO) + RPC_TEST("/foo/run 1", "3.299999952316284"); +#else + RPC_TEST("/foo/run 1", "3.2999999523162842"); +#endif + + // Class + RPC::add_rpc_class<RpcDigitalOut>(); + RPC_TEST("/DigitalOut/new LED2 led2", "led2"); + RPC_TEST("/led2/write 1", ""); + RPC_TEST("/led2/read", "1"); + + // Instance + RpcDigitalOut rpc_led(LED1, "led1"); + RPC_TEST("/led1/write 1", ""); + RPC_TEST("/led1/read", "1"); + + // Introspection + RPC_TEST("/", "led1 led2 foo f DigitalOut RPC"); + RPC_TEST("/f", "read write delete"); + RPC_TEST("/foo", "run delete"); + RPC_TEST("/DigitalOut", "new"); + RPC_TEST("/led1", "write read delete"); + + // Delete instance + RPC_TEST("/led2/delete", ""); + RPC_TEST("/", "led1 foo f DigitalOut RPC"); + + notify_completion(result); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/rtc/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/rtc/main.cpp new file mode 100644 index 0000000000..505e70b5af --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/rtc/main.cpp @@ -0,0 +1,20 @@ +#include "mbed.h" +#include "test_env.h" + +#define CUSTOM_TIME 1256729737 + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(rtc_auto); + MBED_HOSTTEST_DESCRIPTION(RTC); + MBED_HOSTTEST_START("MBED_16"); + + char buffer[32] = {0}; + set_time(CUSTOM_TIME); // Set RTC time to Wed, 28 Oct 2009 11:35:37 + while(1) { + time_t seconds = time(NULL); + strftime(buffer, 32, "%Y-%m-%d %H:%M:%S %p", localtime(&seconds)); + printf("MBED: [%ld] [%s]\r\n", seconds, buffer); + wait(1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sd/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd/main.cpp new file mode 100644 index 0000000000..2d1b5a19cf --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd/main.cpp @@ -0,0 +1,112 @@ +#include "mbed.h" +#include "SDFileSystem.h" +#include "test_env.h" + +#if defined(TARGET_KL25Z) +SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); + +#elif defined(TARGET_KL46Z) +SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); + +#elif defined(TARGET_K64F) +SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); + +#elif defined(TARGET_K22F) +SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); + +#elif defined(TARGET_K20D50M) +SDFileSystem sd(PTD2, PTD3, PTD1, PTC2, "sd"); + +#elif defined(TARGET_nRF51822) +SDFileSystem sd(p12, p13, p15, p14, "sd"); + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_DISCO_F051R8) +SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); + +#elif defined(TARGET_LPC2368) +SDFileSystem sd(p11, p12, p13, p14, "sd"); + +#elif defined(TARGET_LPC11U68) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_LPC1549) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_RZ_A1H) +SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd"); + +#elif defined(TARGET_LPC11U37H_401) +SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd"); + +#else +SDFileSystem sd(p11, p12, p13, p14, "sd"); +#endif + +namespace { +const char *sd_file_path = "/sd/out.txt"; +const int DATA_SIZE = 256; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(SD File System); + MBED_HOSTTEST_START("MBED_A12"); + + uint8_t data_written[DATA_SIZE] = { 0 }; + bool result = false; + + // Fill data_written buffer with random data + // Write these data into the file + bool write_result = false; + { + printf("SD: Writing ... "); + FILE *f = fopen(sd_file_path, "w"); + if (f) { + for (int i = 0; i < DATA_SIZE; i++) { + data_written[i] = rand() % 0XFF; + fprintf(f, "%c", data_written[i]); + } + write_result = true; + fclose(f); + } + printf("[%s]\r\n", write_result ? "OK" : "FAIL"); + } + + // Read back the data from the file and store them in data_read + bool read_result = false; + { + printf("SD: Reading data ... "); + FILE *f = fopen(sd_file_path, "r"); + if (f) { + read_result = true; + for (int i = 0; i < DATA_SIZE; i++) { + uint8_t data = fgetc(f); + if (data != data_written[i]) { + read_result = false; + break; + } + } + fclose(f); + } + printf("[%s]\r\n", read_result ? "OK" : "FAIL"); + } + + result = write_result && read_result; + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fatfs/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fatfs/main.cpp new file mode 100644 index 0000000000..6e95fec97a --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fatfs/main.cpp @@ -0,0 +1,161 @@ +#include "mbed.h" +#include "SDFileSystem.h" +#include "test_env.h" +#include <algorithm> +#include <stdlib.h> + +#if defined(TARGET_KL25Z) +SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); + +#elif defined(TARGET_KL46Z) +SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); + +#elif defined(TARGET_K64F) +SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); + +#elif defined(TARGET_K22F) +SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); + +#elif defined(TARGET_K20D50M) +SDFileSystem sd(PTD2, PTD3, PTD1, PTC2, "sd"); + +#elif defined(TARGET_nRF51822) +SDFileSystem sd(p12, p13, p15, p14, "sd"); + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_DISCO_F051R8) +SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); + +#elif defined(TARGET_LPC2368) +SDFileSystem sd(p11, p12, p13, p14, "sd"); + +#elif defined(TARGET_LPC11U68) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_LPC1549) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_LPC11U37H_401) +SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd"); + +#else +SDFileSystem sd(p11, p12, p13, p14, "sd"); +#endif + +namespace { +char buffer[1024]; +const int KIB_RW = 128; +Timer timer; +const char *bin_filename = "0:testfile.bin"; +} + +bool test_sf_file_write_fatfs(const char *filename, const int kib_rw) { + FIL file; + bool result = true; + FRESULT res = f_open(&file, filename, FA_WRITE | FA_CREATE_ALWAYS); + if (res == FR_OK) { + int byte_write = 0; + unsigned int bytes = 0; + timer.start(); + for (int i = 0; i < kib_rw; i++) { + if (f_write(&file, buffer, sizeof(buffer), &bytes) != FR_OK) { + result = false; + f_close(&file); + printf("Write error!\r\n"); + break; + } else { + byte_write++; + } + } + timer.stop(); + f_close(&file); + double test_time_sec = timer.read_us() / 1000000.0; + double speed = kib_rw / test_time_sec; + printf("%d KiB write in %.3f sec with speed of %.4f KiB/s\r\n", byte_write, test_time_sec, speed); + notify_performance_coefficient("write_kibps", speed); + } else { + printf("File '%s' not opened\r\n", filename); + result = false; + } + timer.reset(); + return result; +} + +bool test_sf_file_read_fatfs(const char *filename, const int kib_rw) { + FIL file; + bool result = true; + FRESULT res = f_open(&file, filename, FA_READ | FA_OPEN_EXISTING); + if (res == FR_OK) { + timer.start(); + int byte_read = 0; + unsigned int bytes = 0; + do { + res = f_read(&file, buffer, sizeof(buffer), &bytes); + byte_read++; + } while (res == FR_OK && bytes == sizeof(buffer)); + timer.stop(); + f_close(&file); + double test_time_sec = timer.read_us() / 1000000.0; + double speed = kib_rw / test_time_sec; + printf("%d KiB read in %.3f sec with speed of %.4f KiB/s\r\n", byte_read, test_time_sec, speed); + notify_performance_coefficient("fs_read_kibps", speed); + } else { + printf("File '%s' not opened\r\n", filename); + result = false; + } + timer.reset(); + return result; +} + +char RandomChar() { + return rand() % 100; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(SD FatFS RW Speed); + MBED_HOSTTEST_START("PERF_3"); + + // Test header + printf("\r\n"); + printf("SD Card FatFS Performance Test\r\n"); + printf("File name: %s\r\n", bin_filename); + printf("Buffer size: %d KiB\r\n", (KIB_RW * sizeof(buffer)) / 1024); + + // Initialize buffer + srand(testenv_randseed()); + char *buffer_end = buffer + sizeof(buffer); + std::generate (buffer, buffer_end, RandomChar); + + bool result = true; + for (;;) { + printf("Write test...\r\n"); + if (test_sf_file_write_fatfs(bin_filename, KIB_RW) == false) { + result = false; + break; + } + + printf("Read test...\r\n"); + if (test_sf_file_read_fatfs(bin_filename, KIB_RW) == false) { + result = false; + break; + } + break; + } + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fhandle/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fhandle/main.cpp new file mode 100644 index 0000000000..209c948145 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fhandle/main.cpp @@ -0,0 +1,156 @@ +#include "mbed.h" +#include "SDFileSystem.h" +#include "test_env.h" +#include <algorithm> +#include <stdlib.h> + +#if defined(TARGET_KL25Z) +SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); + +#elif defined(TARGET_KL46Z) +SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); + +#elif defined(TARGET_K64F) +SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); + +#elif defined(TARGET_K22F) +SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); + +#elif defined(TARGET_K20D50M) +SDFileSystem sd(PTD2, PTD3, PTD1, PTC2, "sd"); + +#elif defined(TARGET_nRF51822) +SDFileSystem sd(p12, p13, p15, p14, "sd"); + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_DISCO_F051R8) +SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); + +#elif defined(TARGET_LPC2368) +SDFileSystem sd(p11, p12, p13, p14, "sd"); + +#elif defined(TARGET_LPC11U68) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_LPC1549) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_LPC11U37H_401) +SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd"); + +#else +SDFileSystem sd(p11, p12, p13, p14, "sd"); +#endif + +namespace { +char buffer[1024]; +const int KIB_RW = 128; +Timer timer; +const char *bin_filename = "testfile.bin"; +} + +bool test_sf_file_write_fhandle(const char *filename, const int kib_rw) { + bool result = true; + FileHandle* file = sd.open(filename, O_WRONLY | O_CREAT | O_TRUNC); + if (file != NULL) { + int byte_write = 0; + timer.start(); + for (int i = 0; i < kib_rw; i++) { + if (file->write(buffer, sizeof(buffer)) != sizeof(buffer)) { + result = false; + file->close(); + printf("Write error!\r\n"); + break; + } else { + byte_write++; + } + } + timer.stop(); + file->close(); + double test_time_sec = timer.read_us() / 1000000.0; + double speed = kib_rw / test_time_sec; + printf("%d KiB write in %.3f sec with speed of %.4f KiB/s\r\n", byte_write, test_time_sec, speed); + notify_performance_coefficient("write_kibps", speed); + } else { + printf("File '%s' not opened\r\n", filename); + result = false; + } + timer.reset(); + return result; +} + +bool test_sf_file_read_fhandle(const char *filename, const int kib_rw) { + bool result = true; + FileHandle* file = sd.open(filename, O_RDONLY); + if (file) { + timer.start(); + int byte_read = 0; + while (file->read(buffer, sizeof(buffer)) == sizeof(buffer)) { + byte_read++; + } + timer.stop(); + file->close(); + double test_time_sec = timer.read_us() / 1000000.0; + double speed = kib_rw / test_time_sec; + printf("%d KiB read in %.3f sec with speed of %.4f KiB/s\r\n", byte_read, test_time_sec, speed); + notify_performance_coefficient("fs_read_kibps", speed); + } else { + printf("File '%s' not opened\r\n", filename); + result = false; + } + timer.reset(); + return result; +} + +char RandomChar() { + return rand() % 100; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(SD FileHandle RW Speed); + MBED_HOSTTEST_START("PERF_2"); + + // Test header + printf("\r\n"); + printf("SD Card FileHandle Performance Test\r\n"); + printf("File name: %s\r\n", bin_filename); + printf("Buffer size: %d KiB\r\n", (KIB_RW * sizeof(buffer)) / 1024); + + // Initialize buffer + srand(testenv_randseed()); + char *buffer_end = buffer + sizeof(buffer); + std::generate (buffer, buffer_end, RandomChar); + + bool result = true; + for (;;) { + printf("Write test...\r\n"); + if (test_sf_file_write_fhandle(bin_filename, KIB_RW) == false) { + result = false; + break; + } + + printf("Read test...\r\n"); + if (test_sf_file_read_fhandle(bin_filename, KIB_RW) == false) { + result = false; + break; + } + break; + } + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_stdio/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_stdio/main.cpp new file mode 100644 index 0000000000..46c14bcb66 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_stdio/main.cpp @@ -0,0 +1,156 @@ +#include "mbed.h" +#include "SDFileSystem.h" +#include "test_env.h" +#include <algorithm> +#include <stdlib.h> + +#if defined(TARGET_KL25Z) +SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); + +#elif defined(TARGET_KL46Z) +SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); + +#elif defined(TARGET_K64F) +SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); + +#elif defined(TARGET_K22F) +SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); + +#elif defined(TARGET_K20D50M) +SDFileSystem sd(PTD2, PTD3, PTD1, PTC2, "sd"); + +#elif defined(TARGET_nRF51822) +SDFileSystem sd(p12, p13, p15, p14, "sd"); + +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_DISCO_F051R8) +SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); + +#elif defined(TARGET_LPC2368) +SDFileSystem sd(p11, p12, p13, p14, "sd"); + +#elif defined(TARGET_LPC11U68) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_LPC1549) +SDFileSystem sd(D11, D12, D13, D10, "sd"); + +#elif defined(TARGET_LPC11U37H_401) +SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd"); + +#else +SDFileSystem sd(p11, p12, p13, p14, "sd"); +#endif + +namespace { +char buffer[1024]; +const int KIB_RW = 128; +Timer timer; +const char *bin_filename = "/sd/testfile.bin"; +} + +bool test_sf_file_write_stdio(const char *filename, const int kib_rw) { + bool result = true; + FILE* file = fopen(filename, "w"); + if (file != NULL) { + int byte_write = 0; + timer.start(); + for (int i = 0; i < kib_rw; i++) { + if (fwrite(buffer, sizeof(char), sizeof(buffer), file) != sizeof(buffer)) { + result = false; + fclose(file); + printf("Write error!\r\n"); + break; + } else { + byte_write++; + } + } + timer.stop(); + fclose(file); + double test_time_sec = timer.read_us() / 1000000.0; + double speed = kib_rw / test_time_sec; + printf("%d KiB write in %.3f sec with speed of %.4f KiB/s\r\n", byte_write, test_time_sec, speed); + notify_performance_coefficient("write_kibps", speed); + } else { + printf("File '%s' not opened\r\n", filename); + result = false; + } + timer.reset(); + return result; +} + +bool test_sf_file_read_stdio(const char *filename, const int kib_rw) { + bool result = true; + FILE* file = fopen(filename, "r"); + if (file) { + timer.start(); + int byte_read = 0; + while (fread(buffer, sizeof(char), sizeof(buffer), file) == sizeof(buffer)) { + byte_read++; + } + timer.stop(); + fclose(file); + double test_time_sec = timer.read_us() / 1000000.0; + double speed = kib_rw / test_time_sec; + printf("%d KiB read in %.3f sec with speed of %.4f KiB/s\r\n", byte_read, test_time_sec, speed); + notify_performance_coefficient("fs_read_kibps", speed); + } else { + printf("File '%s' not opened\r\n", filename); + result = false; + } + timer.reset(); + return result; +} + +char RandomChar() { + return rand() % 100; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(SD stdio RW Speed); + MBED_HOSTTEST_START("PERF_1"); + + // Test header + printf("\r\n"); + printf("SD Card Stdio Performance Test\r\n"); + printf("File name: %s\r\n", bin_filename); + printf("Buffer size: %d KiB\r\n", (KIB_RW * sizeof(buffer)) / 1024); + + // Initialize buffer + srand(testenv_randseed()); + char *buffer_end = buffer + sizeof(buffer); + std::generate (buffer, buffer_end, RandomChar); + + bool result = true; + for (;;) { + printf("Write test...\r\n"); + if (test_sf_file_write_stdio(bin_filename, KIB_RW) == false) { + result = false; + break; + } + + printf("Read test...\r\n"); + if (test_sf_file_read_stdio(bin_filename, KIB_RW) == false) { + result = false; + break; + } + break; + } + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/semihost/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/semihost/main.cpp new file mode 100644 index 0000000000..2ef91d12a4 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/semihost/main.cpp @@ -0,0 +1,38 @@ +#include "test_env.h" +#include "semihost_api.h" + +#define MAC_VENDOR_ARM_0 0x00 +#define MAC_VENDOR_ARM_1 0x02 +#define MAC_VENDOR_ARM_2 0xF7 + +int main() { + MBED_HOSTTEST_TIMEOUT(10); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Semihost); + MBED_HOSTTEST_START("MBED_22"); + + printf("Semihost connected: %s\n", (semihost_connected()) ? ("Yes") : ("No")); + + char uid[DEVICE_ID_LENGTH + 1] = {0}; + bool result = true; + + const int ret = mbed_interface_uid(uid); + if (ret == 0) { + printf("UID: %s\r\n", uid); + } + else { + result = false; + } + + char mac[6] = {0}; // @param mac A 6-byte array to write the MAC address + mbed_mac_address(mac); + printf("MAC Address: %02X:%02X:%02X:%02X:%02X:%02X\r\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + + if (mac[0] == MAC_VENDOR_ARM_0 && + mac[1] == MAC_VENDOR_ARM_1 && + mac[2] == MAC_VENDOR_ARM_2) { + printf("MAC Address Prefix: 00:02:F7, Vendor: ARM\r\n"); + } + + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt/main.cpp new file mode 100644 index 0000000000..50b55e6e3b --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt/main.cpp @@ -0,0 +1,26 @@ +#include "mbed.h" + +DigitalOut led1(LED1); +DigitalOut led2(LED2); + +Serial computer(USBTX, USBRX); + +// This function is called when a character goes into the TX buffer. +void txCallback() { + led1 = !led1; +} + +// This function is called when a character goes into the RX buffer. +void rxCallback() { + led2 = !led2; + computer.putc(computer.getc()); +} + +int main() { + printf("start test\n"); + computer.attach(&txCallback, Serial::TxIrq); + computer.attach(&rxCallback, Serial::RxIrq); + while (true) { + wait(1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt_2/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt_2/main.cpp new file mode 100644 index 0000000000..8833c36da7 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt_2/main.cpp @@ -0,0 +1,42 @@ +#include "mbed.h" + +Serial pc(USBTX, USBRX); + +#if defined(TARGET_LPC4088) +Serial uart(P4_22, P4_23); +#elif defined(TARGET_MAXWSNENV) +Serial uart(P0_1, P0_0); +#else +Serial uart(p9, p10); +#endif + +DigitalOut led1(LED1); +DigitalOut led2(LED2); + +// This function is called when a character goes into the RX buffer. +void rxCallback(void) { + led1 = !led1; + pc.putc(uart.getc()); +} + + +int main() { + // Use a deliberatly slow baud to fill up the TX buffer + uart.baud(1200); + uart.attach(&rxCallback, Serial::RxIrq); + + printf("Starting test loop:\n"); + wait(1); + + int c = 'A'; + for (int loop = 0; loop < 512; loop++) { + uart.printf("%c", c); + c++; + if (c > 'Z') c = 'A'; + } + + while (true) { + led2 = !led2; + wait(1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep/main.cpp new file mode 100644 index 0000000000..ef8772da18 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep/main.cpp @@ -0,0 +1,27 @@ +#include "test_env.h" + +#if defined(TARGET_LPC4088) +InterruptIn wkp(P2_10); +#elif defined(TARGET_K22F) +InterruptIn wkp(D0); +#elif defined(TARGET_LPC11U68) +InterruptIn wkp(P0_16); +#else +InterruptIn wkp(p14); +#endif + +void flip() { + printf("button pressed\n"); +} + +int main() { +#if defined(TARGET_LPC11U68) + wkp.mode(PullUp); +#endif + wkp.rise(&flip); + + while (true) { + // sleep(); + deepsleep(); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep_timeout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep_timeout/main.cpp new file mode 100644 index 0000000000..0f8adbfb87 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep_timeout/main.cpp @@ -0,0 +1,28 @@ +#include "mbed.h" + +DigitalOut led1(LED1); +DigitalOut led2(LED2); +Timeout to1; +Timeout to2; + +void led1_on() { + led1 = !led1; + printf("led1\n\r"); + fflush(stdout); +} +void led2_on() { + led2 = !led2; + printf("led2\n\r"); + fflush(stdout); +} + +int main() { + led1 = 0; + led2 = 0; + to1.attach_us(led1_on, 1000000); + to2.attach_us(led2_on, 2000000); + while (1) { + printf("Entering sleep.\n"); + sleep(); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spi/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi/main.cpp new file mode 100644 index 0000000000..ce571cf1d9 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi/main.cpp @@ -0,0 +1,16 @@ +#include "mbed.h" + +SPI spi(p11, p12, p13); +DigitalOut latchpin(p10); + +int main() { + spi.format(8, 0); + spi.frequency(16 * 1000 * 1000); + + latchpin = 0; + while (1) { + latchpin = 1; + spi.write(0); + latchpin = 0; + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_ADXL345/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_ADXL345/main.cpp new file mode 100644 index 0000000000..11055ebfa1 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_ADXL345/main.cpp @@ -0,0 +1,62 @@ +#include "test_env.h" +#include "ADXL345.h" + +#if defined(TARGET_LPC812) +ADXL345 accelerometer(D10, D11, D12, D13); + +#else +ADXL345 accelerometer(p5, p6, p7, p8); +#endif + +// Assume test configuration on a plane (small x and y, z ~ g) +#define MAX_X_Y (50) +#define MIN_Z (200) +#define MAX_Z (300) + +void check_X_Y(int v) { + int16_t a = (int16_t)v; + if (abs(a) > MAX_X_Y) { + printf("X/Y acceleration is too big: %d\n", a); + notify_completion(false); + } +} + + +int main() { + int readings[3] = {0, 0, 0}; + + printf("Starting ADXL345 test...\n"); + printf("Device ID is: 0x%02x\n", accelerometer.getDevId()); + + //Go into standby mode to configure the device. + accelerometer.setPowerControl(0x00); + + //Full resolution, +/-16g, 4mg/LSB. + accelerometer.setDataFormatControl(0x0B); + + //3.2kHz data rate. + accelerometer.setDataRate(ADXL345_3200HZ); + + //Measurement mode. + accelerometer.setPowerControl(0x08); + + for (int i=0; i<3; i++) { + wait(0.1); + + //13-bit, sign extended values. + accelerometer.getOutput(readings); + + // X and Y + check_X_Y(readings[0]); + check_X_Y(readings[1]); + + // Z + int16_t z = (int16_t)readings[2]; + if ((z < MIN_Z) || (z > MAX_Z)) { + printf("Z acceleration not within expected range\n", z); + notify_completion(false); + } + } + + notify_completion(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_master/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_master/main.cpp new file mode 100644 index 0000000000..9392072438 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_master/main.cpp @@ -0,0 +1,38 @@ +#include "mbed.h" +#include "test_env.h" + +#if defined(TARGET_KL25Z) +SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk +DigitalOut cs(PTA13); +#elif defined(TARGET_KL05Z) +SPI spi(PTA7, PTA6, PTB0); // mosi, miso, sclk +DigitalOut cs(PTB1); +#elif defined(TARGET_KL46Z) +SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk +DigitalOut cs(PTA13); +#elif defined(TARGET_FF_ARDUINO) +SPI spi(D11, D12, D13); // mosi, miso, sclk +DigitalOut cs(D10); +#else +SPI spi(p5, p6, p7); // mosi, miso, sclk +DigitalOut cs(p8); +#endif + +int main() { + int data = 0; + int res = 0; + + for(int i = 0; i < 30; i++) { + + cs = 0; + res = spi.write(data++); + cs = 1; + + wait_ms(0.001); + + if ((i > 1) && ((res + 2) != data)) + notify_completion(false); + } + + notify_completion(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_slave/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_slave/main.cpp new file mode 100644 index 0000000000..d8a8a75707 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_slave/main.cpp @@ -0,0 +1,29 @@ +#include "mbed.h" + +#if defined(TARGET_KL25Z) +SPISlave device(PTD2, PTD3, PTD1, PTD0); // mosi, miso, sclk, ssel +#elif defined(TARGET_nRF51822) +SPISlave device(p12, p13, p15, p14); // mosi, miso, sclk, ssel +#elif defined(TARGET_LPC812) +SPISlave device(P0_14, P0_15, P0_12, P0_13); // mosi, miso, sclk, ssel +#elif defined(TARGET_FF_ARDUINO) +SPISlave device(D11, D12, D13, D10); // mosi, miso, sclk, ssel +#elif defined(TARGET_LPC1114) +SPISlave device(dp2, dp1, dp6, dp25); // mosi, miso, sclk, ssel +#else +SPISlave device(p5, p6, p7, p8); // mosi, miso, sclk, ssel +#endif + + +int main() { + uint8_t resp = 0; + + device.reply(resp); // Prime SPI with first reply + + while(1) { + if(device.receive()) { + resp = device.read(); // Read byte from master and add 1 + device.reply(resp); // Make this the next reply + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/main.cpp new file mode 100644 index 0000000000..97e6469b71 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/main.cpp @@ -0,0 +1,107 @@ +#include "test_env.h" +#include "mbed.h" +#include "spifi_rom_api.h" + +__attribute__((section("SPIFI_MEM"))) const unsigned char cube_image[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,0,150,0,0,0,200,8,2,0,0,0,133,231,143, +50,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,195,0,0,14,195,1,199, +111,168,100,0,0,156,193,73,68,65,84,120,94,236,253,103, +124,27,233,125,54,140,14,48,24,0,51,24,244,94,9,246, +0,0,0,0,73,69,78,68,174,66,96,130}; + +int cube_image_sz = sizeof(cube_image); + +const unsigned char cube_image_ref[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,0,150,0,0,0,200,8,2,0,0,0,133,231,143, +50,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,195,0,0,14,195,1,199, +111,168,100,0,0,156,193,73,68,65,84,120,94,236,253,103, +124,27,233,125,54,140,14,48,24,0,51,24,244,94,9,246, +0,0,0,0,73,69,78,68,174,66,96,130}; + +int cube_image_ref_sz = sizeof(cube_image_ref); + +/* + * The SPIFI_ROM_PTR (0x1FFF1FF8) points to an area where the pointers to + * different drivers in ROM are stored. + */ +typedef struct { + /*const*/ unsigned p_usbd; // USBROMD + /*const*/ unsigned p_clib; + /*const*/ unsigned p_cand; + /*const*/ unsigned p_pwrd; // PWRROMD + /*const*/ unsigned p_promd; // DIVROMD + /*const*/ SPIFI_RTNS *pSPIFID; // SPIFIROMD + /*const*/ unsigned p_dev3; + /*const*/ unsigned p_dev4; +} ROM; + +#define ROM_DRIVERS_PTR ((ROM *)(*((unsigned int *)SPIFI_ROM_PTR))) +#define IS_ADDR_IN_SPIFI(__addr) ( (((uint32_t)(__addr)) & 0xff000000) == SPIFI_MEM_BASE ) +#define IS_ADDR_IN_IFLASH(__addr) ( (((uint32_t)(__addr)) & 0xff000000) == 0x10000000 ) + +static void initialize_spifi(void) +{ + SPIFIobj* obj = (SPIFIobj*)malloc(sizeof(SPIFIobj)); + if (obj == NULL) { + // Failed to allocate memory for ROM data + notify_completion(false); + } + + // Turn on SPIFI block as it is disabled on reset + LPC_SC->PCONP |= 0x00010000; + + // pinsel for SPIFI + LPC_IOCON->P2_7 = 5; /* SPIFI_CSN @ P2.7 */ + LPC_IOCON->P0_22 = 5; /* SPIFI_CLK @ P0.22 */ + LPC_IOCON->P0_15 = 5; /* SPIFI_IO2 @ P0.15 */ + LPC_IOCON->P0_16 = 5; /* SPIFI_IO3 @ P0.16 */ + LPC_IOCON->P0_17 = 5; /* SPIFI_IO1 @ P0.17 */ + LPC_IOCON->P0_18 = 5; /* SPIFI_IO0 @ P0.18 */ + + uint32_t spifi_clk_div = (*((volatile uint32_t*)0x400FC1B4)) & 0x1f; + uint32_t spifi_clk_mhz = (SystemCoreClock / spifi_clk_div) / 1000000; + + const SPIFI_RTNS* _spifi = ROM_DRIVERS_PTR->pSPIFID; + + /* Typical time tCS is 20 ns min, we give 200 ns to be on safer side */ + int rc = _spifi->spifi_init (obj, spifi_clk_mhz/5, S_FULLCLK+S_RCVCLK, spifi_clk_mhz); + if (rc) { + // Failed to initialize SPIFI + notify_completion(false); + } +} + +int main() { + + initialize_spifi(); + + // Make sure that cube_image is placed in SPIFI + if (!IS_ADDR_IN_SPIFI(cube_image)) { + notify_completion(false); + } + + // Make sure that cube_image_ref is in IFLASH + if (IS_ADDR_IN_SPIFI(cube_image_ref)) { + notify_completion(false); + } + + // Compare content + if (cube_image_sz != cube_image_ref_sz) { + notify_completion(false); + } else { + int i = 0; + for (; i < cube_image_sz; i++) { + if (cube_image[i] != cube_image_ref[i]) { + notify_completion(false); + } + } + } + + notify_completion(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/spifi_rom_api.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/spifi_rom_api.h new file mode 100644 index 0000000000..baacb38209 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/spifi_rom_api.h @@ -0,0 +1,165 @@ +/* definitions for ROM API for SPIFI in NXP MCUs + copyright (c) 2010 NXP Semiconductors + written by CAM start 4/16/10 + first testing 5/12/10 + OK with first SST & Winbond devices 6/8/10 + OK with Gigadevice, Numonyx, Atmel, + some Macronyx 7/13/10 + consensus with BK, performance optimized 8/24/10 + this file is largely platform-independent */ + +#ifndef SPIFI_ROM_API_H +#define SPIFI_ROM_API_H + + +#define SPIFI_MEM_BASE 0x28000000 +/* allocated size of the SPIFI memory area on this device */ +#define MEM_AREA_SIZE 0x00001000 +#define SPIFI_ROM_PTR 0x1FFF1FF8 + +/* define the symbol TESTING in the environment if test output desired */ + +/* maintain LONGEST_PROT >= the length (in bytes) of the largest + protection block of any serial flash that this driver handles */ +#define LONGEST_PROT 68 + +/* protection/sector descriptors */ +typedef struct { + unsigned base; + uint8_t flags; + signed char log2; + uint16_t rept; +} protEnt; + +typedef union { + uint16_t hw; + uint8_t byte[2]; +}stat_t; + +/* the object that init returns, and other routines use as an operand */ +typedef struct { + unsigned base, regbase, devSize, memSize; + uint8_t mfger, devType, devID, busy; + stat_t stat; + uint16_t reserved; + uint16_t set_prot, write_prot; + unsigned mem_cmd, prog_cmd; + uint16_t sectors, protBytes; + unsigned opts, errCheck; + uint8_t erase_shifts[4], erase_ops[4]; + protEnt *protEnts; + char prot[LONGEST_PROT]; +} SPIFIobj; + +/* operands of program and erase */ +typedef struct { + char *dest; /* starting address for programming or erasing */ + unsigned length; /* number of bytes to be programmed or erased */ + char *scratch; /* address of work area or NULL */ + int protect; /* protection to apply after programming/erasing is done */ + unsigned options; /* see the table below */ +} SPIFIopers; + + +/* bits in options operands (MODE3, RCVCLK, and FULLCLK + have the same relationship as in the Control register) */ +#define S_MODE3 1 +#define S_MODE0 0 +#define S_MINIMAL 2 +#define S_MAXIMAL 0 +#define S_FORCE_ERASE 4 +#define S_ERASE_NOT_REQD 8 +#define S_CALLER_ERASE 8 +#define S_ERASE_AS_REQD 0 +#define S_VERIFY_PROG 0x10 +#define S_VERIFY_ERASE 0x20 +#define S_NO_VERIFY 0 +#define S_RCVCLK 0x80 +#define S_INTCLK 0 +#define S_FULLCLK 0x40 +#define S_HALFCLK 0 +#define S_DUAL 0x100 +#define S_CALLER_PROT 0x200 +#define S_DRIVER_PROT 0 + +/* the length of a standard program command is 256 on all devices */ +#define PROG_SIZE 256 + +/* interface to ROM API */ +typedef struct { + int (*spifi_init) (SPIFIobj *obj, unsigned csHigh, unsigned options, + unsigned mhz); + int (*spifi_program) (SPIFIobj *obj, char *source, SPIFIopers *opers); + int (*spifi_erase) (SPIFIobj *obj, SPIFIopers *opers); + /* mode switching */ + void (*cancel_mem_mode)(SPIFIobj *obj); + void (*set_mem_mode) (SPIFIobj *obj); + + /* mid level functions */ + int (*checkAd) (SPIFIobj *obj, SPIFIopers *opers); + int (*setProt) (SPIFIobj *obj, SPIFIopers *opers, char *change, + char *saveProt); + int (*check_block) (SPIFIobj *obj, char *source, SPIFIopers *opers, + unsigned check_program); + int (*send_erase_cmd) (SPIFIobj *obj, unsigned char op, unsigned addr); + unsigned (*ck_erase) (SPIFIobj *obj, unsigned *addr, unsigned length); + int (*prog_block) (SPIFIobj *obj, char *source, SPIFIopers *opers, + unsigned *left_in_page); + unsigned (*ck_prog) (SPIFIobj *obj, char *source, char *dest, unsigned length); + + /* low level functions */ + void(*setSize) (SPIFIobj *obj, int value); + int (*setDev) (SPIFIobj *obj, unsigned opts, unsigned mem_cmd, + unsigned prog_cmd); + unsigned (*cmd) (uint8_t op, uint8_t addrLen, uint8_t intLen, unsigned short len); + unsigned (*readAd) (SPIFIobj *obj, unsigned cmd, unsigned addr); + void (*send04) (SPIFIobj *obj, uint8_t op, uint8_t len, unsigned value); + void (*wren_sendAd) (SPIFIobj *obj, unsigned cmd, unsigned addr, unsigned value); + int (*write_stat) (SPIFIobj *obj, uint8_t len, uint16_t value); + int (*wait_busy) (SPIFIobj *obj, uint8_t prog_or_erase); +} SPIFI_RTNS; + +//#define define_spifi_romPtr(name) const SPIFI_RTNS *name=*((SPIFI_RTNS **)SPIFI_ROM_PTR) + +/* example of using this interface: +#include "spifi_rom_api.h" +#define CSHIGH 4 +#define SPIFI_MHZ 80 +#define source_data_ad (char *)1234 + + int rc; + SPIFIopers opers; + + define_spifi_romPtr(spifi); + SPIFIobj *obj = malloc(sizeof(SPIFIobj)); + if (!obj) { can't allocate memory } + + rc = spifi->spifi_init (obj, CSHIGH, S_FULLCLK+S_RCVCLK, SPIFI_MHZ); + if (rc) { investigate init error rc } + printf ("the serial flash contains %d bytes\n", obj->devSize); + + opers.dest = where_to_program; + opers.length = how_many_bytes; + opers.scratch = NULL; // unprogrammed data is not saved/restored + opers.protect = -1; // save & restore protection + opers.options = S_VERIFY_PROG; + + rc = spifi->spifi_program (obj, source_data_ad, &opers); + if (rc) { investigate program error rc } +*/ + +/* these are for normal users, including boot code */ +int spifi_init (SPIFIobj *obj, unsigned csHigh, unsigned options, unsigned mhz); +int spifi_program (SPIFIobj *obj, char *source, SPIFIopers *opers); +int spifi_erase (SPIFIobj *obj, SPIFIopers *opers); + +/* these are used by the manufacturer-specific init functions */ +void setSize (SPIFIobj *obj, int value); +int setDev (SPIFIobj *obj, unsigned opts, unsigned mem_cmd, unsigned prog_cmd); +unsigned read04(SPIFIobj *obj, uint8_t op, uint8_t len); +int write_stat (SPIFIobj *obj, uint8_t len, uint16_t value); +void setProtEnts(SPIFIobj *obj, const protEnt *p, unsigned protTabLen); + +#endif + + diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/main.cpp new file mode 100644 index 0000000000..aac2a00d91 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/main.cpp @@ -0,0 +1,100 @@ +#include "test_env.h" +#include "mbed.h" +#include "spifi_rom_api.h" + +extern const unsigned char splash_image1[]; extern int splash_image1_sz; +extern const unsigned char splash_image2[]; extern int splash_image2_sz; +extern const unsigned char splash_image3[]; extern int splash_image3_sz; +extern const unsigned char splash_image4[]; extern int splash_image4_sz; +extern const unsigned char splash_image5[]; extern int splash_image5_sz; +extern const unsigned char splash_image6[]; extern int splash_image6_sz; +extern const unsigned char splash_image7[]; extern int splash_image7_sz; +extern const unsigned char splash_image8[]; extern int splash_image8_sz; +extern const unsigned char splash_image9[]; extern int splash_image9_sz; +extern const unsigned char splash_image10[]; extern int splash_image10_sz; +extern const unsigned char splash_image11[]; extern int splash_image11_sz; +extern const unsigned char splash_image12[]; extern int splash_image12_sz; +extern const unsigned char splash_image13[]; extern int splash_image13_sz; +extern const unsigned char splash_image14[]; extern int splash_image14_sz; +extern const unsigned char splash_image15[]; extern int splash_image15_sz; + +/* + * The SPIFI_ROM_PTR (0x1FFF1FF8) points to an area where the pointers to + * different drivers in ROM are stored. + */ +typedef struct { + /*const*/ unsigned p_usbd; // USBROMD + /*const*/ unsigned p_clib; + /*const*/ unsigned p_cand; + /*const*/ unsigned p_pwrd; // PWRROMD + /*const*/ unsigned p_promd; // DIVROMD + /*const*/ SPIFI_RTNS *pSPIFID; // SPIFIROMD + /*const*/ unsigned p_dev3; + /*const*/ unsigned p_dev4; +} ROM; + +#define ROM_DRIVERS_PTR ((ROM *)(*((unsigned int *)SPIFI_ROM_PTR))) +#define IS_ADDR_IN_SPIFI(__addr) ( (((uint32_t)(__addr)) & 0xff000000) == SPIFI_MEM_BASE ) +#define IS_ADDR_IN_IFLASH(__addr) ( (((uint32_t)(__addr)) & 0xff000000) == 0x10000000 ) + +static void initialize_spifi(void) +{ + SPIFIobj* obj = (SPIFIobj*)malloc(sizeof(SPIFIobj)); + if (obj == NULL) { + // Failed to allocate memory for ROM data + notify_completion(false); + } + + // Turn on SPIFI block as it is disabled on reset + LPC_SC->PCONP |= 0x00010000; + + // pinsel for SPIFI + LPC_IOCON->P2_7 = 5; /* SPIFI_CSN @ P2.7 */ + LPC_IOCON->P0_22 = 5; /* SPIFI_CLK @ P0.22 */ + LPC_IOCON->P0_15 = 5; /* SPIFI_IO2 @ P0.15 */ + LPC_IOCON->P0_16 = 5; /* SPIFI_IO3 @ P0.16 */ + LPC_IOCON->P0_17 = 5; /* SPIFI_IO1 @ P0.17 */ + LPC_IOCON->P0_18 = 5; /* SPIFI_IO0 @ P0.18 */ + + uint32_t spifi_clk_div = (*((volatile uint32_t*)0x400FC1B4)) & 0x1f; + uint32_t spifi_clk_mhz = (SystemCoreClock / spifi_clk_div) / 1000000; + + const SPIFI_RTNS* _spifi = ROM_DRIVERS_PTR->pSPIFID; + + /* Typical time tCS is 20 ns min, we give 200 ns to be on safer side */ + int rc = _spifi->spifi_init (obj, spifi_clk_mhz/5, S_FULLCLK+S_RCVCLK, spifi_clk_mhz); + if (rc) { + // Failed to initialize SPIFI + notify_completion(false); + } +} + +int main() { + + initialize_spifi(); + + // Make sure that most files are placed in IFLASH + if (IS_ADDR_IN_SPIFI(splash_image1) || + IS_ADDR_IN_SPIFI(splash_image2) || + IS_ADDR_IN_SPIFI(splash_image3) || + IS_ADDR_IN_SPIFI(splash_image4) || + IS_ADDR_IN_SPIFI(splash_image5) || + IS_ADDR_IN_SPIFI(splash_image6) || + IS_ADDR_IN_SPIFI(splash_image7) || + IS_ADDR_IN_SPIFI(splash_image8) || + IS_ADDR_IN_SPIFI(splash_image9) || + IS_ADDR_IN_SPIFI(splash_image10) || + IS_ADDR_IN_SPIFI(splash_image11) || + IS_ADDR_IN_SPIFI(splash_image12) || + IS_ADDR_IN_SPIFI(splash_image13) || + IS_ADDR_IN_SPIFI(splash_image14)) { + notify_completion(false); + } + + // Make sure that splash_image15 is placed in SPIFI + if (!IS_ADDR_IN_SPIFI(splash_image15)) { + notify_completion(false); + } + + notify_completion(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/spifi_rom_api.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/spifi_rom_api.h new file mode 100644 index 0000000000..baacb38209 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/spifi_rom_api.h @@ -0,0 +1,165 @@ +/* definitions for ROM API for SPIFI in NXP MCUs + copyright (c) 2010 NXP Semiconductors + written by CAM start 4/16/10 + first testing 5/12/10 + OK with first SST & Winbond devices 6/8/10 + OK with Gigadevice, Numonyx, Atmel, + some Macronyx 7/13/10 + consensus with BK, performance optimized 8/24/10 + this file is largely platform-independent */ + +#ifndef SPIFI_ROM_API_H +#define SPIFI_ROM_API_H + + +#define SPIFI_MEM_BASE 0x28000000 +/* allocated size of the SPIFI memory area on this device */ +#define MEM_AREA_SIZE 0x00001000 +#define SPIFI_ROM_PTR 0x1FFF1FF8 + +/* define the symbol TESTING in the environment if test output desired */ + +/* maintain LONGEST_PROT >= the length (in bytes) of the largest + protection block of any serial flash that this driver handles */ +#define LONGEST_PROT 68 + +/* protection/sector descriptors */ +typedef struct { + unsigned base; + uint8_t flags; + signed char log2; + uint16_t rept; +} protEnt; + +typedef union { + uint16_t hw; + uint8_t byte[2]; +}stat_t; + +/* the object that init returns, and other routines use as an operand */ +typedef struct { + unsigned base, regbase, devSize, memSize; + uint8_t mfger, devType, devID, busy; + stat_t stat; + uint16_t reserved; + uint16_t set_prot, write_prot; + unsigned mem_cmd, prog_cmd; + uint16_t sectors, protBytes; + unsigned opts, errCheck; + uint8_t erase_shifts[4], erase_ops[4]; + protEnt *protEnts; + char prot[LONGEST_PROT]; +} SPIFIobj; + +/* operands of program and erase */ +typedef struct { + char *dest; /* starting address for programming or erasing */ + unsigned length; /* number of bytes to be programmed or erased */ + char *scratch; /* address of work area or NULL */ + int protect; /* protection to apply after programming/erasing is done */ + unsigned options; /* see the table below */ +} SPIFIopers; + + +/* bits in options operands (MODE3, RCVCLK, and FULLCLK + have the same relationship as in the Control register) */ +#define S_MODE3 1 +#define S_MODE0 0 +#define S_MINIMAL 2 +#define S_MAXIMAL 0 +#define S_FORCE_ERASE 4 +#define S_ERASE_NOT_REQD 8 +#define S_CALLER_ERASE 8 +#define S_ERASE_AS_REQD 0 +#define S_VERIFY_PROG 0x10 +#define S_VERIFY_ERASE 0x20 +#define S_NO_VERIFY 0 +#define S_RCVCLK 0x80 +#define S_INTCLK 0 +#define S_FULLCLK 0x40 +#define S_HALFCLK 0 +#define S_DUAL 0x100 +#define S_CALLER_PROT 0x200 +#define S_DRIVER_PROT 0 + +/* the length of a standard program command is 256 on all devices */ +#define PROG_SIZE 256 + +/* interface to ROM API */ +typedef struct { + int (*spifi_init) (SPIFIobj *obj, unsigned csHigh, unsigned options, + unsigned mhz); + int (*spifi_program) (SPIFIobj *obj, char *source, SPIFIopers *opers); + int (*spifi_erase) (SPIFIobj *obj, SPIFIopers *opers); + /* mode switching */ + void (*cancel_mem_mode)(SPIFIobj *obj); + void (*set_mem_mode) (SPIFIobj *obj); + + /* mid level functions */ + int (*checkAd) (SPIFIobj *obj, SPIFIopers *opers); + int (*setProt) (SPIFIobj *obj, SPIFIopers *opers, char *change, + char *saveProt); + int (*check_block) (SPIFIobj *obj, char *source, SPIFIopers *opers, + unsigned check_program); + int (*send_erase_cmd) (SPIFIobj *obj, unsigned char op, unsigned addr); + unsigned (*ck_erase) (SPIFIobj *obj, unsigned *addr, unsigned length); + int (*prog_block) (SPIFIobj *obj, char *source, SPIFIopers *opers, + unsigned *left_in_page); + unsigned (*ck_prog) (SPIFIobj *obj, char *source, char *dest, unsigned length); + + /* low level functions */ + void(*setSize) (SPIFIobj *obj, int value); + int (*setDev) (SPIFIobj *obj, unsigned opts, unsigned mem_cmd, + unsigned prog_cmd); + unsigned (*cmd) (uint8_t op, uint8_t addrLen, uint8_t intLen, unsigned short len); + unsigned (*readAd) (SPIFIobj *obj, unsigned cmd, unsigned addr); + void (*send04) (SPIFIobj *obj, uint8_t op, uint8_t len, unsigned value); + void (*wren_sendAd) (SPIFIobj *obj, unsigned cmd, unsigned addr, unsigned value); + int (*write_stat) (SPIFIobj *obj, uint8_t len, uint16_t value); + int (*wait_busy) (SPIFIobj *obj, uint8_t prog_or_erase); +} SPIFI_RTNS; + +//#define define_spifi_romPtr(name) const SPIFI_RTNS *name=*((SPIFI_RTNS **)SPIFI_ROM_PTR) + +/* example of using this interface: +#include "spifi_rom_api.h" +#define CSHIGH 4 +#define SPIFI_MHZ 80 +#define source_data_ad (char *)1234 + + int rc; + SPIFIopers opers; + + define_spifi_romPtr(spifi); + SPIFIobj *obj = malloc(sizeof(SPIFIobj)); + if (!obj) { can't allocate memory } + + rc = spifi->spifi_init (obj, CSHIGH, S_FULLCLK+S_RCVCLK, SPIFI_MHZ); + if (rc) { investigate init error rc } + printf ("the serial flash contains %d bytes\n", obj->devSize); + + opers.dest = where_to_program; + opers.length = how_many_bytes; + opers.scratch = NULL; // unprogrammed data is not saved/restored + opers.protect = -1; // save & restore protection + opers.options = S_VERIFY_PROG; + + rc = spifi->spifi_program (obj, source_data_ad, &opers); + if (rc) { investigate program error rc } +*/ + +/* these are for normal users, including boot code */ +int spifi_init (SPIFIobj *obj, unsigned csHigh, unsigned options, unsigned mhz); +int spifi_program (SPIFIobj *obj, char *source, SPIFIopers *opers); +int spifi_erase (SPIFIobj *obj, SPIFIopers *opers); + +/* these are used by the manufacturer-specific init functions */ +void setSize (SPIFIobj *obj, int value); +int setDev (SPIFIobj *obj, unsigned opts, unsigned mem_cmd, unsigned prog_cmd); +unsigned read04(SPIFIobj *obj, uint8_t op, uint8_t len); +int write_stat (SPIFIobj *obj, uint8_t len, uint16_t value); +void setProtEnts(SPIFIobj *obj, const protEnt *p, unsigned protTabLen); + +#endif + + diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage01.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage01.c new file mode 100644 index 0000000000..a02f6be708 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage01.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image1[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image1_sz = sizeof(splash_image1); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage02.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage02.c new file mode 100644 index 0000000000..2cae88c08b --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage02.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image2[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image2_sz = sizeof(splash_image2); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage03.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage03.c new file mode 100644 index 0000000000..fa41a6c5cb --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage03.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image3[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image3_sz = sizeof(splash_image3); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage04.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage04.c new file mode 100644 index 0000000000..13d2f51530 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage04.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image4[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image4_sz = sizeof(splash_image4); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage05.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage05.c new file mode 100644 index 0000000000..e29a519a83 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage05.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image5[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image5_sz = sizeof(splash_image5); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage06.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage06.c new file mode 100644 index 0000000000..15ad5450da --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage06.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image6[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image6_sz = sizeof(splash_image6); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage07.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage07.c new file mode 100644 index 0000000000..351ded9d63 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage07.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image7[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image7_sz = sizeof(splash_image7); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage08.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage08.c new file mode 100644 index 0000000000..9403cf86f1 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage08.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image8[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image8_sz = sizeof(splash_image8); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage09.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage09.c new file mode 100644 index 0000000000..dc5fa9bd74 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage09.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image9[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image9_sz = sizeof(splash_image9); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage10.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage10.c new file mode 100644 index 0000000000..02c2c42e28 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage10.c @@ -0,0 +1,2167 @@ +const unsigned char splash_image10[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + +int splash_image10_sz = sizeof(splash_image10); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage11.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage11.c new file mode 100644 index 0000000000..e4db7de19b --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage11.c @@ -0,0 +1,2168 @@ +const unsigned char splash_image11[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + + +int splash_image11_sz = sizeof(splash_image11); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage12.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage12.c new file mode 100644 index 0000000000..7f4f87d41f --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage12.c @@ -0,0 +1,2168 @@ +const unsigned char splash_image12[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + + +int splash_image12_sz = sizeof(splash_image12); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage13.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage13.c new file mode 100644 index 0000000000..454dd3dba0 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage13.c @@ -0,0 +1,2168 @@ +const unsigned char splash_image13[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + + +int splash_image13_sz = sizeof(splash_image13); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage14.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage14.c new file mode 100644 index 0000000000..6bff9d8b6b --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage14.c @@ -0,0 +1,2168 @@ +const unsigned char splash_image14[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + + +int splash_image14_sz = sizeof(splash_image14); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage15.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage15.c new file mode 100644 index 0000000000..54b3197030 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage15.c @@ -0,0 +1,2168 @@ +const unsigned char splash_image15[] = { +137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82, +0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82, +146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0, +0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0, +0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149, +43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7, +184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206, +57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88, +98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68, +122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32, +88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214, +222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152, +99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12, +50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108, +115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218, +182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104, +115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124, +194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180, +103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36, +182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149, +110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201, +37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57, +21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126, +175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141, +58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108, +236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44, +203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85, +89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149, +223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88, +46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157, +86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165, +239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201, +132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89, +38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109, +174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53, +43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9, +182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164, +41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90, +185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226, +186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223, +111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155, +120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5, +87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7, +157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150, +231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164, +41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42, +183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251, +157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75, +47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76, +203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184, +86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229, +1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153, +199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198, +158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212, +247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182, +167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157, +246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182, +196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215, +185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29, +72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152, +116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152, +140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73, +134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76, +39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233, +242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174, +61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75, +63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253, +48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175, +16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172, +133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197, +117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216, +203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249, +94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237, +241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64, +110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34, +93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53, +35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185, +245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191, +58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186, +173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157, +59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222, +163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115, +174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66, +224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4, +90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222, +71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231, +94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233, +170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182, +82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148, +114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175, +200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101, +62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168, +82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3, +36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137, +173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45, +3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12, +50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50, +200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200, +84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51, +196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86, +195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247, +122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162, +139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91, +88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191, +85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159, +105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207, +53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211, +142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81, +94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182, +41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131, +236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27, +109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147, +5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151, +140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188, +137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173, +166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215, +1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61, +246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203, +97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181, +0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233, +194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92, +69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102, +207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226, +124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59, +245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103, +88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27, +249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73, +180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28, +166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239, +180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86, +129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254, +190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250, +45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83, +116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227, +231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223, +178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28, +166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254, +58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73, +149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89, +231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215, +195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201, +211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171, +42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50, +215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235, +201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152, +6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93, +178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255, +111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235, +141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159, +233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206, +199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116, +137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223, +92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49, +25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255, +143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147, +209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152, +76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79, +207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108, +123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231, +99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252, +242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12, +245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212, +109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220, +181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167, +44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219, +61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95, +46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99, +73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214, +231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73, +101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142, +46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45, +24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46, +60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122, +142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167, +147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140, +227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140, +109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249, +157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55, +231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178, +184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69, +50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241, +107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120, +94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165, +190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246, +90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211, +242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4, +186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61, +200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25, +100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100, +170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170, +12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12, +144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144, +24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24, +100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100, +144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98, +123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205, +55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28, +179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252, +228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186, +230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215, +94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226, +94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119, +148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75, +141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69, +115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1, +7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233, +159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255, +220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204, +230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37, +134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75, +35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47, +236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188, +121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0, +120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249, +200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183, +230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185, +187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210, +208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243, +165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135, +62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85, +243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158, +6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47, +126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205, +126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130, +14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4, +10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199, +31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108, +118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96, +220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196, +39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45, +111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30, +52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200, +0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94, +121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249, +206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243, +156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176, +143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232, +106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223, +222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239, +194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231, +53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0, +192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233, +174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231, +55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121, +195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125, +112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19, +225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158, +244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92, +90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110, +89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70, +16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234, +0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199, +152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127, +248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239, +127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48, +240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242, +172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187, +135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214, +179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99, +216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143, +187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242, +230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7, +54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64, +193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70, +9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182, +223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223, +119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156, +114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93, +239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2, +21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38, +3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192, +82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135, +235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206, +43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8, +12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184, +227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221, +3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244, +162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199, +59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73, +122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113, +223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100, +125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120, +5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103, +116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205, +43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68, +206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80, +28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47, +40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241, +238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87, +190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251, +187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88, +96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119, +12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39, +3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237, +186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215, +45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74, +6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88, +3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204, +140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15, +12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112, +140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167, +231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54, +239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24, +129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9, +32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128, +65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49, +195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178, +107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76, +2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93, +215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192, +1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105, +128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2, +129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175, +118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226, +73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80, +136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137, +39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138, +87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61, +96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121, +1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184, +23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249, +17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20, +32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144, +95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34, +112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66, +87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215, +158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192, +72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18, +149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222, +243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210, +1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181, +46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104, +33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160, +0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242, +1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250, +210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113, +201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114, +101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189, +205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195, +72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163, +214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217, +157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51, +13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166, +0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3, +120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184, +3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58, +206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215, +126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115, +207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114, +100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217, +240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117, +21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187, +48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185, +93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3, +34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202, +0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199, +22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70, +204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234, +122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154, +115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205, +197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241, +227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8, +117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123, +220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70, +3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206, +189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27, +215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45, +94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97, +255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116, +215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19, +182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158, +128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118, +93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72, +172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231, +243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212, +246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5, +11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235, +152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54, +251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15, +1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109, +154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183, +235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186, +235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184, +199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204, +75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225, +93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159, +255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130, +144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241, +30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97, +130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104, +189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111, +128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215, +127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6, +125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9, +221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178, +221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69, +157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102, +180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225, +58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60, +10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10, +210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133, +152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16, +27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84, +231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162, +23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215, +10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101, +40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139, +115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144, +88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93, +9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66, +43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234, +155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60, +9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26, +20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115, +206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7, +20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136, +238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3, +156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73, +7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55, +187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119, +189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72, +116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146, +123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66, +134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99, +152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123, +62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0, +116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199, +147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48, +252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61, +90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241, +48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246, +183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231, +185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132, +53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57, +150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88, +154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183, +205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187, +219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195, +194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113, +137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160, +5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196, +216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100, +95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207, +161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174, +21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241, +254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105, +118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184, +60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214, +197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52, +93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64, +237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188, +9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173, +6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88, +42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114, +142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146, +151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143, +67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49, +93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181, +164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9, +128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4, +3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41, +80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73, +173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153, +145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113, +187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114, +76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204, +110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214, +128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221, +237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208, +218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70, +206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4, +26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224, +107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63, +150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132, +214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30, +251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217, +5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181, +74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113, +9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8, +7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116, +57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93, +13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6, +157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129, +69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254, +251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141, +231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27, +245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177, +6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153, +54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245, +219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114, +234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17, +52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97, +215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23, +8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192, +203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139, +231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53, +173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36, +8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87, +193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203, +104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180, +50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32, +106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192, +3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78, +129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117, +196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214, +12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28, +9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211, +108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4, +67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96, +224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238, +239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47, +53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251, +159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124, +234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101, +128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102, +94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109, +59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16, +92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198, +224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147, +198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6, +159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175, +225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130, +60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0, +2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124, +10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65, +75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107, +245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56, +156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215, +179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106, +45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198, +174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67, +160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98, +178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160, +86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10, +198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98, +152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0, +134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185, +251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202, +124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7, +101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101, +68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204, +73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184, +188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83, +174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202, +144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176, +206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37, +79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129, +150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7, +219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0, +166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242, +27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104, +164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31, +183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136, +186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131, +97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235, +154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129, +23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220, +51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187, +16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193, +126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164, +81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155, +150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73, +250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129, +145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4, +195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9, +8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56, +68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37, +13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115, +1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32, +210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36, +136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241, +70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90, +182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84, +190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234, +59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24, +136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40, +141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7, +17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234, +202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149, +109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210, +197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101, +170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223, +121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138, +109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38, +100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180, +110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14, +12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12, +117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192, +16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45, +47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252, +5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86, +94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227, +229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45, +0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13, +177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148, +90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174, +53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145, +120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116, +49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192, +64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95, +9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120, +134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29, +111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186, +235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249, +122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2, +111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17, +10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161, +201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2, +66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193, +32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233, +98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244, +12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129, +133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179, +121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153, +223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117, +131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150, +63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114, +91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7, +149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1, +32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17, +111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207, +194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218, +123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103, +25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12, +246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186, +242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94, +223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103, +229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143, +6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101, +10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230, +159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245, +55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34, +49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30, +68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171, +238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210, +205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45, +191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212, +185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237, +177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127, +130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180, +208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86, +31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16, +62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127, +104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129, +68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76, +235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49, +24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172, +131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234, +109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98, +33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241, +248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121, +99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188, +83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48, +89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129, +197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10, +137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110, +10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2, +68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110, +70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111, +130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246, +101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46, +161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93, +155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181, +67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116, +229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36, +120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132, +132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226, +61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26, +137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176, +101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17, +125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101, +108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79, +44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129, +151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222, +125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241, +89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246, +251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242, +246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18, +192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120, +18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64, +66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141, +196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35, +195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107, +109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186, +17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145, +232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1, +18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219, +111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242, +80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202, +19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232, +70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31, +221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197, +35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150, +53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36, +196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54, +190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240, +194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148, +222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173, +153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41, +80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155, +218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233, +121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33, +81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4, +43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219, +1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222, +4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196, +123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247, +67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200, +48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221, +181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196, +19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130, +66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163, +0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125, +174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45, +223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45, +1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104, +6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160, +188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131, +176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33, +202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151, +150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122, +234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184, +87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164, +128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217, +173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90, +2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12, +144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48, +136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173, +55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251, +253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10, +191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143, +65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50, +88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21, +192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217, +0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185, +194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140, +138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242, +207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129, +50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144, +176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30, +137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186, +158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91, +91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22, +8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207, +123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171, +47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101, +93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74, +162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235, +137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224, +57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10, +212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135, +94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2, +12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128, +200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29, +216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153, +216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236, +158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219, +115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2, +240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216, +195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173, +243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222, +115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73, +32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71, +31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192, +33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12, +60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13, +219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225, +173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1, +141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245, +103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56, +78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4, +137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11, +28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164, +46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56, +19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96, +112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173, +253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91, +241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1, +200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44, +222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89, +25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144, +46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131, +133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230, +85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157, +161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64, +194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103, +180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139, +161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179, +77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29, +232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163, +107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216, +233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188, +123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57, +94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165, +231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15, +46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26, +125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7, +130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1, +7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232, +70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198, +15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20, +207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29, +6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249, +180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103, +219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184, +175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3, +20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112, +12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158, +219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36, +123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220, +115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35, +202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163, +213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232, +54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171, +18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75, +75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33, +100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237, +78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59, +230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185, +241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18, +12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113, +47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15, +96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251, +1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86, +114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23, +181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29, +40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7, +193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150, +203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227, +61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215, +215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222, +133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147, +0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177, +45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96, +88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12, +27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82, +193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90, +102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186, +242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66, +110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111, +255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248, +175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119, +186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13, +2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184, +131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219, +15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25, +28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250, +104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22, +74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194, +142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86, +62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211, +109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117, +251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13, +188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103, +5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182, +220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248, +64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189, +173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243, +199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153, +42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109, +164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80, +209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158, +131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219, +181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119, +180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65, +107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154, +84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155, +81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94, +5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2, +14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178, +244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231, +90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48, +58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196, +149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0, +224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47, +40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110, +35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65, +5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64, +128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224, +81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240, +42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24, +168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16, +38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64, +136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254, +65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28, +167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162, +251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189, +220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50, +125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211, +0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47, +141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142, +240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32, +243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158, +4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208, +1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108, +149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97, +64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10, +52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67, +160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0, +22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160, +40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32, +248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86, +249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4, +222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230, +188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46, +239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114, +76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103, +68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9, +138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74, +149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50, +40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221, +12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173, +41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4, +94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96, +16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132, +101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47, +98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220, +226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91, +150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247, +172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251, +58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5, +106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134, +132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85, +66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242, +32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144, +180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197, +102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30, +120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174, +101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19, +32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73, +75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99, +244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107, +253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77, +98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113, +214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99, +210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202, +82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23, +81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184, +215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241, +38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81, +241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22, +152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112, +229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84, +74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0, +161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142, +139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119, +101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52, +202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203, +61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252, +184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191, +21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233, +212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94, +64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132, +190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72, +196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121, +17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75, +90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5, +2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173, +197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75, +112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194, +232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42, +157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97, +116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156, +119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147, +250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221, +175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117, +8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243, +151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174, +27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23, +163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105, +144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251, +24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193, +130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48, +21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24, +24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116, +90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20, +165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96, +60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72, +186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191, +63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81, +229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254, +231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254, +97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142, +222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226, +166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9, +9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0, +43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68, +43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26, +96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90, +186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89, +143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8, +24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199, +120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197, +249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160, +246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164, +62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52, +191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238, +221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172, +107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96, +220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132, +22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128, +97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17, +4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164, +165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93, +59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242, +200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128, +17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122, +46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223, +182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52, +40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246, +182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222, +247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47, +93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255, +223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86, +191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21, +94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76, +229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29, +215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95, +246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37, +24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168, +12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111, +202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1, +28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89, +150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121, +251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191, +249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142, +127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42, +19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39, +18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246, +90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226, +57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171, +97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74, +199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71, +116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251, +121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40, +3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179, +40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111, +41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123, +98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107, +23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173, +223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26, +223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71, +89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134, +192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130, +254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254, +197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150, +97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245, +101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241, +130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0, +65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103, +159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162, +140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27, +0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128, +5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183, +190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18, +126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128, +217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239, +197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96, +240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60, +145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247, +2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82, +144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128, +65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24, +140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49, +212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77, +51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199, +72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224, +165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16, +90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134, +27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227, +29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49, +196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141, +140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4, +14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144, +140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81, +2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96, +105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75, +76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169, +181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130, +6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4, +67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169, +129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2, +134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91, +191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72, +40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202, +241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10, +165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51, +42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224, +69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107, +136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192, +64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46, +5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11, +65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94, +68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140, +83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119, +93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118, +183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247, +208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26, +140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0, +134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5, +253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136, +64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3, +173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116, +0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190, +193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114, +4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34, +45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166, +139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137, +120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65, +186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173, +101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51, +3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80, +68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178, +81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120, +16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28, +64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60, +146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42, +210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156, +92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21, +130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80, +160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149, +50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166, +117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175, +132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70, +169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214, +129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128, +131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106, +29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221, +237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165, +214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16, +159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239, +160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245, +246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114, +70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47, +17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66, +142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1, +14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5, +5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32, +81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90, +166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46, +0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180, +150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135, +85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37, +120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233, +94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160, +242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210, +209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96, +145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109, +3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160, +54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91, +92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20, +32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49, +240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33, +81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142, +50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115, +41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220, +156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3, +5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160, +75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230, +74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40, +65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3, +10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40, +210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99, +175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226, +17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4, +47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54, +227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213, +5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118, +128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77, +148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70, +62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54, +149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235, +26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98, +105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193, +62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32, +1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50, +128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102, +186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75, +24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77, +242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151, +240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123, +192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51, +203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28, +1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74, +143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34, +90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230, +254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36, +184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193, +75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64, +68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159, +18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17, +111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71, +70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105, +160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117, +240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178, +151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34, +196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164, +184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150, +93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222, +4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34, +64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152, +153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84, +46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140, +27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40, +150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163, +30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3, +153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60, +5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112, +112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172, +13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208, +209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236, +139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68, +13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212, +94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49, +98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225, +16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186, +134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94, +46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24, +196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217, +237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62, +17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23, +36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228, +57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61, +228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36, +72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98, +130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138, +232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17, +111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64, +145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178, +205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109, +121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86, +227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49, +34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144, +40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232, +155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83, +235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29, +235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102, +246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151, +16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229, +48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187, +29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164, +131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128, +4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143, +135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240, +210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9, +200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208, +242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25, +27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60, +90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132, +60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103, +145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176, +14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143, +229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235, +133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97, +20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27, +178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177, +169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147, +40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6, +20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112, +176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6, +129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171, +102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72, +240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200, +155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242, +178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101, +224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49, +173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80, +0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126, +144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176, +128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104, +197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56, +103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215, +254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250, +130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174, +68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74, +80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16, +19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24, +0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229, +193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216, +216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192, +37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80, +112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89, +247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115, +151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142, +190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209, +73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194, +160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227, +224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92, +195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187, +150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16, +242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7, +20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144, +48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67, +100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15, +20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188, +11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168, +31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251, +181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232, +190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240, +8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190, +0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202, +239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195, +112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235, +101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248, +4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226, +241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16, +225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52, +117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143, +64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28, +90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208, +200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172, +108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84, +68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18, +18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248, +4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51, +26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108, +235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183, +2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64, +170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112, +83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1, +67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91, +154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14, +94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176, +157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194, +58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167, +188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186, +35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203, +33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37, +239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204, +43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15, +14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225, +108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75, +149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1, +18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160, +182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112, +62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22, +235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13, +131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238, +35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12, +222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114, +93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17, +72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181, +181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89, +123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33, +90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30, +128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48, +116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48, +62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103, +56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131, +37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33, +195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202, +200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151, +170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190, +68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126, +45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149, +96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144, +1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177, +11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23, +98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120, +101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91, +2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108, +149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168, +1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162, +246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16, +103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15, +3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7, +80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237, +179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199, +203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24, +168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245, +251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138, +100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12, +34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7, +9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237, +183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142, +51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96, +66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134, +29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200, +241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233, +130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53, +36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167, +18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169, +37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12, +223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225, +39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1, +97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134, +94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169, +242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110, +89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161, +60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150, +140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157, +48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24, +136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34, +202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227, +45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220, +95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126, +91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240, +98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47, +33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138, +192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110, +189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42, +157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141, +26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208, +151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195, +0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94, +133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158, +93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46, +7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121, +210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6, +20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250, +122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148, +87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191, +255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205, +192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69, +208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65, +194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69, +186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181, +209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121, +202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89, +217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1, +47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38, +162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28, +183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208, +160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224, +74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65, +48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247, +252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144, +128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23, +35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81, +238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216, +47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24, +85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127, +26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229, +115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131, +68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164, +178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210, +245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5, +6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10, +6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97, +244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126, +75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81, +226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153, +84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157, +185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52, +72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250, +96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65, +140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203, +91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192, +238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147, +170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6, +131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37, +48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2, +138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236, +104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150, +111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255, +245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203, +68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86, +13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145, +49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18, +53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102, +127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178, +175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229, +117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47, +255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120, +70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191, +111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102, +238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128, +162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40, +181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22, +53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120, +133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52, +127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59, +54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25, +250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19, +9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165, +217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197, +36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34, +176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98, +252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0, +248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29, +12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115, +159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120, +179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230, +33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19, +151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82, +160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62, +9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232, +3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26, +249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155, +223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14, +10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156, +12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214, +188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195, +170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88, +80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134, +4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45, +75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0, +34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119, +126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221, +41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30, +92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195, +212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239, +5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145, +150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56, +84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129, +132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131, +5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196, +53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127, +253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150, +188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176, +179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24, +121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140, +120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143, +73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86, +134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26, +32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88, +103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20, +246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91, +119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188, +132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121, +77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185, +22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167, +223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181, +144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18, +222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1, +162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108, +7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236, +186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105, +126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31, +100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25, +166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75, +119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208, +189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182, +106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94, +246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168, +1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210, +155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0, +0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207, +225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221, +6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60, +5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77, +67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12, +158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229, +11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222, +69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180, +224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15, +65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143, +128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20, +248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195, +167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37, +24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108, +213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241, +53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122, +127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93, +135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225, +78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1, +2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0, +65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238, +9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152, +239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96, +232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46, +33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182, +37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181, +30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104, +89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242, +16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25, +204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32, +142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131, +46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48, +100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18, +132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165, +228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165, +79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32, +30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45, +62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188, +2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4, +22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18, +8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121, +8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17, +37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141, +44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136, +81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150, +158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1, +6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40, +39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240, +16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24, +2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250, +247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20, +196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158, +108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27, +186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165, +218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101, +167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111, +3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12, +61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46, +67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33, +40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161, +134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87, +65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199, +123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199, +184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6, +112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8, +70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50, +134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67, +48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59, +136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171, +143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190, +4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20, +39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114, +253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208, +35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221, +6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197, +210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8, +1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145, +3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184, +251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61, +154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46, +242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164, +219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83, +226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177, +236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203, +40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18, +84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32, +196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50, +252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98, +217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114, +148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91, +54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128, +90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201, +73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67, +48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209, +4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228, +187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66, +38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212, +65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12, +208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5, +48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31, +16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128, +96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116, +23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114, +223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127, +38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0, +131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196, +17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30, +66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204, +69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16, +74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97, +105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223, +89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121, +243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33, +67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94, +66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110, +190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69, +22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228, +40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129, +197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61, +132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229, +49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151, +206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237, +253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59, +0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36, +150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27, +168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115, +225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133, +60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134, +29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35, +88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236, +25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227, +100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242, +166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96, +144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203, +138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234, +254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61, +8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12, +37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202, +23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6, +89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147, +56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185, +190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144, +245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159, +249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226, +87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232, +91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59, +223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12, +178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62, +241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210, +72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253, +145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114, +255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82, +52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107, +127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142, +126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124, +89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34, +179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58, +64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81, +213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55, +253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39, +141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39, +105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234, +237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251, +178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46, +58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234, +197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207, +23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23, +13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125, +199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164, +108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63, +249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28, +242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63, +251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174, +101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50, +77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88, +176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135, +31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62, +188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227, +145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35, +245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244, +138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107, +115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71, +252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121, +118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145, +89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26, +169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63, +63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249, +230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219, +77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116, +49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241, +108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242, +93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238, +119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54, +52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89, +174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127, +169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195, +31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241, +181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125, +194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42, +231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146, +178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231, +130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162, +31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70, +178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252, +193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47, +109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113, +12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44, +251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92, +124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166, +169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167, +105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255, +230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222, +151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151, +53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167, +175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151, +230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223, +252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143, +229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250, +11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164, +253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116, +116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124, +234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254, +38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211, +171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158, +205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153, +117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254, +244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189, +146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79, +92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27, +40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246, +222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163, +61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113, +57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98, +76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216, +209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101, +201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39, +53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116, +218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142, +61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117, +215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113, +95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30, +242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146, +204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222, +172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103, +118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160, +67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231, +210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9, +199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141, +75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132, +196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143, +229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127, +246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73, +9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92, +84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234, +171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175, +186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95, +127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255, +249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102, +165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236, +193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243, +233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6, +202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254, +200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123, +23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21, +176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224, +246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59, +189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97, +24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88, +238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234, +244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159, +242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79, +218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178, +57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249, +225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243, +201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229, +144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151, +40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215, +237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182, +75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190, +86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231, +101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174, +248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214, +213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11, +9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163, +78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117, +175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115, +202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199, +57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217, +119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111, +183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28, +223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178, +169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23, +95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128, +230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87, +117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188, +119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248, +212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223, +112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23, +29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36, +120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25, +159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241, +164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175, +121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246, +189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126, +206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135, +63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106, +201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128, +81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245, +167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245, +171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196, +57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226, +21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217, +186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183, +93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225, +71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94, +205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238, +95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35, +217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210, +91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143, +61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67, +75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204, +233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249, +17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215, +183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89, +115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191, +249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229, +202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59, +50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37, +186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171, +150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184, +251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247, +176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253, +254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112, +252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226, +65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120, +78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239, +123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77, +205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117, +175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208, +55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19, +142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154, +24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71, +126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164, +251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4, +102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64, +124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4, +184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210, +124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194, +57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187, +126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178, +92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124, +223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186, +219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163, +148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174, +67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119, +190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75, +51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224, +50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238, +218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82, +121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27, +174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235, +188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45, +150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249, +218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27, +218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185, +205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167, +240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254, +245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102, +62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181, +204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174, +181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68, +89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60, +185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205, +21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100, +210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222, +220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180, +17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253, +225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254, +130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41, +31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35, +80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109, +154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178, +93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159, +241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144, +32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239, +162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222, +1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26, +38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245, +133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70, +123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35, +30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200, +253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32, +233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155, +119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179, +196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223, +252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88, +74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142, +208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94, +255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177, +55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124, +37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78, +250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226, +164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240, +88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196, +194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195, +228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138, +139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245, +186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44, +165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27, +216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63, +188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153, +119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185, +22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229, +148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33, +35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120, +208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42, +171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124, +35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189, +77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3, +183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158, +112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122, +74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0, +79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106, +186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236, +71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83, +34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201, +204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154, +152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131, +138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63, +238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94, +15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135, +60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244, +53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239, +219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90, +235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124, +228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24, +209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72, +136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191, +108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179, +253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229, +184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167, +207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230, +54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175, +75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207, +27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151, +63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134, +204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64, +223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95, +191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226, +213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185, +249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244, +39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92, +190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127, +159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226, +33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183, +118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65, +162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25, +73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226, +161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203, +81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26, +52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187, +90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149, +46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146, +68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203, +197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49, +34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203, +172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14, +41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108, +47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249, +251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168, +147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73, +40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161, +107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123, +151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127, +209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29, +115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125, +11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182, +31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198, +90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213, +137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103, +181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181, +5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39, +157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161, +78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107, +72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152, +49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157, +114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223, +236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119, +196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205, +111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253, +241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183, +93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251, +100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198, +191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81, +251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183, +2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146, +125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165, +243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62, +196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51, +199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133, +237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91, +172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153, +166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80, +110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93, +160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179, +222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247, +7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190, +253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192, +72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143, +26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215, +236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67, +162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171, +27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12, +78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147, +116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253, +53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241, +69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17, +167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159, +28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254, +199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186, +6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61, +253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235, +136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136, +70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162, +58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103, +156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246, +137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181, +32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161, +127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197, +139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104, +150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202, +36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185, +246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118, +240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253, +170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223, +203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89, +198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168, +239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62, +119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244, +62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141, +212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253, +67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124, +244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94, +246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187, +61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142, +228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241, +201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242, +217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176, +101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220, +255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190, +109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204, +67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5, +99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168, +107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137, +113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254, +73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78, +219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50, +105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90, +110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172, +244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144, +114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234, +253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229, +3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217, +98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127, +121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23, +191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6, +234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191, +205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212, +219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49, +71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159, +249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89, +152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100, +165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253, +97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206, +52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224, +79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119, +224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103, +188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242, +75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246, +183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38, +29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190, +243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191, +246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106, +163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26, +164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223, +130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173, +69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237, +215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178, +186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112, +144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233, +106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190, +133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201, +32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166, +155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119, +223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242, +212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35, +101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43, +41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100, +107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173, +181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239, +190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74, +109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45, +125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111, +134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7, +217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110, +47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187, +110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105, +144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169, +219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231, +174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124, +6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53, +82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96, +240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38, +165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245, +248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30, +211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44, +153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55, +253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95, +45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26, +169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238, +203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6, +89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65, +6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65, +6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32, +131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131, +12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0, +0,0,0,73,69,78,68,174,66,96,130}; + + +int splash_image15_sz = sizeof(splash_image15); diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio/main.cpp new file mode 100644 index 0000000000..bdfd53c976 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio/main.cpp @@ -0,0 +1,40 @@ +#include "mbed.h" +#include "test_env.h" + +/* This test purpose is to verify the behaviour when the program does not link + * any symbol from the mbed library. + * In the past we had an issue where the stdio retargeting was not linked in. + */ + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(stdio_auto); + MBED_HOSTTEST_DESCRIPTION(stdio); + MBED_HOSTTEST_START("MBED_2"); + + DigitalOut led1(LED1); + DigitalOut led2(LED2); + + int value_int; + + + notify_start(); // Just to sync with host test supervisor + + const char* PRINT_PATTERN = "MBED: Your value was: %d\r\n"; + + while (true) { + // SCANF PRINTF family + value_int = 0; + led1 = 1; + scanf("%d", &value_int); + printf(PRINT_PATTERN, value_int); + led1 = 0; + + // FSCANF, FPRINTF family + value_int = 0; + led2 = 1; + fscanf(stdin, "%d", &value_int); + fprintf(stdout, PRINT_PATTERN, value_int); + led2 = 0; + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio_benchmark/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio_benchmark/main.cpp new file mode 100644 index 0000000000..b9179815dc --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio_benchmark/main.cpp @@ -0,0 +1,35 @@ +#include "mbed.h" + +#define TEST_STDIO 0 + +int main() { + printf("\r\n\r\n*** Start of memory write test (2K bytes) ***\r\n"); + + // dummy data + char buf[2048]; + int index = 0; + for (index = 0; index < 2048; index++) { + buf[index] = ~index & 0xFF; + } + + // Run the timed write test + float starttime, duration; + Timer t; + t.start(); + starttime = t.read(); + +#if TEST_STDIO + LocalFileSystem local("local"); + FILE *fp = fopen("/local/test.dat", "w"); + fwrite(buf, sizeof(buf[0]), sizeof(buf)/sizeof(buf[0]), fp); + fclose(fp); +#else + FILEHANDLE fh = local_file_open("test.dat", O_WRONLY); + LocalFileHandle lfh(fh); + lfh.write(buf, sizeof(buf)); + lfh.close(); +#endif + + duration = t.read() - starttime; + printf("Write completed in %.2f seconds. Average throughput = %.0f bytes/second.\r\n", duration, 2048/duration); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/stl/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/stl/main.cpp new file mode 100644 index 0000000000..62404ac944 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/stl/main.cpp @@ -0,0 +1,121 @@ +#include "test_env.h" + +#include <algorithm> +#include <string> +#include <vector> +#include <queue> +#include <map> +#include <math.h> + +#define BUFFER_SIZE 128 +#define TABLE_SIZE(TAB) (sizeof(TAB) / sizeof(TAB[0])) + +#define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,1,4231,999,4123,32760,99999 +#define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999 +#define FLOATS 0.002,0.92430,15.91320,791.77368,6208.2,25719.4952,426815.982588,6429271.046,42468024.93,212006462.910 +#define FLOATS_STR "0.002","0.92430","15.91320","791.77368","6208.2","25719.4952","426815.982588","6429271.046","42468024.93","212006462.910" + +template <class T, class F> +void BubbleSort(T& array, size_t array_size, F functor) +{ + bool flag = true; + size_t numLength = array_size; + for(size_t i = 1; (i <= numLength) && flag; i++) { + flag = false; + for (size_t j = 0; j < (numLength - 1); j++) { + if (functor(array[j+1], array[j])) { + int temp = array[j]; + array[j] = array[j + 1]; + array[j+1] = temp; + flag = true; + } + } + } +} + +struct printInt { + void operator()(int i) { + printf("%d ", i); + } +}; + +struct printFloat { + void operator()(float f) { + printf("%f ", f); + } +}; + +struct printString { + void operator()(char* s) { + printf("%s ", s); + } +}; + +struct greaterAbs { + bool operator()(int a, int b) { + return abs(a) > abs(b); + } +}; + + +int main() +{ + int p_integers[] = {POSITIVE_INTEGERS}; + int n_integers[] = {NEGATIVE_INTEGERS}; + float floats[] = {FLOATS}; + bool result = true; + + { + std::vector<int> v_pints(p_integers, p_integers + TABLE_SIZE(p_integers)); + bool equal_result = std::equal(v_pints.begin(), v_pints.end(), p_integers); + result = result && equal_result; + printf("[%s] Fill vector with data\r\n", equal_result ? "OK" : "FAIL"); + } + + { + char* floats_str[] = {FLOATS_STR}; + float floats_transform[TABLE_SIZE(floats_str)] = {0.0}; + std::transform(floats_str, floats_str + TABLE_SIZE(floats_str), floats_transform, atof); + bool equal_result = std::equal(floats_transform, floats_transform + TABLE_SIZE(floats_transform), floats); + result = result && equal_result; + printf("[%s] Transform float strings\r\n", equal_result ? "OK" : "FAIL"); + + std::for_each(floats_str, floats_str + TABLE_SIZE(floats_str), printString()); + printf("\r\n"); + std::for_each(floats_transform, floats_transform + TABLE_SIZE(floats_transform), printFloat()); + printf("\r\n"); + } + + { + std::vector<int> v_nints_1(n_integers, n_integers + TABLE_SIZE(n_integers)); + std::vector<int> v_nints_2(n_integers, n_integers + TABLE_SIZE(n_integers)); + { + BubbleSort(v_nints_1, v_nints_1.size(), std::greater<int>()); + std::sort(v_nints_2.begin(), v_nints_2.end(), std::greater<int>()); + bool equal_result = std::equal(v_nints_1.begin(), v_nints_1.end(), v_nints_2.begin()); + result = result && equal_result; + printf("[%s] Sort integers\r\n", equal_result ? "OK" : "FAIL"); + + std::for_each(v_nints_1.begin(), v_nints_1.end(), printInt()); + printf("\r\n"); + std::for_each(v_nints_2.begin(), v_nints_2.end(), printInt()); + printf("\r\n"); + } + + { + BubbleSort(v_nints_1, v_nints_1.size(), greaterAbs()); + std::sort(v_nints_2.begin(), v_nints_2.end(), greaterAbs()); + bool equal_result = std::equal(v_nints_1.begin(), v_nints_1.end(), v_nints_2.begin()); + result = result && equal_result; + printf("[%s] Sort integers\r\n", equal_result ? "OK" : "FAIL"); + + std::for_each(v_nints_1.begin(), v_nints_1.end(), printInt()); + printf("\r\n"); + std::for_each(v_nints_2.begin(), v_nints_2.end(), printInt()); + printf("\r\n"); + } + } + + notify_completion(result); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker/main.cpp new file mode 100644 index 0000000000..fc1ed9ca30 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker/main.cpp @@ -0,0 +1,49 @@ +#include "mbed.h" +#include "test_env.h" + +void print_char(char c = '*') +{ + printf("%c", c); + fflush(stdout); +} + +Ticker flipper_1; +DigitalOut led1(LED1); + +void flip_1() { + static int led1_state = 0; + if (led1_state) { + led1 = 0; led1_state = 0; + } else { + led1 = 1; led1_state = 1; + } + print_char(); +} + +Ticker flipper_2; +DigitalOut led2(LED2); + +void flip_2() { + static int led2_state = 0; + if (led2_state) { + led2 = 0; led2_state = 0; + } else { + led2 = 1; led2_state = 1; + } +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(wait_us_auto); + MBED_HOSTTEST_DESCRIPTION(Ticker Int); + MBED_HOSTTEST_START("MBED_11"); + + led1 = 0; + led2 = 0; + flipper_1.attach(&flip_1, 1.0); // the address of the function to be attached (flip) and the interval (1 second) + flipper_2.attach(&flip_2, 2.0); // the address of the function to be attached (flip) and the interval (2 seconds) + + while (true) { + wait(1.0); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_2/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_2/main.cpp new file mode 100644 index 0000000000..2509f4e4db --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_2/main.cpp @@ -0,0 +1,38 @@ +#include "mbed.h" +#include "test_env.h" + +Ticker tick; +DigitalOut led(LED1); + +namespace { + const int MS_INTERVALS = 1000; +} + +void print_char(char c = '*') +{ + printf("%c", c); + fflush(stdout); +} + +void togglePin(void) +{ + static int ticker_count = 0; + if (ticker_count >= MS_INTERVALS) { + print_char(); + ticker_count = 0; + led = !led; // Blink + } + ticker_count++; +} + +int main() +{ + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(wait_us_auto); + MBED_HOSTTEST_DESCRIPTION(Ticker Int us); + MBED_HOSTTEST_START("MBED_23"); + + tick.attach_us(togglePin, 1000); + + while (1); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_3/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_3/main.cpp new file mode 100644 index 0000000000..a24078eb69 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_3/main.cpp @@ -0,0 +1,43 @@ +#include "mbed.h" +#include "test_env.h" + +void ticker_callback_1(void); +void ticker_callback_2(void); + +DigitalOut led0(LED1); +DigitalOut led1(LED2); +Ticker ticker; + +void print_char(char c = '*') +{ + printf("%c", c); + fflush(stdout); +} + +void ticker_callback_2(void) +{ + ticker.detach(); + ticker.attach(ticker_callback_1, 1.0); + led1 = !led1; + print_char(); +} + +void ticker_callback_1(void) +{ + ticker.detach(); + ticker.attach(ticker_callback_2, 1.0); + led0 = !led0; + print_char(); +} + +int main(void) +{ + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(wait_us_auto); + MBED_HOSTTEST_DESCRIPTION(Ticker Two callbacks); + MBED_HOSTTEST_START("MBED_34"); + + ticker.attach(ticker_callback_1, 1.0); + + while(1); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_mfun/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_mfun/main.cpp new file mode 100644 index 0000000000..18f1bb51c1 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_mfun/main.cpp @@ -0,0 +1,41 @@ +#include "mbed.h" + +Ticker tick; +DigitalOut led(LED1); + +namespace { + const int MS_INTERVALS = 1000; +} + +class TickerHandler { +public: + TickerHandler(const int _ms_intervals) : m_ticker_count(0), m_ms_intervals(_ms_intervals) { + } + + void print_char(char c = '*') + { + printf("%c", c); + fflush(stdout); + } + + void togglePin(void) + { + if (ticker_count >= MS_INTERVALS) { + print_char(); + ticker_count = 0; + led = !led; // Blink + } + ticker_count++; + } + +protected: + int m_ticker_count; +}; + +int main() +{ + TickerHandler th; + + tick.attach_us(th, TickerHandler::togglePin, 1000); + while (1); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/time_us/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/time_us/main.cpp new file mode 100644 index 0000000000..18452c8f47 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/time_us/main.cpp @@ -0,0 +1,30 @@ +#include "mbed.h" +#include "test_env.h" + +DigitalOut led(LED1); + +namespace { + const int MS_INTERVALS = 1000; +} + +void print_char(char c = '*') +{ + printf("%c", c); + fflush(stdout); +} + +int main() +{ + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(wait_us_auto); + MBED_HOSTTEST_DESCRIPTION(Time us); + MBED_HOSTTEST_START("MBED_25"); + + while (true) { + for (int i = 0; i < MS_INTERVALS; i++) { + wait_us(1000); + } + led = !led; // Blink + print_char(); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/timeout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/timeout/main.cpp new file mode 100644 index 0000000000..0dc7ee1ce4 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/timeout/main.cpp @@ -0,0 +1,42 @@ +#include "mbed.h" +#include "test_env.h" + +Timeout timer; +DigitalOut led(LED1); + +namespace { + const int MS_INTERVALS = 1000; +} + +void print_char(char c = '*') { + printf("%c", c); + fflush(stdout); +} + +void toggleOff(void); + +void toggleOn(void) { + static int toggle_counter = 0; + if (toggle_counter == MS_INTERVALS) { + led = !led; + print_char(); + toggle_counter = 0; + } + toggle_counter++; + timer.attach_us(toggleOff, 500); +} + +void toggleOff(void) { + timer.attach_us(toggleOn, 500); +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(wait_us_auto); + MBED_HOSTTEST_DESCRIPTION(Timeout Int us); + MBED_HOSTTEST_START("MBED_24"); + + toggleOn(); + + while (1); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/tsi/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/tsi/main.cpp new file mode 100644 index 0000000000..f1dfa08907 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/tsi/main.cpp @@ -0,0 +1,14 @@ +#include "mbed.h" +#include "TSISensor.h" + +int main(void) { + DigitalOut led(LED_GREEN); + TSISensor tsi; + + while (true) { + printf("slider percentage: %f%\r\n", tsi.readPercentage()); + printf("slider distance: %dmm\r\n", tsi.readDistance()); + wait(1); + led = !led; + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/vtor_reloc/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/vtor_reloc/main.cpp new file mode 100644 index 0000000000..c7e654e8c0 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/vtor_reloc/main.cpp @@ -0,0 +1,76 @@ +// Interrupt table relocation test, based on the 'interrupt_in' test +// It will test an interrupt pin before and after the interrupt table is relocated +// Works only on LPC1768 + +#include "test_env.h" +#include "cmsis_nvic.h" +#include <string.h> + +#define PIN_IN (p5) +#define PIN_OUT (p25) +#define NUM_VECTORS (16+33) + +DigitalOut out(PIN_OUT); +DigitalOut myled(LED1); + +volatile int checks = 0; +uint32_t int_table[NUM_VECTORS] __attribute__ ((aligned(256))); + +#define FALLING_EDGE_COUNT 5 + +void flipper() { + for (int i = 0; i < FALLING_EDGE_COUNT; i++) { + out = 1; + wait(0.2); + out = 0; + wait(0.2); + } +} + +void in_handler() { + checks++; + myled = !myled; +} + +static bool test_once() { + InterruptIn in(PIN_IN); + checks = 0; + printf("Interrupt table location: 0x%08X\r\n", SCB->VTOR); + in.rise(NULL); + in.fall(in_handler); + flipper(); + in.fall(NULL); + bool result = (checks == FALLING_EDGE_COUNT); + printf("Falling edge checks counted: %d ... [%s]\r\n", checks, result ? "OK" : "FAIL"); + return result; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Interrupt vector relocation); + MBED_HOSTTEST_START("MBED_A18"); + + // First test, no table reallocation + { + printf("Starting first test (interrupts not relocated).\r\n"); + bool ret = test_once(); + if (ret == false) { + MBED_HOSTTEST_RESULT(false); + } + } + + // Relocate interrupt table and test again + { + printf("Starting second test (interrupts relocated).\r\n"); + memcpy(int_table, (void*)SCB->VTOR, sizeof(int_table)); + SCB->VTOR = (uint32_t)int_table; + + bool ret = test_once(); + if (ret == false) { + MBED_HOSTTEST_RESULT(false); + } + } + + MBED_HOSTTEST_RESULT(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.cpp new file mode 100644 index 0000000000..ff367fb30a --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.cpp @@ -0,0 +1,649 @@ +/* HTTPClient.cpp */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +//Debug is disabled by default +#if 0 +//Enable debug +#include <cstdio> +#define DBG(x, ...) std::printf("[HTTPClient : DBG]"x"\r\n", ##__VA_ARGS__); +#define WARN(x, ...) std::printf("[HTTPClient : WARN]"x"\r\n", ##__VA_ARGS__); +#define ERR(x, ...) std::printf("[HTTPClient : ERR]"x"\r\n", ##__VA_ARGS__); + +#else +//Disable debug +#define DBG(x, ...) +#define WARN(x, ...) +#define ERR(x, ...) + +#endif + +#define HTTP_PORT 80 + +#define OK 0 + +#define MIN(x,y) (((x)<(y))?(x):(y)) +#define MAX(x,y) (((x)>(y))?(x):(y)) + +#define CHUNK_SIZE 256 + +#include <cstring> + +#include "HTTPClient.h" + +HTTPClient::HTTPClient() : +m_sock(), m_basicAuthUser(NULL), m_basicAuthPassword(NULL), m_httpResponseCode(0) +{ + +} + +HTTPClient::~HTTPClient() +{ + +} + +#if 0 +void HTTPClient::basicAuth(const char* user, const char* password) //Basic Authentification +{ + m_basicAuthUser = user; + m_basicAuthPassword = password; +} +#endif + +HTTPResult HTTPClient::get(const char* url, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking +{ + return connect(url, HTTP_GET, NULL, pDataIn, timeout); +} + +HTTPResult HTTPClient::get(const char* url, char* result, size_t maxResultLen, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking +{ + HTTPText str(result, maxResultLen); + return get(url, &str, timeout); +} + +HTTPResult HTTPClient::post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking +{ + return connect(url, HTTP_POST, (IHTTPDataOut*)&dataOut, pDataIn, timeout); +} + +HTTPResult HTTPClient::put(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking +{ + return connect(url, HTTP_PUT, (IHTTPDataOut*)&dataOut, pDataIn, timeout); +} + +HTTPResult HTTPClient::del(const char* url, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking +{ + return connect(url, HTTP_DELETE, NULL, pDataIn, timeout); +} + + +int HTTPClient::getHTTPResponseCode() +{ + return m_httpResponseCode; +} + +#define CHECK_CONN_ERR(ret) \ + do{ \ + if(ret) { \ + m_sock.close(); \ + ERR("Connection error (%d)", ret); \ + return HTTP_CONN; \ + } \ + } while(0) + +#define PRTCL_ERR() \ + do{ \ + m_sock.close(); \ + ERR("Protocol error"); \ + return HTTP_PRTCL; \ + } while(0) + +HTTPResult HTTPClient::connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout) //Execute request +{ + m_httpResponseCode = 0; //Invalidate code + m_timeout = timeout; + + pDataIn->writeReset(); + if( pDataOut ) + { + pDataOut->readReset(); + } + + char scheme[8]; + uint16_t port; + char host[32]; + char path[64]; + //First we need to parse the url (http[s]://host[:port][/[path]]) -- HTTPS not supported (yet?) + HTTPResult res = parseURL(url, scheme, sizeof(scheme), host, sizeof(host), &port, path, sizeof(path)); + if(res != HTTP_OK) + { + ERR("parseURL returned %d", res); + return res; + } + + if(port == 0) //TODO do handle HTTPS->443 + { + port = 80; + } + + DBG("Scheme: %s", scheme); + DBG("Host: %s", host); + DBG("Port: %d", port); + DBG("Path: %s", path); + + //Connect + DBG("Connecting socket to server"); + int ret = m_sock.connect(host, port); + if (ret < 0) + { + m_sock.close(); + ERR("Could not connect"); + return HTTP_CONN; + } + + //Send request + DBG("Sending request"); + char buf[CHUNK_SIZE]; + const char* meth = (method==HTTP_GET)?"GET":(method==HTTP_POST)?"POST":(method==HTTP_PUT)?"PUT":(method==HTTP_DELETE)?"DELETE":""; + snprintf(buf, sizeof(buf), "%s %s HTTP/1.1\r\nHost: %s\r\n", meth, path, host); //Write request + ret = send(buf); + if(ret) + { + m_sock.close(); + ERR("Could not write request"); + return HTTP_CONN; + } + + //Send all headers + + //Send default headers + DBG("Sending headers"); + if( pDataOut != NULL ) + { + if( pDataOut->getIsChunked() ) + { + ret = send("Transfer-Encoding: chunked\r\n"); + CHECK_CONN_ERR(ret); + } + else + { + snprintf(buf, sizeof(buf), "Content-Length: %d\r\n", pDataOut->getDataLen()); + ret = send(buf); + CHECK_CONN_ERR(ret); + } + char type[48]; + if( pDataOut->getDataType(type, 48) == HTTP_OK ) + { + snprintf(buf, sizeof(buf), "Content-Type: %s\r\n", type); + ret = send(buf); + CHECK_CONN_ERR(ret); + } + } + + //Close headers + DBG("Headers sent"); + ret = send("\r\n"); + CHECK_CONN_ERR(ret); + + size_t trfLen; + + //Send data (if available) + if( pDataOut != NULL ) + { + DBG("Sending data"); + while(true) + { + size_t writtenLen = 0; + pDataOut->read(buf, CHUNK_SIZE, &trfLen); + if( pDataOut->getIsChunked() ) + { + //Write chunk header + char chunkHeader[16]; + snprintf(chunkHeader, sizeof(chunkHeader), "%X\r\n", trfLen); //In hex encoding + ret = send(chunkHeader); + CHECK_CONN_ERR(ret); + } + else if( trfLen == 0 ) + { + break; + } + if( trfLen != 0 ) + { + ret = send(buf, trfLen); + CHECK_CONN_ERR(ret); + } + + if( pDataOut->getIsChunked() ) + { + ret = send("\r\n"); //Chunk-terminating CRLF + CHECK_CONN_ERR(ret); + } + else + { + writtenLen += trfLen; + if( writtenLen >= pDataOut->getDataLen() ) + { + break; + } + } + + if( trfLen == 0 ) + { + break; + } + } + + } + + //Receive response + DBG("Receiving response"); + ret = recv(buf, CHUNK_SIZE - 1, CHUNK_SIZE - 1, &trfLen); //Read n bytes + CHECK_CONN_ERR(ret); + + buf[trfLen] = '\0'; + + char* crlfPtr = strstr(buf, "\r\n"); + if(crlfPtr == NULL) + { + PRTCL_ERR(); + } + + int crlfPos = crlfPtr - buf; + buf[crlfPos] = '\0'; + + //Parse HTTP response + if( sscanf(buf, "HTTP/%*d.%*d %d %*[^\r\n]", &m_httpResponseCode) != 1 ) + { + //Cannot match string, error + ERR("Not a correct HTTP answer : %s\n", buf); + PRTCL_ERR(); + } + + if( (m_httpResponseCode < 200) || (m_httpResponseCode >= 300) ) + { + //Did not return a 2xx code; TODO fetch headers/(&data?) anyway and implement a mean of writing/reading headers + WARN("Response code %d", m_httpResponseCode); + PRTCL_ERR(); + } + + DBG("Reading headers"); + + memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2) + 1); //Be sure to move NULL-terminating char as well + trfLen -= (crlfPos + 2); + + size_t recvContentLength = 0; + bool recvChunked = false; + //Now get headers + while( true ) + { + crlfPtr = strstr(buf, "\r\n"); + if(crlfPtr == NULL) + { + if( trfLen < CHUNK_SIZE - 1 ) + { + size_t newTrfLen; + ret = recv(buf + trfLen, 1, CHUNK_SIZE - trfLen - 1, &newTrfLen); + trfLen += newTrfLen; + buf[trfLen] = '\0'; + DBG("Read %d chars; In buf: [%s]", newTrfLen, buf); + CHECK_CONN_ERR(ret); + continue; + } + else + { + PRTCL_ERR(); + } + } + + crlfPos = crlfPtr - buf; + + if(crlfPos == 0) //End of headers + { + DBG("Headers read"); + memmove(buf, &buf[2], trfLen - 2 + 1); //Be sure to move NULL-terminating char as well + trfLen -= 2; + break; + } + + buf[crlfPos] = '\0'; + + char key[32]; + char value[32]; + + key[31] = '\0'; + value[31] = '\0'; + + int n = sscanf(buf, "%31[^:]: %31[^\r\n]", key, value); + if ( n == 2 ) + { + DBG("Read header : %s: %s\n", key, value); + if( !strcmp(key, "Content-Length") ) + { + sscanf(value, "%d", &recvContentLength); + pDataIn->setDataLen(recvContentLength); + } + else if( !strcmp(key, "Transfer-Encoding") ) + { + if( !strcmp(value, "Chunked") || !strcmp(value, "chunked") ) + { + recvChunked = true; + pDataIn->setIsChunked(true); + } + } + else if( !strcmp(key, "Content-Type") ) + { + pDataIn->setDataType(value); + } + + memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2) + 1); //Be sure to move NULL-terminating char as well + trfLen -= (crlfPos + 2); + + } + else + { + ERR("Could not parse header"); + PRTCL_ERR(); + } + + } + + //Receive data + DBG("Receiving data"); + while(true) + { + size_t readLen = 0; + + if( recvChunked ) + { + //Read chunk header + bool foundCrlf; + do + { + foundCrlf = false; + crlfPos=0; + buf[trfLen]=0; + if(trfLen >= 2) + { + for(; crlfPos < trfLen - 2; crlfPos++) + { + if( buf[crlfPos] == '\r' && buf[crlfPos + 1] == '\n' ) + { + foundCrlf = true; + break; + } + } + } + if(!foundCrlf) //Try to read more + { + if( trfLen < CHUNK_SIZE ) + { + size_t newTrfLen; + ret = recv(buf + trfLen, 0, CHUNK_SIZE - trfLen - 1, &newTrfLen); + trfLen += newTrfLen; + CHECK_CONN_ERR(ret); + continue; + } + else + { + PRTCL_ERR(); + } + } + } while(!foundCrlf); + buf[crlfPos] = '\0'; + int n = sscanf(buf, "%x", &readLen); + if(n!=1) + { + ERR("Could not read chunk length"); + PRTCL_ERR(); + } + + memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2)); //Not need to move NULL-terminating char any more + trfLen -= (crlfPos + 2); + + if( readLen == 0 ) + { + //Last chunk + break; + } + } + else + { + readLen = recvContentLength; + } + + DBG("Retrieving %d bytes", readLen); + + do + { + pDataIn->write(buf, MIN(trfLen, readLen)); + if( trfLen > readLen ) + { + memmove(buf, &buf[readLen], trfLen - readLen); + trfLen -= readLen; + readLen = 0; + } + else + { + readLen -= trfLen; + } + + if(readLen) + { + ret = recv(buf, 1, CHUNK_SIZE - trfLen - 1, &trfLen); + CHECK_CONN_ERR(ret); + } + } while(readLen); + + if( recvChunked ) + { + if(trfLen < 2) + { + size_t newTrfLen; + //Read missing chars to find end of chunk + ret = recv(buf + trfLen, 2 - trfLen, CHUNK_SIZE - trfLen - 1, &newTrfLen); + CHECK_CONN_ERR(ret); + trfLen += newTrfLen; + } + if( (buf[0] != '\r') || (buf[1] != '\n') ) + { + ERR("Format error"); + PRTCL_ERR(); + } + memmove(buf, &buf[2], trfLen - 2); + trfLen -= 2; + } + else + { + break; + } + + } + + m_sock.close(); + DBG("Completed HTTP transaction"); + + return HTTP_OK; +} + +HTTPResult HTTPClient::recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen) //0 on success, err code on failure +{ + DBG("Trying to read between %d and %d bytes", minLen, maxLen); + size_t readLen = 0; + + if(!m_sock.is_connected()) + { + WARN("Connection was closed by server"); + return HTTP_CLOSED; //Connection was closed by server + } + + int ret; + while(readLen < maxLen) + { + if(readLen < minLen) + { + DBG("Trying to read at most %d bytes [Blocking]", minLen - readLen); + m_sock.set_blocking(false, m_timeout); + ret = m_sock.receive_all(buf + readLen, minLen - readLen); + } + else + { + DBG("Trying to read at most %d bytes [Not blocking]", maxLen - readLen); + m_sock.set_blocking(false, 0); + ret = m_sock.receive(buf + readLen, maxLen - readLen); + } + + if( ret > 0) + { + readLen += ret; + } + else if( ret == 0 ) + { + break; + } + else + { + if(!m_sock.is_connected()) + { + ERR("Connection error (recv returned %d)", ret); + *pReadLen = readLen; + return HTTP_CONN; + } + else + { + break; + } + } + + if(!m_sock.is_connected()) + { + break; + } + } + DBG("Read %d bytes", readLen); + *pReadLen = readLen; + return HTTP_OK; +} + +HTTPResult HTTPClient::send(char* buf, size_t len) //0 on success, err code on failure +{ + if(len == 0) + { + len = strlen(buf); + } + DBG("Trying to write %d bytes", len); + size_t writtenLen = 0; + + if(!m_sock.is_connected()) + { + WARN("Connection was closed by server"); + return HTTP_CLOSED; //Connection was closed by server + } + + m_sock.set_blocking(false, m_timeout); + int ret = m_sock.send_all(buf, len); + if(ret > 0) + { + writtenLen += ret; + } + else if( ret == 0 ) + { + WARN("Connection was closed by server"); + return HTTP_CLOSED; //Connection was closed by server + } + else + { + ERR("Connection error (send returned %d)", ret); + return HTTP_CONN; + } + + DBG("Written %d bytes", writtenLen); + return HTTP_OK; +} + +HTTPResult HTTPClient::parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen) //Parse URL +{ + char* schemePtr = (char*) url; + char* hostPtr = (char*) strstr(url, "://"); + if(hostPtr == NULL) + { + WARN("Could not find host"); + return HTTP_PARSE; //URL is invalid + } + + if( maxSchemeLen < hostPtr - schemePtr + 1 ) //including NULL-terminating char + { + WARN("Scheme str is too small (%d >= %d)", maxSchemeLen, hostPtr - schemePtr + 1); + return HTTP_PARSE; + } + memcpy(scheme, schemePtr, hostPtr - schemePtr); + scheme[hostPtr - schemePtr] = '\0'; + + hostPtr+=3; + + size_t hostLen = 0; + + char* portPtr = strchr(hostPtr, ':'); + if( portPtr != NULL ) + { + hostLen = portPtr - hostPtr; + portPtr++; + if( sscanf(portPtr, "%hu", port) != 1) + { + WARN("Could not find port"); + return HTTP_PARSE; + } + } + else + { + *port=0; + } + char* pathPtr = strchr(hostPtr, '/'); + if( hostLen == 0 ) + { + hostLen = pathPtr - hostPtr; + } + + if( maxHostLen < hostLen + 1 ) //including NULL-terminating char + { + WARN("Host str is too small (%d >= %d)", maxHostLen, hostLen + 1); + return HTTP_PARSE; + } + memcpy(host, hostPtr, hostLen); + host[hostLen] = '\0'; + + size_t pathLen; + char* fragmentPtr = strchr(hostPtr, '#'); + if(fragmentPtr != NULL) + { + pathLen = fragmentPtr - pathPtr; + } + else + { + pathLen = strlen(pathPtr); + } + + if( maxPathLen < pathLen + 1 ) //including NULL-terminating char + { + WARN("Path str is too small (%d >= %d)", maxPathLen, pathLen + 1); + return HTTP_PARSE; + } + memcpy(path, pathPtr, pathLen); + path[pathLen] = '\0'; + + return HTTP_OK; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.h new file mode 100644 index 0000000000..7cb30b0337 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.h @@ -0,0 +1,159 @@ +/* HTTPClient.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** \file +HTTP Client header file +*/ + +#ifndef HTTP_CLIENT_H +#define HTTP_CLIENT_H + +#include "TCPSocketConnection.h" + +#define HTTP_CLIENT_DEFAULT_TIMEOUT 15000 + +class HTTPData; + +#include "IHTTPData.h" +#include "mbed.h" + +///HTTP client results +enum HTTPResult +{ + HTTP_PROCESSING, ///<Processing + HTTP_PARSE, ///<url Parse error + HTTP_DNS, ///<Could not resolve name + HTTP_PRTCL, ///<Protocol error + HTTP_NOTFOUND, ///<HTTP 404 Error + HTTP_REFUSED, ///<HTTP 403 Error + HTTP_ERROR, ///<HTTP xxx error + HTTP_TIMEOUT, ///<Connection timeout + HTTP_CONN, ///<Connection error + HTTP_CLOSED, ///<Connection was closed by remote host + HTTP_OK = 0, ///<Success +}; + +/**A simple HTTP Client +The HTTPClient is composed of: +- The actual client (HTTPClient) +- Classes that act as a data repository, each of which deriving from the HTTPData class (HTTPText for short text content, HTTPFile for file I/O, HTTPMap for key/value pairs, and HTTPStream for streaming purposes) +*/ +class HTTPClient +{ +public: + ///Instantiate the HTTP client + HTTPClient(); + ~HTTPClient(); + +#if 0 //TODO add header handlers + /** + Provides a basic authentification feature (Base64 encoded username and password) + Pass two NULL pointers to switch back to no authentication + @param user username to use for authentication, must remain valid durlng the whole HTTP session + @param user password to use for authentication, must remain valid durlng the whole HTTP session + */ + void basicAuth(const char* user, const char* password); //Basic Authentification +#endif + + //High Level setup functions + /** Execute a GET request on the URL + Blocks until completion + @param url : url on which to execute the request + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult get(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Execute a GET request on the URL + Blocks until completion + This is a helper to directly get a piece of text from a HTTP result + @param url : url on which to execute the request + @param result : pointer to a char array in which the result will be stored + @param maxResultLen : length of the char array (including space for the NULL-terminating char) + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult get(const char* url, char* result, size_t maxResultLen, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Execute a POST request on the URL + Blocks until completion + @param url : url on which to execute the request + @param dataOut : a IHTTPDataOut instance that contains the data that will be posted + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Execute a PUT request on the URL + Blocks until completion + @param url : url on which to execute the request + @param dataOut : a IHTTPDataOut instance that contains the data that will be put + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult put(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Execute a DELETE request on the URL + Blocks until completion + @param url : url on which to execute the request + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult del(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Get last request's HTTP response code + @return The HTTP response code of the last request + */ + int getHTTPResponseCode(); + +private: + enum HTTP_METH + { + HTTP_GET, + HTTP_POST, + HTTP_PUT, + HTTP_DELETE, + HTTP_HEAD + }; + + HTTPResult connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout); //Execute request + HTTPResult recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen); //0 on success, err code on failure + HTTPResult send(char* buf, size_t len = 0); //0 on success, err code on failure + HTTPResult parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen); //Parse URL + + //Parameters + TCPSocketConnection m_sock; + + int m_timeout; + + const char* m_basicAuthUser; + const char* m_basicAuthPassword; + int m_httpResponseCode; + +}; + +//Including data containers here for more convenience +#include "data/HTTPText.h" +#include "data/HTTPMap.h" + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/IHTTPData.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/IHTTPData.h new file mode 100644 index 0000000000..24f1337511 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/IHTTPData.h @@ -0,0 +1,96 @@ +/* IHTTPData.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef IHTTPDATA_H +#define IHTTPDATA_H + +#include <cstring> + +using std::size_t; + +///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...) +class IHTTPDataOut +{ +protected: + friend class HTTPClient; + + /** Reset stream to its beginning + * Called by the HTTPClient on each new request + */ + virtual void readReset() = 0; + + /** Read a piece of data to be transmitted + * @param buf Pointer to the buffer on which to copy the data + * @param len Length of the buffer + * @param pReadLen Pointer to the variable on which the actual copied data length will be stored + */ + virtual int read(char* buf, size_t len, size_t* pReadLen) = 0; + + /** Get MIME type + * @param type Internet media type from Content-Type header + */ + virtual int getDataType(char* type, size_t maxTypeLen) = 0; //Internet media type for Content-Type header + + /** Determine whether the HTTP client should chunk the data + * Used for Transfer-Encoding header + */ + virtual bool getIsChunked() = 0; + + /** If the data is not chunked, get its size + * Used for Content-Length header + */ + virtual size_t getDataLen() = 0; + +}; + +///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...) +class IHTTPDataIn +{ +protected: + friend class HTTPClient; + + /** Reset stream to its beginning + * Called by the HTTPClient on each new request + */ + virtual void writeReset() = 0; + + /** Write a piece of data transmitted by the server + * @param buf Pointer to the buffer from which to copy the data + * @param len Length of the buffer + */ + virtual int write(const char* buf, size_t len) = 0; + + /** Set MIME type + * @param type Internet media type from Content-Type header + */ + virtual void setDataType(const char* type) = 0; + + /** Determine whether the data is chunked + * Recovered from Transfer-Encoding header + */ + virtual void setIsChunked(bool chunked) = 0; + + /** If the data is not chunked, set its size + * From Content-Length header + */ + virtual void setDataLen(size_t len) = 0; + +}; + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.cpp new file mode 100644 index 0000000000..5eb4c52e6e --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.cpp @@ -0,0 +1,200 @@ +/* HTTPMap.cpp */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "HTTPMap.h" + +#include <cstring> + +#include <cctype> + +#define OK 0 + +using std::strncpy; + +HTTPMap::HTTPMap() : m_pos(0), m_count(0) +{ + +} + +void HTTPMap::put(const char* key, const char* value) +{ + if(m_count >= HTTPMAP_TABLE_SIZE) + { + return; + } + m_keys[m_count] = key; + m_values[m_count] = value; + m_count++; +} + +void HTTPMap::clear() +{ + m_count = 0; + m_pos = 0; +} + +/*virtual*/ void HTTPMap::readReset() +{ + m_pos = 0; +} + +/*virtual*/ int HTTPMap::read(char* buf, size_t len, size_t* pReadLen) +{ + if(m_pos >= m_count) + { + *pReadLen = 0; + m_pos = 0; + return OK; + } + + //URL encode + char* out = buf; + const char* in = m_keys[m_pos]; + if( (m_pos != 0) && (out - buf < len - 1) ) + { + *out='&'; + out++; + } + + while( (*in != '\0') && (out - buf < len - 3) ) + { + if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~') + { + *out = *in; + out++; + } + else if( *in == ' ' ) + { + *out='+'; + out++; + } + else + { + char hex[] = "0123456789abcdef"; + *out='%'; + out++; + *out=hex[(*in>>4)&0xf]; + out++; + *out=hex[(*in)&0xf]; + out++; + } + in++; + } + + if( out - buf < len - 1 ) + { + *out='='; + out++; + } + + in = m_values[m_pos]; + while( (*in != '\0') && (out - buf < len - 3) ) + { + if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~') + { + *out = *in; + out++; + } + else if( *in == ' ' ) + { + *out='+'; + out++; + } + else + { + char hex[] = "0123456789abcdef"; + *out='%'; + out++; + *out=hex[(*in>>4)&0xf]; + out++; + *out=hex[(*in)&0xf]; + out++; + } + in++; + } + + *pReadLen = out - buf; + + m_pos++; + return OK; +} + +/*virtual*/ int HTTPMap::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header +{ + strncpy(type, "application/x-www-form-urlencoded", maxTypeLen-1); + type[maxTypeLen-1] = '\0'; + return OK; +} + +/*virtual*/ bool HTTPMap::getIsChunked() //For Transfer-Encoding header +{ + return false; ////Data is computed one key/value pair at a time +} + +/*virtual*/ size_t HTTPMap::getDataLen() //For Content-Length header +{ + size_t count = 0; + for(size_t i = 0; i< m_count; i++) + { + //URL encode + const char* in = m_keys[i]; + if( i != 0 ) + { + count++; + } + + while( (*in != '\0') ) + { + if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~') + { + count++; + } + else if( *in == ' ' ) + { + count++; + } + else + { + count+=3; + } + in++; + } + + count ++; + + in = m_values[i]; + while( (*in != '\0') ) + { + if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~') + { + count++; + } + else if( *in == ' ' ) + { + count++; + } + else + { + count+=3; + } + in++; + } + } + return count; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.h new file mode 100644 index 0000000000..c8433778ff --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.h @@ -0,0 +1,71 @@ +/* HTTPMap.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef HTTPMAP_H_ +#define HTTPMAP_H_ + +#include "../IHTTPData.h" + +#define HTTPMAP_TABLE_SIZE 32 + +/** Map of key/value pairs + * Used to transmit POST data using the application/x-www-form-urlencoded encoding + */ +class HTTPMap: public IHTTPDataOut +{ +public: + /** + Instantiates HTTPMap + It supports at most 32 key/values pairs + */ + HTTPMap(); + + /** Put Key/Value pair + The references to the parameters must remain valid as long as the clear() function is not called + @param key The key to use + @param value The corresponding value + */ + void put(const char* key, const char* value); + + /** Clear table + */ + void clear(); + +protected: + //IHTTPDataIn + virtual void readReset(); + + virtual int read(char* buf, size_t len, size_t* pReadLen); + + virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header + + virtual bool getIsChunked(); //For Transfer-Encoding header + + virtual size_t getDataLen(); //For Content-Length header + +private: + const char* m_keys[HTTPMAP_TABLE_SIZE]; + const char* m_values[HTTPMAP_TABLE_SIZE]; + + size_t m_pos; + size_t m_count; +}; + +#endif /* HTTPMAP_H_ */ diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.cpp new file mode 100644 index 0000000000..18cd42070f --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.cpp @@ -0,0 +1,104 @@ +/* HTTPText.cpp */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "HTTPText.h" + +#include <cstring> + +#define OK 0 + +using std::memcpy; +using std::strncpy; +using std::strlen; + +#define MIN(x,y) (((x)<(y))?(x):(y)) + +HTTPText::HTTPText(char* str) : m_str(str), m_pos(0) +{ + m_size = strlen(str) + 1; +} + +HTTPText::HTTPText(char* str, size_t size) : m_str(str), m_size(size), m_pos(0) +{ + +} + +//IHTTPDataIn +/*virtual*/ void HTTPText::readReset() +{ + m_pos = 0; +} + +/*virtual*/ int HTTPText::read(char* buf, size_t len, size_t* pReadLen) +{ + *pReadLen = MIN(len, m_size - 1 - m_pos); + memcpy(buf, m_str + m_pos, *pReadLen); + m_pos += *pReadLen; + return OK; +} + +/*virtual*/ int HTTPText::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header +{ + strncpy(type, "text/plain", maxTypeLen-1); + type[maxTypeLen-1] = '\0'; + return OK; +} + +/*virtual*/ bool HTTPText::getIsChunked() //For Transfer-Encoding header +{ + return false; +} + +/*virtual*/ size_t HTTPText::getDataLen() //For Content-Length header +{ + return m_size - 1; +} + +//IHTTPDataOut +/*virtual*/ void HTTPText::writeReset() +{ + m_pos = 0; +} + +/*virtual*/ int HTTPText::write(const char* buf, size_t len) +{ + size_t writeLen = MIN(len, m_size - 1 - m_pos); + memcpy(m_str + m_pos, buf, writeLen); + m_pos += writeLen; + m_str[m_pos] = '\0'; + return OK; +} + +/*virtual*/ void HTTPText::setDataType(const char* type) //Internet media type from Content-Type header +{ + +} + +/*virtual*/ void HTTPText::setIsChunked(bool chunked) //From Transfer-Encoding header +{ + +} + +/*virtual*/ void HTTPText::setDataLen(size_t len) //From Content-Length header, or if the transfer is chunked, next chunk length +{ + +} + + + diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.h new file mode 100644 index 0000000000..cb76c6fdac --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.h @@ -0,0 +1,72 @@ +/* HTTPText.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef HTTPTEXT_H_ +#define HTTPTEXT_H_ + +#include "../IHTTPData.h" + +/** A data endpoint to store text +*/ +class HTTPText : public IHTTPDataIn, public IHTTPDataOut +{ +public: + /** Create an HTTPText instance for output + * @param str String to be transmitted + */ + HTTPText(char* str); + + /** Create an HTTPText instance for input + * @param str Buffer to store the incoming string + * @param size Size of the buffer + */ + HTTPText(char* str, size_t size); + +protected: + //IHTTPDataIn + virtual void readReset(); + + virtual int read(char* buf, size_t len, size_t* pReadLen); + + virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header + + virtual bool getIsChunked(); //For Transfer-Encoding header + + virtual size_t getDataLen(); //For Content-Length header + + //IHTTPDataOut + virtual void writeReset(); + + virtual int write(const char* buf, size_t len); + + virtual void setDataType(const char* type); //Internet media type from Content-Type header + + virtual void setIsChunked(bool chunked); //From Transfer-Encoding header + + virtual void setDataLen(size_t len); //From Content-Length header, or if the transfer is chunked, next chunk length + +private: + char* m_str; + size_t m_size; + + size_t m_pos; +}; + +#endif /* HTTPTEXT_H_ */ diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.cpp new file mode 100644 index 0000000000..e3db1c826a --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.cpp @@ -0,0 +1,58 @@ +#include "mbed.h" +#include "CellularModem.h" +#include "HTTPClient.h" +#include "httptest.h" + +int httptest(CellularModem& modem, const char* apn, const char* username, const char* password) +{ + printf("Connecting...\n"); + + HTTPClient http; + char str[512]; + + modem.power(true); + Thread::wait(1000); + int ret = modem.connect(apn, username, password); + if(ret) + { + printf("Could not connect\n"); + return false; + } + + //GET data + printf("Trying to fetch page...\n"); + ret = http.get("http://mbed.org/media/uploads/donatien/hello.txt", str, 128); + if (!ret) + { + printf("Page fetched successfully - read %d characters\n", strlen(str)); + printf("Result: %s\n", str); + } + else + { + printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode()); + modem.disconnect(); + return false; + } + + //POST data + HTTPMap map; + HTTPText text(str, 512); + map.put("Hello", "World"); + map.put("test", "1234"); + printf("Trying to post data...\n"); + ret = http.post("http://httpbin.org/post", map, &text); + if (!ret) + { + printf("Executed POST successfully - read %d characters\n", strlen(str)); + printf("Result: %s\n", str); + } + else + { + printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode()); + modem.disconnect(); + return false; + } + + modem.disconnect(); + return true; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.h new file mode 100644 index 0000000000..affd6d23be --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.h @@ -0,0 +1,9 @@ +#ifndef HTTPTEST_H_ +#define HTTPTEST_H_ + +#include "CellularModem.h" + +int httptest(CellularModem& modem, const char* apn = NULL, const char* username = NULL, const char* password= NULL); + +#endif + diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/ubloxusb/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/ubloxusb/main.cpp new file mode 100644 index 0000000000..3454114579 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/ubloxusb/main.cpp @@ -0,0 +1,35 @@ +#include "UbloxUSBGSMModem.h" +#include "UbloxUSBCDMAModem.h" +#include "httptest.h" + +#if !defined(MODEM_UBLOX_GSM) && !defined(MODEM_UBLOX_CDMA) +#warning No modem defined, using GSM by default +#define MODEM_UBLOX_GSM +#endif + +#ifndef MODEM_APN +#warning APN not specified, using "internet" +#define MODEM_APN "internet" +#endif + +#ifndef MODEM_USERNAME +#warning username not specified +#define MODEM_USERNAME NULL +#endif + +#ifndef MODEM_PASSWORD +#warning password not specified +#define MODEM_PASSWORD NULL +#endif + +int main() +{ +#ifdef MODEM_UBLOX_GSM + UbloxUSBGSMModem modem; +#else + UbloxUSBCDMAModem modem(p18, true, 1); +#endif + httptest(modem, MODEM_APN, MODEM_USERNAME, MODEM_PASSWORD); + while (true); +} + diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.cpp new file mode 100644 index 0000000000..5a6393590f --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.cpp @@ -0,0 +1,41 @@ +#include "CellularModem.h" +#include "smstest.h" + +void smstest(CellularModem& modem) +{ + modem.power(true); + Thread::wait(1000); + +#ifdef DESTINATION_NUMBER + modem.sendSM(DESINATION_NUMBER, "Hello from mbed:)"); +#endif + + while(true) + { + char num[17]; + char msg[64]; + size_t count; + int ret = modem.getSMCount(&count); + if(ret) + { + printf("getSMCount returned %d\n", ret); + Thread::wait(3000); + continue; + } + if( count > 0) + { + printf("%d SMS to read\n", count); + ret = modem.getSM(num, msg, 64); + if(ret) + { + printf("getSM returned %d\n", ret); + Thread::wait(3000); + continue; + } + + printf("%s : %s\n", num, msg); + } + Thread::wait(3000); + } +} + diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.h new file mode 100644 index 0000000000..0d1ea80fc7 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.h @@ -0,0 +1,9 @@ +#ifndef SMSTEST_H_ +#define SMSTEST_H_ + +#include "CellularModem.h" + +void smstest(CellularModem&); + +#endif + diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/ubloxusb/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/ubloxusb/main.cpp new file mode 100644 index 0000000000..a493be7bfe --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/ubloxusb/main.cpp @@ -0,0 +1,21 @@ +#include "UbloxUSBGSMModem.h" +#include "UbloxUSBCDMAModem.h" +#include "smstest.h" + +#if !defined(MODEM_UBLOX_GSM) && !defined(MODEM_UBLOX_CDMA) +#warning No modem defined, using GSM by default +#define MODEM_UBLOX_GSM +#endif + +int main() +{ +#ifdef MODEM_UBLOX_GSM + UbloxUSBGSMModem modem; +#else + UbloxUSBCDMAModem modem(p18, true, 1); +#endif + + smstest(modem); + while (true); +} + diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client/main.cpp new file mode 100644 index 0000000000..17193f08d0 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client/main.cpp @@ -0,0 +1,59 @@ +#include "mbed.h" +#include "test_env.h" +#include "EthernetInterface.h" + +struct s_ip_address { + int ip_1; + int ip_2; + int ip_3; + int ip_4; +}; + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(tcpecho_client_auto); + MBED_HOSTTEST_DESCRIPTION(TCP echo client); + MBED_HOSTTEST_START("NET_4"); + + char buffer[256] = {0}; + char out_buffer[] = "Hello World\n"; + char out_success[] = "{{success}}\n{{end}}\n"; + char out_failure[] = "{{failure}}\n{{end}}\n"; + s_ip_address ip_addr = {0, 0, 0, 0}; + int port = 0; + + printf("TCPCllient waiting for server IP and port..." NL); + scanf("%d.%d.%d.%d:%d", &ip_addr.ip_1, &ip_addr.ip_2, &ip_addr.ip_3, &ip_addr.ip_4, &port); + printf("Address received:%d.%d.%d.%d:%d" NL, ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4, port); + + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + + printf("TCPClient IP Address is %s" NL, eth.getIPAddress()); + sprintf(buffer, "%d.%d.%d.%d", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4); + + TCPSocketConnection socket; + while (socket.connect(buffer, port) < 0) { + printf("TCPCllient unable to connect to %s:%d" NL, buffer, port); + wait(1); + } + + socket.send_all(out_buffer, sizeof(out_buffer) - 1); + + int n = socket.receive(buffer, sizeof(buffer)); + if (n > 0) + { + buffer[n] = '\0'; + printf("%s", buffer); + if (strncmp(out_buffer, buffer, sizeof(out_buffer) - 1) == 0) { + socket.send_all(out_success, sizeof(out_success) - 1); + } + } + + socket.send_all(out_failure, sizeof(out_failure) - 1); + + socket.close(); + eth.disconnect(); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client_loop/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client_loop/main.cpp new file mode 100644 index 0000000000..6c797e7443 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client_loop/main.cpp @@ -0,0 +1,78 @@ +#include "mbed.h" +#include "test_env.h" +#include "EthernetInterface.h" +#include <algorithm> + +namespace { + const int BUFFER_SIZE = 64; + const int MAX_ECHO_LOOPS = 1000; + const char ASCII_MAX = '~' - ' '; + + struct s_ip_address + { + int ip_1; + int ip_2; + int ip_3; + int ip_4; + }; +} + +char char_rand() { + return (rand() % ASCII_MAX) + ' '; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(tcpecho_client_auto); + MBED_HOSTTEST_DESCRIPTION(TCP client echo loop); + MBED_HOSTTEST_START("NET_13"); + + char buffer[BUFFER_SIZE] = {0}; + char out_buffer[BUFFER_SIZE] = {0}; + s_ip_address ip_addr = {0, 0, 0, 0}; + int port = 0; + + printf("MBED: TCPCllient waiting for server IP and port...\r\n"); + scanf("%d.%d.%d.%d:%d", &ip_addr.ip_1, &ip_addr.ip_2, &ip_addr.ip_3, &ip_addr.ip_4, &port); + printf("MBED: Address received: %d.%d.%d.%d:%d\r\n", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4, port); + + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + + printf("MBED: TCPClient IP Address is %s\r\n", eth.getIPAddress()); + sprintf(buffer, "%d.%d.%d.%d", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4); + + TCPSocketConnection socket; + while (socket.connect(buffer, port) < 0) { + printf("MBED: TCPCllient unable to connect to %s:%d\r\n", buffer, port); + wait(1); + } + + // Test loop for multiple client connections + bool result = true; + int count_error = 0; + for (int i = 0; i < MAX_ECHO_LOOPS; i++) { + std::generate(out_buffer, out_buffer + BUFFER_SIZE, char_rand); + socket.send_all(out_buffer, BUFFER_SIZE); + + int n = socket.receive(buffer, BUFFER_SIZE); + if (n > 0) + { + bool echoed = memcmp(out_buffer, buffer, BUFFER_SIZE) == 0; + result = result && echoed; + if (echoed == false) { + count_error++; // Count error messages + } + } + } + + printf("MBED: Loop messages passed: %d / %d\r\n", MAX_ECHO_LOOPS - count_error, MAX_ECHO_LOOPS); + + if (notify_completion_str(result, buffer)) { + socket.send_all(buffer, strlen(buffer)); + } + socket.close(); + eth.disconnect(); + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_server/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_server/main.cpp new file mode 100644 index 0000000000..421fb0dbec --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_server/main.cpp @@ -0,0 +1,47 @@ +#include "mbed.h" +#include "test_env.h" +#include "EthernetInterface.h" + +namespace { + const int ECHO_SERVER_PORT = 7; + const int BUFFER_SIZE = 64; +} + +int main (void) { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(tcpecho_server_auto); + MBED_HOSTTEST_DESCRIPTION(TCP echo server); + MBED_HOSTTEST_START("NET_3"); + + char buffer[BUFFER_SIZE] = {0}; + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + printf("MBED: Server IP Address is %s:%d" NL, eth.getIPAddress(), ECHO_SERVER_PORT); + + TCPSocketServer server; + server.bind(ECHO_SERVER_PORT); + server.listen(); + + while (true) { + printf("MBED: Wait for new connection..." NL); + TCPSocketConnection client; + server.accept(client); + client.set_blocking(false, 1500); // Timeout after (1.5)s + printf("MBED: Connection from: %s" NL, client.get_address()); + + while (true) { + const int n = client.receive(buffer, sizeof(buffer)); + if (n <= 0) { + break; + } + const int buffer_string_end_index = n >= BUFFER_SIZE ? BUFFER_SIZE-1 : n; + buffer[buffer_string_end_index] = '\0'; + client.send_all(buffer, n); + if (n <= 0) { + break; + } + } + client.close(); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_client/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_client/main.cpp new file mode 100644 index 0000000000..97f6050508 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_client/main.cpp @@ -0,0 +1,82 @@ +#include "mbed.h" +#include "rtos.h" +#include "test_env.h" +#include "EthernetInterface.h" +#include <algorithm> + +#define CHECK(RC, STEP) if (RC < 0) error(STEP": %d\r\n", RC) + +namespace { + const int BUFFER_SIZE = 64; + const int MAX_ECHO_LOOPS = 100; + const char ASCII_MAX = '~' - ' '; + + struct s_ip_address { + int ip_1; + int ip_2; + int ip_3; + int ip_4; + }; +} + +char char_rand() { + return (rand() % ASCII_MAX) + ' '; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(udpecho_client_auto); + MBED_HOSTTEST_DESCRIPTION(UDP echo client); + MBED_HOSTTEST_START("NET_6"); + + char buffer[BUFFER_SIZE] = {0}; + char out_buffer[BUFFER_SIZE] = {0}; + s_ip_address ip_addr = {0, 0, 0, 0}; + int port = 0; + bool result = true; + + printf("MBED: UDPCllient waiting for server IP and port...\r\n"); + scanf("%d.%d.%d.%d:%d", &ip_addr.ip_1, &ip_addr.ip_2, &ip_addr.ip_3, &ip_addr.ip_4, &port); + printf("MBED: Address received: %d.%d.%d.%d:%d\r\n", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4, port); + + EthernetInterface eth; + int rc = eth.init(); //Use DHCP + CHECK(rc, "eth init"); + + rc = eth.connect(); + CHECK(rc, "connect"); + printf("IP: %s\n", eth.getIPAddress()); + + UDPSocket socket; + rc = socket.init(); + CHECK(rc, "socket init"); + + printf("MBED: UDPClient IP Address is %s\r\n", eth.getIPAddress()); + sprintf(buffer, "%d.%d.%d.%d", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4); + + Endpoint echo_server; + rc = echo_server.set_address(buffer, port); + CHECK(rc, "set_address"); + + for (int i =0; i < MAX_ECHO_LOOPS; i++) { + std::generate(out_buffer, out_buffer + BUFFER_SIZE, char_rand); + rc = socket.sendTo(echo_server, out_buffer, sizeof(out_buffer)); + CHECK(rc, "sendTo"); + + const int n = socket.receiveFrom(echo_server, buffer, sizeof(buffer)); + CHECK(n, "receiveFrom"); + + if (memcmp(buffer, out_buffer, BUFFER_SIZE) != 0) { + result = false; + break; + } + } + + if (notify_completion_str(result, buffer)) { + socket.sendTo(echo_server, buffer, strlen(buffer)); + } + + socket.close(); + eth.disconnect(); + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_link_layer/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_link_layer/main.cpp new file mode 100644 index 0000000000..3e40499dfa --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_link_layer/main.cpp @@ -0,0 +1,151 @@ +#include "mbed.h" +#include "rtos.h" +#include "EthernetInterface.h" +#include <list> +#include <string> + +/** +* How to use: +* make.py -m LPC1768 -t ARM -d E:\ -n NET_14 +* udp_link_layer_auto.py -p COM20 -d E:\ -t 10 +*/ + +// Evil globals +namespace { + // IP and port used to store HOST address info + char host_address[32] = {0}; + volatile int host_port = 0; + + const int ECHO_SERVER_PORT = 7; + const int BUFFER_SIZE = 64; + + // Forwarding packet queue + std::list<std::string> datagram_queue; + + // Statistics (mbed) + volatile int received_packets = 0; + volatile int forwarded_packets = 0; + volatile int max_queue_len = 0; + + Mutex cli_serv_mutex; + // cli_serv_mutex.lock(); // LOCK + // cli_serv_mutex.unlock(); // LOCK +} + +void udp_server_task(void const *argument) +{ + DigitalOut indicator(LED1); + UDPSocket server; + + server.bind(ECHO_SERVER_PORT); + // printf("[udp_server_task] Start\r\n"); + + Endpoint client; + char buffer[BUFFER_SIZE] = { 0 }; + while (true) { + //printf("[udp_server_task] Wait for packet...\r\n"); + int n = server.receiveFrom(client, buffer, sizeof(buffer)); + if (n > 0) { + //printf("[udp_server_task] Received packet from: %s\r\n", client.get_address()); + const int buffer_string_end_index = n >= BUFFER_SIZE ? BUFFER_SIZE - 1 : n; + buffer[buffer_string_end_index] = '\0'; + //printf("[udp_server_task] Server received: %s\r\n", buffer); + if (host_port == 0) { + strcpy(host_address, client.get_address()); + host_port = ECHO_SERVER_PORT + 1; + //printf("[udp_server_task] Set host address and port: %s:%d\r\n", host_address, host_port); + } + // Dispatch data to client for sending to test HOST + cli_serv_mutex.lock(); // LOCK + // Push to datagram queue + datagram_queue.push_front(std::string(buffer)); + max_queue_len = datagram_queue.size() > max_queue_len ? datagram_queue.size() : max_queue_len; + received_packets++; + cli_serv_mutex.unlock(); // LOCK + indicator = !indicator; + } + } +} + +void udp_client_task(void const *argument) +{ + while (host_port == 0) { + // Waiting for HOST port notification + } + + DigitalOut indicator(LED2); + UDPSocket socket; + socket.init(); + + Endpoint echo_server; + echo_server.set_address(host_address, host_port); + //printf("[udp_client_task] Start: %s:%d\r\n", host_address, host_port); + + while (1) { + std::string datagram; + bool sent_datagram = false; + cli_serv_mutex.lock(); // LOCK + if (datagram_queue.size() > 0) { + // POP from datagram queue + datagram = datagram_queue.back(); + datagram_queue.pop_back(); + sent_datagram = true; + } + cli_serv_mutex.unlock(); // LOCK + if (sent_datagram) { + //printf("[udp_client_task] Forwarded datagram: %s\r\n", datagram.c_str()); + socket.sendTo(echo_server, (char *)datagram.c_str(), datagram.length()); + forwarded_packets++; + indicator = !indicator; + } + } +} + +int main(void) +{ + EthernetInterface eth; + + eth.init(); //Use DHCP + eth.connect(); + printf("MBED: Server IP Address is %s:%d\r\n", eth.getIPAddress(), ECHO_SERVER_PORT); + + Thread UdpServerTask(udp_server_task, NULL, osPriorityNormal, DEFAULT_STACK_SIZE * 2.25); + Thread UdpClientTask(udp_client_task, NULL, osPriorityNormal, DEFAULT_STACK_SIZE * 2.25); + + // Control TCP server to get MBED statistics + { + char buffer[BUFFER_SIZE] = {0}; + const int TELNET_SERVER_PORT = 23; + const int BUFFER_SIZE = 256; + TCPSocketServer server; + server.bind(TELNET_SERVER_PORT); + server.listen(); + + while (true) { + printf("MBED: Wait for new connection...\r\n"); + TCPSocketConnection client; + server.accept(client); + client.set_blocking(false, 1500); // Timeout after (1.5)s + printf("MBED: Connection from: %s\r\n", client.get_address()); + + while (true) { + int n = client.receive(buffer, sizeof(buffer)); + //if (n <= 0) break; + if (n > 0) { + // printf("Recv %d chars\r\n", n); + const int buffer_string_end_index = n >= BUFFER_SIZE ? BUFFER_SIZE - 1 : n; + buffer[buffer_string_end_index] = '\0'; + // client.send_all(buffer, strlen(buffer)); + if (strncmp(buffer, "stat", 4) == 0) { + sprintf(buffer, "received_packets %d\nforwarded_packets %d\nmax_queue_len %d", + received_packets, forwarded_packets, max_queue_len); + client.send_all(buffer, strlen(buffer)); + // printf("%s", buffer); + } + } + //if (n <= 0) break; + } + client.close(); + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_server/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_server/main.cpp new file mode 100644 index 0000000000..ea90ff7d4a --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_server/main.cpp @@ -0,0 +1,37 @@ +#include "mbed.h" +#include "test_env.h" +#include "EthernetInterface.h" + +namespace { + const int ECHO_SERVER_PORT = 7; + const int BUFFER_SIZE = 64; +} + +int main (void) { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(udpecho_server_auto); + MBED_HOSTTEST_DESCRIPTION(UDP echo server); + MBED_HOSTTEST_START("NET_5"); + + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + printf("MBED: Server IP Address is %s:%d\r\n", eth.getIPAddress(), ECHO_SERVER_PORT); + + UDPSocket server; + server.bind(ECHO_SERVER_PORT); + + Endpoint client; + char buffer[BUFFER_SIZE] = {0}; + printf("MBED: Waiting for packet...\r\n"); + while (true) { + int n = server.receiveFrom(client, buffer, sizeof(buffer)); + if (n > 0) { + //printf("Received packet from: %s\n", client.get_address()); + const int buffer_string_end_index = n >= BUFFER_SIZE ? BUFFER_SIZE-1 : n; + buffer[buffer_string_end_index] = '\0'; + //printf("Server received: %s\n", buffer); + server.sendTo(client, buffer, n); + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_receive/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_receive/main.cpp new file mode 100644 index 0000000000..9cee345519 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_receive/main.cpp @@ -0,0 +1,23 @@ +#include "mbed.h" +#include "EthernetInterface.h" + +const int BROADCAST_PORT = 58083; + +int main() { + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + + UDPSocket socket; + socket.bind(BROADCAST_PORT); + socket.set_broadcasting(); + + Endpoint broadcaster; + char buffer[256]; + while (true) { + printf("\nWait for packet...\n"); + int n = socket.receiveFrom(broadcaster, buffer, sizeof(buffer)); + buffer[n] = '\0'; + printf("Packet from \"%s\": %s\n", broadcaster.get_address(), buffer); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_send/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_send/main.cpp new file mode 100644 index 0000000000..4632c63ff0 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_send/main.cpp @@ -0,0 +1,25 @@ +#include "mbed.h" +#include "EthernetInterface.h" + +const int BROADCAST_PORT = 58083; + +int main() { + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + + UDPSocket sock; + sock.init(); + sock.set_broadcasting(); + + Endpoint broadcast; + broadcast.set_address("255.255.255.255", BROADCAST_PORT); + + char out_buffer[] = "very important data"; + + while (true) { + printf("Broadcasting...\n"); + sock.sendTo(broadcast, out_buffer, sizeof(out_buffer)); + Thread::wait(1000); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_receive/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_receive/main.cpp new file mode 100644 index 0000000000..0398bdd1fd --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_receive/main.cpp @@ -0,0 +1,27 @@ +#include "mbed.h" +#include "EthernetInterface.h" + +const char* MCAST_GRP = "224.1.1.1"; +const int MCAST_PORT = 5007; + +int main() { + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + + UDPSocket server; + server.bind(MCAST_PORT); + if (server.join_multicast_group(MCAST_GRP) != 0) { + printf("Error joining the multicast group\n"); + while (true) {} + } + + Endpoint client; + char buffer[256]; + while (true) { + printf("\nWait for packet...\n"); + int n = server.receiveFrom(client, buffer, sizeof(buffer)); + + printf("Packet from \"%s\": %s\n", client.get_address(), buffer); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_send/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_send/main.cpp new file mode 100644 index 0000000000..df41c6d80a --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_send/main.cpp @@ -0,0 +1,24 @@ +#include "mbed.h" +#include "EthernetInterface.h" + +const char* MCAST_GRP = "224.1.1.1"; +const int MCAST_PORT = 5007; + +int main() { + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + + UDPSocket sock; + sock.init(); + + Endpoint multicast_group; + multicast_group.set_address(MCAST_GRP, MCAST_PORT); + + char out_buffer[] = "very important data"; + while (true) { + printf("Multicast to group: %s\n", MCAST_GRP); + sock.sendTo(multicast_group, out_buffer, sizeof(out_buffer)); + Thread::wait(1000); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/tcpclient/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/tcpclient/main.cpp new file mode 100644 index 0000000000..303f547aa1 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/tcpclient/main.cpp @@ -0,0 +1,85 @@ +#include <algorithm> +#include "mbed.h" +#include "EthernetInterface.h" +#include "test_env.h" + +namespace { + // Test connection information + const char *HTTP_SERVER_NAME = "developer.mbed.org"; + const char *HTTP_SERVER_FILE_PATH = "/media/uploads/mbed_official/hello.txt"; + const int HTTP_SERVER_PORT = 80; + const int RECV_BUFFER_SIZE = 512; + + // Test related data + const char *HTTP_OK_STR = "200 OK"; + const char *HTTP_HELLO_STR = "Hello world!"; + + // Test buffers + char buffer[RECV_BUFFER_SIZE] = {0}; +} + +bool find_substring(const char *first, const char *last, const char *s_first, const char *s_last) { + const char *f = std::search(first, last, s_first, s_last); + return (f != last); +} + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(TCP client hello world); + MBED_HOSTTEST_START("NET_1"); + + bool result = false; + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + printf("TCP client IP Address is %s\r\n", eth.getIPAddress()); + + TCPSocketConnection sock; + if (sock.connect(HTTP_SERVER_NAME, HTTP_SERVER_PORT) == 0) { + printf("HTTP: Connected to %s:%d\r\n", HTTP_SERVER_NAME, HTTP_SERVER_PORT); + + // We are constructing GET command like this: + // GET http://developer.mbed.org/media/uploads/mbed_official/hello.txt HTTP/1.0\n\n + strcpy(buffer, "GET http://"); + strcat(buffer, HTTP_SERVER_NAME); + strcat(buffer, HTTP_SERVER_FILE_PATH); + strcat(buffer, " HTTP/1.0\n\n"); + // Send GET command + sock.send_all(buffer, strlen(buffer)); + + // Server will respond with HTTP GET's success code + bool found_200_ok = false; + { + const int ret = sock.receive(buffer, sizeof(buffer) - 1); + buffer[ret] = '\0'; + // Find 200 OK HTTP status in reply + found_200_ok = find_substring(buffer, buffer + ret, HTTP_OK_STR, HTTP_OK_STR + strlen(HTTP_OK_STR)); + printf("HTTP: Received %d chars from server\r\n", ret); + printf("HTTP: Received 200 OK status ... %s\r\n", found_200_ok ? "[OK]" : "[FAIL]"); + printf("HTTP: Received massage:\r\n\r\n"); + printf("%s", buffer); + } + + // Server will respond with requested file content + bool found_hello = false; + { + const int ret = sock.receive(buffer, sizeof(buffer) - 1); + buffer[ret] = '\0'; + // Find Hello World! in reply + found_hello = find_substring(buffer, buffer + ret, HTTP_HELLO_STR, HTTP_HELLO_STR + strlen(HTTP_HELLO_STR)); + printf("HTTP: Received %d chars from server\r\n", ret); + printf("HTTP: Received '%s' status ... %s\r\n", HTTP_HELLO_STR, found_hello ? "[OK]" : "[FAIL]"); + printf("HTTP: Received massage:\r\n\r\n"); + printf("%s", buffer); + } + + if (found_200_ok && found_hello) { + result = true; + } + } + + sock.close(); + eth.disconnect(); + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/udpclient/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/udpclient/main.cpp new file mode 100644 index 0000000000..59dad6db6f --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/udpclient/main.cpp @@ -0,0 +1,56 @@ +#include "mbed.h" +#include "EthernetInterface.h" +#include "test_env.h" + +namespace { + const char *HTTP_SERVER_NAME = "utcnist.colorado.edu"; + const int HTTP_SERVER_PORT = 37; + const float YEARS_TO_PASS = 114.0; +} + + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(NIST Internet Time Service); + MBED_HOSTTEST_START("NET_2"); + + bool result = false; + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + printf("UDP client IP Address is %s\n", eth.getIPAddress()); + + UDPSocket sock; + sock.init(); + + Endpoint nist; + nist.set_address(HTTP_SERVER_NAME, HTTP_SERVER_PORT); + + char out_buffer[] = "plop"; // Does not matter + sock.sendTo(nist, out_buffer, sizeof(out_buffer)); + + union { + char in_buffer_tab[4]; + unsigned int in_buffer_uint; + }; + + const int n = sock.receiveFrom(nist, in_buffer_tab, sizeof(in_buffer_tab)); + if (n > 0) { + result = true; + const unsigned int timeRes = ntohl(in_buffer_uint); + const float years = timeRes / 60.0 / 60.0 / 24.0 / 365.0; + const float days = timeRes / 24.0 / 60.0 / 60.0; + printf("UDP: Received %d bytes from server %s on port %d\r\n", n, nist.get_address(), nist.get_port()); + printf("UDP: %u seconds since 01/01/1900 00:00 GMT ... %s\r\n", timeRes, timeRes > 0 ? "[OK]" : "[FAIL]"); + printf("UDP: %.2f days since 01/01/1900 00:00 GMT ... %s\r\n", days, timeRes > 0 ? "[OK]" : "[FAIL]"); + printf("UDP: %.2f years since 01/01/1900 00:00 GMT ... %s\r\n", years, timeRes > YEARS_TO_PASS ? "[OK]" : "[FAIL]"); + + if (years < YEARS_TO_PASS) { + result = false; + } + } + sock.close(); + eth.disconnect(); + MBED_HOSTTEST_RESULT(result); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.cpp new file mode 100644 index 0000000000..263c928949 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.cpp @@ -0,0 +1,621 @@ +/* HTTPClient.cpp */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +//Debug is disabled by default +#if 1 +//Enable debug +#include <cstdio> +//#define DBG(x, ...) std::printf("[HTTPClient : DBG]"x"\r\n", ##__VA_ARGS__); +#define DBG(x, ...) +#define WARN(x, ...) std::printf("[HTTPClient : WARN]"x"\r\n", ##__VA_ARGS__); +#define ERR(x, ...) std::printf("[HTTPClient : ERR]"x"\r\n", ##__VA_ARGS__); + +#else +//Disable debug +#define DBG(x, ...) +#define WARN(x, ...) +#define ERR(x, ...) + +#endif + +#define HTTP_PORT 80 + +#define OK 0 + +#define MIN(x,y) (((x)<(y))?(x):(y)) +#define MAX(x,y) (((x)>(y))?(x):(y)) + +#define CHUNK_SIZE 256 + +#include <cstring> + +#include "HTTPClient.h" + +HTTPClient::HTTPClient() : +m_sock(), m_basicAuthUser(NULL), m_basicAuthPassword(NULL), m_httpResponseCode(0) +{ + +} + +HTTPClient::~HTTPClient() +{ + +} + +#if 0 +void HTTPClient::basicAuth(const char* user, const char* password) //Basic Authentification +{ + m_basicAuthUser = user; + m_basicAuthPassword = password; +} +#endif + +HTTPResult HTTPClient::get(const char* url, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking +{ + return connect(url, HTTP_GET, NULL, pDataIn, timeout); +} + +HTTPResult HTTPClient::get(const char* url, char* result, size_t maxResultLen, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking +{ + HTTPText str(result, maxResultLen); + return get(url, &str, timeout); +} + +HTTPResult HTTPClient::post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking +{ + return connect(url, HTTP_POST, (IHTTPDataOut*)&dataOut, pDataIn, timeout); +} + +int HTTPClient::getHTTPResponseCode() +{ + return m_httpResponseCode; +} + +#define CHECK_CONN_ERR(ret) \ + do{ \ + if(ret) { \ + m_sock.close(); \ + ERR("Connection error (%d)", ret); \ + return HTTP_CONN; \ + } \ + } while(0) + +#define PRTCL_ERR() \ + do{ \ + m_sock.close(); \ + ERR("Protocol error"); \ + return HTTP_PRTCL; \ + } while(0) + +HTTPResult HTTPClient::connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout) //Execute request +{ + m_httpResponseCode = 0; //Invalidate code + m_timeout = timeout; + + char scheme[8]; + uint16_t port; + char host[32]; + char path[64]; + //First we need to parse the url (http[s]://host[:port][/[path]]) -- HTTPS not supported (yet?) + HTTPResult res = parseURL(url, scheme, sizeof(scheme), host, sizeof(host), &port, path, sizeof(path)); + if(res != HTTP_OK) + { + ERR("parseURL returned %d", res); + return res; + } + + if(port == 0) //TODO do handle HTTPS->443 + { + port = 80; + } + + DBG("Scheme: %s", scheme); + DBG("Host: %s", host); + DBG("Port: %d", port); + DBG("Path: %s", path); + + //Connect + DBG("Connecting socket to server"); + int ret = m_sock.connect(host, port); + if (ret < 0) + { + m_sock.close(); + ERR("Could not connect"); + return HTTP_CONN; + } + + //Send request + DBG("Sending request"); + char buf[CHUNK_SIZE]; + const char* meth = (method==HTTP_GET)?"GET":(method==HTTP_POST)?"POST":""; + snprintf(buf, sizeof(buf), "%s %s HTTP/1.1\r\nHost: %s\r\n", meth, path, host); //Write request + ret = send(buf); + if(ret) + { + m_sock.close(); + ERR("Could not write request"); + return HTTP_CONN; + } + + //Send all headers + + //Send default headers + DBG("Sending headers"); + if( (method == HTTP_POST) && (pDataOut != NULL) ) + { + if( pDataOut->getIsChunked() ) + { + ret = send("Transfer-Encoding: chunked\r\n"); + CHECK_CONN_ERR(ret); + } + else + { + snprintf(buf, sizeof(buf), "Content-Length: %d\r\n", pDataOut->getDataLen()); + ret = send(buf); + CHECK_CONN_ERR(ret); + } + char type[48]; + if( pDataOut->getDataType(type, 48) == HTTP_OK ) + { + snprintf(buf, sizeof(buf), "Content-Type: %s\r\n", type); + ret = send(buf); + CHECK_CONN_ERR(ret); + } + } + + //Close headers + DBG("Headers sent"); + ret = send("\r\n"); + CHECK_CONN_ERR(ret); + + size_t trfLen; + + //Send data (if POST) + if( (method == HTTP_POST) && (pDataOut != NULL) ) + { + DBG("Sending data"); + while(true) + { + size_t writtenLen = 0; + pDataOut->read(buf, CHUNK_SIZE, &trfLen); + if( pDataOut->getIsChunked() ) + { + //Write chunk header + char chunkHeader[16]; + snprintf(chunkHeader, sizeof(chunkHeader), "%X\r\n", trfLen); //In hex encoding + ret = send(chunkHeader); + CHECK_CONN_ERR(ret); + } + else if( trfLen == 0 ) + { + break; + } + if( trfLen != 0 ) + { + ret = send(buf, trfLen); + CHECK_CONN_ERR(ret); + } + + if( pDataOut->getIsChunked() ) + { + ret = send("\r\n"); //Chunk-terminating CRLF + CHECK_CONN_ERR(ret); + } + else + { + writtenLen += trfLen; + if( writtenLen >= pDataOut->getDataLen() ) + { + break; + } + } + + if( trfLen == 0 ) + { + break; + } + } + + } + + //Receive response + DBG("Receiving response"); + ret = recv(buf, CHUNK_SIZE - 1, CHUNK_SIZE - 1, &trfLen); //Read n bytes + CHECK_CONN_ERR(ret); + + buf[trfLen] = '\0'; + + char* crlfPtr = strstr(buf, "\r\n"); + if(crlfPtr == NULL) + { + PRTCL_ERR(); + } + + int crlfPos = crlfPtr - buf; + buf[crlfPos] = '\0'; + + //Parse HTTP response + if( sscanf(buf, "HTTP/%*d.%*d %d %*[^\r\n]", &m_httpResponseCode) != 1 ) + { + //Cannot match string, error + ERR("Not a correct HTTP answer : %s\n", buf); + PRTCL_ERR(); + } + + if(m_httpResponseCode != 200) + { + //Cannot match string, error + WARN("Response code %d", m_httpResponseCode); + PRTCL_ERR(); + } + + DBG("Reading headers"); + + memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2) + 1); //Be sure to move NULL-terminating char as well + trfLen -= (crlfPos + 2); + + size_t recvContentLength = 0; + bool recvChunked = false; + //Now get headers + while( true ) + { + crlfPtr = strstr(buf, "\r\n"); + if(crlfPtr == NULL) + { + if( trfLen < CHUNK_SIZE - 1 ) + { + size_t newTrfLen; + ret = recv(buf + trfLen, 1, CHUNK_SIZE - trfLen - 1, &newTrfLen); + trfLen += newTrfLen; + buf[trfLen] = '\0'; + DBG("Read %d chars; In buf: [%s]", newTrfLen, buf); + CHECK_CONN_ERR(ret); + continue; + } + else + { + PRTCL_ERR(); + } + } + + crlfPos = crlfPtr - buf; + + if(crlfPos == 0) //End of headers + { + DBG("Headers read"); + memmove(buf, &buf[2], trfLen - 2 + 1); //Be sure to move NULL-terminating char as well + trfLen -= 2; + break; + } + + buf[crlfPos] = '\0'; + + char key[64] = {0}; + char value[32] = {0}; + + int n = sscanf(buf, "%63[^:]: %31[^\r\n]", key, value); + + if ( n == 2 ) + { + DBG("Read header : %s: %s\n", key, value); + if( !strcmp(key, "Content-Length") ) + { + sscanf(value, "%d", &recvContentLength); + pDataIn->setDataLen(recvContentLength); + } + else if( !strcmp(key, "Transfer-Encoding") ) + { + if( !strcmp(value, "Chunked") || !strcmp(value, "chunked") ) + { + recvChunked = true; + pDataIn->setIsChunked(true); + } + } + else if( !strcmp(key, "Content-Type") ) + { + pDataIn->setDataType(value); + } + + memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2) + 1); //Be sure to move NULL-terminating char as well + trfLen -= (crlfPos + 2); + + } + else + { + ERR("Could not parse header"); + PRTCL_ERR(); + } + + } + + //Receive data + DBG("Receiving data"); + while(true) + { + size_t readLen = 0; + + if( recvChunked ) + { + //Read chunk header + crlfPos=0; + for(crlfPos++; crlfPos < trfLen - 2; crlfPos++) + { + if( buf[crlfPos] == '\r' && buf[crlfPos + 1] == '\n' ) + { + break; + } + } + if(crlfPos >= trfLen - 2) //Try to read more + { + if( trfLen < CHUNK_SIZE ) + { + size_t newTrfLen; + ret = recv(buf + trfLen, 0, CHUNK_SIZE - trfLen - 1, &newTrfLen); + trfLen += newTrfLen; + CHECK_CONN_ERR(ret); + continue; + } + else + { + PRTCL_ERR(); + } + } + buf[crlfPos] = '\0'; + int n = sscanf(buf, "%x", &readLen); + if(n!=1) + { + ERR("Could not read chunk length"); + PRTCL_ERR(); + } + + memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2)); //Not need to move NULL-terminating char any more + trfLen -= (crlfPos + 2); + + if( readLen == 0 ) + { + //Last chunk + break; + } + } + else + { + readLen = recvContentLength; + } + + DBG("Retrieving %d bytes", readLen); + + do + { + pDataIn->write(buf, MIN(trfLen, readLen)); + if( trfLen > readLen ) + { + memmove(buf, &buf[readLen], trfLen - readLen); + trfLen -= readLen; + readLen = 0; + } + else + { + readLen -= trfLen; + } + + if(readLen) + { + ret = recv(buf, 1, CHUNK_SIZE - trfLen - 1, &trfLen); + CHECK_CONN_ERR(ret); + } + } while(readLen); + + if( recvChunked ) + { + if(trfLen < 2) + { + size_t newTrfLen; + //Read missing chars to find end of chunk + ret = recv(buf, 2 - trfLen, CHUNK_SIZE, &newTrfLen); + CHECK_CONN_ERR(ret); + trfLen += newTrfLen; + } + if( (buf[0] != '\r') || (buf[1] != '\n') ) + { + ERR("Format error"); + PRTCL_ERR(); + } + memmove(buf, &buf[2], trfLen - 2); + trfLen -= 2; + } + else + { + break; + } + + } + + m_sock.close(); + DBG("Completed HTTP transaction"); + + return HTTP_OK; +} + +HTTPResult HTTPClient::recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen) //0 on success, err code on failure +{ + DBG("Trying to read between %d and %d bytes", minLen, maxLen); + size_t readLen = 0; + + if(!m_sock.is_connected()) + { + WARN("Connection was closed by server"); + return HTTP_CLOSED; //Connection was closed by server + } + + int ret; + while(readLen < maxLen) + { + if(readLen < minLen) + { + DBG("Trying to read at most %d bytes [Blocking]", minLen - readLen); + m_sock.set_blocking(false, m_timeout); + ret = m_sock.receive_all(buf + readLen, minLen - readLen); + } + else + { + DBG("Trying to read at most %d bytes [Not blocking]", maxLen - readLen); + m_sock.set_blocking(false, 0); + ret = m_sock.receive(buf + readLen, maxLen - readLen); + } + + if( ret > 0) + { + readLen += ret; + } + else if( ret == 0 ) + { + break; + } + else + { + if(!m_sock.is_connected()) + { + ERR("Connection error (recv returned %d)", ret); + *pReadLen = readLen; + return HTTP_CONN; + } + else + { + break; + } + } + + if(!m_sock.is_connected()) + { + break; + } + } + DBG("Read %d bytes", readLen); + *pReadLen = readLen; + return HTTP_OK; +} + +HTTPResult HTTPClient::send(char* buf, size_t len) //0 on success, err code on failure +{ + if(len == 0) + { + len = strlen(buf); + } + DBG("Trying to write %d bytes", len); + size_t writtenLen = 0; + + if(!m_sock.is_connected()) + { + WARN("Connection was closed by server"); + return HTTP_CLOSED; //Connection was closed by server + } + + m_sock.set_blocking(false, m_timeout); + int ret = m_sock.send_all(buf, len); + if(ret > 0) + { + writtenLen += ret; + } + else if( ret == 0 ) + { + WARN("Connection was closed by server"); + return HTTP_CLOSED; //Connection was closed by server + } + else + { + ERR("Connection error (send returned %d)", ret); + return HTTP_CONN; + } + + DBG("Written %d bytes", writtenLen); + return HTTP_OK; +} + +HTTPResult HTTPClient::parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen) //Parse URL +{ + char* schemePtr = (char*) url; + char* hostPtr = (char*) strstr(url, "://"); + if(hostPtr == NULL) + { + WARN("Could not find host"); + return HTTP_PARSE; //URL is invalid + } + + if( maxSchemeLen < hostPtr - schemePtr + 1 ) //including NULL-terminating char + { + WARN("Scheme str is too small (%d >= %d)", maxSchemeLen, hostPtr - schemePtr + 1); + return HTTP_PARSE; + } + memcpy(scheme, schemePtr, hostPtr - schemePtr); + scheme[hostPtr - schemePtr] = '\0'; + + hostPtr+=3; + + size_t hostLen = 0; + + char* portPtr = strchr(hostPtr, ':'); + if( portPtr != NULL ) + { + hostLen = portPtr - hostPtr; + portPtr++; + if( sscanf(portPtr, "%hu", port) != 1) + { + WARN("Could not find port"); + return HTTP_PARSE; + } + } + else + { + *port=0; + } + char* pathPtr = strchr(hostPtr, '/'); + if( hostLen == 0 ) + { + hostLen = pathPtr - hostPtr; + } + + if( maxHostLen < hostLen + 1 ) //including NULL-terminating char + { + WARN("Host str is too small (%d >= %d)", maxHostLen, hostLen + 1); + return HTTP_PARSE; + } + memcpy(host, hostPtr, hostLen); + host[hostLen] = '\0'; + + size_t pathLen; + char* fragmentPtr = strchr(hostPtr, '#'); + if(fragmentPtr != NULL) + { + pathLen = fragmentPtr - pathPtr; + } + else + { + pathLen = strlen(pathPtr); + } + + if( maxPathLen < pathLen + 1 ) //including NULL-terminating char + { + WARN("Path str is too small (%d >= %d)", maxPathLen, pathLen + 1); + return HTTP_PARSE; + } + memcpy(path, pathPtr, pathLen); + path[pathLen] = '\0'; + + return HTTP_OK; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.h new file mode 100644 index 0000000000..e9ac860cab --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.h @@ -0,0 +1,138 @@ +/* HTTPClient.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** \file +HTTP Client header file +*/ + +#ifndef HTTP_CLIENT_H +#define HTTP_CLIENT_H + +#include "TCPSocketConnection.h" + +#define HTTP_CLIENT_DEFAULT_TIMEOUT 15000 + +class HTTPData; + +#include "IHTTPData.h" +#include "mbed.h" + +///HTTP client results +enum HTTPResult +{ + HTTP_PROCESSING, ///<Processing + HTTP_PARSE, ///<url Parse error + HTTP_DNS, ///<Could not resolve name + HTTP_PRTCL, ///<Protocol error + HTTP_NOTFOUND, ///<HTTP 404 Error + HTTP_REFUSED, ///<HTTP 403 Error + HTTP_ERROR, ///<HTTP xxx error + HTTP_TIMEOUT, ///<Connection timeout + HTTP_CONN, ///<Connection error + HTTP_CLOSED, ///<Connection was closed by remote host + HTTP_OK = 0, ///<Success +}; + +/**A simple HTTP Client +The HTTPClient is composed of: +- The actual client (HTTPClient) +- Classes that act as a data repository, each of which deriving from the HTTPData class (HTTPText for short text content, HTTPFile for file I/O, HTTPMap for key/value pairs, and HTTPStream for streaming purposes) +*/ +class HTTPClient +{ +public: + ///Instantiate the HTTP client + HTTPClient(); + ~HTTPClient(); + +#if 0 //TODO add header handlers + /** + Provides a basic authentification feature (Base64 encoded username and password) + Pass two NULL pointers to switch back to no authentication + @param user username to use for authentication, must remain valid durlng the whole HTTP session + @param user password to use for authentication, must remain valid durlng the whole HTTP session + */ + void basicAuth(const char* user, const char* password); //Basic Authentification +#endif + + //High Level setup functions + /** Execute a GET request on the url + Blocks until completion + @param url : url on which to execute the request + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult get(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Execute a GET request on the url + Blocks until completion + This is a helper to directly get a piece of text from a HTTP result + @param url : url on which to execute the request + @param result : pointer to a char array in which the result will be stored + @param maxResultLen : length of the char array (including space for the NULL-terminating char) + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult get(const char* url, char* result, size_t maxResultLen, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Execute a POST request on the url + Blocks until completion + @param url : url on which to execute the request + @param dataOut : a IHTTPDataOut instance that contains the data that will be posted + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Get last request's HTTP response code + @return The HTTP response code of the last request + */ + int getHTTPResponseCode(); + +private: + enum HTTP_METH + { + HTTP_GET, + HTTP_POST, + HTTP_HEAD + }; + + HTTPResult connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout); //Execute request + HTTPResult recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen); //0 on success, err code on failure + HTTPResult send(char* buf, size_t len = 0); //0 on success, err code on failure + HTTPResult parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen); //Parse URL + + //Parameters + TCPSocketConnection m_sock; + + int m_timeout; + + const char* m_basicAuthUser; + const char* m_basicAuthPassword; + int m_httpResponseCode; + +}; + +//Including data containers here for more convenience +#include "data/HTTPText.h" +#include "data/HTTPMap.h" + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/IHTTPData.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/IHTTPData.h new file mode 100644 index 0000000000..2eead464f1 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/IHTTPData.h @@ -0,0 +1,86 @@ +/* IHTTPData.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef IHTTPDATA_H +#define IHTTPDATA_H + +#include <cstring> + +using std::size_t; + +///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...) +class IHTTPDataOut +{ +protected: + friend class HTTPClient; + + /** Read a piece of data to be transmitted + * @param buf Pointer to the buffer on which to copy the data + * @param len Length of the buffer + * @param pReadLen Pointer to the variable on which the actual copied data length will be stored + */ + virtual int read(char* buf, size_t len, size_t* pReadLen) = 0; + + /** Get MIME type + * @param type Internet media type from Content-Type header + */ + virtual int getDataType(char* type, size_t maxTypeLen) = 0; //Internet media type for Content-Type header + + /** Determine whether the HTTP client should chunk the data + * Used for Transfer-Encoding header + */ + virtual bool getIsChunked() = 0; + + /** If the data is not chunked, get its size + * Used for Content-Length header + */ + virtual size_t getDataLen() = 0; + +}; + +///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...) +class IHTTPDataIn +{ +protected: + friend class HTTPClient; + + /** Write a piece of data transmitted by the server + * @param buf Pointer to the buffer from which to copy the data + * @param len Length of the buffer + */ + virtual int write(const char* buf, size_t len) = 0; + + /** Set MIME type + * @param type Internet media type from Content-Type header + */ + virtual void setDataType(const char* type) = 0; + + /** Determine whether the data is chunked + * Recovered from Transfer-Encoding header + */ + virtual void setIsChunked(bool chunked) = 0; + + /** If the data is not chunked, set its size + * From Content-Length header + */ + virtual void setDataLen(size_t len) = 0; + +}; + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.cpp new file mode 100644 index 0000000000..75ffd970e9 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.cpp @@ -0,0 +1,196 @@ +/* HTTPMap.cpp */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "HTTPMap.h" + +#include <cstring> + +#include <cctype> + +#define OK 0 + +using std::strncpy; + +HTTPMap::HTTPMap() : m_pos(0), m_count(0) +{ + +} + +void HTTPMap::put(const char* key, const char* value) +{ + if(m_count >= HTTPMAP_TABLE_SIZE) + { + return; + } + m_keys[m_count] = key; + m_values[m_count] = value; + m_count++; +} + +void HTTPMap::clear() +{ + m_count = 0; + m_pos = 0; +} + + +/*virtual*/ int HTTPMap::read(char* buf, size_t len, size_t* pReadLen) +{ + if(m_pos >= m_count) + { + *pReadLen = 0; + m_pos = 0; + return OK; + } + + //URL encode + char* out = buf; + const char* in = m_keys[m_pos]; + if( (m_pos != 0) && (out - buf < len - 1) ) + { + *out='&'; + out++; + } + + while( (*in != '\0') && (out - buf < len - 3) ) + { + if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~') + { + *out = *in; + out++; + } + else if( *in == ' ' ) + { + *out='+'; + out++; + } + else + { + char hex[] = "0123456789abcdef"; + *out='%'; + out++; + *out=hex[(*in>>4)&0xf]; + out++; + *out=hex[(*in)&0xf]; + out++; + } + in++; + } + + if( out - buf < len - 1 ) + { + *out='='; + out++; + } + + in = m_values[m_pos]; + while( (*in != '\0') && (out - buf < len - 3) ) + { + if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~') + { + *out = *in; + out++; + } + else if( *in == ' ' ) + { + *out='+'; + out++; + } + else + { + char hex[] = "0123456789abcdef"; + *out='%'; + out++; + *out=hex[(*in>>4)&0xf]; + out++; + *out=hex[(*in)&0xf]; + out++; + } + in++; + } + + *pReadLen = out - buf; + + m_pos++; + return OK; +} + +/*virtual*/ int HTTPMap::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header +{ + strncpy(type, "application/x-www-form-urlencoded", maxTypeLen-1); + type[maxTypeLen-1] = '\0'; + return OK; +} + +/*virtual*/ bool HTTPMap::getIsChunked() //For Transfer-Encoding header +{ + return false; ////Data is computed one key/value pair at a time +} + +/*virtual*/ size_t HTTPMap::getDataLen() //For Content-Length header +{ + size_t count = 0; + for(size_t i = 0; i< m_count; i++) + { + //URL encode + const char* in = m_keys[i]; + if( i != 0 ) + { + count++; + } + + while( (*in != '\0') ) + { + if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~') + { + count++; + } + else if( *in == ' ' ) + { + count++; + } + else + { + count+=3; + } + in++; + } + + count ++; + + in = m_values[i]; + while( (*in != '\0') ) + { + if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~') + { + count++; + } + else if( *in == ' ' ) + { + count++; + } + else + { + count+=3; + } + in++; + } + } + return count; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.h new file mode 100644 index 0000000000..ad02211e9a --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.h @@ -0,0 +1,69 @@ +/* HTTPMap.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef HTTPMAP_H_ +#define HTTPMAP_H_ + +#include "../IHTTPData.h" + +#define HTTPMAP_TABLE_SIZE 32 + +/** Map of key/value pairs + * Used to transmit POST data using the application/x-www-form-urlencoded encoding + */ +class HTTPMap: public IHTTPDataOut +{ +public: + /** + Instantiates HTTPMap + It supports at most 32 key/values pairs + */ + HTTPMap(); + + /** Put Key/Value pair + The references to the parameters must remain valid as long as the clear() function is not called + @param key The key to use + @param value The corresponding value + */ + void put(const char* key, const char* value); + + /** Clear table + */ + void clear(); + +protected: + //IHTTPDataIn + virtual int read(char* buf, size_t len, size_t* pReadLen); + + virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header + + virtual bool getIsChunked(); //For Transfer-Encoding header + + virtual size_t getDataLen(); //For Content-Length header + +private: + const char* m_keys[HTTPMAP_TABLE_SIZE]; + const char* m_values[HTTPMAP_TABLE_SIZE]; + + size_t m_pos; + size_t m_count; +}; + +#endif /* HTTPMAP_H_ */ diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.cpp new file mode 100644 index 0000000000..800532b0e2 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.cpp @@ -0,0 +1,94 @@ +/* HTTPText.cpp */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "HTTPText.h" + +#include <cstring> + +#define OK 0 + +using std::memcpy; +using std::strncpy; +using std::strlen; + +#define MIN(x,y) (((x)<(y))?(x):(y)) + +HTTPText::HTTPText(char* str) : m_str(str), m_pos(0) +{ + m_size = strlen(str) + 1; +} + +HTTPText::HTTPText(char* str, size_t size) : m_str(str), m_size(size), m_pos(0) +{ + +} + +//IHTTPDataIn +/*virtual*/ int HTTPText::read(char* buf, size_t len, size_t* pReadLen) +{ + *pReadLen = MIN(len, m_size - 1 - m_pos); + memcpy(buf, m_str + m_pos, *pReadLen); + m_pos += *pReadLen; + return OK; +} + +/*virtual*/ int HTTPText::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header +{ + strncpy(type, "text/plain", maxTypeLen-1); + type[maxTypeLen-1] = '\0'; + return OK; +} + +/*virtual*/ bool HTTPText::getIsChunked() //For Transfer-Encoding header +{ + return false; +} + +/*virtual*/ size_t HTTPText::getDataLen() //For Content-Length header +{ + return m_size - 1; +} + +//IHTTPDataOut +/*virtual*/ int HTTPText::write(const char* buf, size_t len) +{ + size_t writeLen = MIN(len, m_size - 1 - m_pos); + memcpy(m_str + m_pos, buf, writeLen); + m_pos += writeLen; + m_str[m_pos] = '\0'; + return OK; +} + +/*virtual*/ void HTTPText::setDataType(const char* type) //Internet media type from Content-Type header +{ + +} + +/*virtual*/ void HTTPText::setIsChunked(bool chunked) //From Transfer-Encoding header +{ + +} + +/*virtual*/ void HTTPText::setDataLen(size_t len) //From Content-Length header, or if the transfer is chunked, next chunk length +{ + +} + + + diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.h new file mode 100644 index 0000000000..224a957878 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.h @@ -0,0 +1,68 @@ +/* HTTPText.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef HTTPTEXT_H_ +#define HTTPTEXT_H_ + +#include "../IHTTPData.h" + +/** A data endpoint to store text +*/ +class HTTPText : public IHTTPDataIn, public IHTTPDataOut +{ +public: + /** Create an HTTPText instance for output + * @param str String to be transmitted + */ + HTTPText(char* str); + + /** Create an HTTPText instance for input + * @param str Buffer to store the incoming string + * @param size Size of the buffer + */ + HTTPText(char* str, size_t size); + +protected: + //IHTTPDataIn + virtual int read(char* buf, size_t len, size_t* pReadLen); + + virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header + + virtual bool getIsChunked(); //For Transfer-Encoding header + + virtual size_t getDataLen(); //For Content-Length header + + //IHTTPDataOut + virtual int write(const char* buf, size_t len); + + virtual void setDataType(const char* type); //Internet media type from Content-Type header + + virtual void setIsChunked(bool chunked); //From Transfer-Encoding header + + virtual void setDataLen(size_t len); //From Content-Length header, or if the transfer is chunked, next chunk length + +private: + char* m_str; + size_t m_size; + + size_t m_pos; +}; + +#endif /* HTTPTEXT_H_ */ diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/main.cpp new file mode 100644 index 0000000000..5ab616ea95 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/main.cpp @@ -0,0 +1,67 @@ +#include "mbed.h" +#include "test_env.h" +#include "EthernetInterface.h" +#include "HTTPClient.h" + + +namespace { + const int BUFFER_SIZE = 512; +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(HTTP client hello world); + MBED_HOSTTEST_START("NET_7"); + + char http_request_buffer[BUFFER_SIZE + 1] = {0}; + HTTPClient http; + EthernetInterface eth; + eth.init(); //Use DHCP + eth.connect(); + + //GET data + { + bool result = true; + const char *url_hello_txt = "http://developer.mbed.org/media/uploads/donatien/hello.txt"; + printf("HTTP_GET: Trying to fetch page '%s'...\r\n", url_hello_txt); + HTTPResult ret = http.get(url_hello_txt, http_request_buffer, BUFFER_SIZE); + if (ret == HTTP_OK) { + printf("HTTP_GET: Read %d chars: '%s' ... [OK]\r\n", strlen(http_request_buffer), http_request_buffer); + } else { + printf("HTTP_GET: Error(%d). HTTP error(%d) ... [FAIL]\r\n", ret, http.getHTTPResponseCode()); + result = false; + } + + if (result == false) { + eth.disconnect(); + MBED_HOSTTEST_RESULT(false); + } + } + + //POST data + { + bool result = true; + const char *url_httpbin_post = "http://httpbin.org/post"; + HTTPText text(http_request_buffer, BUFFER_SIZE); + HTTPMap map; + map.put("Hello", "World"); + map.put("test", "1234"); + printf("HTTP_POST: Trying to post data to '%s' ...\r\n", url_httpbin_post); + HTTPResult ret = http.post(url_httpbin_post, map, &text); + if (ret == HTTP_OK) { + printf("HTTP_POST: Read %d chars ... [OK]\r\n", strlen(http_request_buffer)); + printf("HTTP_POST: %s\r\n", http_request_buffer); + } else { + printf("HTTP_GET: Error(%d). HTTP error(%d) ... [FAIL]\r\n", ret, http.getHTTPResponseCode()); + result = false; + } + + if (result == false) { + eth.disconnect(); + MBED_HOSTTEST_RESULT(false); + } + } + eth.disconnect(); + MBED_HOSTTEST_RESULT(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.cpp new file mode 100644 index 0000000000..b049d30036 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.cpp @@ -0,0 +1,163 @@ +/* NTPClient.cpp */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +//Debug is disabled by default +#if 0 +//Enable debug +#define __DEBUG__ +#include <cstdio> +#define DBG(x, ...) std::printf("[NTPClient : DBG]"x"\r\n", ##__VA_ARGS__); +#define WARN(x, ...) std::printf("[NTPClient : WARN]"x"\r\n", ##__VA_ARGS__); +#define ERR(x, ...) std::printf("[NTPClient : ERR]"x"\r\n", ##__VA_ARGS__); + +#else +//Disable debug +#define DBG(x, ...) +#define WARN(x, ...) +#define ERR(x, ...) + +#endif + +#include "NTPClient.h" + +#include "UDPSocket.h" + +#include "mbed.h" //time() and set_time() + +#define NTP_PORT 123 +#define NTP_CLIENT_PORT 0 //Random port +#define NTP_TIMESTAMP_DELTA 2208988800ull //Diff btw a UNIX timestamp (Starting Jan, 1st 1970) and a NTP timestamp (Starting Jan, 1st 1900) + +NTPClient::NTPClient() : m_sock() +{ + + +} + +NTPResult NTPClient::setTime(const char* host, uint16_t port, uint32_t timeout) +{ +#ifdef __DEBUG__ + time_t ctTime; + ctTime = time(NULL); + DBG("Time is set to (UTC): %s", ctime(&ctTime)); +#endif + + //Create & bind socket + DBG("Binding socket"); + m_sock.bind(0); //Bind to a random port + + m_sock.set_blocking(false, timeout); //Set not blocking + + struct NTPPacket pkt; + + //Now ping the server and wait for response + DBG("Ping"); + //Prepare NTP Packet: + pkt.li = 0; //Leap Indicator : No warning + pkt.vn = 4; //Version Number : 4 + pkt.mode = 3; //Client mode + pkt.stratum = 0; //Not relevant here + pkt.poll = 0; //Not significant as well + pkt.precision = 0; //Neither this one is + + pkt.rootDelay = 0; //Or this one + pkt.rootDispersion = 0; //Or that one + pkt.refId = 0; //... + + pkt.refTm_s = 0; + pkt.origTm_s = 0; + pkt.rxTm_s = 0; + pkt.txTm_s = htonl( NTP_TIMESTAMP_DELTA + time(NULL) ); //WARN: We are in LE format, network byte order is BE + + pkt.refTm_f = pkt.origTm_f = pkt.rxTm_f = pkt.txTm_f = 0; + + Endpoint outEndpoint; + + if( outEndpoint.set_address(host, port) < 0) + { + m_sock.close(); + return NTP_DNS; + } + + //Set timeout, non-blocking and wait using select + int ret = m_sock.sendTo( outEndpoint, (char*)&pkt, sizeof(NTPPacket) ); + if (ret < 0 ) + { + ERR("Could not send packet"); + m_sock.close(); + return NTP_CONN; + } + + //Read response + Endpoint inEndpoint; + + DBG("Pong"); + do + { + ret = m_sock.receiveFrom( inEndpoint, (char*)&pkt, sizeof(NTPPacket) ); //FIXME need a DNS Resolver to actually compare the incoming address with the DNS name + if(ret < 0) + { + ERR("Could not receive packet"); + m_sock.close(); + return NTP_CONN; + } + } while( strcmp(outEndpoint.get_address(), inEndpoint.get_address()) != 0 ); + + if(ret < sizeof(NTPPacket)) //TODO: Accept chunks + { + ERR("Receive packet size does not match"); + m_sock.close(); + return NTP_PRTCL; + } + + if( pkt.stratum == 0) //Kiss of death message : Not good ! + { + ERR("Kissed to death!"); + m_sock.close(); + return NTP_PRTCL; + } + + //Correct Endianness + pkt.refTm_s = ntohl( pkt.refTm_s ); + pkt.refTm_f = ntohl( pkt.refTm_f ); + pkt.origTm_s = ntohl( pkt.origTm_s ); + pkt.origTm_f = ntohl( pkt.origTm_f ); + pkt.rxTm_s = ntohl( pkt.rxTm_s ); + pkt.rxTm_f = ntohl( pkt.rxTm_f ); + pkt.txTm_s = ntohl( pkt.txTm_s ); + pkt.txTm_f = ntohl( pkt.txTm_f ); + + //Compute offset, see RFC 4330 p.13 + uint32_t destTm_s = (NTP_TIMESTAMP_DELTA + time(NULL)); + int64_t offset = ( (int64_t)( pkt.rxTm_s - pkt.origTm_s ) + (int64_t) ( pkt.txTm_s - destTm_s ) ) / 2; //Avoid overflow + DBG("Sent @%ul", pkt.txTm_s); + DBG("Offset: %lld", offset); + //Set time accordingly + set_time( time(NULL) + offset ); + +#ifdef __DEBUG__ + ctTime = time(NULL); + DBG("Time is now (UTC): %s", ctime(&ctTime)); +#endif + + m_sock.close(); + + return NTP_OK; +} + diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h new file mode 100644 index 0000000000..b7cf6ff127 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h @@ -0,0 +1,101 @@ +/* NTPClient.h */ +/* Copyright (C) 2012 mbed.org, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** \file +NTP Client header file +*/ + +#ifndef NTPCLIENT_H_ +#define NTPCLIENT_H_ + +#include "UDPSocket.h" + +#define NTP_DEFAULT_PORT 123 +#define NTP_DEFAULT_TIMEOUT 4000 + +///NTP client results +enum NTPResult +{ + NTP_DNS, ///<Could not resolve name + NTP_PRTCL, ///<Protocol error + NTP_TIMEOUT, ///<Connection timeout + NTP_CONN, ///<Connection error + NTP_OK = 0, ///<Success +}; + +/** NTP Client to update the mbed's RTC using a remote time server +* +*/ +class NTPClient +{ +public: + /** + Instantiate the NTP client + */ + NTPClient(); + + /**Get current time (blocking) + Update the time using the server host + Blocks until completion + @param host NTP server IPv4 address or hostname (will be resolved via DNS) + @param port port to use; defaults to 123 + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, NTP error code (<0) on failure + */ + NTPResult setTime(const char* host, uint16_t port = NTP_DEFAULT_PORT, uint32_t timeout = NTP_DEFAULT_TIMEOUT); //Blocking + +private: +#if defined (__ICCARM__) + #pragma pack() +#endif + struct NTPPacket //See RFC 4330 for Simple NTP + { + //WARN: We are in LE! Network is BE! + //LSb first + unsigned mode : 3; + unsigned vn : 3; + unsigned li : 2; + + uint8_t stratum; + uint8_t poll; + uint8_t precision; + //32 bits header + + uint32_t rootDelay; + uint32_t rootDispersion; + uint32_t refId; + + uint32_t refTm_s; + uint32_t refTm_f; + uint32_t origTm_s; + uint32_t origTm_f; + uint32_t rxTm_s; + uint32_t rxTm_f; + uint32_t txTm_s; + uint32_t txTm_f; +#if defined (__ICCARM__) + }; +#else + } __attribute__ ((packed)); +#endif + + UDPSocket m_sock; +}; + +#endif /* NTPCLIENT_H_ */ diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/main.cpp new file mode 100644 index 0000000000..fa71656b01 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/main.cpp @@ -0,0 +1,39 @@ +#include "mbed.h" +#include "test_env.h" +#include "EthernetInterface.h" +#include "NTPClient.h" + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(NTP client); + MBED_HOSTTEST_START("NET_8"); + + EthernetInterface eth; + NTPClient ntp; + eth.init(); //Use DHCP + eth.connect(); + + // NTP set time + { + bool result = true; + const char *url_ntp_server = "0.pool.ntp.org"; + printf("NTP_SETTIME: Trying to update time... \r\n"); + const int ret = ntp.setTime(url_ntp_server); + if (ret == 0) { + time_t ctTime = time(NULL); + printf("NTP_SETTIME: UTC Time read successfully ... [OK]\r\n"); + printf("NTP_SETTIME: %s\r\n", ctime(&ctTime)); + } + else { + printf("NTP_SETTIME: Error(%d) ... [FAIL]\r\n", ret); + result = false; + } + + if (result == false) { + MBED_HOSTTEST_RESULT(false); + } + } + eth.disconnect(); + MBED_HOSTTEST_RESULT(true); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.cpp new file mode 100644 index 0000000000..6f9c856826 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.cpp @@ -0,0 +1,405 @@ +/** + * @author Aaron Berk + * + * @section LICENSE + * + * Copyright (c) 2010 ARM Limited + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @section DESCRIPTION + * + * ADXL345, triple axis, digital interface, accelerometer. + * + * Datasheet: + * + * http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf + */ + +/** + * Includes + */ +#include "ADXL345.h" + +ADXL345::ADXL345(PinName mosi, + PinName miso, + PinName sck, + PinName cs) : spi_(mosi, miso, sck), nCS_(cs) { + + //2MHz, allowing us to use the fastest data rates. + spi_.frequency(2000000); + spi_.format(8,3); + + nCS_ = 1; + + wait_us(500); + +} + +int ADXL345::getDevId(void) { + + return oneByteRead(ADXL345_DEVID_REG); + +} + +int ADXL345::getTapThreshold(void) { + + return oneByteRead(ADXL345_THRESH_TAP_REG); + +} + +void ADXL345::setTapThreshold(int threshold) { + + oneByteWrite(ADXL345_THRESH_TAP_REG, threshold); + +} + +int ADXL345::getOffset(int axis) { + + int address = 0; + + if (axis == ADXL345_X) { + address = ADXL345_OFSX_REG; + } else if (axis == ADXL345_Y) { + address = ADXL345_OFSY_REG; + } else if (axis == ADXL345_Z) { + address = ADXL345_OFSZ_REG; + } + + return oneByteRead(address); + +} + +void ADXL345::setOffset(int axis, char offset) { + + int address = 0; + + if (axis == ADXL345_X) { + address = ADXL345_OFSX_REG; + } else if (axis == ADXL345_Y) { + address = ADXL345_OFSY_REG; + } else if (axis == ADXL345_Z) { + address = ADXL345_OFSZ_REG; + } + + return oneByteWrite(address, offset); + +} + +int ADXL345::getTapDuration(void) { + + return oneByteRead(ADXL345_DUR_REG)*625; + +} + +void ADXL345::setTapDuration(int duration_us) { + + int tapDuration = duration_us / 625; + + oneByteWrite(ADXL345_DUR_REG, tapDuration); + +} + +float ADXL345::getTapLatency(void) { + + return oneByteRead(ADXL345_LATENT_REG)*1.25; + +} + +void ADXL345::setTapLatency(int latency_ms) { + + int tapLatency = latency_ms / 1.25; + + oneByteWrite(ADXL345_LATENT_REG, tapLatency); + +} + +float ADXL345::getWindowTime(void) { + + return oneByteRead(ADXL345_WINDOW_REG)*1.25; + +} + +void ADXL345::setWindowTime(int window_ms) { + + int windowTime = window_ms / 1.25; + + oneByteWrite(ADXL345_WINDOW_REG, windowTime); + +} + +int ADXL345::getActivityThreshold(void) { + + return oneByteRead(ADXL345_THRESH_ACT_REG); + +} + +void ADXL345::setActivityThreshold(int threshold) { + + oneByteWrite(ADXL345_THRESH_ACT_REG, threshold); + +} + +int ADXL345::getInactivityThreshold(void) { + + return oneByteRead(ADXL345_THRESH_INACT_REG); + +} + +void ADXL345::setInactivityThreshold(int threshold) { + + return oneByteWrite(ADXL345_THRESH_INACT_REG, threshold); + +} + +int ADXL345::getTimeInactivity(void) { + + return oneByteRead(ADXL345_TIME_INACT_REG); + +} + +void ADXL345::setTimeInactivity(int timeInactivity) { + + oneByteWrite(ADXL345_TIME_INACT_REG, timeInactivity); + +} + +int ADXL345::getActivityInactivityControl(void) { + + return oneByteRead(ADXL345_ACT_INACT_CTL_REG); + +} + +void ADXL345::setActivityInactivityControl(int settings) { + + oneByteWrite(ADXL345_ACT_INACT_CTL_REG, settings); + +} + +int ADXL345::getFreefallThreshold(void) { + + return oneByteRead(ADXL345_THRESH_FF_REG); + +} + +void ADXL345::setFreefallThreshold(int threshold) { + + oneByteWrite(ADXL345_THRESH_FF_REG, threshold); + +} + +int ADXL345::getFreefallTime(void) { + + return oneByteRead(ADXL345_TIME_FF_REG)*5; + +} + +void ADXL345::setFreefallTime(int freefallTime_ms) { + + int freefallTime = freefallTime_ms / 5; + + oneByteWrite(ADXL345_TIME_FF_REG, freefallTime); + +} + +int ADXL345::getTapAxisControl(void) { + + return oneByteRead(ADXL345_TAP_AXES_REG); + +} + +void ADXL345::setTapAxisControl(int settings) { + + oneByteWrite(ADXL345_TAP_AXES_REG, settings); + +} + +int ADXL345::getTapSource(void) { + + return oneByteRead(ADXL345_ACT_TAP_STATUS_REG); + +} + +void ADXL345::setPowerMode(char mode) { + + //Get the current register contents, so we don't clobber the rate value. + char registerContents = oneByteRead(ADXL345_BW_RATE_REG); + + registerContents = (mode << 4) | registerContents; + + oneByteWrite(ADXL345_BW_RATE_REG, registerContents); + +} + +int ADXL345::getPowerControl(void) { + + return oneByteRead(ADXL345_POWER_CTL_REG); + +} + +void ADXL345::setPowerControl(int settings) { + + oneByteWrite(ADXL345_POWER_CTL_REG, settings); + +} + +int ADXL345::getInterruptEnableControl(void) { + + return oneByteRead(ADXL345_INT_ENABLE_REG); + +} + +void ADXL345::setInterruptEnableControl(int settings) { + + oneByteWrite(ADXL345_INT_ENABLE_REG, settings); + +} + +int ADXL345::getInterruptMappingControl(void) { + + return oneByteRead(ADXL345_INT_MAP_REG); + +} + +void ADXL345::setInterruptMappingControl(int settings) { + + oneByteWrite(ADXL345_INT_MAP_REG, settings); + +} + +int ADXL345::getInterruptSource(void){ + + return oneByteRead(ADXL345_INT_SOURCE_REG); + +} + +int ADXL345::getDataFormatControl(void){ + + return oneByteRead(ADXL345_DATA_FORMAT_REG); + +} + +void ADXL345::setDataFormatControl(int settings){ + + oneByteWrite(ADXL345_DATA_FORMAT_REG, settings); + +} + +void ADXL345::setDataRate(int rate) { + + //Get the current register contents, so we don't clobber the power bit. + char registerContents = oneByteRead(ADXL345_BW_RATE_REG); + + registerContents &= 0x10; + registerContents |= rate; + + oneByteWrite(ADXL345_BW_RATE_REG, registerContents); + +} + +void ADXL345::getOutput(int* readings){ + + char buffer[6]; + + multiByteRead(ADXL345_DATAX0_REG, buffer, 6); + + readings[0] = (int)buffer[1] << 8 | (int)buffer[0]; + readings[1] = (int)buffer[3] << 8 | (int)buffer[2]; + readings[2] = (int)buffer[5] << 8 | (int)buffer[4]; + +} + +int ADXL345::getFifoControl(void){ + + return oneByteRead(ADXL345_FIFO_CTL); + +} + +void ADXL345::setFifoControl(int settings){ + + oneByteWrite(ADXL345_FIFO_STATUS, settings); + +} + +int ADXL345::getFifoStatus(void){ + + return oneByteRead(ADXL345_FIFO_STATUS); + +} + +int ADXL345::oneByteRead(int address) { + + int tx = (ADXL345_SPI_READ | (address & 0x3F)); + int rx = 0; + + nCS_ = 0; + //Send address to read from. + spi_.write(tx); + //Read back contents of address. + rx = spi_.write(0x00); + nCS_ = 1; + + return rx; + +} + +void ADXL345::oneByteWrite(int address, char data) { + + int tx = (ADXL345_SPI_WRITE | (address & 0x3F)); + + nCS_ = 0; + //Send address to write to. + spi_.write(tx); + //Send data to be written. + spi_.write(data); + nCS_ = 1; + +} + +void ADXL345::multiByteRead(int startAddress, char* buffer, int size) { + + int tx = (ADXL345_SPI_READ | ADXL345_MULTI_BYTE | (startAddress & 0x3F)); + + nCS_ = 0; + //Send address to start reading from. + spi_.write(tx); + + for (int i = 0; i < size; i++) { + buffer[i] = spi_.write(0x00); + } + + nCS_ = 1; + +} + +void ADXL345::multiByteWrite(int startAddress, char* buffer, int size) { + + int tx = (ADXL345_SPI_WRITE | ADXL345_MULTI_BYTE | (startAddress & 0x3F)); + + nCS_ = 0; + //Send address to start reading from. + spi_.write(tx); + + for (int i = 0; i < size; i++) { + buffer[i] = spi_.write(0x00); + } + + nCS_ = 1; + +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.h new file mode 100644 index 0000000000..af17c5f3e7 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.h @@ -0,0 +1,537 @@ +/** + * @author Aaron Berk + * + * @section LICENSE + * + * Copyright (c) 2010 ARM Limited + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @section DESCRIPTION + * + * ADXL345, triple axis, digital interface, accelerometer. + * + * Datasheet: + * + * http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf + */ + +#ifndef ADXL345_H +#define ADXL345_H + +/** + * Includes + */ +#include "mbed.h" + +/** + * Defines + */ +//Registers. +#define ADXL345_DEVID_REG 0x00 +#define ADXL345_THRESH_TAP_REG 0x1D +#define ADXL345_OFSX_REG 0x1E +#define ADXL345_OFSY_REG 0x1F +#define ADXL345_OFSZ_REG 0x20 +#define ADXL345_DUR_REG 0x21 +#define ADXL345_LATENT_REG 0x22 +#define ADXL345_WINDOW_REG 0x23 +#define ADXL345_THRESH_ACT_REG 0x24 +#define ADXL345_THRESH_INACT_REG 0x25 +#define ADXL345_TIME_INACT_REG 0x26 +#define ADXL345_ACT_INACT_CTL_REG 0x27 +#define ADXL345_THRESH_FF_REG 0x28 +#define ADXL345_TIME_FF_REG 0x29 +#define ADXL345_TAP_AXES_REG 0x2A +#define ADXL345_ACT_TAP_STATUS_REG 0x2B +#define ADXL345_BW_RATE_REG 0x2C +#define ADXL345_POWER_CTL_REG 0x2D +#define ADXL345_INT_ENABLE_REG 0x2E +#define ADXL345_INT_MAP_REG 0x2F +#define ADXL345_INT_SOURCE_REG 0x30 +#define ADXL345_DATA_FORMAT_REG 0x31 +#define ADXL345_DATAX0_REG 0x32 +#define ADXL345_DATAX1_REG 0x33 +#define ADXL345_DATAY0_REG 0x34 +#define ADXL345_DATAY1_REG 0x35 +#define ADXL345_DATAZ0_REG 0x36 +#define ADXL345_DATAZ1_REG 0x37 +#define ADXL345_FIFO_CTL 0x38 +#define ADXL345_FIFO_STATUS 0x39 + +//Data rate codes. +#define ADXL345_3200HZ 0x0F +#define ADXL345_1600HZ 0x0E +#define ADXL345_800HZ 0x0D +#define ADXL345_400HZ 0x0C +#define ADXL345_200HZ 0x0B +#define ADXL345_100HZ 0x0A +#define ADXL345_50HZ 0x09 +#define ADXL345_25HZ 0x08 +#define ADXL345_12HZ5 0x07 +#define ADXL345_6HZ25 0x06 + +#define ADXL345_SPI_READ 0x80 +#define ADXL345_SPI_WRITE 0x00 +#define ADXL345_MULTI_BYTE 0x60 + +#define ADXL345_X 0x00 +#define ADXL345_Y 0x01 +#define ADXL345_Z 0x02 + +/** + * ADXL345 triple axis, digital interface, accelerometer. + */ +class ADXL345 { + +public: + + /** + * Constructor. + * + * @param mosi mbed pin to use for MOSI line of SPI interface. + * @param miso mbed pin to use for MISO line of SPI interface. + * @param sck mbed pin to use for SCK line of SPI interface. + * @param cs mbed pin to use for not chip select line of SPI interface. + */ + ADXL345(PinName mosi, PinName miso, PinName sck, PinName cs); + + /** + * Read the device ID register on the device. + * + * @return The device ID code [0xE5] + */ + int getDevId(void); + + /** + * Read the tap threshold on the device. + * + * @return The tap threshold as an 8-bit number with a scale factor of + * 62.5mg/LSB. + */ + int getTapThreshold(void); + + /** + * Set the tap threshold. + * + * @param The tap threshold as an 8-bit number with a scale factor of + * 62.5mg/LSB. + */ + void setTapThreshold(int threshold); + + /** + * Get the current offset for a particular axis. + * + * @param axis 0x00 -> X-axis + * 0x01 -> Y-axis + * 0x02 -> Z-axis + * @return The current offset as an 8-bit 2's complement number with scale + * factor 15.6mg/LSB. + */ + int getOffset(int axis); + + /** + * Set the offset for a particular axis. + * + * @param axis 0x00 -> X-axis + * 0x01 -> Y-axis + * 0x02 -> Z-axis + * @param offset The offset as an 8-bit 2's complement number with scale + * factor 15.6mg/LSB. + */ + void setOffset(int axis, char offset); + + /** + * Get the tap duration required to trigger an event. + * + * @return The max time that an event must be above the tap threshold to + * qualify as a tap event, in microseconds. + */ + int getTapDuration(void); + + /** + * Set the tap duration required to trigger an event. + * + * @param duration_us The max time that an event must be above the tap + * threshold to qualify as a tap event, in microseconds. + * Time will be normalized by the scale factor which is + * 625us/LSB. A value of 0 disables the single/double + * tap functions. + */ + void setTapDuration(int duration_us); + + /** + * Get the tap latency between the detection of a tap and the time window. + * + * @return The wait time from the detection of a tap event to the start of + * the time window during which a possible second tap event can be + * detected in milliseconds. + */ + float getTapLatency(void); + + /** + * Set the tap latency between the detection of a tap and the time window. + * + * @param latency_ms The wait time from the detection of a tap event to the + * start of the time window during which a possible + * second tap event can be detected in milliseconds. + * A value of 0 disables the double tap function. + */ + void setTapLatency(int latency_ms); + + /** + * Get the time of window between tap latency and a double tap. + * + * @return The amount of time after the expiration of the latency time + * during which a second valid tap can begin, in milliseconds. + */ + float getWindowTime(void); + + /** + * Set the time of the window between tap latency and a double tap. + * + * @param window_ms The amount of time after the expiration of the latency + * time during which a second valid tap can begin, + * in milliseconds. + */ + void setWindowTime(int window_ms); + + /** + * Get the threshold value for detecting activity. + * + * @return The threshold value for detecting activity as an 8-bit number. + * Scale factor is 62.5mg/LSB. + */ + int getActivityThreshold(void); + + /** + * Set the threshold value for detecting activity. + * + * @param threshold The threshold value for detecting activity as an 8-bit + * number. Scale factor is 62.5mg/LSB. A value of 0 may + * result in undesirable behavior if the activity + * interrupt is enabled. + */ + void setActivityThreshold(int threshold); + + /** + * Get the threshold value for detecting inactivity. + * + * @return The threshold value for detecting inactivity as an 8-bit number. + * Scale factor is 62.5mg/LSB. + */ + int getInactivityThreshold(void); + + /** + * Set the threshold value for detecting inactivity. + * + * @param threshold The threshold value for detecting inactivity as an + * 8-bit number. Scale factor is 62.5mg/LSB. + */ + void setInactivityThreshold(int threshold); + + /** + * Get the time required for inactivity to be declared. + * + * @return The amount of time that acceleration must be less than the + * inactivity threshold for inactivity to be declared, in + * seconds. + */ + int getTimeInactivity(void); + + /** + * Set the time required for inactivity to be declared. + * + * @param inactivity The amount of time that acceleration must be less than + * the inactivity threshold for inactivity to be + * declared, in seconds. A value of 0 results in an + * interrupt when the output data is less than the + * threshold inactivity. + */ + void setTimeInactivity(int timeInactivity); + + /** + * Get the activity/inactivity control settings. + * + * D7 D6 D5 D4 + * +-----------+--------------+--------------+--------------+ + * | ACT ac/dc | ACT_X enable | ACT_Y enable | ACT_Z enable | + * +-----------+--------------+--------------+--------------+ + * + * D3 D2 D1 D0 + * +-------------+----------------+----------------+----------------+ + * | INACT ac/dc | INACT_X enable | INACT_Y enable | INACT_Z enable | + * +-------------+----------------+----------------+----------------+ + * + * See datasheet for details. + * + * @return The contents of the ACT_INACT_CTL register. + */ + int getActivityInactivityControl(void); + + /** + * Set the activity/inactivity control settings. + * + * D7 D6 D5 D4 + * +-----------+--------------+--------------+--------------+ + * | ACT ac/dc | ACT_X enable | ACT_Y enable | ACT_Z enable | + * +-----------+--------------+--------------+--------------+ + * + * D3 D2 D1 D0 + * +-------------+----------------+----------------+----------------+ + * | INACT ac/dc | INACT_X enable | INACT_Y enable | INACT_Z enable | + * +-------------+----------------+----------------+----------------+ + * + * See datasheet for details. + * + * @param settings The control byte to write to the ACT_INACT_CTL register. + */ + void setActivityInactivityControl(int settings); + + /** + * Get the threshold for free fall detection. + * + * @return The threshold value for free-fall detection, as an 8-bit number, + * with scale factor 62.5mg/LSB. + */ + int getFreefallThreshold(void); + + /** + * Set the threshold for free fall detection. + * + * @return The threshold value for free-fall detection, as an 8-bit number, + * with scale factor 62.5mg/LSB. A value of 0 may result in + * undesirable behavior if the free-fall interrupt is enabled. + * Values between 300 mg and 600 mg (0x05 to 0x09) are recommended. + */ + void setFreefallThreshold(int threshold); + + /** + * Get the time required to generate a free fall interrupt. + * + * @return The minimum time that the value of all axes must be less than + * the freefall threshold to generate a free-fall interrupt, in + * milliseconds. + */ + int getFreefallTime(void); + + /** + * Set the time required to generate a free fall interrupt. + * + * @return The minimum time that the value of all axes must be less than + * the freefall threshold to generate a free-fall interrupt, in + * milliseconds. A value of 0 may result in undesirable behavior + * if the free-fall interrupt is enabled. Values between 100 ms + * and 350 ms (0x14 to 0x46) are recommended. + */ + void setFreefallTime(int freefallTime_ms); + + /** + * Get the axis tap settings. + * + * D3 D2 D1 D0 + * +----------+--------------+--------------+--------------+ + * | Suppress | TAP_X enable | TAP_Y enable | TAP_Z enable | + * +----------+--------------+--------------+--------------+ + * + * (D7-D4 are 0s). + * + * See datasheet for more details. + * + * @return The contents of the TAP_AXES register. + */ + int getTapAxisControl(void); + + /** + * Set the axis tap settings. + * + * D3 D2 D1 D0 + * +----------+--------------+--------------+--------------+ + * | Suppress | TAP_X enable | TAP_Y enable | TAP_Z enable | + * +----------+--------------+--------------+--------------+ + * + * (D7-D4 are 0s). + * + * See datasheet for more details. + * + * @param The control byte to write to the TAP_AXES register. + */ + void setTapAxisControl(int settings); + + /** + * Get the source of a tap. + * + * @return The contents of the ACT_TAP_STATUS register. + */ + int getTapSource(void); + + /** + * Set the power mode. + * + * @param mode 0 -> Normal operation. + * 1 -> Reduced power operation. + */ + void setPowerMode(char mode); + + /** + * Set the data rate. + * + * @param rate The rate code (see #defines or datasheet). + */ + void setDataRate(int rate); + + /** + * Get the power control settings. + * + * See datasheet for details. + * + * @return The contents of the POWER_CTL register. + */ + int getPowerControl(void); + + /** + * Set the power control settings. + * + * See datasheet for details. + * + * @param The control byte to write to the POWER_CTL register. + */ + void setPowerControl(int settings); + + /** + * Get the interrupt enable settings. + * + * @return The contents of the INT_ENABLE register. + */ + int getInterruptEnableControl(void); + + /** + * Set the interrupt enable settings. + * + * @param settings The control byte to write to the INT_ENABLE register. + */ + void setInterruptEnableControl(int settings); + + /** + * Get the interrupt mapping settings. + * + * @return The contents of the INT_MAP register. + */ + int getInterruptMappingControl(void); + + /** + * Set the interrupt mapping settings. + * + * @param settings The control byte to write to the INT_MAP register. + */ + void setInterruptMappingControl(int settings); + + /** + * Get the interrupt source. + * + * @return The contents of the INT_SOURCE register. + */ + int getInterruptSource(void); + + /** + * Get the data format settings. + * + * @return The contents of the DATA_FORMAT register. + */ + int getDataFormatControl(void); + + /** + * Set the data format settings. + * + * @param settings The control byte to write to the DATA_FORMAT register. + */ + void setDataFormatControl(int settings); + + /** + * Get the output of all three axes. + * + * @param Pointer to a buffer to hold the accelerometer value for the + * x-axis, y-axis and z-axis [in that order]. + */ + void getOutput(int* readings); + + /** + * Get the FIFO control settings. + * + * @return The contents of the FIFO_CTL register. + */ + int getFifoControl(void); + + /** + * Set the FIFO control settings. + * + * @param The control byte to write to the FIFO_CTL register. + */ + void setFifoControl(int settings); + + /** + * Get FIFO status. + * + * @return The contents of the FIFO_STATUS register. + */ + int getFifoStatus(void); + +private: + + SPI spi_; + DigitalOut nCS_; + + /** + * Read one byte from a register on the device. + * + * @param address Address of the register to read. + * + * @return The contents of the register address. + */ + int oneByteRead(int address); + + /** + * Write one byte to a register on the device. + * + * @param address Address of the register to write to. + * @param data The data to write into the register. + */ + void oneByteWrite(int address, char data); + + /** + * Read several consecutive bytes on the device. + * + * @param startAddress The address of the first register to read from. + * @param buffer Pointer to a buffer to store data read from the device. + * @param size The number of bytes to read. + */ + void multiByteRead(int startAddress, char* buffer, int size); + + /** + * Write several consecutive bytes on the device. + * + * @param startAddress The address of the first register to write to. + * @param buffer Pointer to a buffer which contains the data to write. + * @param size The number of bytes to write. + */ + void multiByteWrite(int startAddress, char* buffer, int size); + +}; + +#endif /* ADXL345_H */ diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.cpp new file mode 100644 index 0000000000..ff578ec907 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.cpp @@ -0,0 +1,534 @@ +/* mbed AX-12+ Servo Library + * + * Copyright (c) 2010, cstyles (http://mbed.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "AX12.h" +#include "mbed.h" + +AX12::AX12(PinName tx, PinName rx, int ID, int baud) + : _ax12(tx,rx) { + _baud = baud; + _ID = ID; + _ax12.baud(_baud); + +} + +// Set the mode of the servo +// 0 = Positional (0-300 degrees) +// 1 = Rotational -1 to 1 speed +int AX12::SetMode(int mode) { + + if (mode == 1) { // set CR + SetCWLimit(0); + SetCCWLimit(0); + SetCRSpeed(0.0); + } else { + SetCWLimit(0); + SetCCWLimit(300); + SetCRSpeed(0.0); + } + return(0); +} + + +// if flag[0] is set, were blocking +// if flag[1] is set, we're registering +// they are mutually exclusive operations +int AX12::SetGoal(int degrees, int flags) { + + char reg_flag = 0; + char data[2]; + + // set the flag is only the register bit is set in the flag + if (flags == 0x2) { + reg_flag = 1; + } + + // 1023 / 300 * degrees + short goal = (1023 * degrees) / 300; +#ifdef AX12_DEBUG + printf("SetGoal to 0x%x\n",goal); +#endif + + data[0] = goal & 0xff; // bottom 8 bits + data[1] = goal >> 8; // top 8 bits + + // write the packet, return the error code + int rVal = write(_ID, AX12_REG_GOAL_POSITION, 2, data, reg_flag); + + if (flags == 1) { + // block until it comes to a halt + while (isMoving()) {} + } + return(rVal); +} + + +// Set continuous rotation speed from -1 to 1 +int AX12::SetCRSpeed(float speed) { + + // bit 10 = direction, 0 = CCW, 1=CW + // bits 9-0 = Speed + char data[2]; + + int goal = (0x3ff * abs(speed)); + + // Set direction CW if we have a negative speed + if (speed < 0) { + goal |= (0x1 << 10); + } + + data[0] = goal & 0xff; // bottom 8 bits + data[1] = goal >> 8; // top 8 bits + + // write the packet, return the error code + int rVal = write(_ID, 0x20, 2, data); + + return(rVal); +} + + +int AX12::SetCWLimit (int degrees) { + + char data[2]; + + // 1023 / 300 * degrees + short limit = (1023 * degrees) / 300; + +#ifdef AX12_DEBUG + printf("SetCWLimit to 0x%x\n",limit); +#endif + + data[0] = limit & 0xff; // bottom 8 bits + data[1] = limit >> 8; // top 8 bits + + // write the packet, return the error code + return (write(_ID, AX12_REG_CW_LIMIT, 2, data)); + +} + +int AX12::SetCCWLimit (int degrees) { + + char data[2]; + + // 1023 / 300 * degrees + short limit = (1023 * degrees) / 300; + +#ifdef AX12_DEBUG + printf("SetCCWLimit to 0x%x\n",limit); +#endif + + data[0] = limit & 0xff; // bottom 8 bits + data[1] = limit >> 8; // top 8 bits + + // write the packet, return the error code + return (write(_ID, AX12_REG_CCW_LIMIT, 2, data)); +} + + +int AX12::SetID (int CurrentID, int NewID) { + + char data[1]; + data[0] = NewID; + +#ifdef AX12_DEBUG + printf("Setting ID from 0x%x to 0x%x\n",CurrentID,NewID); +#endif + + return (write(CurrentID, AX12_REG_ID, 1, data)); + +} + + +int AX12::SetBaud (int baud) { + + char data[1]; + data[0] = baud; + +#ifdef AX12_DEBUG + printf("Setting Baud rate to %d\n",baud); +#endif + + return (write(0xFE, AX12_REG_BAUD, 1, data)); + +} + + + +// return 1 is the servo is still in flight +int AX12::isMoving(void) { + + char data[1]; + read(_ID,AX12_REG_MOVING,1,data); + return(data[0]); +} + + +void AX12::trigger(void) { + + char TxBuf[16]; + char sum = 0; + +#ifdef AX12_TRIGGER_DEBUG + // Build the TxPacket first in RAM, then we'll send in one go + printf("\nTriggered\n"); + printf("\nTrigger Packet\n Header : 0xFF, 0xFF\n"); +#endif + + TxBuf[0] = 0xFF; + TxBuf[1] = 0xFF; + + // ID - Broadcast + TxBuf[2] = 0xFE; + sum += TxBuf[2]; + +#ifdef AX12_TRIGGER_DEBUG + printf(" ID : %d\n",TxBuf[2]); +#endif + + // Length + TxBuf[3] = 0x02; + sum += TxBuf[3]; + +#ifdef AX12_TRIGGER_DEBUG + printf(" Length %d\n",TxBuf[3]); +#endif + + // Instruction - ACTION + TxBuf[4] = 0x04; + sum += TxBuf[4]; + +#ifdef AX12_TRIGGER_DEBUG + printf(" Instruction 0x%X\n",TxBuf[5]); +#endif + + // Checksum + TxBuf[5] = 0xFF - sum; +#ifdef AX12_TRIGGER_DEBUG + printf(" Checksum 0x%X\n",TxBuf[5]); +#endif + + // Transmit the packet in one burst with no pausing + for (int i = 0; i < 6 ; i++) { + _ax12.putc(TxBuf[i]); + } + + // This is a broadcast packet, so there will be no reply + return; +} + + +float AX12::GetPosition(void) { + +#ifdef AX12_DEBUG + printf("\nGetPosition(%d)",_ID); +#endif + + char data[2]; + + int ErrorCode = read(_ID, AX12_REG_POSITION, 2, data); + short position = data[0] + (data[1] << 8); + float angle = (position * 300)/1024; + + return (angle); +} + + +float AX12::GetTemp (void) { + +#ifdef AX12_DEBUG + printf("\nGetTemp(%d)",_ID); +#endif + + char data[1]; + int ErrorCode = read(_ID, AX12_REG_TEMP, 1, data); + float temp = data[0]; + return(temp); +} + + +float AX12::GetVolts (void) { + +#ifdef AX12_DEBUG + printf("\nGetVolts(%d)",_ID); +#endif + + char data[1]; + int ErrorCode = read(_ID, AX12_REG_VOLTS, 1, data); + float volts = data[0]/10.0; + return(volts); +} + + +int AX12::read(int ID, int start, int bytes, char* data) { + + char PacketLength = 0x4; + char TxBuf[16]; + char sum = 0; + char Status[16]; + + Status[4] = 0xFE; // return code + +#ifdef AX12_READ_DEBUG + printf("\nread(%d,0x%x,%d,data)\n",ID,start,bytes); +#endif + + // Build the TxPacket first in RAM, then we'll send in one go +#ifdef AX12_READ_DEBUG + printf("\nInstruction Packet\n Header : 0xFF, 0xFF\n"); +#endif + + TxBuf[0] = 0xff; + TxBuf[1] = 0xff; + + // ID + TxBuf[2] = ID; + sum += TxBuf[2]; + +#ifdef AX12_READ_DEBUG + printf(" ID : %d\n",TxBuf[2]); +#endif + + // Packet Length + TxBuf[3] = PacketLength; // Length = 4 ; 2 + 1 (start) = 1 (bytes) + sum += TxBuf[3]; // Accululate the packet sum + +#ifdef AX12_READ_DEBUG + printf(" Length : 0x%x\n",TxBuf[3]); +#endif + + // Instruction - Read + TxBuf[4] = 0x2; + sum += TxBuf[4]; + +#ifdef AX12_READ_DEBUG + printf(" Instruction : 0x%x\n",TxBuf[4]); +#endif + + // Start Address + TxBuf[5] = start; + sum += TxBuf[5]; + +#ifdef AX12_READ_DEBUG + printf(" Start Address : 0x%x\n",TxBuf[5]); +#endif + + // Bytes to read + TxBuf[6] = bytes; + sum += TxBuf[6]; + +#ifdef AX12_READ_DEBUG + printf(" No bytes : 0x%x\n",TxBuf[6]); +#endif + + // Checksum + TxBuf[7] = 0xFF - sum; +#ifdef AX12_READ_DEBUG + printf(" Checksum : 0x%x\n",TxBuf[7]); +#endif + + // Transmit the packet in one burst with no pausing + for (int i = 0; i<8 ; i++) { + _ax12.putc(TxBuf[i]); + } + + // Wait for the bytes to be transmitted + wait (0.00002); + + // Skip if the read was to the broadcast address + if (_ID != 0xFE) { + + + + // response packet is always 6 + bytes + // 0xFF, 0xFF, ID, Length Error, Param(s) Checksum + // timeout is a little more than the time to transmit + // the packet back, i.e. (6+bytes)*10 bit periods + + int timeout = 0; + int plen = 0; + while ((timeout < ((6+bytes)*10)) && (plen<(6+bytes))) { + + if (_ax12.readable()) { + Status[plen] = _ax12.getc(); + plen++; + timeout = 0; + } + + // wait for the bit period + wait (1.0/_baud); + timeout++; + } + + if (timeout == ((6+bytes)*10) ) { + return(-1); + } + + // Copy the data from Status into data for return + for (int i=0; i < Status[3]-2 ; i++) { + data[i] = Status[5+i]; + } + +#ifdef AX12_READ_DEBUG + printf("\nStatus Packet\n"); + printf(" Header : 0x%x\n",Status[0]); + printf(" Header : 0x%x\n",Status[1]); + printf(" ID : 0x%x\n",Status[2]); + printf(" Length : 0x%x\n",Status[3]); + printf(" Error Code : 0x%x\n",Status[4]); + + for (int i=0; i < Status[3]-2 ; i++) { + printf(" Data : 0x%x\n",Status[5+i]); + } + + printf(" Checksum : 0x%x\n",Status[5+(Status[3]-2)]); +#endif + + } // if (ID!=0xFE) + + return(Status[4]); +} + + +int AX12::write(int ID, int start, int bytes, char* data, int flag) { +// 0xff, 0xff, ID, Length, Intruction(write), Address, Param(s), Checksum + + char TxBuf[16]; + char sum = 0; + char Status[6]; + +#ifdef AX12_WRITE_DEBUG + printf("\nwrite(%d,0x%x,%d,data,%d)\n",ID,start,bytes,flag); +#endif + + // Build the TxPacket first in RAM, then we'll send in one go +#ifdef AX12_WRITE_DEBUG + printf("\nInstruction Packet\n Header : 0xFF, 0xFF\n"); +#endif + + TxBuf[0] = 0xff; + TxBuf[1] = 0xff; + + // ID + TxBuf[2] = ID; + sum += TxBuf[2]; + +#ifdef AX12_WRITE_DEBUG + printf(" ID : %d\n",TxBuf[2]); +#endif + + // packet Length + TxBuf[3] = 3+bytes; + sum += TxBuf[3]; + +#ifdef AX12_WRITE_DEBUG + printf(" Length : %d\n",TxBuf[3]); +#endif + + // Instruction + if (flag == 1) { + TxBuf[4]=0x04; + sum += TxBuf[4]; + } else { + TxBuf[4]=0x03; + sum += TxBuf[4]; + } + +#ifdef AX12_WRITE_DEBUG + printf(" Instruction : 0x%x\n",TxBuf[4]); +#endif + + // Start Address + TxBuf[5] = start; + sum += TxBuf[5]; + +#ifdef AX12_WRITE_DEBUG + printf(" Start : 0x%x\n",TxBuf[5]); +#endif + + // data + for (char i=0; i<bytes ; i++) { + TxBuf[6+i] = data[i]; + sum += TxBuf[6+i]; + +#ifdef AX12_WRITE_DEBUG + printf(" Data : 0x%x\n",TxBuf[6+i]); +#endif + + } + + // checksum + TxBuf[6+bytes] = 0xFF - sum; + +#ifdef AX12_WRITE_DEBUG + printf(" Checksum : 0x%x\n",TxBuf[6+bytes]); +#endif + + // Transmit the packet in one burst with no pausing + for (int i = 0; i < (7 + bytes) ; i++) { + _ax12.putc(TxBuf[i]); + } + + // Wait for data to transmit + wait (0.00002); + + // make sure we have a valid return + Status[4]=0x00; + + // we'll only get a reply if it was not broadcast + if (_ID!=0xFE) { + + + // response packet is always 6 bytes + // 0xFF, 0xFF, ID, Length Error, Param(s) Checksum + // timeout is a little more than the time to transmit + // the packet back, i.e. 60 bit periods, round up to 100 + int timeout = 0; + int plen = 0; + while ((timeout < 100) && (plen<6)) { + + if (_ax12.readable()) { + Status[plen] = _ax12.getc(); + plen++; + timeout = 0; + } + + // wait for the bit period + wait (1.0/_baud); + timeout++; + } + + + // Build the TxPacket first in RAM, then we'll send in one go +#ifdef AX12_WRITE_DEBUG + printf("\nStatus Packet\n Header : 0x%X, 0x%X\n",Status[0],Status[1]); + printf(" ID : %d\n",Status[2]); + printf(" Length : %d\n",Status[3]); + printf(" Error : 0x%x\n",Status[4]); + printf(" Checksum : 0x%x\n",Status[5]); +#endif + + + } + + return(Status[4]); // return error code +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.h new file mode 100644 index 0000000000..d1b3b42aef --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.h @@ -0,0 +1,190 @@ +/* mbed AX-12+ Servo Library + * + * Copyright (c) 2010, cstyles (http://mbed.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef MBED_AX12_H +#define MBED_AX12_H + +#include "mbed.h" + +#define AX12_WRITE_DEBUG 1 +#define AX12_READ_DEBUG 1 +#define AX12_TRIGGER_DEBUG 1 +#define AX12_DEBUG 1 + +#define AX12_REG_ID 0x3 +#define AX12_REG_BAUD 0x4 +#define AX12_REG_CW_LIMIT 0x06 +#define AX12_REG_CCW_LIMIT 0x08 +#define AX12_REG_GOAL_POSITION 0x1E +#define AX12_REG_MOVING_SPEED 0x20 +#define AX12_REG_VOLTS 0x2A +#define AX12_REG_TEMP 0x2B +#define AX12_REG_MOVING 0x2E +#define AX12_REG_POSITION 0x24 + +#define AX12_MODE_POSITION 0 +#define AX12_MODE_ROTATION 1 + +#define AX12_CW 1 +#define AX12_CCW 0 + +/** Servo control class, based on a PwmOut + * + * Example: + * @code + * #include "mbed.h" + * #include "AX12.h" + * + * int main() { + * + * AX12 myax12 (p9, p10, 1); + * + * while (1) { + * myax12.SetGoal(0); // go to 0 degrees + * wait (2.0); + * myax12.SetGoal(300); // go to 300 degrees + * wait (2.0); + * } + * } + * @endcode + */ +class AX12 { + +public: + + /** Create an AX12 servo object connected to the specified serial port, with the specified ID + * + * @param pin tx pin + * @param pin rx pin + * @param int ID, the Bus ID of the servo 1-255 + */ + AX12(PinName tx, PinName rx, int ID, int baud=1000000); + + /** Set the mode of the servo + * @param mode + * 0 = Positional, default + * 1 = Continuous rotation + */ + int SetMode(int mode); + + /** Set baud rate of all attached servos + * @param mode + * 0x01 = 1,000,000 bps + * 0x03 = 500,000 bps + * 0x04 = 400,000 bps + * 0x07 = 250,000 bps + * 0x09 = 200,000 bps + * 0x10 = 115,200 bps + * 0x22 = 57,600 bps + * 0x67 = 19,200 bps + * 0xCF = 9,600 bp + */ + int SetBaud(int baud); + + + /** Set goal angle in integer degrees, in positional mode + * + * @param degrees 0-300 + * @param flags, defaults to 0 + * flags[0] = blocking, return when goal position reached + * flags[1] = register, activate with a broadcast trigger + * + */ + int SetGoal(int degrees, int flags = 0); + + + /** Set the speed of the servo in continuous rotation mode + * + * @param speed, -1.0 to 1.0 + * -1.0 = full speed counter clock wise + * 1.0 = full speed clock wise + */ + int SetCRSpeed(float speed); + + + /** Set the clockwise limit of the servo + * + * @param degrees, 0-300 + */ + int SetCWLimit(int degrees); + + /** Set the counter-clockwise limit of the servo + * + * @param degrees, 0-300 + */ + int SetCCWLimit(int degrees); + + // Change the ID + + /** Change the ID of a servo + * + * @param CurentID 1-255 + * @param NewID 1-255 + * + * If a servo ID is not know, the broadcast address of 0 can be used for CurrentID. + * In this situation, only one servo should be connected to the bus + */ + int SetID(int CurrentID, int NewID); + + + /** Poll to see if the servo is moving + * + * @returns true is the servo is moving + */ + int isMoving(void); + + /** Send the broadcast "trigger" command, to activate any outstanding registered commands + */ + void trigger(void); + + /** Read the current angle of the servo + * + * @returns float in the range 0.0-300.0 + */ + float GetPosition(); + + /** Read the temperature of the servo + * + * @returns float temperature + */ + float GetTemp(void); + + /** Read the supply voltage of the servo + * + * @returns float voltage + */ + float GetVolts(void); + + int read(int ID, int start, int length, char* data); + int write(int ID, int start, int length, char* data, int flag=0); + +private : + + SerialHalfDuplex _ax12; + int _ID; + int _baud; + + +}; + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.cpp new file mode 100644 index 0000000000..ff2bcd876d --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.cpp @@ -0,0 +1,193 @@ +#include "MMA7660.h" + +MMA7660::MMA7660(PinName sda, PinName scl, bool active) : _i2c(sda, scl) +{ + setActive(active); + samplerate = 64; + +} + +//Since the MMA lacks a WHO_AM_I register, we can only check if there is a device that answers to the I2C address +bool MMA7660::testConnection( void ) +{ + if (_i2c.write(MMA7660_ADDRESS, NULL, 0) == 0 ) + return true; + else + return false; +} + +void MMA7660::setActive(bool state) +{ + char modereg = read(MMA7660_MODE_R); + modereg &= ~(1<<0); + + //If it somehow was in testmode, disable that + if (modereg && (1<<2)) { + modereg &= ~(1<<2); + write(MMA7660_MODE_R, modereg); + } + + modereg += state; + write(MMA7660_MODE_R, modereg); +} + +void MMA7660::readData(int *data) +{ + if (!active) { + setActive(true); + active = true; + wait(0.012 + 1/samplerate); //Wait until new sample is ready, my experience is that 1/samplerate isnt needed, but datasheet says so + } + + char temp[3]; + bool alert; + + do { + alert = false; + read(MMA7660_XOUT_R, temp, 3); + for (int i = 0; i<3; i++) { + if (temp[i] > 63) + alert = true; + if (temp[i] > 31) + temp[i] += 128+64; + data[i] = (signed char)temp[i]; + } + } while (alert); + + if (!active) + setActive(false); +} + + +void MMA7660::readData(float *data) +{ + int intdata[3]; + readData(intdata); + for (int i = 0; i<3; i++) + data[i] = intdata[i]/MMA7660_SENSITIVITY; +} + +float MMA7660::x( void ) +{ + return getSingle(0); +} + +float MMA7660::y( void ) +{ + return getSingle(1); +} + +float MMA7660::z( void ) +{ + return getSingle(2); +} + + +void MMA7660::setSampleRate(int samplerate) +{ + setActive(false); //Not allowed to be active to change anything + int rates[] = {120, 64, 32, 16, 8, 4, 2, 1}; //Alowed samplerates (and their number in array is also number required for MMA) + int sampleLoc = 0, sampleError = 10000, temp; + for (int i = 0; i<8; i++) { + temp = abs( rates[i] - samplerate ); + if (temp<sampleError) { + sampleLoc = i; + sampleError=temp; + } + } + + //Update the samplerate reg + temp = read(MMA7660_SR_R); + temp &= ~0x07; //Awake sample rate are lowest 3 bit + temp |= sampleLoc; + write(MMA7660_SR_R, temp); + this->samplerate = rates[sampleLoc]; + setActive(active); //Restore previous active state +} + + +MMA7660::Orientation MMA7660::getSide( void ) +{ + char tiltreg = read(MMA7660_TILT_R); + + //We care about 2 LSBs + tiltreg &= 0x03; + if (tiltreg == 0x01) + return MMA7660::Front; + if (tiltreg == 0x02) + return MMA7660::Back; + return MMA7660::Unknown; +} + +MMA7660::Orientation MMA7660::getOrientation( void ) +{ + char tiltreg = read(MMA7660_TILT_R); + + //We care about bit 2, 3 and 4 (counting from zero) + tiltreg &= 0x07<<2; + tiltreg >>= 2; + if (tiltreg == 0x01) + return MMA7660::Left; + if (tiltreg == 0x02) + return MMA7660::Right; + if (tiltreg == 0x05) + return MMA7660::Down; + if (tiltreg == 0x06) + return MMA7660::Up; + return MMA7660::Unknown; +} + + + +////////////////////////////////////////////// +///////////////PRIVATE//////////////////////// +////////////////////////////////////////////// + + +void MMA7660::write(char address, char data) +{ + char temp[2]; + temp[0]=address; + temp[1]=data; + + _i2c.write(MMA7660_ADDRESS, temp, 2); +} + +char MMA7660::read(char address) +{ + char retval; + _i2c.write(MMA7660_ADDRESS, &address, 1, true); + _i2c.read(MMA7660_ADDRESS, &retval, 1); + return retval; +} + +void MMA7660::read(char address, char *data, int length) +{ + _i2c.write(MMA7660_ADDRESS, &address, 1, true); + _i2c.read(MMA7660_ADDRESS, data, length); +} + +float MMA7660::getSingle( int number ) +{ + if (!active) { + setActive(true); + wait(0.012 + 1/samplerate); //Wait until new sample is ready + } + + signed char temp; + bool alert; + + do { + alert = false; + temp = read(MMA7660_XOUT_R + number); + if (temp > 63) + alert = true; + if (temp > 31) + temp += 128+64; + } while (alert); + + if (!active) + setActive(false); + + return temp / MMA7660_SENSITIVITY; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.h new file mode 100644 index 0000000000..80c7ee0c54 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.h @@ -0,0 +1,207 @@ +/* Copyright (c) <year> <copyright holders>, MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "mbed.h" + + +#ifndef MMA7660_H +#define MMA7660_H + +#define MMA7660_ADDRESS 0x98 +#define MMA7660_SENSITIVITY 21.33 + +#define MMA7660_XOUT_R 0x00 +#define MMA7660_YOUT_R 0x01 +#define MMA7660_ZOUT_R 0x02 +#define MMA7660_TILT_R 0x03 +#define MMA7660_INT_R 0x06 +#define MMA7660_MODE_R 0x07 +#define MMA7660_SR_R 0x08 + + +/** An interface for the MMA7660 triple axis accelerometer + * + * @code + * //Uses the measured z-acceleration to drive leds 2 and 3 of the mbed + * + * #include "mbed.h" + * #include "MMA7660.h" + * + * MMA7660 MMA(p28, p27); + * + * DigitalOut connectionLed(LED1); + * PwmOut Zaxis_p(LED2); + * PwmOut Zaxis_n(LED3); + * + * int main() { + * if (MMA.testConnection()) + * connectionLed = 1; + * + * while(1) { + * Zaxis_p = MMA.z(); + * Zaxis_n = -MMA.z(); + * } + * + * } + * @endcode + */ +class MMA7660 +{ +public: + /** + * The 6 different orientations and unknown + * + * Up & Down = X-axis + * Right & Left = Y-axis + * Back & Front = Z-axis + * + */ + enum Orientation {Up, Down, + Right, Left, + Back, Front, + Unknown + }; + + /** + * Creates a new MMA7660 object + * + * @param sda - I2C data pin + * @param scl - I2C clock pin + * @param active - true (default) to enable the device, false to keep it standby + */ + MMA7660(PinName sda, PinName scl, bool active = true); + + /** + * Tests if communication is possible with the MMA7660 + * + * Because the MMA7660 lacks a WHO_AM_I register, this function can only check + * if there is an I2C device that responds to the MMA7660 address + * + * @param return - true for successfull connection, false for no connection + */ + bool testConnection( void ); + + /** + * Sets the active state of the MMA7660 + * + * Note: This is unrelated to awake/sleep mode + * + * @param state - true for active, false for standby + */ + void setActive( bool state); + + /** + * Reads acceleration data from the sensor + * + * When the parameter is a pointer to an integer array it will be the raw data. + * When it is a pointer to a float array it will be the acceleration in g's + * + * @param data - pointer to array with length 3 where the acceleration data will be stored, X-Y-Z + */ + void readData( int *data); + void readData( float *data); + + /** + * Get X-data + * + * @param return - X-acceleration in g's + */ + float x( void ); + + /** + * Get Y-data + * + * @param return - Y-acceleration in g's + */ + float y( void ); + + /** + * Get Z-data + * + * @param return - Z-acceleration in g's + */ + float z( void ); + + /** + * Sets the active samplerate + * + * The entered samplerate will be rounded to nearest supported samplerate. + * Supported samplerates are: 120 - 64 - 32 - 16 - 8 - 4 - 2 - 1 samples/second. + * + * @param samplerate - the samplerate that will be set + */ + void setSampleRate(int samplerate); + + /** + * Returns if it is on its front, back, or unknown side + * + * This is read from MMA7760s registers, page 12 of datasheet + * + * @param return - Front, Back or Unknown orientation + */ + Orientation getSide( void ); + + /** + * Returns if it is on it left, right, down or up side + * + * This is read from MMA7760s registers, page 12 of datasheet + * + * @param return - Left, Right, Down, Up or Unknown orientation + */ + Orientation getOrientation ( void ); + + +private: + + /** + * Writes data to the device + * + * @param adress - register address to write to + * @param data - data to write + */ + void write( char address, char data); + + /** + * Read data from the device + * + * @param adress - register address to write to + * @return - data from the register specified by RA + */ + char read( char adress); + + /** + * Read multiple regigsters from the device, more efficient than using multiple normal reads. + * + * @param adress - register address to write to + * @param length - number of bytes to read + * @param data - pointer where the data needs to be written to + */ + void read( char adress, char *data, int length); + + /** + * Reads single axis + */ + float getSingle(int number); + + I2C _i2c; + bool active; + float samplerate; +}; + + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.cpp new file mode 100644 index 0000000000..9bdf87af51 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.cpp @@ -0,0 +1,81 @@ +/* Copyright (c) 2010-2011 mbed.org, MIT License +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this software +* and associated documentation files (the "Software"), to deal in the Software without +* restriction, including without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "MMA8451Q.h" + +#define REG_WHO_AM_I 0x0D +#define REG_CTRL_REG_1 0x2A +#define REG_OUT_X_MSB 0x01 +#define REG_OUT_Y_MSB 0x03 +#define REG_OUT_Z_MSB 0x05 + +#define UINT14_MAX 16383 + +MMA8451Q::MMA8451Q(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr) { + // activate the peripheral + uint8_t data[2] = {REG_CTRL_REG_1, 0x01}; + writeRegs(data, 2); +} + +MMA8451Q::~MMA8451Q() { } + +uint8_t MMA8451Q::getWhoAmI() { + uint8_t who_am_i = 0; + readRegs(REG_WHO_AM_I, &who_am_i, 1); + return who_am_i; +} + +int16_t MMA8451Q::getAccX() { + return getAccAxis(REG_OUT_X_MSB); +} + +int16_t MMA8451Q::getAccY() { + return getAccAxis(REG_OUT_Y_MSB); +} + +int16_t MMA8451Q::getAccZ() { + return getAccAxis(REG_OUT_Z_MSB); +} + +void MMA8451Q::getAccAllAxis(int16_t * res) { + res[0] = getAccX(); + res[1] = getAccY(); + res[2] = getAccZ(); +} + +int16_t MMA8451Q::getAccAxis(uint8_t addr) { + int16_t acc; + uint8_t res[2]; + readRegs(addr, res, 2); + + acc = (res[0] << 6) | (res[1] >> 2); + if (acc > UINT14_MAX/2) + acc -= UINT14_MAX; + + return acc; +} + +void MMA8451Q::readRegs(int addr, uint8_t * data, int len) { + char t[1] = {addr}; + m_i2c.write(m_addr, t, 1, true); + m_i2c.read(m_addr, (char *)data, len); +} + +void MMA8451Q::writeRegs(uint8_t * data, int len) { + m_i2c.write(m_addr, (char *)data, len); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.h new file mode 100644 index 0000000000..1b222685d9 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.h @@ -0,0 +1,108 @@ +/* Copyright (c) 2010-2011 mbed.org, MIT License +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this software +* and associated documentation files (the "Software"), to deal in the Software without +* restriction, including without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef MMA8451Q_H +#define MMA8451Q_H + +#include "mbed.h" + +/** +* MMA8451Q accelerometer example +* #include "mbed.h" +* #include "MMA8451Q.h" +* +* #define MMA8451_I2C_ADDRESS (0x1d<<1) +* +* int main(void) { +* DigitalOut led(LED_GREEN); +* MMA8451Q acc(P_E25, P_E24, MMA8451_I2C_ADDRESS); +* printf("WHO AM I: 0x%2X\r\n", acc.getWhoAmI()); +* +* while (true) { +* printf("-----------\r\n"); +* printf("acc_x: %d\r\n", acc.getAccX()); +* printf("acc_y: %d\r\n", acc.getAccY()); +* printf("acc_z: %d\r\n", acc.getAccZ()); +* +* wait(1); +* led = !led; +* } +* } +*/ +class MMA8451Q +{ +public: + /** + * MMA8451Q constructor + * + * @param sda SDA pin + * @param sdl SCL pin + * @param addr addr of the I2C peripheral + */ + MMA8451Q(PinName sda, PinName scl, int addr); + + /** + * MMA8451Q destructor + */ + ~MMA8451Q(); + + /** + * Get the value of the WHO_AM_I register + * + * @returns WHO_AM_I value + */ + uint8_t getWhoAmI(); + + /** + * Get X axis acceleration + * + * @returns X axis acceleration + */ + int16_t getAccX(); + + /** + * Get Y axis acceleration + * + * @returns Y axis acceleration + */ + int16_t getAccY(); + + /** + * Get Z axis acceleration + * + * @returns Z axis acceleration + */ + int16_t getAccZ(); + + /** + * Get XYZ axis acceleration + * + * @param res array where acceleration data will be stored + */ + void getAccAllAxis(int16_t * res); + +private: + I2C m_i2c; + int m_addr; + void readRegs(int addr, uint8_t * data, int len); + void writeRegs(uint8_t * data, int len); + int16_t getAccAxis(uint8_t addr); + +}; + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.cpp new file mode 100644 index 0000000000..8e44a3ee23 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.cpp @@ -0,0 +1,67 @@ + +/* +Copyright (c) 2010 Chris Styles ( chris dot styles at mbed dot org ) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include "SRF08.h" + + +SRF08::SRF08(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr) { + char cmd[2]; + +// Set up SRF08 max range and receiver sensitivity over I2C bus + cmd[0] = 0x02; // Range register + cmd[1] = 0x1C; // Set max range about 100cm + m_i2c.write(m_addr, cmd, 2); + cmd[0] = 0x01; // Receiver gain register + cmd[1] = 0x1B; // Set max receiver gain + m_i2c.write(m_addr, cmd, 2); + +} + +SRF08::~SRF08() { + +} + +float SRF08::read() { + + char cmd[2]; + char echo[2]; + + +// Get range data from SRF08 +// Send Tx burst command over I2C bus + cmd[0] = 0x00; // Command register + cmd[1] = 0x51; // Ranging results in cm + m_i2c.write(m_addr, cmd, 2); // Send ranging burst + + wait(0.07); // Wait for return echo + +// Read back range over I2C bus + cmd[0] = 0x02; // Address of first echo + m_i2c.write(m_addr, cmd, 1, 1); // Send address of first echo + m_i2c.read(m_addr, echo, 2); // Read two-byte echo result + +// Generate PWM mark/space ratio from range data + float range = (echo[0]<<8)+echo[1]; + + return range; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.h new file mode 100644 index 0000000000..a3606338b8 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.h @@ -0,0 +1,60 @@ + +/* +Copyright (c) 2010 Chris Styles (chris dot styles at mbed dot org) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef SRF08_H +#define SRF08_H + +#include "mbed.h" + +//!Library for the SRF08 Ultrasonic Ranger +/*! +The SRF08 is an Ultrasonic range finder, with an I2C interface that allows the measurement to be read directly in centimetres +*/ +class SRF08 +{ +public: + //!Creates an instance of the class. + /*! + Connect module at I2C address addr using I2C port pins sda and scl. + SRF08 + */ + SRF08(PinName sda, PinName scl, int addr); + + /*! + Destroys instance. + */ + ~SRF08(); + + //!Reads the current temperature. + /*! + Reads the temperature register of the TMP102 and converts it to a useable value. + */ + float read(); + +private: + I2C m_i2c; + int m_addr; + +}; + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.cpp new file mode 100644 index 0000000000..934c690ed3 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.cpp @@ -0,0 +1,23 @@ +#include "TMP102.h" + +#define TEMP_REG_ADDR 0x00 + +TMP102::TMP102(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr) { + m_i2c.frequency(400000); +} +TMP102::~TMP102() { } + +float TMP102::read() { + const char tempRegAddr = TEMP_REG_ADDR; + + m_i2c.write(m_addr, &tempRegAddr, 1); + + char reg[2] = {0,0}; + m_i2c.read(m_addr, reg, 2); + + unsigned short res = (reg[0] << 4) | (reg[1] >> 4); + + float temp = (float) ((float)res * 0.0625); + + return temp; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.h new file mode 100644 index 0000000000..ce7de83849 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.h @@ -0,0 +1,39 @@ +#ifndef TMP102_H +#define TMP102_H + +#include "mbed.h" + +//!Library for the TI TMP102 temperature sensor. +/*! +The TMP102 is an I2C digital temperature sensor in a small SOT563 package, with a 0.0625C resolution and 0.5C accuracy. +*/ +class TMP102 +{ +public: + //!Creates an instance of the class. + /*! + Connect module at I2C address addr using I2C port pins sda and scl. + TMP102 + \param addr <table><tr><th>A0 pin connection</th><th>Address</th></tr><tr><td>GND</td><td>0x90</td></tr><tr><td>V+</td><td>0x92</td></tr><tr><td>SDA</td><td>0x94</td></tr><tr><td>SCL</td><td>0x96</td></tr></table> + */ + TMP102(PinName sda, PinName scl, int addr); + + /*! + Destroys instance. + */ + ~TMP102(); + + //!Reads the current temperature. + /*! + Reads the temperature register of the TMP102 and converts it to a useable value. + */ + float read(); + + I2C m_i2c; + +private: + int m_addr; + +}; + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.cpp new file mode 100644 index 0000000000..b1d2c9413b --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.cpp @@ -0,0 +1,231 @@ +/* Freescale Semiconductor Inc. + * (c) Copyright 2004-2005 Freescale Semiconductor, Inc. + * (c) Copyright 2001-2004 Motorola, Inc. + * + * mbed Microcontroller Library + * (c) Copyright 2009-2012 ARM Limited. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "mbed.h" +#include "TSISensor.h" + +#define NO_TOUCH 0 +#define SLIDER_LENGTH 40 //LENGTH in mm +#define TOTAL_ELECTRODE 2 + +#define TSI0a 0 +#define TSI1 1 +#define TSI2 2 +#define TSI3 3 +#define TSI4 4 +#define TSI5 5 +#define TSI6 6 +#define TSI7 7 +#define TSI8 8 +#define TSI9 9 +#define TSI10 10 +#define TSI11 11 +#define TSI12 12 +#define TSI13 13 +#define TSI14 14 +#define TSI15 15 + +/*Chose the correct TSI channel for the electrode number*/ +#define ELECTRODE0 TSI9 +#define ELECTRODE1 TSI10 +#define ELECTRODE2 TSI0a +#define ELECTRODE3 TSI1 +#define ELECTRODE4 TSI2 +#define ELECTRODE5 TSI3 +#define ELECTRODE6 TSI4 +#define ELECTRODE7 TSI5 +#define ELECTRODE8 TSI6 +#define ELECTRODE9 TSI7 +#define ELECTRODE10 TSI8 +#define ELECTRODE11 TSI11 +#define ELECTRODE12 TSI12 +#define ELECTRODE13 TSI13 +#define ELECTRODE14 TSI14 +#define ELECTRODE15 TSI15 + +#define THRESHOLD0 100 +#define THRESHOLD1 100 +#define THRESHOLD2 100 +#define THRESHOLD3 100 +#define THRESHOLD4 100 +#define THRESHOLD5 100 +#define THRESHOLD6 100 +#define THRESHOLD7 100 +#define THRESHOLD8 100 +#define THRESHOLD9 100 +#define THRESHOLD10 100 +#define THRESHOLD11 100 +#define THRESHOLD12 100 +#define THRESHOLD13 100 +#define THRESHOLD14 100 +#define THRESHOLD15 100 + +static uint8_t total_electrode = TOTAL_ELECTRODE; +static uint8_t elec_array[16]={ELECTRODE0,ELECTRODE1,ELECTRODE2,ELECTRODE3,ELECTRODE4,ELECTRODE5, + ELECTRODE6,ELECTRODE7,ELECTRODE8,ELECTRODE9,ELECTRODE10,ELECTRODE11, + ELECTRODE12,ELECTRODE13,ELECTRODE14,ELECTRODE15}; +static uint16_t gu16TSICount[16]; +static uint16_t gu16Baseline[16]; +static uint16_t gu16Threshold[16]={THRESHOLD0,THRESHOLD1,THRESHOLD2,THRESHOLD3,THRESHOLD4,THRESHOLD5, + THRESHOLD6,THRESHOLD7,THRESHOLD8,THRESHOLD9,THRESHOLD10,THRESHOLD11, + THRESHOLD12,THRESHOLD13,THRESHOLD14,THRESHOLD15}; +static uint16_t gu16Delta[16]; +static uint8_t ongoing_elec; +static uint8_t end_flag = 1; + +static uint8_t SliderPercentegePosition[2] = {NO_TOUCH,NO_TOUCH}; +static uint8_t SliderDistancePosition[2] = {NO_TOUCH,NO_TOUCH}; +static uint32_t AbsolutePercentegePosition = NO_TOUCH; +static uint32_t AbsoluteDistancePosition = NO_TOUCH; + +static void tsi_irq(); + +TSISensor::TSISensor() { + SIM->SCGC5 |= SIM_SCGC5_PORTB_MASK; + SIM->SCGC5 |= SIM_SCGC5_TSI_MASK; + + TSI0->GENCS |= (TSI_GENCS_ESOR_MASK + | TSI_GENCS_MODE(0) + | TSI_GENCS_REFCHRG(4) + | TSI_GENCS_DVOLT(0) + | TSI_GENCS_EXTCHRG(7) + | TSI_GENCS_PS(4) + | TSI_GENCS_NSCN(11) + | TSI_GENCS_TSIIEN_MASK + | TSI_GENCS_STPE_MASK + ); + + TSI0->GENCS |= TSI_GENCS_TSIEN_MASK; + + NVIC_SetVector(TSI0_IRQn, (uint32_t)&tsi_irq); + NVIC_EnableIRQ(TSI0_IRQn); + + selfCalibration(); +} + + +void TSISensor::selfCalibration(void) +{ + unsigned char cnt; + unsigned char trigger_backup; + + TSI0->GENCS |= TSI_GENCS_EOSF_MASK; // Clear End of Scan Flag + TSI0->GENCS &= ~TSI_GENCS_TSIEN_MASK; // Disable TSI module + + if(TSI0->GENCS & TSI_GENCS_STM_MASK) // Back-up TSI Trigger mode from Application + trigger_backup = 1; + else + trigger_backup = 0; + + TSI0->GENCS &= ~TSI_GENCS_STM_MASK; // Use SW trigger + TSI0->GENCS &= ~TSI_GENCS_TSIIEN_MASK; // Enable TSI interrupts + + TSI0->GENCS |= TSI_GENCS_TSIEN_MASK; // Enable TSI module + + for(cnt=0; cnt < total_electrode; cnt++) // Get Counts when Electrode not pressed + { + TSI0->DATA = ((elec_array[cnt] << TSI_DATA_TSICH_SHIFT) ); + TSI0->DATA |= TSI_DATA_SWTS_MASK; + while(!(TSI0->GENCS & TSI_GENCS_EOSF_MASK)); + TSI0->GENCS |= TSI_GENCS_EOSF_MASK; + gu16Baseline[cnt] = (TSI0->DATA & TSI_DATA_TSICNT_MASK); + } + + TSI0->GENCS &= ~TSI_GENCS_TSIEN_MASK; // Disable TSI module + TSI0->GENCS |= TSI_GENCS_TSIIEN_MASK; // Enale TSI interrupt + if(trigger_backup) // Restore trigger mode + TSI0->GENCS |= TSI_GENCS_STM_MASK; + else + TSI0->GENCS &= ~TSI_GENCS_STM_MASK; + + TSI0->GENCS |= TSI_GENCS_TSIEN_MASK; // Enable TSI module + + TSI0->DATA = ((elec_array[0]<<TSI_DATA_TSICH_SHIFT) ); + TSI0->DATA |= TSI_DATA_SWTS_MASK; +} + + +void TSISensor::sliderRead(void ) { + if(end_flag) { + end_flag = 0; + if((gu16Delta[0] > gu16Threshold[0])||(gu16Delta[1] > gu16Threshold[1])) { + SliderPercentegePosition[0] = (gu16Delta[0]*100)/(gu16Delta[0]+gu16Delta[1]); + SliderPercentegePosition[1] = (gu16Delta[1]*100)/(gu16Delta[0]+gu16Delta[1]); + SliderDistancePosition[0] = (SliderPercentegePosition[0]* SLIDER_LENGTH)/100; + SliderDistancePosition[1] = (SliderPercentegePosition[1]* SLIDER_LENGTH)/100; + AbsolutePercentegePosition = ((100 - SliderPercentegePosition[0]) + SliderPercentegePosition[1])/2; + AbsoluteDistancePosition = ((SLIDER_LENGTH - SliderDistancePosition[0]) + SliderDistancePosition[1])/2; + } else { + SliderPercentegePosition[0] = NO_TOUCH; + SliderPercentegePosition[1] = NO_TOUCH; + SliderDistancePosition[0] = NO_TOUCH; + SliderDistancePosition[1] = NO_TOUCH; + AbsolutePercentegePosition = NO_TOUCH; + AbsoluteDistancePosition = NO_TOUCH; + } + } +} + +float TSISensor::readPercentage() { + sliderRead(); + return (float)AbsolutePercentegePosition/100.0; +} + +uint8_t TSISensor::readDistance() { + sliderRead(); + return AbsoluteDistancePosition; +} + + +static void changeElectrode(void) +{ + int16_t u16temp_delta; + + gu16TSICount[ongoing_elec] = (TSI0->DATA & TSI_DATA_TSICNT_MASK); // Save Counts for current electrode + u16temp_delta = gu16TSICount[ongoing_elec] - gu16Baseline[ongoing_elec]; // Obtains Counts Delta from callibration reference + if(u16temp_delta < 0) + gu16Delta[ongoing_elec] = 0; + else + gu16Delta[ongoing_elec] = u16temp_delta; + + //Change Electrode to Scan + if(total_electrode > 1) + { + if((total_electrode-1) > ongoing_elec) + ongoing_elec++; + else + ongoing_elec = 0; + + TSI0->DATA = ((elec_array[ongoing_elec]<<TSI_DATA_TSICH_SHIFT) ); + TSI0->DATA |= TSI_DATA_SWTS_MASK; + } +} + + +void tsi_irq(void) +{ + end_flag = 1; + TSI0->GENCS |= TSI_GENCS_EOSF_MASK; // Clear End of Scan Flag + changeElectrode(); +} + diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.h new file mode 100644 index 0000000000..1ac547b4a5 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.h @@ -0,0 +1,73 @@ +/* Freescale Semiconductor Inc. + * (c) Copyright 2004-2005 Freescale Semiconductor, Inc. + * (c) Copyright 2001-2004 Motorola, Inc. + * + * mbed Microcontroller Library + * (c) Copyright 2009-2012 ARM Limited. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software + * and associated documentation files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef TSISENSOR_H +#define TSISENSOR_H + +/** +* TSISensor example +* +* @code +* #include "mbed.h" +* #include "TSISensor.h" +* +* int main(void) { +* DigitalOut led(LED_GREEN); +* TSISensor tsi; +* +* while (true) { +* printf("slider percentage: %f%\r\n", tsi.readPercentage()); +* printf("slider distance: %dmm\r\n", tsi.readDistance()); +* wait(1); +* led = !led; +* } +* } +* @endcode +*/ +class TSISensor { +public: + /** + * Initialize the TSI Touch Sensor + */ + TSISensor(); + + /** + * Read Touch Sensor percentage value + * + * @returns percentage value between [0 ... 1] + */ + float readPercentage(); + + /** + * Read Touch Sensor distance + * + * @returns distance in mm. The value is between [0 ... 40] + */ + uint8_t readDistance(); + +private: + void sliderRead(void); + void selfCalibration(void); +}; + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/basic/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/basic/main.cpp new file mode 100644 index 0000000000..d78a49fcf6 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/basic/main.cpp @@ -0,0 +1,22 @@ +#include "mbed.h" +#include "cmsis_os.h" + +DigitalOut led1(LED1); +DigitalOut led2(LED2); + +void led2_thread(void const *argument) { + while (true) { + led2 = !led2; + osDelay(1000); + } +} +osThreadDef(led2_thread, osPriorityNormal, DEFAULT_STACK_SIZE); + +int main() { + osThreadCreate(osThread(led2_thread), NULL); + + while (true) { + led1 = !led1; + osDelay(500); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp new file mode 100644 index 0000000000..52c7da3d8c --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp @@ -0,0 +1,34 @@ +#include "mbed.h" +#include "rtos.h" + +Queue<uint32_t, 5> queue; + +DigitalOut myled(LED1); + +void queue_isr() { + queue.put((uint32_t*)2); + myled = !myled; +} + +void queue_thread(void const *argument) { + while (true) { + queue.put((uint32_t*)1); + Thread::wait(1000); + } +} + +int main (void) { + Thread thread(queue_thread); + + Ticker ticker; + ticker.attach(queue_isr, 1.0); + + while (true) { + osEvent evt = queue.get(); + if (evt.status != osEventMessage) { + printf("queue->get() returned %02x status\n\r", evt.status); + } else { + printf("queue->get() returned %d\n\r", evt.value.v); + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp new file mode 100644 index 0000000000..545fca34c7 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp @@ -0,0 +1,43 @@ +#include "mbed.h" +#include "cmsis_os.h" + +typedef struct { + float voltage; /* AD result of measured voltage */ + float current; /* AD result of measured current */ + uint32_t counter; /* A counter value */ +} mail_t; + +osMailQDef(mail_box, 16, mail_t); +osMailQId mail_box; + +void send_thread (void const *argument) { + uint32_t i = 0; + while (true) { + i++; // fake data update + mail_t *mail = (mail_t*)osMailAlloc(mail_box, osWaitForever); + mail->voltage = (i * 0.1) * 33; + mail->current = (i * 0.1) * 11; + mail->counter = i; + osMailPut(mail_box, mail); + osDelay(1000); + } +} + +osThreadDef(send_thread, osPriorityNormal, DEFAULT_STACK_SIZE); + +int main (void) { + mail_box = osMailCreate(osMailQ(mail_box), NULL); + osThreadCreate(osThread(send_thread), NULL); + + while (true) { + osEvent evt = osMailGet(mail_box, osWaitForever); + if (evt.status == osEventMail) { + mail_t *mail = (mail_t*)evt.value.p; + printf("\nVoltage: %.2f V\n\r" , mail->voltage); + printf("Current: %.2f A\n\r" , mail->current); + printf("Number of cycles: %u\n\r", mail->counter); + + osMailFree(mail_box, mail); + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mutex/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mutex/main.cpp new file mode 100644 index 0000000000..ccd1a603ca --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mutex/main.cpp @@ -0,0 +1,33 @@ +#include "mbed.h" +#include "cmsis_os.h" + +osMutexId stdio_mutex; +osMutexDef(stdio_mutex); + +void notify(const char* name, int state) { + osMutexWait(stdio_mutex, osWaitForever); + printf("%s: %d\n\r", name, state); + osMutexRelease(stdio_mutex); +} + +void test_thread(void const *args) { + while (true) { + notify((const char*)args, 0); osDelay(1000); + notify((const char*)args, 1); osDelay(1000); + } +} + +void t2(void const *argument) {test_thread("Th 2");} +osThreadDef(t2, osPriorityNormal, DEFAULT_STACK_SIZE); + +void t3(void const *argument) {test_thread("Th 3");} +osThreadDef(t3, osPriorityNormal, DEFAULT_STACK_SIZE); + +int main() { + stdio_mutex = osMutexCreate(osMutex(stdio_mutex)); + + osThreadCreate(osThread(t2), NULL); + osThreadCreate(osThread(t3), NULL); + + test_thread((void *)"Th 1"); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/queue/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/queue/main.cpp new file mode 100644 index 0000000000..1c6eab2f39 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/queue/main.cpp @@ -0,0 +1,48 @@ +#include "mbed.h" +#include "cmsis_os.h" + +typedef struct { + float voltage; /* AD result of measured voltage */ + float current; /* AD result of measured current */ + uint32_t counter; /* A counter value */ +} message_t; + +osPoolDef(mpool, 16, message_t); +osPoolId mpool; + +osMessageQDef(queue, 16, message_t); +osMessageQId queue; + +void send_thread (void const *argument) { + uint32_t i = 0; + while (true) { + i++; // fake data update + message_t *message = (message_t*)osPoolAlloc(mpool); + message->voltage = (i * 0.1) * 33; + message->current = (i * 0.1) * 11; + message->counter = i; + osMessagePut(queue, (uint32_t)message, osWaitForever); + osDelay(1000); + } +} + +osThreadDef(send_thread, osPriorityNormal, DEFAULT_STACK_SIZE); + +int main (void) { + mpool = osPoolCreate(osPool(mpool)); + queue = osMessageCreate(osMessageQ(queue), NULL); + + osThreadCreate(osThread(send_thread), NULL); + + while (true) { + osEvent evt = osMessageGet(queue, osWaitForever); + if (evt.status == osEventMessage) { + message_t *message = (message_t*)evt.value.p; + printf("\nVoltage: %.2f V\n\r" , message->voltage); + printf("Current: %.2f A\n\r" , message->current); + printf("Number of cycles: %u\n\r", message->counter); + + osPoolFree(mpool, message); + } + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/semaphore/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/semaphore/main.cpp new file mode 100644 index 0000000000..d4b473c187 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/semaphore/main.cpp @@ -0,0 +1,29 @@ +#include "mbed.h" +#include "cmsis_os.h" + +osSemaphoreId two_slots; +osSemaphoreDef(two_slots); + +void test_thread(void const *name) { + while (true) { + osSemaphoreWait(two_slots, osWaitForever); + printf("%s\n\r", (const char*)name); + osDelay(1000); + osSemaphoreRelease(two_slots); + } +} + +void t2(void const *argument) {test_thread("Th 2");} +osThreadDef(t2, osPriorityNormal, DEFAULT_STACK_SIZE); + +void t3(void const *argument) {test_thread("Th 3");} +osThreadDef(t3, osPriorityNormal, DEFAULT_STACK_SIZE); + +int main (void) { + two_slots = osSemaphoreCreate(osSemaphore(two_slots), 2); + + osThreadCreate(osThread(t2), NULL); + osThreadCreate(osThread(t3), NULL); + + test_thread((void *)"Th 1"); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/signals/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/signals/main.cpp new file mode 100644 index 0000000000..14ce05dadb --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/signals/main.cpp @@ -0,0 +1,23 @@ +#include "mbed.h" +#include "cmsis_os.h" + +DigitalOut led(LED1); + +void led_thread(void const *argument) { + while (true) { + // Signal flags that are reported as event are automatically cleared. + osSignalWait(0x1, osWaitForever); + led = !led; + } +} + +osThreadDef(led_thread, osPriorityNormal, DEFAULT_STACK_SIZE); + +int main (void) { + osThreadId tid = osThreadCreate(osThread(led_thread), NULL); + + while (true) { + osDelay(1000); + osSignalSet(tid, 0x1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/timer/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/timer/main.cpp new file mode 100644 index 0000000000..a0b093f946 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/timer/main.cpp @@ -0,0 +1,29 @@ +#include "mbed.h" +#include "cmsis_os.h" + +DigitalOut LEDs[4] = { + DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4) +}; + +void blink(void const *n) { + LEDs[(int)n] = !LEDs[(int)n]; +} + +osTimerDef(blink_0, blink); +osTimerDef(blink_1, blink); +osTimerDef(blink_2, blink); +osTimerDef(blink_3, blink); + +int main(void) { + osTimerId timer_0 = osTimerCreate(osTimer(blink_0), osTimerPeriodic, (void *)0); + osTimerId timer_1 = osTimerCreate(osTimer(blink_1), osTimerPeriodic, (void *)1); + osTimerId timer_2 = osTimerCreate(osTimer(blink_2), osTimerPeriodic, (void *)2); + osTimerId timer_3 = osTimerCreate(osTimer(blink_3), osTimerPeriodic, (void *)3); + + osTimerStart(timer_0, 2000); + osTimerStart(timer_1, 1000); + osTimerStart(timer_2, 500); + osTimerStart(timer_3, 250); + + osDelay(osWaitForever); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/basic/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/basic/main.cpp new file mode 100644 index 0000000000..541436786c --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/basic/main.cpp @@ -0,0 +1,44 @@ +#include "mbed.h" +#include "test_env.h" +#include "rtos.h" + +/* + * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and + * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes + * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize. + */ +#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) +#define STACK_SIZE DEFAULT_STACK_SIZE/4 +#else +#define STACK_SIZE DEFAULT_STACK_SIZE +#endif + +void print_char(char c = '*') { + printf("%c", c); + fflush(stdout); +} + +DigitalOut led1(LED1); +DigitalOut led2(LED2); + +void led2_thread(void const *argument) { + while (true) { + led2 = !led2; + Thread::wait(1000); + print_char(); + } +} + +int main() { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(wait_us_auto); + MBED_HOSTTEST_DESCRIPTION(Basic thread); + MBED_HOSTTEST_START("RTOS_1"); + + Thread thread(led2_thread, NULL, osPriorityNormal, STACK_SIZE); + + while (true) { + led1 = !led1; + Thread::wait(500); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/file/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/file/main.cpp new file mode 100644 index 0000000000..af32f668d6 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/file/main.cpp @@ -0,0 +1,100 @@ +#include "mbed.h" +#include "SDFileSystem.h" +#include "test_env.h" +#include "rtos.h" + +DigitalOut led2(LED2); + +#define SIZE 100 + +namespace { +// Allocate data buffers +uint8_t data_written[SIZE] = { 0 }; +uint8_t data_read[SIZE] = { 0 }; +} + +void sd_thread(void const *argument) +{ + const char *FILE_NAME = "/sd/rtos9_test.txt"; + +#if defined(TARGET_KL25Z) + SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); + +#elif defined(TARGET_KL46Z) + SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); + +#elif defined(TARGET_K64F) + SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); + +#elif defined(TARGET_RZ_A1H) + SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd"); + +#else + SDFileSystem sd(p11, p12, p13, p14, "sd"); +#endif + + { + // fill data_written buffer with random data + FILE *f = fopen(FILE_NAME, "w+"); + if (f) { + // write these data into the file + printf("Writing %d bytes to file:" NL, SIZE); + for (int i = 0; i < SIZE; i++) { + data_written[i] = rand() % 0xff; + fprintf(f, "%c", data_written[i]); + printf("%02X ", data_written[i]); + if (i && ((i % 20) == 19)) + printf(NL); + } + fclose(f); + printf("MBED: Done" NL); + } else { + printf("MBED: Can't open '%s'" NL, FILE_NAME); + MBED_HOSTTEST_RESULT(false); + } + } + + printf(NL); + + { + // read back the data from the file and store them in data_read + FILE *f = fopen(FILE_NAME, "r"); + if (f) { + printf("MBED: Reading %d bytes from file:" NL, SIZE); + for (int i = 0; i < SIZE; i++) { + data_read[i] = fgetc(f); + printf("%02X ", data_read[i]); + if (i && ((i % 20) == 19)) + printf(NL); + } + fclose(f); + printf("MBED: Done\r\n"); + } else { + printf("MBED: Can't open '%s'" NL, FILE_NAME); + MBED_HOSTTEST_RESULT(false); + } + } + + // check that the data written == data read + for (int i = 0; i < SIZE; i++) { + if (data_written[i] != data_read[i]) { + printf("MBED: Data index=%d: w[0x%02X] != r[0x%02X]" NL, i, data_written[i], data_read[i]); + MBED_HOSTTEST_RESULT(false); + } + } + MBED_HOSTTEST_RESULT(true); +} + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(SD File write read); + MBED_HOSTTEST_START("RTOS_9"); + + Thread t(sd_thread, NULL, osPriorityNormal, (DEFAULT_STACK_SIZE * 2.25)); + + while (true) { + led2 = !led2; + Thread::wait(1000); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/isr/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/isr/main.cpp new file mode 100644 index 0000000000..7168564fa9 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/isr/main.cpp @@ -0,0 +1,69 @@ +#include "mbed.h" +#include "test_env.h" +#include "rtos.h" + +#define QUEUE_SIZE 5 +#define THREAD_DELAY 250 +#define QUEUE_PUT_ISR_VALUE 128 +#define QUEUE_PUT_THREAD_VALUE 127 + +/* + * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and + * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes + * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize. + */ +#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) + #define STACK_SIZE DEFAULT_STACK_SIZE/4 +#else + #define STACK_SIZE DEFAULT_STACK_SIZE +#endif + +Queue<uint32_t, QUEUE_SIZE> queue; + +DigitalOut myled(LED1); + +void queue_isr() { + + queue.put((uint32_t*)QUEUE_PUT_ISR_VALUE); + myled = !myled; +} + +void queue_thread(void const *argument) { + while (true) { + queue.put((uint32_t*)QUEUE_PUT_THREAD_VALUE); + Thread::wait(THREAD_DELAY); + } +} + +int main (void) { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(ISR (Queue)); + MBED_HOSTTEST_START("RTOS_8"); + + Thread thread(queue_thread, NULL, osPriorityNormal, STACK_SIZE); + Ticker ticker; + ticker.attach(queue_isr, 1.0); + int isr_puts_counter = 0; + bool result = true; + + while (true) { + osEvent evt = queue.get(); + if (evt.status != osEventMessage) { + printf("QUEUE_GET: Status(0x%02X) ... [FAIL]\r\n", evt.status); + result = false; + break; + } else { + printf("QUEUE_GET: Value(%u) ... [OK]\r\n", evt.value.v); + if (evt.value.v == QUEUE_PUT_ISR_VALUE) { + isr_puts_counter++; + } + if (isr_puts_counter >= QUEUE_SIZE) { + break; + } + } + } + + MBED_HOSTTEST_RESULT(result); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mail/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mail/main.cpp new file mode 100644 index 0000000000..105d3eafbf --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mail/main.cpp @@ -0,0 +1,75 @@ +#include "mbed.h" +#include "test_env.h" +#include "rtos.h" + +typedef struct { + float voltage; /* AD result of measured voltage */ + float current; /* AD result of measured current */ + uint32_t counter; /* A counter value */ +} mail_t; + +#define CREATE_VOLTAGE(COUNTER) (COUNTER * 0.1) * 33 +#define CREATE_CURRENT(COUNTER) (COUNTER * 0.1) * 11 +#define QUEUE_SIZE 16 +#define QUEUE_PUT_DELAY 100 + +/* + * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and + * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes + * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize. + */ +#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) + #define STACK_SIZE DEFAULT_STACK_SIZE/4 +#else + #define STACK_SIZE DEFAULT_STACK_SIZE +#endif + +Mail<mail_t, QUEUE_SIZE> mail_box; + +void send_thread (void const *argument) { + static uint32_t i = 10; + while (true) { + i++; // fake data update + mail_t *mail = mail_box.alloc(); + mail->voltage = CREATE_VOLTAGE(i); + mail->current = CREATE_CURRENT(i); + mail->counter = i; + mail_box.put(mail); + Thread::wait(QUEUE_PUT_DELAY); + } +} + +int main (void) { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Mail messaging); + MBED_HOSTTEST_START("RTOS_6"); + + Thread thread(send_thread, NULL, osPriorityNormal, STACK_SIZE); + bool result = true; + int result_counter = 0; + + while (true) { + osEvent evt = mail_box.get(); + if (evt.status == osEventMail) { + mail_t *mail = (mail_t*)evt.value.p; + const float expected_voltage = CREATE_VOLTAGE(mail->counter); + const float expected_current = CREATE_CURRENT(mail->counter); + // Check using macros if received values correspond to values sent via queue + bool expected_values = (expected_voltage == mail->voltage) && + (expected_current == mail->current); + result = result && expected_values; + const char *result_msg = expected_values ? "OK" : "FAIL"; + printf("%3d %.2fV %.2fA ... [%s]\r\n", mail->counter, + mail->voltage, + mail->current, + result_msg); + mail_box.free(mail); + if (result == false || ++result_counter == QUEUE_SIZE) { + break; + } + } + } + MBED_HOSTTEST_RESULT(result); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mutex/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mutex/main.cpp new file mode 100644 index 0000000000..80d49a189c --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mutex/main.cpp @@ -0,0 +1,87 @@ +#include "mbed.h" +#include "test_env.h" +#include "rtos.h" + +#define THREAD_DELAY 50 +#define SIGNALS_TO_EMIT 100 + +/* + * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and + * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes + * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize. + */ +#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) + #define STACK_SIZE DEFAULT_STACK_SIZE/4 +#else + #define STACK_SIZE DEFAULT_STACK_SIZE +#endif + +void print_char(char c = '*') { + printf("%c", c); + fflush(stdout); +} + +Mutex stdio_mutex; +DigitalOut led(LED1); + +volatile int change_counter = 0; +volatile bool changing_counter = false; +volatile bool mutex_defect = false; + +bool manipulate_protected_zone(const int thread_delay) { + bool result = true; + + stdio_mutex.lock(); // LOCK + if (changing_counter == true) { + // 'e' stands for error. If changing_counter is true access is not exclusively + print_char('e'); + result = false; + mutex_defect = true; + } + changing_counter = true; + + // Some action on protected + led = !led; + change_counter++; + print_char('.'); + Thread::wait(thread_delay); + + changing_counter = false; + stdio_mutex.unlock(); // UNLOCK + return result; +} + +void test_thread(void const *args) { + const int thread_delay = int(args); + while (true) { + manipulate_protected_zone(thread_delay); + } +} + +int main() { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default); + MBED_HOSTTEST_DESCRIPTION(Mutex resource lock); + MBED_HOSTTEST_START("RTOS_2"); + + const int t1_delay = THREAD_DELAY * 1; + const int t2_delay = THREAD_DELAY * 2; + const int t3_delay = THREAD_DELAY * 3; + Thread t2(test_thread, (void *)t2_delay, osPriorityNormal, STACK_SIZE); + Thread t3(test_thread, (void *)t3_delay, osPriorityNormal, STACK_SIZE); + + while (true) { + // Thread 1 action + Thread::wait(t1_delay); + manipulate_protected_zone(t1_delay); + if (change_counter >= SIGNALS_TO_EMIT or mutex_defect == true) { + t2.terminate(); + t3.terminate(); + break; + } + } + + fflush(stdout); + MBED_HOSTTEST_RESULT(!mutex_defect); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/queue/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/queue/main.cpp new file mode 100644 index 0000000000..4f794bc4b8 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/queue/main.cpp @@ -0,0 +1,77 @@ +#include "mbed.h" +#include "test_env.h" +#include "rtos.h" + +typedef struct { + float voltage; /* AD result of measured voltage */ + float current; /* AD result of measured current */ + uint32_t counter; /* A counter value */ +} message_t; + +#define CREATE_VOLTAGE(COUNTER) (COUNTER * 0.1) * 33 +#define CREATE_CURRENT(COUNTER) (COUNTER * 0.1) * 11 +#define QUEUE_SIZE 16 +#define QUEUE_PUT_DELAY 100 + +/* + * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and + * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes + * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize. + */ +#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) + #define STACK_SIZE DEFAULT_STACK_SIZE/4 +#else + #define STACK_SIZE DEFAULT_STACK_SIZE +#endif + +MemoryPool<message_t, QUEUE_SIZE> mpool; +Queue<message_t, QUEUE_SIZE> queue; + +/* Send Thread */ +void send_thread (void const *argument) { + static uint32_t i = 10; + while (true) { + i++; // Fake data update + message_t *message = mpool.alloc(); + message->voltage = CREATE_VOLTAGE(i); + message->current = CREATE_CURRENT(i); + message->counter = i; + queue.put(message); + Thread::wait(QUEUE_PUT_DELAY); + } +} + +int main (void) { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Queue messaging); + MBED_HOSTTEST_START("RTOS_5"); + + Thread thread(send_thread, NULL, osPriorityNormal, STACK_SIZE); + bool result = true; + int result_counter = 0; + + while (true) { + osEvent evt = queue.get(); + if (evt.status == osEventMessage) { + message_t *message = (message_t*)evt.value.p; + const float expected_voltage = CREATE_VOLTAGE(message->counter); + const float expected_current = CREATE_CURRENT(message->counter); + // Check using macros if received values correspond to values sent via queue + bool expected_values = (expected_voltage == message->voltage) && + (expected_current == message->current); + result = result && expected_values; + const char *result_msg = expected_values ? "OK" : "FAIL"; + printf("%3d %.2fV %.2fA ... [%s]\r\n", message->counter, + message->voltage, + message->current, + result_msg); + mpool.free(message); + if (result == false || ++result_counter == QUEUE_SIZE) { + break; + } + } + } + MBED_HOSTTEST_RESULT(result); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/semaphore/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/semaphore/main.cpp new file mode 100644 index 0000000000..1f35e9f473 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/semaphore/main.cpp @@ -0,0 +1,75 @@ +#include "mbed.h" +#include "test_env.h" +#include "rtos.h" + +#define THREAD_DELAY 75 +#define SEMAPHORE_SLOTS 2 +#define SEM_CHANGES 100 + +/* + * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and + * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes + * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize. + */ +#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) + #define STACK_SIZE DEFAULT_STACK_SIZE/4 +#else + #define STACK_SIZE DEFAULT_STACK_SIZE +#endif + +void print_char(char c = '*') { + printf("%c", c); + fflush(stdout); +} + +Semaphore two_slots(SEMAPHORE_SLOTS); + +volatile int change_counter = 0; +volatile int sem_counter = 0; +volatile bool sem_defect = false; + +void test_thread(void const *delay) { + const int thread_delay = int(delay); + while (true) { + two_slots.wait(); + sem_counter++; + const bool sem_lock_failed = sem_counter > SEMAPHORE_SLOTS; + const char msg = sem_lock_failed ? 'e' : sem_counter + '0'; + print_char(msg); + if (sem_lock_failed) { + sem_defect = true; + } + Thread::wait(thread_delay); + print_char('.'); + sem_counter--; + change_counter++; + two_slots.release(); + } +} + +int main (void) { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Semaphore resource lock); + MBED_HOSTTEST_START("RTOS_3"); + + const int t1_delay = THREAD_DELAY * 1; + const int t2_delay = THREAD_DELAY * 2; + const int t3_delay = THREAD_DELAY * 3; + Thread t1(test_thread, (void *)t1_delay, osPriorityNormal, STACK_SIZE); + Thread t2(test_thread, (void *)t2_delay, osPriorityNormal, STACK_SIZE); + Thread t3(test_thread, (void *)t3_delay, osPriorityNormal, STACK_SIZE); + + while (true) { + if (change_counter >= SEM_CHANGES or sem_defect == true) { + t1.terminate(); + t2.terminate(); + t3.terminate(); + break; + } + } + + fflush(stdout); + MBED_HOSTTEST_RESULT(!sem_defect); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/signals/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/signals/main.cpp new file mode 100644 index 0000000000..aefe72f93d --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/signals/main.cpp @@ -0,0 +1,51 @@ +#include "mbed.h" +#include "test_env.h" +#include "rtos.h" + +#define SIGNALS_TO_EMIT 100 +#define SIGNAL_HANDLE_DELEY 25 +#define SIGNAL_SET_VALUE 0x01 + +/* + * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and + * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes + * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize. + */ +#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8) + #define STACK_SIZE DEFAULT_STACK_SIZE/4 +#else + #define STACK_SIZE DEFAULT_STACK_SIZE +#endif + +DigitalOut led(LED1); +volatile int signal_counter = 0; + +void led_thread(void const *argument) { + while (true) { + // Signal flags that are reported as event are automatically cleared. + Thread::signal_wait(SIGNAL_SET_VALUE); + led = !led; + signal_counter++; + } +} + +int main (void) { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Signals messaging); + MBED_HOSTTEST_START("RTOS_4"); + + Thread thread(led_thread, NULL, osPriorityNormal, STACK_SIZE); + bool result = true; + + while (true) { + Thread::wait(2 * SIGNAL_HANDLE_DELEY); + thread.signal_set(SIGNAL_SET_VALUE); + if (signal_counter == SIGNALS_TO_EMIT) { + printf("Handled %d signals\r\n", signal_counter); + break; + } + } + MBED_HOSTTEST_RESULT(result); + return 0; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/timer/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/timer/main.cpp new file mode 100644 index 0000000000..3c33551b0a --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/timer/main.cpp @@ -0,0 +1,42 @@ +#include "mbed.h" +#include "test_env.h" +#include "rtos.h" + +DigitalOut LEDs[4] = { + DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4) +}; + +void print_char(char c = '*') +{ + printf("%c", c); + fflush(stdout); +} + +void blink(void const *n) { + static int counter = 0; + const int led_id = int(n); + LEDs[led_id] = !LEDs[led_id]; + if (++counter == 75) { + print_char(); + counter = 0; + } +} + +int main(void) { + MBED_HOSTTEST_TIMEOUT(15); + MBED_HOSTTEST_SELECT(wait_us_auto); + MBED_HOSTTEST_DESCRIPTION(Timer); + MBED_HOSTTEST_START("RTOS_7"); + + RtosTimer led_1_timer(blink, osTimerPeriodic, (void *)0); + RtosTimer led_2_timer(blink, osTimerPeriodic, (void *)1); + RtosTimer led_3_timer(blink, osTimerPeriodic, (void *)2); + RtosTimer led_4_timer(blink, osTimerPeriodic, (void *)3); + + led_1_timer.start(200); + led_2_timer.start(100); + led_3_timer.start(50); + led_4_timer.start(25); + + Thread::wait(osWaitForever); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/audio/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/audio/main.cpp new file mode 100644 index 0000000000..e18891032a --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/audio/main.cpp @@ -0,0 +1,40 @@ +// Playback example with the USBAUDIO library + +#include "mbed.h" +#include "USBAudio.h" + +// frequency: 48 kHz +#define FREQ_SPK 48000 +#define FREQ_MIC 48000 + +// 2channels: stereo +#define NB_CHA_SPK 2 +#define NB_CHA_MIC 2 + +// length computed: each ms, we receive 48 * 16bits ->48 * 2 bytes. as there are two channels, the length will be 48 * 2 * 2 +#define LENGTH_AUDIO_PACKET_SPK (FREQ_SPK / 500) * NB_CHA_SPK +#define LENGTH_AUDIO_PACKET_MIC (FREQ_MIC / 500) * NB_CHA_MIC + +// USBAudio object +USBAudio audio(FREQ_SPK, NB_CHA_SPK, FREQ_MIC, NB_CHA_MIC, 0xab45, 0x0378); + +int main() { + // buffer of int + int buf_in[LENGTH_AUDIO_PACKET_SPK/sizeof(int)]; + int buf_out[LENGTH_AUDIO_PACKET_MIC/sizeof(int)]; + int * stream_out = buf_in; + int * stream_in = buf_out; + int * tmp = NULL; + + while (1) { + // read and write one audio packet each frame + audio.readWrite((uint8_t *)stream_in, (uint8_t *)stream_out); + + // swap the buffers + tmp = stream_in; + stream_in = stream_out; + stream_out = tmp; + } +} + + diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/basic/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/basic/main.cpp new file mode 100644 index 0000000000..9f786559fc --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/basic/main.cpp @@ -0,0 +1,28 @@ +#include <math.h> + +#include "mbed.h" +#include "USBMouse.h" + +USBMouse mouse(ABS_MOUSE); + +int main(void) { + int x_center = (X_MAX_ABS - X_MIN_ABS)/2; + int y_center = (Y_MAX_ABS - Y_MIN_ABS)/2; + int16_t x_screen = 0; + int16_t y_screen = 0; + + int32_t x_origin = x_center; + int32_t y_origin = y_center; + int32_t radius = 5000; + int32_t angle = 0; + + while (1) { + x_screen = x_origin + cos((double)angle*3.14/180.0)*radius; + y_screen = y_origin + sin((double)angle*3.14/180.0)*radius; + printf("cos: %f, sin: %f\r\n", cos((double)angle*3.14/180.0)*radius, sin((double)angle)*radius); + + mouse.move(x_screen, y_screen); + angle += 3; + wait(0.01); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/keyboard/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/keyboard/main.cpp new file mode 100644 index 0000000000..3c4cbf15a1 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/keyboard/main.cpp @@ -0,0 +1,21 @@ +#include "mbed.h" +#include "USBKeyboard.h" + +//LED1: NUM_LOCK +//LED2: CAPS_LOCK +//LED3: SCROLL_LOCK +BusOut leds(LED1, LED2, LED3); + +//USBKeyboard +USBKeyboard keyboard; + +int main(void) { + while (1) { + keyboard.mediaControl(KEY_VOLUME_DOWN); + keyboard.printf("Hello World from Mbed\r\n"); + keyboard.keyCode('s', KEY_CTRL); + keyboard.keyCode(KEY_CAPS_LOCK); + leds = keyboard.lockStatus(); + wait(1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/midi/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/midi/main.cpp new file mode 100644 index 0000000000..b0a6cd381e --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/midi/main.cpp @@ -0,0 +1,73 @@ +#include "mbed.h" +#include "USBMIDI.h" + +USBMIDI midi; +Serial pc(USBTX, USBRX); + +// MIDI IN +void transmitMessage(MIDIMessage msg) { + switch (msg.type()) { + case MIDIMessage::NoteOnType: + wait(0.1); + midi.write(MIDIMessage::NoteOn(msg.key())); + break; + case MIDIMessage::NoteOffType: + wait(0.1); + midi.write(MIDIMessage::NoteOff(msg.key())); + break; + case MIDIMessage::ProgramChangeType: + wait(0.1); + midi.write(MIDIMessage::ProgramChange(msg.program())); + break; + case MIDIMessage::SysExType: + wait(0.1); + unsigned char tmp[64]; + for(int i=0;i<msg.length-1;i++) { + tmp[i]=msg.data[i+1]; + } + midi.write(MIDIMessage::SysEx(tmp,msg.length-1)); + break; + default: + break; + } +} + +int main(void) +{ + wait(5); + // MIDI OUT + + // set piano + midi.write(MIDIMessage::ProgramChange(1)); + wait(0.1); + + // play A + midi.write(MIDIMessage::NoteOn(21)); + wait(0.1); + midi.write(MIDIMessage::NoteOff(21)); + wait(0.1); + + // GM reset + unsigned char gm_reset[]={0xF0,0x7E,0x7F,0x09,0x01,0xF7}; + midi.write(MIDIMessage::SysEx(gm_reset,6)); + wait(0.1); + + // GM Master volume max + unsigned char gm_master_vol_max[]={0xF0,0x7F,0x7F,0x04,0x01,0x7F,0x7F,0xF7}; + midi.write(MIDIMessage::SysEx(gm_master_vol_max,8)); + wait(0.1); + + // GS reset + unsigned char gs_reset[]={0xF0,0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41,0xF7}; + midi.write(MIDIMessage::SysEx(gs_reset,11)); + wait(0.1); + + // GS Master volume max + unsigned char gs_master_vol_max[]={0xF0,0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D,0xF7}; + midi.write(MIDIMessage::SysEx(gs_master_vol_max,11)); + wait(0.1); + + midi.attach(transmitMessage); + + while(1); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/mouse_keyboard/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/mouse_keyboard/main.cpp new file mode 100644 index 0000000000..1daae66deb --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/mouse_keyboard/main.cpp @@ -0,0 +1,22 @@ +#include "mbed.h" +#include "USBMouseKeyboard.h" + +//LED1: NUM_LOCK +//LED2: CAPS_LOCK +//LED3: SCROLL_LOCK +BusOut leds(LED1, LED2, LED3); + +//USBMouseKeyboard +USBMouseKeyboard key_mouse; + +int main(void) { + while (1) { + key_mouse.mediaControl(KEY_VOLUME_DOWN); + key_mouse.printf("Hello World from Mbed\r\n"); + key_mouse.keyCode('s', KEY_CTRL); + key_mouse.move(20, 0); + key_mouse.keyCode(KEY_SCROLL_LOCK); + leds = key_mouse.lockStatus(); + wait(1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/raw_hid/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/raw_hid/main.cpp new file mode 100644 index 0000000000..0a5d69cfee --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/raw_hid/main.cpp @@ -0,0 +1,26 @@ +#include "mbed.h" +#include "USBHID.h" + +//We declare a USBHID device +USBHID hid; + +//This report will contain data to be sent +HID_REPORT send_report; + +Ticker tic; + +void tic_handler(); +void tic_handler() { + hid.send(&send_report); +} + +int main(void) { + //Fill the report + for(int i = 0; i < 64; i++) + send_report.data[i] = i; + send_report.length = 64; + + tic.attach(tic_handler, 1); + + while (1); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/serial/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/serial/main.cpp new file mode 100644 index 0000000000..73e52bbfae --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/serial/main.cpp @@ -0,0 +1,18 @@ +#include "mbed.h" +#include "USBSerial.h" + +//Virtual serial port over USB +USBSerial serial; +DigitalOut l1(LED1); + +int main(void) { + int i = 0; + + while(1) + { + l1 = !l1; + printf("Hello\r\n"); + serial.printf("I am a virtual serial port: %d\r\n", i++); + wait(0.1); + } +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp new file mode 100644 index 0000000000..92d77cbc07 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp @@ -0,0 +1,13 @@ +#include "TestHarness.h" + +TEST_GROUP(FirstTestGroup) +{ +}; + +TEST(FirstTestGroup, FirstTest) +{ + /* These checks are here to make sure assertions outside test runs don't crash */ + CHECK(true); + LONGS_EQUAL(1, 1); + STRCMP_EQUAL("mbed SDK!", "mbed SDK!"); +}
\ No newline at end of file diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp new file mode 100644 index 0000000000..d7f2a408df --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp @@ -0,0 +1,87 @@ +#include "TestHarness.h" +#include <utility> +#include "mbed.h" + +TEST_GROUP(BusOut_mask) +{ +}; + +TEST(BusOut_mask, led_1_2_3) +{ + BusOut bus_data(LED1, LED2, LED3); + CHECK_EQUAL(0x07, bus_data.mask()); +} + +TEST(BusOut_mask, led_nc_nc_nc_nc) +{ + BusOut bus_data(NC, NC, NC, NC); + CHECK_EQUAL(0x00, bus_data.mask()); +} + +TEST(BusOut_mask, led_1_2_3_nc_nc) +{ + BusOut bus_data(LED1, LED2, LED3, NC, NC); + CHECK_EQUAL(0x07, bus_data.mask()); +} + +TEST(BusOut_mask, led_1_nc_2_nc_nc_3) +{ + BusOut bus_data(LED1, NC, LED2, NC, NC, LED3); + CHECK_EQUAL(0x25, bus_data.mask()); +} + +/////////////////////////////////////////////////////////////////////////////// + +TEST_GROUP(BusOut_dummy) +{ +}; + +TEST(BusOut_dummy, dummy) +{ +} + +#ifdef MBED_OPERATORS +TEST_GROUP(BusOut_digitalout_write) +{ +}; + +TEST(BusOut_digitalout_write, led_nc) +{ + BusOut bus_data(NC); + CHECK_EQUAL(false, bus_data[0].is_connected()) +} + + +TEST(BusOut_digitalout_write, led_1_2_3) +{ + BusOut bus_data(LED1, LED2, LED3); + bus_data[0].write(1); + bus_data[1].write(1); + bus_data[2].write(1); + CHECK(bus_data[0].read()); + CHECK(bus_data[1].read()); + CHECK(bus_data[2].read()); +} + +TEST(BusOut_digitalout_write, led_1_2_3_nc_nc) +{ + BusOut bus_data(LED1, LED2, LED3, NC, NC); + bus_data[0].write(0); + bus_data[1].write(0); + bus_data[2].write(0); + CHECK(bus_data[0].read() == 0); + CHECK(bus_data[1].read() == 0); + CHECK(bus_data[2].read() == 0); +} + +TEST(BusOut_digitalout_write, led_1_nc_2_nc_nc_3) +{ + BusOut bus_data(LED1, NC, LED2, NC, NC, LED3); + bus_data[0].write(1); + bus_data[2].write(0); + bus_data[5].write(0); + CHECK(bus_data[0].read()); + CHECK(bus_data[2].read() == 0); + CHECK(bus_data[5].read() == 0); +} +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp new file mode 100644 index 0000000000..ba56a0f181 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp @@ -0,0 +1,90 @@ +#include "TestHarness.h" +#include <utility> +#include "mbed.h" + +TEST_GROUP(Integer_Constant_Division) +{ + uint32_t test_64(uint64_t ticks) { + ticks >>= 3; // divide by 8 + if (ticks > 0xFFFFFFFF) { + ticks /= 3; + } else { + ticks = (ticks * 0x55555556) >> 32; // divide by 3 + } + return (uint32_t)(0xFFFFFFFF & ticks); + } +}; + +// 0xFFFFFFFF * 8 = 0x7fffffff8 +TEST(Integer_Constant_Division, Divide_By_8) +{ + std::pair<uint32_t, uint64_t> values = std::make_pair(0x55555555, 0x7FFFFFFF8); + uint32_t test_ret = test_64(values.second); + CHECK_EQUAL(values.first, test_ret); +} + +// 0xFFFFFFFF * 24 = 0x17ffffffe8 +TEST(Integer_Constant_Division, Divide_By_24) +{ + std::pair<uint32_t, uint64_t> values = std::make_pair(0xFFFFFFFF, 0x17FFFFFFE8); + uint32_t test_ret = test_64(values.second); + CHECK_EQUAL(values.first, test_ret); +} + +TEST_GROUP(RTC_Test) +{ + char buffer[32]; + const int CUSTOM_TIME = 1256729737; +}; + +TEST(RTC_Test, Check_Set_Time) +{ + set_time(CUSTOM_TIME); // Set RTC time to Wed, 28 Oct 2009 11:35:37 + time_t seconds = time(NULL); + strftime(buffer, 32, "%Y-%m-%d %H:%M:%S %p", localtime(&seconds)); + STRCMP_EQUAL(buffer, "2009-10-28 11:35:37 AM"); +} + +TEST_GROUP(C_String_Format) +{ + char buffer[256]; +}; + +#define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999 +TEST(C_String_Format, Sprintf_Positive_Integers) +{ + sprintf(buffer, "%u %d %u %d %u %d %u %d %u %d %u %d", POSITIVE_INTEGERS); + STRCMP_EQUAL(buffer, "32768 3214 999 100 1 0 1 4231 999 4123 32760 99999"); +} + +#define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,-1,-4231,-999,-4123,-32760,-99999 +TEST(C_String_Format, Sprintf_Negative_Integers) +{ + sprintf(buffer, "%i %d %i %d %i %d %i %d %i %d %i %i", NEGATIVE_INTEGERS); + STRCMP_EQUAL(buffer, "-32768 -3214 -999 -100 -1 0 -1 -4231 -999 -4123 -32760 -99999"); +} + +#ifdef DEVICE_SEMIHOST +#include "semihost_api.h" + +TEST_GROUP(Device_Semihost) +{ + char uid[48]; +}; + +TEST(Device_Semihost, semihost_connected) +{ + CHECK(semihost_connected()); +} + +TEST(Device_Semihost, mbed_interface_connected) +{ + CHECK(mbed_interface_connected()); +} + +TEST(Device_Semihost, mbed_interface_uid) +{ + CHECK_EQUAL(mbed_interface_uid(uid), 0); +} + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp new file mode 100644 index 0000000000..adb49025fb --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp @@ -0,0 +1,63 @@ +#include "TestHarness.h" +#include "mbed.h" +#include "semihost_api.h" +#include <stdio.h> + +#define FILENAME "/local/out.txt" +#define TEST_STRING "Hello World!" + +TEST_GROUP(FirstTestGroup) +{ + + FILE *test_open(const char *mode) { + FILE *f = fopen(FILENAME, mode); + return f; + } + + bool test_write(FILE *f, char *str, int str_len) { + int n = fprintf(f, str); + return (n == str_len) ? true : false; + } + + bool test_read(FILE *f, char *str, int str_len) { + int n = fread(str, sizeof(unsigned char), str_len, f); + return (n == str_len) ? true : false; + } + + bool test_close(FILE *f) { + int rc = fclose(f); + return rc ? true : false; + } + +}; + +TEST(FirstTestGroup, FirstTest) +{ + CHECK_TEXT(semihost_connected(), "Semihost not connected") + + LocalFileSystem local("local"); + + char *str = TEST_STRING; + char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING)); + int str_len = strlen(TEST_STRING); + + CHECK_TEXT(buffer != NULL, "Buffer allocation failed"); + CHECK_TEXT(str_len > 0, "Test string is empty (len <= 0)"); + + { + // Perform write / read tests + FILE *f = NULL; + // Write + f = test_open("w"); + CHECK_TEXT(f != NULL, "Error opening file for writing") + CHECK_TEXT(test_write(f, str, str_len), "Error writing file"); + CHECK_TEXT(test_close(f) != EOF, "Error closing file after write"); + + // Read + f = test_open("r"); + CHECK_TEXT(f != NULL, "Error opening file for reading") + CHECK_TEXT(test_read(f, buffer, str_len), "Error reading file"); + CHECK_TEXT(test_close(f) != EOF, "Error closing file after read"); + } + CHECK(strncmp(buffer, str, str_len) == 0); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp new file mode 100644 index 0000000000..2c1969ce07 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp @@ -0,0 +1,29 @@ +#include "CommandLineTestRunner.h" +#include <stdio.h> +#include "mbed.h" +#include "testrunner.h" +#include "test_env.h" + +/** +Object 'mbed_cpputest_console' is used to show prints on console. +It is declared in \cpputest\src\Platforms\armcc\UtestPlatform.cpp +*/ +Serial mbed_cpputest_console(STDIO_UART_TX, STDIO_UART_RX); + +int main(int ac, char** av) { + MBED_HOSTTEST_TIMEOUT(20); + MBED_HOSTTEST_SELECT(default_auto); + MBED_HOSTTEST_DESCRIPTION(Unit test); + MBED_HOSTTEST_START("UT"); + + unsigned failureCount = 0; + { + // Some compilers may not pass ac, av so we need to supply them ourselves + int ac = 2; + char* av[] = {__FILE__, "-v"}; + failureCount = CommandLineTestRunner::RunAllTests(ac, av); + } + + MBED_HOSTTEST_RESULT(failureCount == 0); + return failureCount; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h new file mode 100644 index 0000000000..b36c1bfc9e --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h @@ -0,0 +1,4 @@ +#ifndef TEST_RUNNER_H_ +#define TEST_RUNNER_H_ + +#endif |