From 3c359ac5ca3ebcfd175a3926dbe27bd088e91f44 Mon Sep 17 00:00:00 2001 From: Paul blue asus Date: Mon, 1 Jan 2018 23:32:09 -0600 Subject: [PATCH] Double and long overdue commit.. Various changes to STM8 SWIM code to make more versatile allowing SWIM pin to be located effectively on any STM32 GPIO pin. Still haven't touched an AVR implementation, but made place holders so it can compile for AVR at least. These SWIM changes aren't heavily tested, mostly just made sure could flash SOIC-8 STM8 CIC via CIC CLK. Beginings of JTAG code to configure CPLDs. Currently only tested state change and scan out reading MachXO-256, 4032/64v, & XC9572/36XL CPLDs Tested and working on inlretro6 v1.0p, stm adapter, & avr kazzos. Older devices with flipflops will apply 5v signals to JTAG pins but time is mostly minimized by keeping signals defaulted low unless actively changing states or scanning data. Still need to verify scan in working, probably move TDI/TDO long strings to buffers instead of 32byte PBJE data array. Also need smarter PBJE host code to keep track of current state and come up with PBJE register values without hard coding them.. But things are working fairly well so far with SWIM & JTAG implementations. Had some issues where I thought jtag pin toggling was getting optimized out, but I must have simply had the logic analyzer speed set too low and was missing pin changes that can be as quick as 40nsec with space optimized code. Current inl6 code is ~4400Bytes, without optimization it's nearly 50% larger at ~6550Bytes..! Optimizations seem fine in testing and with logic analyzer running at 50Mhz which is good because the GPIO registers are set as volatile so they better not be getting optimized away! --- firmware/source/avr_gpio.h | 4 + firmware/source/io.c | 59 ++++- firmware/source/io.h | 2 + firmware/source/jtag.c | 455 +++++++++++++++++++++++++++++++++++ firmware/source/jtag.h | 86 +++++++ firmware/source/main.c | 11 + firmware/source/pinport.h | 35 ++- firmware/source/pinport_al.h | 156 +++++++++++- firmware/source/swim.c | 131 +++++----- firmware/source/swim.h | 29 ++- firmware/source/usb.c | 4 + host/inlretro.exe | Bin 379751 -> 334793 bytes host/scripts/app/dict.lua | 56 +++++ host/scripts/app/jtag.lua | 143 +++++++++++ host/scripts/app/swim.lua | 34 ++- host/scripts/inlretro.lua | 96 +++++--- host/source/usb_operations.c | 2 + shared/shared_dict_io.h | 10 + shared/shared_dict_jtag.h | 60 +++++ shared/shared_dictionaries.h | 9 + shared/shared_errors.h | 2 + 21 files changed, 1281 insertions(+), 103 deletions(-) create mode 100644 firmware/source/jtag.c create mode 100644 firmware/source/jtag.h create mode 100644 host/scripts/app/jtag.lua create mode 100644 shared/shared_dict_jtag.h diff --git a/firmware/source/avr_gpio.h b/firmware/source/avr_gpio.h index 54f1f50..c29cd33 100644 --- a/firmware/source/avr_gpio.h +++ b/firmware/source/avr_gpio.h @@ -3,6 +3,10 @@ #include +//AVR GPIO ports are 8bits wide +//Use this type when need an int to hold pin mask +#define GPIO_PinMask uint8_t + #define __IO volatile /*!< Defines 'read / write' permissions */ /** diff --git a/firmware/source/io.c b/firmware/source/io.c index 9cebb69..5956308 100644 --- a/firmware/source/io.c +++ b/firmware/source/io.c @@ -31,6 +31,8 @@ uint8_t io_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rd case SNES_INIT: snes_init(); break; case SWIM_INIT: return swim_init(operand); break; + case JTAG_INIT: + return jtag_init(operand); break; case EXP0_PULLUP_TEST: rdata[RD_LEN] = BYTE_LEN; @@ -210,6 +212,20 @@ uint8_t swim_init( uint8_t swim_lane ) { switch (swim_lane) { case SWIM_ON_A0: //Most NES & Famicom carts + //Enable A0 pin on EXT PORT + EXT_A0_ENABLE(); + //set A0 to open drain with pull-up enabled + A0_IP_PU(); + #ifdef STM_CORE + A0_OD(); //set type to open drain + A0_HI(); //set output high (deasserted) + A0_OP(); //enable as output to have above take effect + #endif + swim_pin = A0; + swim_base = A0bank; + //swim_mask = 1<>8; + break; + case GET_6B_DATA: rdata[RD0] = pbje_data[0]; + rdata[RD1] = pbje_data[1]; + rdata[RD2] = pbje_data[2]; + rdata[RD3] = pbje_data[3]; + rdata[RD4] = pbje_data[4]; + rdata[RD5] = pbje_data[5]; + rdata[RD_LEN] = 6; + break; + + + + default: + //opcode doesn't exist + return ERR_UNKN_JTAG_OPCODE; + } + + return SUCCESS; + +} + +void jtag_init_pbje() +{ + uint8_t i; + + + //set outputs to default level +#ifdef STM_INL6 + //while these are supposed to be default high, I'm going with low + //these signals aren't 5v tolerant which could be problem with original kazzo boards + TMS_LO(); + TDI_LO(); + //makes sense for TCK default state to be low as posedge is begining of cycle + TCK_LO(); + + //enable ouput drivers + TCK_OP(); + TCK_PP(); + TMS_OP(); + TMS_PP(); + TDI_OP(); + TDI_PP(); +#else + exp_byte = 0; + EXP_SET(exp_byte); +#endif + + //enable TDO as input + TDO_IP_PU(); + + //PBJE initialization + //set status & command to INIT + pbje_status = PBJE_INIT; + //only the host writes to command + //pbje_command = PBJE_INIT; + + //set NUM_CLK to max this engine can clock based on DATA_ARRAY bit size + pbje_numclk = 0; //byte variable, 0 -> 256 + + //clear DATA_ARRAY + for( i=0; iBSRR = 1<BRR = 1<MODER |= (MODER_OP<<(tck_pin*2)) +#define TCK_PP() tck_base->OTYPER &= ~(OTYPER_OD<BSRR = 1<< tms_pin +#define TMS_LO() tms_base->BRR = 1<< tms_pin +#define TMS_OP() tms_base->MODER |= (MODER_OP<<(tms_pin*2)) +#define TMS_PP() tms_base->OTYPER &= ~(OTYPER_OD<< tms_pin) + +//TDI JTAG data input +#define TDI_HI() tdi_base->BSRR = 1<< tdi_pin +#define TDI_LO() tdi_base->BRR = 1<< tdi_pin +#define TDI_OP() tdi_base->MODER |= (MODER_OP<<(tdi_pin*2)) +#define TDI_PP() tdi_base->OTYPER &= ~(OTYPER_OD<< tdi_pin) + +//TDI JTAG data output +#define TDO_IP_PU() tdo_base->MODER &= ~(MODER_OP<<(tdo_pin*2)); tdo_base->PUPDR |= (PUPDR_PU<<(tdo_pin*2)) +#define TDO_RD(val) val = (tdo_base->IDR & (1< force +#define FORCE1 0x11 +#define DATA0 0x20 //0x2x -> data array +//#define DATA1 0x21 +void pbje_state_change( uint8_t tms_data ); +void pbje_scan( uint8_t tdi_data, uint8_t tdo_data ); + +#endif diff --git a/firmware/source/main.c b/firmware/source/main.c index 3dd1620..789b5fc 100644 --- a/firmware/source/main.c +++ b/firmware/source/main.c @@ -2,6 +2,7 @@ #include "usb.h" #include "io.h" #include "buffer.h" +#include "jtag.h" #ifdef AVR_CORE #include @@ -86,6 +87,9 @@ int main(void) //intialize i/o and LED to pullup state io_reset(); + //initialize jtag engine to be off + pbje_status = PBJE_OFF; + //================= //MAIN LOOP //================= @@ -112,5 +116,12 @@ int main(void) //another thought would be to call usbPoll mid programming //a few times to prevent incoming data from being delayed too long update_buffers(); + + //if paul's basic jtag engine "PBJE" is running, main + //thread needs to call engine at periodic intervals to keep it + //running. + if (pbje_status != PBJE_OFF) { + jtag_run_pbje(); + } } } diff --git a/firmware/source/pinport.h b/firmware/source/pinport.h index 7b9f6fb..408fc9b 100644 --- a/firmware/source/pinport.h +++ b/firmware/source/pinport.h @@ -12,7 +12,9 @@ uint8_t pinport_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_ #define NOP() do { __asm__ __volatile__ ("nop"); } while (0) -//PIN MACROS +//////////////////////////////// +// CONTROL (CTL) PORT PINS +//////////////////////////////// // PC0 "MCO" #define MCO_IP_PU() CTL_IP_PU(MCObank, MCO) @@ -166,4 +168,35 @@ uint8_t pinport_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_ // PC21 "FCAPU" + +//////////////////////////////// +// EXTRA (EXT) PORT PINS +//////////////////////////////// + +// PE0 "A0" +#define A0_IP_PU() EXT_IP_PU(A0bank, A0) +#define A0_IP_FL() EXT_IP_FL(A0bank, A0) +#define A0_OP() EXT_OP(A0bank, A0) +#define A0_LO() EXT_SET_LO(A0bank, A0) +#define A0_HI() EXT_SET_HI(A0bank, A0) +#define A0_RD(val) EXT_RD(A0bank, A0, val) + +#ifdef STM_CORE + #define A0_OD() EXT_OD(A0bank, A0) + #define A0_PP() EXT_PP(A0bank, A0) #endif + +// PE1 "D0" +#define D0_IP_PU() EXT_IP_PU(D0bank, D0) +#define D0_IP_FL() EXT_IP_FL(D0bank, D0) +#define D0_OP() EXT_OP(D0bank, D0) +#define D0_LO() EXT_SET_LO(D0bank, D0) +#define D0_HI() EXT_SET_HI(D0bank, D0) +#define D0_RD(val) EXT_RD(D0bank, D0, val) + +#ifdef STM_CORE + #define D0_OD() EXT_OD(D0bank, D0) + #define D0_PP() EXT_PP(D0bank, D0) +#endif + +#endif //end of file diff --git a/firmware/source/pinport_al.h b/firmware/source/pinport_al.h index 40ffc40..2f2db78 100644 --- a/firmware/source/pinport_al.h +++ b/firmware/source/pinport_al.h @@ -11,6 +11,9 @@ #include #elif STM_CORE #include + //STM32 GPIO ports are effectively 16bits wide + //Use this type when need an int to hold pin mask + #define GPIO_PinMask uint16_t #endif //This file contains pinout translations from AVR names to "kazzo" names @@ -1126,5 +1129,156 @@ void software_AXL_CLK(); #endif //AVR_KAZZO or STM_ADAPTER +// --------------------------------------------------------------------------------------- +// EXTRA (EXT) PORT +// +// This port is present on all devices, but all pins aren't necessarily available +// Intention is for pins on this port to act similar to CONTROL PORT, but require +// individual enabling as these pins may conflict with other ports. This is a port +// that allows rules of other ports to be broken. For example a single address pin +// can become bidirectional open drain; which doesn't fit the ADDRESS PORT definition. +// Another use for this would be to establish a SPI port on a few DATA BUS pins. +// Other things that make sense here are serial protocols which need conveinent pin +// macros, but don't make any sense to have individual bit control from host PC. +// The low level protocol is handled from the firmware side since you would never want +// to bit bang these from the host. +// +// Restrictions: Great care must be used when utilizing this port, doing so will often +// break other ports which the pins are shared with. Best to disable this port +// when done with it to then allow the other port to be enabled and initialized. +// Each pin (set) needs it's own enable, the EXT PORT doesn't get enabled with one +// macro since typically only one pin (set) is of interest. +// Directionality: Any allowed, defined separately for each pin +// Driver: Any allowed, defined separately for each pin +// Write/Output: Depends on pins, any allowed +// Read/Input: Depends on pins, any allowed +// +// +// --------------------------------------------------------------------------------------- -#endif +#ifdef STM_INL6 + + // PE0 "A0" mcupinC0 + #define E0bank GPIOC + #define E0 (0U) + + // PE1 "D0" mcupinB2 + #define E1bank GPIOB + #define E1 (2U) + + // PE2 "D8" mcupinB10 + #define E2bank GPIOB + #define E2 (10U) + + // PE3 "D9" mcupinB11 + #define E3bank GPIOB + #define E3 (11U) + + // PE4 "D10" mcupinB12 + #define E4bank GPIOB + #define E4 (12U) + + +#endif //STM_INL6 + + +#ifdef STM_ADAPTER + + // PE0 "A0" mcupinB2 + #define E0bank GPIOB + #define E0 (2U) + + // PE1 "D0" mcupinB8 + #define E1bank GPIOB + #define E1 (8U) + + #define E2nodef + #define E3nodef + #define E4nodef + +#endif //STM_ADAPTER + + +#ifdef AVR_KAZZO + + // PE0 "A0" mcupinA0 + #define E0bank GPIOA + #define E0 (0U) + + // PE1 "D0" mcupinB0 + #define E1bank GPIOB + #define E1 (0U) + + #define E2nodef + #define E3nodef + #define E4nodef + +#endif //AVR_KAZZO + + +//////////////////////////////////////////////////////////////////////////////// +// PORT E pin mappings +//////////////////////////////////////////////////////////////////////////////// + +//STM8 SWIM PINS A0 & D0 depending on cartridge +#define A0 E0 +#define A0bank E0bank + +#define D0 E1 +#define D0bank E1bank + +//JTAG pins for INL6 +#ifdef STM_INL6 + +//TDI +#define D8 E2 +#define D8bank E2bank + +//TMS +#define D9 E3 +#define D9bank E3bank + +//TCK +#define D10 E4 +#define D10bank E4bank + +#endif //JTAG INL6 + +#ifdef STM_CORE + +#define EXT_IP_PU(bank, pin) bank->MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR |= (PUPDR_PU<<(pin*2)) +#define EXT_IP_FL(bank, pin) bank->MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR &= ~(PUPDR_PU<<(pin*2)) +#define EXT_OP(bank, pin) bank->MODER |= (MODER_OP<<(pin*2)) +#define EXT_OD(bank, pin) bank->OTYPER |= (OTYPER_OD<<(pin)) //open drain has no effect when pin is input +#define EXT_PP(bank, pin) bank->OTYPER &= ~(OTYPER_OD<<(pin)) +#define EXT_SET_LO(bank, pin) bank->BRR = 1<BSRR = 1<IDR & (1<DDR &= ~(1<PORT |= (1<DDR &= ~(1<PORT &= ~(1<DDR |= (1<PORT &= ~(1<PORT |= (1<PIN & (1< 10.64us, 100 -> 100.62us, 1k -> 1.0001 ms including pin delay + // NOP(); + // NOP(); //with delay * 4, adding this NOP, adds 84nsec per delay + //NOP(); + //NOP(); //6x NOP, 48Mhz, delay = 10 -> 2.92usec + overhead + + + } + +} void delay( uint16_t delay ) { @@ -85,43 +106,30 @@ void swim_activate() { uint16_t i; -// pinport_call( CTL_OP_, 0, swim_pin, 0); - - //toggles in this manner take 4.55-4.6usec on AVR - //toggles in this manner take 4.9-4.95usec on STM adapter +//TODO probably should disable interrupts during this process as they would muck up timing //pulse low for 16usec spec says 16usec //but looking at working programmers they do twice the delays below - pinport_call( CTL_SET_LO_, 0, swim_pin, 0); - delay(3*16); - pinport_call( CTL_SET_HI_, 0, swim_pin, 0); + SWIM_SET_LO(); + delay_us(16); + SWIM_SET_HI(); //toggle high->low T=1msec 4x for( i = 0; i < 4; i++) { - //STM adapter 720 = 500.9usec - //TODO move this timed code into a timer to make timing more stable - //between boards, pinport.c code, etc.... -#ifdef STM_INL6 - delay(3*719); -#endif -#ifdef STM_ADAPTER - delay(3*720); -#endif - pinport_call( CTL_SET_LO_, 0, swim_pin, 0); - delay(3*718); - pinport_call( CTL_SET_HI_, 0, swim_pin, 0); + delay_us(500); + SWIM_SET_LO(); + delay_us(500); + SWIM_SET_HI(); } //toggle high->low T=0.5msec 4x for( i = 0; i < 4; i++) { - //STM adapter 358 = 256usec - delay(3*356); - pinport_call( CTL_SET_LO_, 0, swim_pin, 0); - delay(3*355); - pinport_call( CTL_SET_HI_, 0, swim_pin, 0); + delay_us(250); + SWIM_SET_LO(); + delay_us(250); + SWIM_SET_HI(); } - //pinport_call( CTL_IP_PU_, 0, swim_pin, 0); //wait for device to take swim_pin low for ~16usec @@ -143,29 +151,28 @@ void swim_activate() */ void swim_reset() { - //pinport_call( CTL_OP_, 0, swim_pin, 0); //pulse low for 16usec spec says 16usec //but looking at working programmers they do very long resets - pinport_call( CTL_SET_LO_, 0, swim_pin, 0); - delay(3*16); - pinport_call( CTL_SET_HI_, 0, swim_pin, 0); + SWIM_SET_LO(); + delay_us(16); + SWIM_SET_HI(); } -#define mov_swim_mask_r0() __asm ("mov r0, %[val]" : : [val] "r" (swim_mask) : "r0" ) -#define mov_pushpull_r6() __asm ("mov r6, %[val]" : : [val] "r" (pushpull) : "r6" ) -#define mov_opendrain_r7() __asm ("mov r7, %[val]" : : [val] "r" (opendrain) : "r7" ) - -//BSRR 0x18 -#define str_r0_bset() __asm volatile ("strh r0, [%[mmio], #0x18]" : : [mmio] "r" (swim_base)) -//BRR 0x28 -#define str_r0_bres() __asm volatile ("strh r0, [%[mmio], #0x28]" : : [mmio] "r" (swim_base)) -//OTYPER 0x04 -#define pp_swim() __asm volatile ("strh r6, [%[mmio], #0x04]" : : [mmio] "r" (swim_base)) -#define od_swim() __asm volatile ("strh r7, [%[mmio], #0x04]" : : [mmio] "r" (swim_base)) +//#define mov_swim_mask_r0() __asm ("mov r0, %[val]" : : [val] "r" (swim_mask) : "r0" ) +//#define mov_pushpull_r6() __asm ("mov r6, %[val]" : : [val] "r" (pushpull) : "r6" ) +//#define mov_opendrain_r7() __asm ("mov r7, %[val]" : : [val] "r" (opendrain) : "r7" ) +// +////BSRR 0x18 +//#define str_r0_bset() __asm volatile ("strh r0, [%[mmio], #0x18]" : : [mmio] "r" (swim_base)) +////BRR 0x28 +//#define str_r0_bres() __asm volatile ("strh r0, [%[mmio], #0x28]" : : [mmio] "r" (swim_base)) +////OTYPER 0x04 +//#define pp_swim() __asm volatile ("strh r6, [%[mmio], #0x04]" : : [mmio] "r" (swim_base)) +//#define od_swim() __asm volatile ("strh r7, [%[mmio], #0x04]" : : [mmio] "r" (swim_base)) #define NO_RESP 0xFF #define ACK 0x01 @@ -200,7 +207,6 @@ uint16_t append_pairity(uint8_t n) uint16_t swim_rotf(uint8_t speed, uint16_t addr) { uint32_t ack_data = 0; -#ifdef STM_CORE uint16_t data_pb; uint32_t spddir_len; @@ -212,26 +218,26 @@ uint16_t swim_rotf(uint8_t speed, uint16_t addr) // 0b0_0011 data_pb = 0x3000; spddir_len = ((SWIM_WR|speed)<<16) | 4; //data + pairity ( '0' header not included) - ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + ack_data = swim_xfr( data_pb, spddir_len, swim_base, 1<>8 ); spddir_len = ((SWIM_WR|speed)<<16) | 9; - ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + ack_data = swim_xfr( data_pb, spddir_len, swim_base, 1<>8 ); spddir_len = ((SWIM_WR|speed)<<16) | 9; - ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + ack_data = swim_xfr( data_pb, spddir_len, swim_base, 1<BSRR = 1<BRR = 1<OTYPER |= (OTYPER_OD<OTYPER &= ~(OTYPER_OD<opcode, spacket->miscdata, spacket->operand, &rv[RETURN_LEN_IDX] ); break; + case DICT_JTAG: + rv[RETURN_ERR_IDX] = jtag_call( spacket->opcode, spacket->miscdata, spacket->operand, &rv[RETURN_LEN_IDX] ); + break; + case DICT_BUFFER: //just give buffer.c the setup packet and let it figure things out for itself diff --git a/host/inlretro.exe b/host/inlretro.exe index 1ba26123a4202161f913558179dd9f09d67fc3e9..cda53363478d3791b44a00a40857bf991cc8ddf6 100644 GIT binary patch delta 107901 zcmaI93t&t~`#-)j*~B88&>#qcMM7v&ln{g@sB2pHO593Zs;#oCs$!$NDW_{mdoZfn zQf=Q}w68XrMU{|9LaDfvxRomHSwY=O(AwYUIcGPP|NH&teYJ8QzFbeBRL4X!yuvFq|_~3#!R@LqkN6!O+KOFoYTm1@C+jU1J^c_PV+`$-E+aF8Y}7pLzux}h)~{U zO>O;=GsK~aBaK8F@RwwWE9fwL@R!Tt{@JA%N*Dnd`&)zk5s<9+2$Y8HzlB2iM(>RcK3{#xO&W-<(v|8(dk`%L% zp>v7R43-+y-zDXgF|PWzdb{O0B|Ny-@aZV27e;Zz7BBuhmmhe&0sUxnwJ&uj^?J%4 zZKD~fZGCN<(UzGz%zimy{UD)i3vO#`TnD`_8&&&AZcxWz0QK&3+_2s}A;pkWVCmy* zGGR`NVS_O)*&u^XXL6WqG^^tI^uppbkNr+AB4H%HHtv6BzeNT1e2Dwn}gx+$bSv7)Am!&mmO?0K0V`=i#1x%w3 zD8^!*gduFb0mRzRG2}x58cpccV4$%VB^Kt|FGr#e@!MN((3}*TLH!9lAg1_MyBt0qFpbab+g2P(~dCn*6m>gQV0ZR_y|4aim<`irr z{FZvuLm@<9;hQ=ld3VlXOLcUhzTU&mjDPkP`X_8dCr}K9@RK$2e<1vi58+dfA=GF( zyq+cinrhORUG(mI3#%BCn{(LNKYU@+UFVHKb+#tGlx*mp7CO6zTw3Vb+*(;+YR{6C zFHK!oQr>yfT+RxVF*Q%J)p?yl_c641YelokdC|3NG81*RwCRzgbe9VBLcJbIc|l>L zgU~7ci7!}sUP$;)p)4)$aMWzZGL+O7GMkWhu*EHgrXq7kBuZtgF>HzQTJDF@nhXxPxh4Y_i-SuH~*zQA4-S(uqSV$_f8mGIc-`N&Jktk`6N{XTYZ z=x%^il**xIb&E%--M&fP&uL@~=S(q2(Ex|KD?QqG)r^lMO3kj(Nu(VsVE>dlROQ|F zDLqc=B&#pOf1z_+PJyi&#FBD*iJ*T zQqbWk-YQwS)uA`9maKGnvJF#}@lSSOe<;hIT+LFHHgTi*;6Ic_aglYT3$V=vW)tBf zL^G9d;)e0BepiCxd$Bo6a{P8S@4Kg-Wz42L*ReHIl-E1{%|2FM>C}#Wro7)NnYop- zo#Ik|OxE?Z^Gt&QmYPPWc2iv^vu3ns&U(F=Q&LXB!f>jf_ENoF-Gw$P?^lL*PGL8c z_c{-JA}B@ctIqn>>#f*Bt$!$YI>)d>O7o{*W@nY$rz6;($`?=fO6F1aH(4G@Yd}8m~BlV&-w;?B#?8N6;nsO?!HE(=E3F2P7!J_OJ!0yQq1JM>>@rq?+E4}OAanG#XO(t6 zqhKt9dZuy1G3CRajZoOy^EjKQywl6frYQNnIxtJ##a@E(s3Xe4-mmjLhn2g%TR{CI z`;2F7ZQg?9u8b8a->39se<`<8?Cc+9UTOkwnyTcb#+oi*RBP}ykMd_~b8b#mYV>Uc z+^zZ!;nAszweM)&JXJZ^H$c2_Ljn_)vfM=j-{|;!$tV;8N-B@m3`oMaO%~EC$%Hf8- z%H2WJjk8828N~IMS-3KP@HH;=&6_zSgtczbH(8SxIc_qbd(Z)=#jNRhC$vGQ)T>3x z>Y>f+B*9%QrIC@vi-pCgWzn5ic3nEM|bOD^^ags&3aD7SS^p_3G;H z{bkdLys~k-gV;4inbeM*Pe zYdEbpIqb31=kXc?^M0Am8E-XEIWeOrlDvj5eiFjt2IlR2^%Mh{@6S2T7Ua#b%rde~ zc^BqgG_uc?eOa+=f8L!e^fL@n?k`-&hUcxdT?k@lltuQAn8Nq=_UxYWyL~@fr)+Xu z=Jf_EALcyIdk$9a<+SJR2P-jeb>m$ID^uQT!CMVhcR9 z((xTM5%)hJ5L6fWnjK3J=n)mvcn{b}TY*A-VM*Rst}xDiP_{2W&s#f`b-57@Lmi~} zmLU7joZ#WIHDrI=l|#7=Yvg{CL}*N==agHyePc||=|h%py{0WzZ!Xmx;?G0^ro-*J zH!V|Mc;{zW`BU#!XBaL~`Hme|{!+f+vDwO+6;0W7W$TJItWx=HMMPbmhQ8%$=--;t z>$H?caUKspg+_siF=%!oxs8*sC_CH#O87SosGAC|(QU`JZ zh$?z)>y)OrRyO5{Y0B3~?k-dgtZc+m6?J7BHb4nm)r_xPsKl>o%!Vn0S2c?ty-*vl z_SSKP=N>5Qa1(6rq?P&W+Na_6n}0B*wgaNr8mtczo26uZ(149sR(_CHa|{|houLa` zMk&`m=*UJX<`4U`(aK97zSVXL+ML79kv@$e`o;{yG>5}m{rDk*1wwX%ZkGt~uvz0*~59Kkl^FH|aFoRd0^+|Hb3P5amQ`!2-fRIrb zVv9?u{%H@4+3(XPjc1{)q;CXVhIfmekEDD_-_Umz+ozM*Waa#)!`Pe3)1M6uu@WAu z;{2>XJDPX&Gx&pFmHMA|VRw}wpMTFyBb4ATCdQ0>QFGPdvPBOa;zsDoclBS$X@NP^ zU;k|0@-JMp$Ta!tB)3ji?tV3fcblOM-`IvfGfm0b*a$9j^~SMmt8#1OX!e~l`0L^P z{045$FVjJX}{Lw4+`j|)8qD^BU($zu=f7dz}V_}Wyv3Abo=^`hVY(WTxqPF z|D!X?5r58%NO}?x^D$RGW@H#Oa#-4yNH{?C;|0pvKfCkb4$6r?<5)+fhT4bcwpWIz z@nN){SG2Qd8JIQISqqE!a&<5-Z?F8SHsQVBQ2te4;FH@clRW>zq$XU74vmb3hutlQ zl=L;OQ&wE+k8#gjYRL23DV3LIu_$GF#an>9RuN;H1=6J*A&vse0JuvdHcow>$GWy6 zT5||bXD?*!TqC(9$TgB-J3zM67wxc}NHq>Hnq8%sBWSD873BovEfM5A`vZ)?wHO9o z@?LN7#$q;-)6R_1$g8%6DXTB1vk}VQmq$bNL$0Jm`~ePQ1LsV~)mIdW_ukdQhCry+49%8>clo|=)0Je zX4leF^pZSN>!QBciooR{OD$}hG|!@~hH5*Y(RWH;EtBc;TwIyvW7S1CoVN7j8eW~3D{my-`NA2 z@%_zME&K!JvGxRJDI_7#4uJT$t%dT>%}H#ZGX7R9|Du`Vy7hYX4$XA?DpRDt$76f( z%HIum&*sXKzrSDyl&5YV7CD7U|mqWiexVyCgvy*SAZ(hf7#YjjR^(Lw(@vAen z+9a)38mnBr>jI7i_ZqS7inuodzgO-x#vH2OZ^rg0G553BLFGTl?^8qtlY<6k5s}x_)>omQO+8KTc)i=gckS(ewT6ldzPRxDctJ;B~%|A-HsV2jxr(JGt`VH<@doRzViBDEg-2+75I?3Fk} zCg!#8%q4AJ^SPz_nRIi+8K64@E3fHg29(24j-c}W2TVBXv(|O?Jz$246MnEFRR2() zEecYR>D7Ss2r5O!hKM6*6*9jyVBLczAk!=YP0`4VkATE}7Kb8OLv~D5M6lGL*ngSm z*pST#n)(kD>l(7zK?9Jf*9cuV-)HV&jo5M))aV`)7aOw~{Ksd+vyrSNJ1wk{ER`EG z#r8i3)X=z>Mee30f6tXi#jb?67Mlp3`1JK*HjRR z2zAU2+7DZrkmIr55MQ*!5WU6TmTVwja!u4Xv-$kO4e_p-b!t!yP@Gj_FWLsxxgO7C9b0>?9EHc^aj z&DyuiMk^u7At+Gr+EuU%X|=z!U3#(PxCEz2+#eP9i~e{(CrqZeY2ud-taXEe={k4(dzxL~&WYe6QTIvK9d89&?F;YXc&+w0xBgNoJgqd}BX{W#R?T59~4$~`YsX|2ge zgN8Sg@ao!JU1yGwXj4CI(A|%~Bn5VO`eBDUfgN6MPz7Iqx^Tv^Av|%qI2FhGbHfaG zt9VF}7jzawo?`VQ$yJ-=BbG+4G=`8SQOd6&m)Uo-+l$B{KgGh^RGw#8UmIZAzKdm+ z95{MlwT+a^EOqR=n3P{f^Xfl5#a^nPhBICHtdu{~99hv;+HvIcUahTXNA@In^jA8v zuPBY|1d$`{(uu|M*x$sAPEhVeoy37o@Bv+Ch=k5;7@u`cEb9y-n|D_1=*%K{+jH*I zomp$_$K63)*nL_$Rwb~f2~XDq7zNVj6IcSJD-+l#O0OocexWmGBpc#Sk>ZayDSCHf zuTjgkZcL$cXm@yNq|3WQ+(^Ig&ZgD-PdOvAiootXjyCM*IYBkXEx?*n68>d3H&|(@dR~+bt zwa0Z-)JbBgOctY(;DdsXiuaPh?thMmeW>Q0(cBx8{QHP_wl|C5r;dmhdt*skeMEfI zn>FS0j)f7K{A^f)cg=rzPi#-c#~OI{!5uiNP)MDIwamoVPEop%EVKttOpN1C|*s4 zdV@MN0e!tk96Yb8*5)=dFQCvqJLk==G+1Ca$nY#cbX;E^kpq< zV?d7D_#Z6mLyX%pP@q^@E1I@V)QkV#r`FJInR@Xm75j#5n}H$)B<1R9ttNciEUH;D zvl;|Zu9j$(5!j(v1x3K*wK$gBoGyF3*Zmosl@5? zRy;r@O^VV;df0ZF+Gsb7HuJVjA@yfi{X{z?4Tu;(`lwj~NaDUtWb{W=^zMGKu|G=; zv-|`;726+ptv`__ED@FcSqrH}V`hjc!qL07B;FP=&#;#xt`KO2rp{1l3h?Sdggftw z|31UqkoMF8tQ9ZVCzcIhPb09{GXUavZ?C8|kXafv-p35C40`ky;R%D2^36akEEVq$ zWDOhT?q!DJl-TwLPYfmlbD4l$oKDcs17Wh}+2Zm*)&rxo9mG1qaK{Z|UobXEn1--H z4adyJvoEi;9ngo-Q3TFvHN9RSUK+w$U}?@B!nUxr;+dfca@LB~Ls<@zrfF<1LLM~@ zOVUR7;Ah#NoNaM;9*)QZ>-B#|u%)ch-DxD^Q53%!%|1ZzI%o_OK5CA8`51;^vsetD z$X)}g{S#Sa-HmfJ-RXhAaw|O_-nK>Do5;?#dmZ&serhbJ3x_yUuArSBzHZCWJ9MOq z8dUL)+xP-g8G@E8lVLftM58HiTihZBOkpdzWO4sCg{9%Ky2agbD(lU7Q;U1bD6OQFH*#sY}Tq4J!=DtNiSk^-TSjy2b@H@ z?=ONu@iy1Ss6Kd`T5whuX?a?Hjat>8-WEq>HbWcP*(3$yJL~m#4|tnx!!fPZ9kLX$ z81G;eU0iV49jxxzF1QQ+?oqLEIeV7(atQBo1Pwv%Zn+3(Sc-f6JJ>YvcMpk;?}CRZ z;_AC>0&6OUDlC&PUnJZLR)Cili4zLKw^VUk!OYByM2i&|CPh5Af<^P)2gQOF!2Oy{ z99+SAHF??wFOz)IHGMu!jfUU=mH zD>-ZZXeGv0T!j^1KYV^noqfP{fYb*ZMbfFR183VS;(So|t4pg2rTkN#=`bIC z6A;jUvwtv~+1P+a+nY_Jd3q3V)dTB*4zKz<=w}YtHPh&JbtaRfE??9XiiZ|Y4&G^Ur#M<}RAXX|o@3E1g8S}x^ zSToLUhRqiP*T8O0%oi`MfkRsVv-o-q8-?IL_mx#G3==L{zLXGDyx0ORcG=_6KxT4f!Z&}87e zhY?b;0m5%Lu=70fb+Pgj7TfUDD~yie`X`iGnqd*zq%T6I;Md(JKVio>TP?o*4@mt% z{O5BvlYJq=ztFarUB6%(*<^9?3wW3$QR7SY4s(dLU$Q3bBeCsEhO=Su#8<38lJu`w z7Jp%jIQ12q2+$rIS$kF_Ufjq!)-TTrI6sgU?}Vhz1fLU|0m6TuCVt<@`tg&~MC{k> z<#sowf=&b6ByGgw=+KJ6&dvm@z+o?8zwSK~P8-_@wf8i!=WF&nyD6f+!H(zr6p{W7 z{Mvc(`Zp|!Rf;v=U^}FWt>1v07VgIXg{Q36b3Ov18Iwi&CN>h11pn^_&k)(f7` zX4Z}YWz~0CXl)ORn=cmR!zZs68}mWfhvHy9i;SK=PFp{Qo5QT@)fFf}niLY4aJ08W zi>YaqNggMjaI1hfxq#t*w}3Xu9aL6}Sq-l&$PKk6a)|Z)1npckZ@75Y%@f zc{?=gvU}!sHjDFFBgL;fSZkg(QiSYe!y5HkfRz#9cgGP#f|PTMo+eN@K0?gdi2$jt zXjgz_ko)%nEass5^+NU|o9XUSgrN~(yjaY7LM6T|#;z(w94=-<*;dh_gbg(s7A70S zx>9Bq@0GAAEs6&-LwT)psKgl){rV4`q&NQq7jq(5bw`!5aN6E<-bjL`^gN**Xh@seJ zvHDMN|ESpYCyu|KTOcm~345-a?QXBK3_SJ~PLIaFeI7WG0&&ZO;4Vq*xP$;@vbb`I zD%}k#u#LenPR12PZ6)HDE9~3qC*IVeww>+7@~f)@ zE5GNh_@o!UKh2>~pNZ<64`X>EgY#4*8#sRr2t{NNil2!|LA)Hw)ZNH?#zf_Sgm3y( zooUdWOLzd|UI*$&N>%mc;$tIE=59&+Y2;1#CP{<@^QHVd$-N?&k7T@&Brb>WsD@EX z$a2i|>$jZQ>rMnmFLAf3#$g{5M52kW2Jyd`_+aQz%j&!gmA9(%JeKSJyasQ^8b)iq z;}83ednG%q%7j#$tI5BJ)SI`#g&V3Mwn7*L;r=v~@BSYc-tc3{uFY@9{4WeI`7i_$ zK1E!w$z%WXlf)TJXMY$^3FZ-Rx$D;F%^834Ez!9F&)_Eqi50kA(lla-!BBm-Ws@EL z(`z4Y4)<1kLK|e_W{^B?!DiY6%mZ(4B*2AuDhBh`oP1o%kUC;G}p zV5jgw)-Eti_0{4Ok7^TTZZC=+TZqe$c)W-!s*5hK!_=HvCZ{!2eYq)gG1wfJ3-99hnn>F1O0d=;jx)r?Pag*CN2J5+d||d zE=7>zFfT5-=wKz#kQ@{@X*P-^97dYMMk%937o&`nOQ!VA1WknJ!3MdcLp0Q4FZOhk{S?lT{IO2KZ=vJd3lnU)49OX#+8(>K2_yngmH#O=}g6dQe^e478wnr)Q zAEx^WDte5dzcB}0C$mE^FMWUlP#G}eZ&B1|ych#KivJ_1SKx#zZI2DGvTA@R44`H{ zih5KP>h?NnA0t0|3~eX*Q9kwpR<#j2mjKW|gPpkEQZm|MUV<7@?26zYC?WFZp}+6B zv|7{y##iZ;au(6CUy6AG)V>qa1xVxI%CgZ1*;r)hzAUoQs$q~S>CA=U7G?Z@|| zPp?#(4>Y5#j%YXl3DIbzgeV;;A(|{srXXtb3qRs*z1P_?ZTJ))bblZ8Afz;G8d7ao zdRroJ8vT9!KcfCkqG4wVXBW<_(r?|%$#9j4AF5+PnNNpoWHy6{QiBZt-{K$`wHrRa z%51)SY@Asb2OQOSjSle`&R)n8GEBD5?Avv(YN?Mi#m@n!4g|U#Kw$7}gbP$Z!I~i# z(l|5L>JM&UlG-$k+b8zXnAYduzuJOu$v2%hkD_eUZqlheiMSGkg6Zn}7&gEPmeQoP z2~7G~n}APMe|?PjN?@&G3COS<>;$rgqPMQAp1W{UdX{)glp{5^bn3Es`fpm#tWRsJ zTaAxTU_C2_?a$ZNH{0fYR8|jw$^g=Kps16!;($h)KKtn4eX0hJ&;}Qq`UR+*B7T zLTQtz>%j)+i>MV2a1L$se z>ni_1XKBQ;BtVmHjz+5MuuTss-veQ)1sHUm>F(gCYA74cD~R$yzQ7!9kd}Rm z4XoCs3a7qS4gznTv8$`J<|!hCU~LOfr2dN^ zoeO#lG#n9xPtDVVFjWx!JQ74a;64B zb*nfsiFEih1u0O$g8CY(eXL$?Tjp{Tp!qv12SGWsNoDWgkchEH+U0s_s{5!j$Vk1&aDyY#1DV))&SsBZL7yHvC=0V6bc%wz3j9D{ACik#ar>B?s0u8=4~g>cF8oGp zQXb{+zZh062X&;22=fA5SzG8;6`i9&XBzsd!RUZ|7Ul0^D6&LaG(kG~FPiL!)rfQx zNT(Y5Lx~0 zC>ixJCfxJQ1JAr3naJ@FZ6Z}nAYpY~fq8Ir@X2aJ6t?}I7tj-pqp9&C#`aIr(i*jM zsrDdh1Lx|Ss-FiH!oa6=Eq zWG4OUuMJ>CF^Y;YdeM&8L~-79*=Ba8;}MTLxkhG>2Zp)R)vK6QfRda=QCE`h3rI;I zl<)_buHTGy zP!WL&XV8Z*h=Y)vJ1g zE{l&w@{YWLmbMo6@Ng5)@je{M8;EA3coX(@RX(gXJqa~JkF*GT-opl4H%*Bqt6MOM zfZ2V4qHhiO(J#+HB^vYC>>gJl8PTFT8A$Zmc}#$JrI`D;R%mafWiK#yGFZEmq}U#A zZ(-dUb-g_QdL_5T+%4z!!YJ}=2o*xZmJAB-gUf>nHx^v4s8I}kC}0U?*4u;=j7hZj zAQl;{W7KOHIbb5cp{P&9y^1*hSMujmM zCBn1Ek7rR4$sekKm*c&yw$G;T26$U-@ui!6=_X&g(U*SiOF!|Y>wM{2U%J|tuF%rV z+{|1X{m}n>r`eYW-43R&B5=vk7DlFy00ZPHMKC&?DNMuS=}Ixw*`*qHoinO;5wFD* zm84!E8I`2sj8T(uSV<~QGSF?8oVwrliG?JblggzHz43<^{b?wG-zy1A0z_7+t?FKa zy_iWmhIn)K%0F4=WZ&;4IdJpGAT8evRN432NDexw%f8DZPHlilyuxq||D-COD;TqnR1&rX>Ypvz#!f|K%h?@G$#XE7ZV3EMjvy)xMabavnS@KuA5cH+G11de78SATT;p_tVN_LO0J10-S45$A0;* z*MBY|mv~-#60|$Bj_Pc}1>BXps~?hgd(5cDRikwDLg`~l3OzMJrbx@+2_v9G>~?Xs zrJB7~H1hloR>5q8zi6Z)UU~7gnzSPK7sD2vN2}3ajJmzc2PuBd;ISitjy^gw_GaNC z4RJ=T`aR$i94N0h!2vi)VVdE_eP%AcB|G@~=gDAzNIv~j#a zMr(S6;__nm^ec(C1_!sY`M~p3uKUKlyLP*aUoQ0?3LV77f!`8 z&|Va-dET+(c83~vglDH17G0&^T@N@Gkl%1U+kaKdY5ag1FckNe(P{Co*2`kvc;2d- zLc9>UV$*o+kuZWP5G6XBBq594F=p64GuIhJ@;~Or*w`=^tDOJ>vkT3+Z815MjW~Dk zmO00o5WoHc7W5}9Cv;#?2uHp?1y$%!&G$+UeOiZX6lWC_xRRo)Wq4_Ed`6U4a*+#EtRxAH}ei9D+DjPEs?v`G|$CLpaSbM`T90B|Y*2I^CpqA{N0 zQvc*8X&K1Hdcj9oNifZu{?zk6OnZIMmT+nmn7Y?Wfdxu#t)teov%UP*ISo zYJU_2hiefl_-ASW)Wk<(AR=x$&P>B;}@ecA(tRG-s6hbo-?4C?n{Q*xC)cTmC z?pjBTl11_)-jt91Uc4}gx8d{i#L`K;QxhXVaEPEi38ohc={h=4(Ce8odE(3@9?O5& zENZ^MBW=@YIWK^rub-gt#^M+AmL;F!L^7CaiNf|&v{zPJc#fVOUyia@)|8g1XmEC> zmYmyC&T=X>SxTi-cmhSGTDd6wu!5@g>Wj+{1no>Vfz?t@GNaRu!q7$cmwYPz`vOmG zR0eXult^^OX$#n=!E5ccC-c~b)O+?}yZ*4e%0K`lhE3)l@wGzSnvB3Z9Z$V1=0xXA zb64%^>@~(0&;nBse;7f-kvk{sM-1@??wsnOhQwb*)>q(K^^aq}o03(OLR32T}S5-_I- zknNYd_LQ0CK^2+=JrYD#ZEZqpcpauf;r&ROKllp|?* zZi36YknhG+LWa9BwOCn|4;@kEyVb89xhVfCA3_~{Whwf|Rr&6b-%-AywU$Hf(U_`< z>h4@jI0QcvMslBB12^u&=G0C&WUV0|8zUFSR5T{9Q;Ml$*Aa8F;k6@|=mQe5av}QO zt$y-|>hax(mdo4Wb25#wRhRd9_Wpl$zH1d%X?#v)g{Yn*CnL zYi+#dmH&tX)A&`+W{MxD^Ip8*Me$%duW!o+S9V$a@uw)p+F{DsYl(3jwge+m z!2(*quxOd>ciUQq+VA$V3;@*Kv4E0R6z1%;9*-};>g5ZG@3V#IlwoOYzuR0|xl795 z%YLf(rpke2&%?d{_0rh*0{VguCY&MV_hqQ9xQH1f9Jh>@^7~V$UXhLR&i3dgU)!321a#%l?Rxo= z{d`n~)`odZEc*iU2eOPGA+H>G8Cw+yt`b=i_x zLM1jxDBJ&HV8V5c34rupVAt6(3qyb%b$smb&}Ao$AaDc&>Kr*w1AsF>1%wp{r_v$T z67o@z&ZJP+Xy)ql0obFxraIF01u}c&ex@zhP8xEqSfa6doGj^QB#4C#T|@qn)rufz zKU0aeTQS%@M*AgZy{df{P4oKD9bNl;1Y@v0G+1nQw+?tsBwTWIgV4co*lM_IKHH@R z+plRa7D+n}xkT-kdG#me03!P?_LP5N)NE+C<9pHeW!|FWIyBrtKSL5w<(4LAv;UKggA`3jGS-P!?oJTIaPK0I-!T$3Z-HR6dG zmWh}|IH_tKpDu}Yukh%n@P4m%3+c0G9eQmUOSx6Z#h>yxsiGHE{idEts z`Zb^Q83n+W80SEv^NmnB+2q1!-0sT55DG70_Yj+iq**+Y<%$Wjcs$ShOenK>Tibql z@H!cRbiYp#evul7`A!p#;p;lu8)l(cSWNJ#Mgl7Z7^UTPk*03P_RM$QppMiTP}jc! zd#KUQto=^wcC2gH)I+!n3mV6xpL{R-=WN+#G&@1SHFX+hjc9zgl%LEJpOhSktPP3j zl4BE6^xhe<8qZW{r-A1|IqxIAow`3v%8{YBaz;^c>PP7%sW?yqYqaYDsoUj0h|X6( zflI5JQxN9l9I+kK!lEPJMfhXW4cIA`ClpHd#UNAjB$&}GH-j zG#dKqrw8yLUbz&tlEVhO%)SS>xyZQsdlP=L{wC!odF8=HOHx0Az&}b%x0t}9oSOiU z@~s~^M-+)`uOjFr033hFsb#cVlpJ3J06XlG)KX%ceAfP_QO;T|pT(I^Hp*E?$$ey% zVwZmnW=9l{t4}&4m*C?@=z?hwnj$R=oCFcN0g$O%u>CGcEdW-0uQN$b{e+gBdRPI` z2p*MV696=LGkhTvxwEmK*zZg&l259O?rBm!Ah}0|I0tW$r)+km)Ttwn*yK~X-Zx0; z5Pj}-(OZHeHcC0#b(6uHSeZQHbDtK`W~nK7B)w8T;j|O^bdvB!LqraI5KHMZH}0cf235Y7Q>pKcgXb zJ^>rGA)BI&2)B<%CjzjIKWkzRKnX}(NB(j;n>BN;BDaUpR8cG_1+EG-S zT3ThUKCXLk8-y^`v$woiO0%iBDSELLFPf zqke?db4ln^o&@qto3#_AlGIXYprPU$U)gC(-QsCPnEe$aOfdbopcEBOnvpYgHGDv{ zGix2aF5ML_LH&Zrq&OHSKDr8ej}x;SqY?PQ4}(Y2^5iiLo+Qjr4)P?RiY#WtN1j|b zCLeok>dkeUWK)5m0YJd8$C>Q$flOV1zb<&OfDY~f#;i_|m> zP8<^;O)B&$S+tZNq$^o6RaX4&OwA|*$(+cf_u|NDdD_v+1eNO!#|o9ZWsx99h|`2b zeHrc&;zB2FZvD{-Gm=w_JU@aYEV0Ng8T^swzbLu#MdIt+9MuSp(ozd-or7y&B_UMA z#>+W4O#9N=H+Mz$>-@>EGl=yb`o&kSik+|XB;NTGf$vn*=Tj<0!}+`=Z?szUoX?-O zrO~v#UhALEzN7|G_M$MXww?r3=Z?T8QM-73dC+>gU+ByV1J6F(UA^8+?6D=sWr(OG zm|93yCBalnfAM?eS__ab37+SxarI^!9LOi6hHl74x-iojxp)I$Y=-Ra?d2u}CpqY; zw=)%Ac{C)pmmH(<3`N>ew%&p^sLrt4#bMTA_IvG0f~khSOD#F*3N#cT>OC9@jKaKg z3N&!bQ})uZ4FtBHM%@8*@NOVFVG{B+Et=2*uG_`7FiW-SWf~}67sN0JowbNS5bSvt zy`=nM%r%F}oryvRqK^zz${9!Ho7xWiX7>H|QqBn&vNPjo_8S}|sUav>O^9EXEyN6* zsS!?Vq`i>qlPn3QtKIYmjleml&02)(G+-aRuI}02C#I&-LmV7b(5N^uCi?xS{^OWz zg{OL2&Vb|EFJH&@=_ki2`Gloyw+QEmQcFEgH2V6@u$xKBq1_s^SIQsYr6_l=^-^|M z5Q_I$@u}miGTgn5t40JIwHJrsm3n6g8DVdn$~rUPu8zusk4pKC5S?_p7Kb|#L} z;&n}0+K}u?=hqmPP%dZemzLx8V#9i(nZ zHaYd^27=b*?n?V*(fNNdbt&f)4LBTu3zkTh*v%U5S&OP%Z6@3S5QXQkwM#&oF9K2ty^{57Dj>?7=`ECzvde9rwcZS$gk1{&4hi{;BV|x{U z>{%w9|FnkJTTcp75==9ozW^=A*Ei~EhEk8-N}yx^v(Sbey#VET3*Jjpx-DT)UC#?B zA`->;n0k?X^C1=lQSkOfPU}%Q&RLJf!k5zUi)R)&do?YV9OFTTbB>XMl6S-X~% z0oFT*g~s2O!yYO+PV@VF*FS2GvL-XI-f0_gG~t-!nhaMJb4Z?2CJ)|^1=wYDAqX`1 zR_+h*q0*QltlQXpOUuq2nQ5`a8@4^UIxSLQPb#}7Lo!%szyKFbX3-+_D zX`Zfb&M9SNq4{u*&RQC;_gbDK32keSU8A#Fraa&ff0}0!seN(gekLHg5ft-|QgN!MkqtLJAd{F)BL)I~G}YdERyRvKS7d<1W)N8t(eM!VV$0bMI{1WQuOEJ1)r z2!b)N*k)&y!JniawN}%5l53D}Si>p?J#-9{fTim$-7#3IY2#Y=02=2}w8n*kO-K-R znB;h)S#61>ST6QlK?281OsF_Q+i*k*6z5F5_~ndh&>)uFx*dFuQ7$(@gLHw`k2s?_zTG@zM%UOOLhy%Nhb* zsXP;bz&ANdi-)ww{tw!}UquQ>Q9;$}U=>RjVdvqg1uQTFZ2{2)t1)2s|3EScNHk4{ zM}Z!BK7rNxjl;g12dcWPt2(#7jt~-o7!H|U(G=D)O(P>tzJ`mG>COxrl=2s7q)$(e zLQgZo@$e1HUUt?|99;#f=t-;O$%bnAwbT*`4ZT52m&J-$T_5K~jk?l`0*zE>6VkH( zW1+zw#ip$_l7rqtC37Xs));W%e=y*Ml~{C!0+M#&Sl}uaJ!%k$qTn*LXk7ghAJ~II ze2Xaa5xg8>7HL++XJERVYCDQ$>Y-9%-3ks|v@(uXty{Z(HwINv z_8v4xcx*T@pNq*XNxj&6RGQ4 zs;{4;rJ7E4Kp7s#sZHJG5*>kcXF}Em$=-(|n!y)b z{T?Kg&TS>RM?KJbg-|bRJ)2xoaWRuriOzy`YEG@rN_zG>lYVzNU>* zgZkpiD{yKQm@@5mH45&gTdvBxVy@fo220C&qglQt?;?_#+jnv5lqo;^z%nz_-ZkAd zk6R{cgjQze*bZCII#bKzy_s?XiI{AI78S^HARaB^wKhvNysKJltoDdlrCeRCXORLN zbo=F66)(t@I)lDP z9@qLNJ{<6#Fi@45FcK7f4>B+n4;`#JQ!ikoij}UuMj0}4_cfCKc|OJBBDn{j*Q9~z z-c6TsQV3jEw9JHOxs218cn#CDMv{jmlmsf|RT$L{umjvD#zwD&%E=~9*(>W>YN|sZixTa+!=fVUBbVb*3a(P%z8i6+E7>&c zh#q~DpLO*O1;#|RKMr#<<-Q?KJdHAswpWJDZCKLR6amf!pz&FW+}9LPnJNDJHg8~C zg>gX-R7Ebfr2n78CDU-~-gFu*IbgI#CCP!KVQY(rKl%v`PKkZPQEg_fI+mnXsQ#mA zW)ME>+g|NI0EInTyI4Z zFEJ~zRCl?O!vR#T&$aC;{>=wy928OecK&dH;CZ*I;@vMV@yZ@XBwM#oQeqFsFa4EZ zYoc+;D3>oPibbuq)z8e`btw#*=Mloi8+CufR;p%rQBD1JuX zcNhjoehv64F1vVa-4$3vu-I|BLTVaYs2W|O?J^$Q4>9HhSakJ!JAcjK*>3e$4_EFX4Xj9t!K^RJx3 zzML;+&xxA3yt!?j3}~EO-B&|!BIkT9tl~4gE+!wR=QW8?`Dh&MML_36k&mSn;f#Sk z68kzHTHxVCw6lv`2(68cxxsKh4eim;>sVn`lIqTVBRz zB~@k}<(z3V564+9p1SNphug{F+&T<8K{iHnx4fyzbdTgHLtl&&O{CI7G=HI1j)gUa zhoQ|wuLe}JXg=siO|j0QM(kQMoI_0syRx!Sldd0X$Cem207UH% z(fQ#^3@uPql1#kNI#&$BO@QIV+2$CD&Jd;}jlbgWpdnwl!6xs6fMa8JCmhRqm4@)4 z@Pm~Y(tuDdbuNGwR0BYownE_^g$$dUnyn3%j!O>V)#J8c08N)L2X%W(tts4pX#h{b zNYZ;PzuIk~%v$czJg&_ahL8R&!6i#jx?)$3cOl|rDQ6uJVXWcsuOaaTIBNP*u9WZY zstg97BDGiD18VB5sTxHGq@?6oppJC8s0;@%i1+ruBqA{n z?YbpyWN58MwQd{mMKcr6Lh7q~RwApUEs#bLMYBl%pof2A!%HJgK&7t_zU)XlDbZ{N z|GfI1=BUS^!x>Swf;X=FY!2oeM-`*s_Q0M_;@=g#osHgkzeXq=<^m+x7i8aUFD=f3 zh@|{OxO*@NOA(#J>0o#ff^O~Nl*xeGl_}=_$oTs@mzr;(1kr^7x&T?{cCAL!hyIY! z0K_t&&PR4mp#;z=3QOTz$&y zmDNFHlC<~~Of23Te+4%UE#}yYR<7Y+19-1%=CfrmUTnquT-y=mnq4LzvOlQ)+GzWI z)52r+`;zUnD|{zGFL<`BqAW9)2qeY#j0HWI2bsUa7RdFt@M$w@@y$?sze8iNrx&{9 z!gyk#OKH-M+6nt4$6(9=(R(ZiybaugfZ70edG4&eG8LO0424O=R(qe3b{lmHj(7k6!eKaJI?w8SyH0H8tEPpK-^o|Cj(=o{j zSU;=0v@2BhFI zh_^WeF^F=F=KHUG&V+!rkL~xo@0a}ctaJ8t?Y-AtYwg=Q&M;7`G*=0i3N~hL6Q(te z#RpnSaV%+N>mVNbs%sQSyA3KFGMaV5r;i($cvZcC*45Z?ND})m9pKI=0Q#z=E^@@k z{D-TF)tlBqsu#5ofzc?8Ll{WtXh;3AbJ>z%$$gY;hL2%7NBcknl~S7;b^=(9Q@m(d*WSj?wr>Pa_FzNDp>*+H+^(rb=3W*D}@mp*>A{aRCd^PH5(# z#!kEH8{6-y7fOs2rLLh&G)F3*$lF@MfEiKDjh^7CQ11vDiA0BFmzxEi5@8KGI#`jWor>a79Z ztZJ~iTaQSWa>S?F2>n2%zmo-Z2NS2@q;oj2QDK*8hae3LrI29i-5jm8G0=G z4Uk+j50H1&(O&q^mGhvzHy@TWkmHDx*ZTlno*QbAK4yxbS&z6$z&Z|}WrEEC;NBZcPr zT;?Wyad#mn;)f?E*5uIUtha!>P-ZiL5WA;JijDp*@ZH|4X-J*ydtG#im+T8Xy8d-rY)T))1)VVCuB!_)esPa9yktL`K9_Snn3G`e@yk$f=O7gf?L zaTI_7YNeFV-!ri#jv|+o;Zcf29`DZUjXr#WLO~ESkt0dJ zg`aEDr^?(NN4)r;s)uSlZmf{i4WxlW?G}wpNDPlg4M}u*C6XACv=Deg>;Xv%Zc(d@ z15RUNBWWJ^A{3{WES2Vw@xVxk3`?fx$M8DWwY?v-kS^z{@6P&Yfj51-t1i;NLnOtO zwadi9nOUFpu6YEw8EXXX(>JAWNS8y8QZ zl@`sXx?f&uAoM-T%C(4Fz34`M5ATYP#0fJQnj`Tl1)KiXLx>$m|EfCX4IR_<#qyzQ ztjPWmO=N3k8$B}W`xA$S7k;5>O$LKPhxncQ|mQ;u076*1c&Sc6hY07CE~| zr%@%cS;Z-Oy>Q_tk^yBjU0!7+F^9K9BNbgFwO;gnVk=KyQwb88Z`N1Zrykb3f}M?B zbvqN3q^hqBRVHjbR$z&kt6@zZ%Z#>Yur~09{tE@knwSu*s3oEbI`awJ1LeBm!$;jB687-&O^4k z4sc)47A*SW2dIlfQipfPMM-rY366sz^f@NfvX@2EMK$aUIL&ytZs#B+=pyzU$*B~D zLR?z(#Xq|fj6AwO!Mcwd<-$PDfq`HhoL@yK4!3)qj;?Q4C__;VwntJtGVFR+6C!bv(X$;AF9aEinT3atimPnxdIbwwMAcMA4=bR|8b)c#=@5oJ0u4{4xZO^fD}VfEJt;nfG{7=9>nKdEs7Y-EVDg z%-U@BVn0pNJLdC}QVFI)iX4QdsIx;?u^;$uf>T#(J!#Z*T1h-B#t@|8>f4FL3LSU# ztlaq~XRA1pMh5d(5k2n0=1YB*S+lDv5`R~_5*b>2;tHv@D0=4ei1xhtmCAITdcTty(m%iz87jww<@D2#qtGn`JRn};*&rI#~K5LP_IPM%9B=I>D+ojmO2LF;jv+d(LO zgF`$@_k?~L8F1;gz7$3}I=x~pQ;LXH$R_ULI_NL1{LqQ9xp%1oiYU$c6A@^>I;oYz zuCAAl;smU(?bVNyxtO0c@rF8~wprht5PyWW4h@@=#X8;c) z?!Lp8JV1tO5i~w>0|_uO>s3x*#`%>kX4t>9#g647j7A?Fz4E`^8OEnq2qm;9P|d^b z3Agu$%9c58CRar*99T9#tZMOwTF?rfMoZk)u1vIoqnU@u`E3vjSw3^U zlIlvH%T?nOy20L)bb}tYZV=ZD*6lLtLSO2Ti{xY0_LY=Xv7|^vdx?mL=n5)Vlwi9w zeepvK9!E^BDHPpcTYcs9QhUGzJBw?hl*K}*3Ga`JIB)u?~dntNhw&>rKIr622I zJn4|TrG;eBQIPOGD}yF#ZMAcGiP)WlpG_ljX2CYOnP5FauM!|*fc0+fL_9|~y-J0& zerQ-CgUZek5s7jN{3T`bvc=GmFlrq`(D0S;?D14{bhXOPvWjF-Df3VyS-BH4@oz%$ZWu#x_WU4{CUsdiNQ<1L&$ChbDh#h*hqZG>to zl1PAP*B9BvyZg%%yuZJcu}IP08bqMB@J%_Hi$r-deX}*1`pf)J_LS&lrDEIy?(y}4 zwW<@$Es;@4RmTv~rCGJJdWDQ63?3v0Pq#9pnw8$r+-3yZxx65%zYcxUuUGK&R}tJT z+xK+#g^m%HKv>Nv*$V`y%|J@akhX}fdl6d^gN5*=U)M+!>r?tJoR>P9or~fh7|E6; z2VGz%GIRP$JnHapRm(xTqOSyBnKlF=L9T?lYM4KdYwQ%sdr@kdT!!pV5Vkb0gluh&P)a$Yl&y zf?sBfHH?Of3jk+C5w%r{oRAf9di^czSDoCmsvsgo8+y@UGLw#!Gp4<9GJ>*D9GFQv ztC{anS*M)v@T3(~cdV?QL1J@kB*(adkD&y#AqR7Kl9fiJUH00X)l7NZ#+4brn0As; zWg?V{r_j*1*_31m@rw3hHK7D%9;AOy80+^) zW$3EEbv4{aPCPhwmJ2T}zh|Uqh>6hy~F!;oXatiVNLxU_YJvNFW%_FZRkfT%s zgk`t%dN>1d5QJ%xwnVtS`A+x&FPAyjd(DH}Kee%|Glw^uP2lIw`cPq)NI^b@*`s1r7F;KuQ1e37 z-tdHGxLMYBW^VJWCY}tZL$Wr_`bN4a9B5`sEJ-Gl{a2^P$TAN>+qskuURyE48V+VACr`zJakg*sNH zvNhYq+C&sJ2aL>YcB0bKiE4+<;buxbWCSz4#&C3+Hz4i@MXuRFe`Ew%T1)wf8Ta1K;MmLHXp2M!^v}De5Mq4vTwVl^Ucj0h#YSiv)kJEa zk^+M%9NyB`1=yD_J_c9VupE>BkJEvPQjPj+JNExS2aWHz6fUSWC5*q8Nq9#z}^>}HFp;#9?HLuC? z+Jdq`X1o@z#g@zF37EfbCutd8TEu%x#Jfq7nPfP~PT511B&+jk{xh5QloZilz3lFj zE`^#ZOAZyem4QE1>gTP+s8TYI@=$6S9j>f?7u$L>zp|}O>bC)V4 z!e^LC%C8_hUICY#Rbxifzlwddj#EW%Fl&PMI!VkqUh}qu;2Vf!s(?sV{KPzBUoEn4 zr-v`?&$&jT009ZBAPi0tXj}}|Pq*O-`%*xH3Tm;JqKRwVQ~KwEKDn?5rx(c$ zAV$WZNI;hP(;|r_>cq!jbfli(HaNO;4d>8@EhR8D>j=!Y|EwA04HHo7oT=fvo4Eo$ zivCT5uvrkmIFOeUH6Msnh#kJGnS^paC?#`SxV?wxZaiZx;v;i=WP;bM&)k8o;D^c0 zdE30kOSWlVrkAN%Y*5Yl1Gx@jSLedB$a--2wq~pvq=D2Rv$m?ionB)eY4nvwXT0J* zYvM48YUcYw8^@@oqY1u^^E6v>rI76)I6(&IsTz>gGTW~@?lxoC8psV_S_VA```&{0 zp$)Erv+M?p?tBGRRCojpRvmo6M2r1ST?XHJykNT-3$^`Zz0&*CWyJ6$7!kVGp^t)> zXnz?F=Hb|zuo$tuQ>OM`y~WFz=#wYoS;U0MU~lYYI1r_6(u;E#bF5_C?i51nd(B~~ zv6t=st2R3X_tZ!-t?{>Z*_}nxa_YjdQhRLa#ocA>+Bn2U+Zb3b+fUKOx6vK1+IEth z?EY5MP8vl1*xZz3uh^4wjFyNB8B86Az!LLOKJ#GJ@pi0_Bgg5yaCSmg&4SaUcCJdc zH?wMt!zK!eEI}%gOVx{Zl540^){GWQYe!P}6rOMyL#>ucnb><1S(O|5q8HLKC6b#& zL6QEC1m`JifMRRyKB0lT= zIXjChA*KFYfaS<6rmaIYZt5bcOK#|E!(}dz6P&RMkd+V5*q?=JGm_SO$q3~k>wR-X z^XzI0Y4bj(p|JupV0NE1R*~!m237)Oml)3Wg>UesbKR>TwQ7$$RF%XQWMo{oq()9~ z%}NgK^>VEtY@C^u9Bk@Y8QSc+#b#faB#2u|P~0cp1&A)`0zOciHHs_j^2v}$lF}$5 z*V&z4_!r|Q-I{ZPY+GU2Zcs@9;-jq&L&L55yR=CG?VjeS4yObiQ!Sc z$ZbiHYmy@OBtfKc)h$VSiT?ISydgj;m_)n_c}fXYd1;{Vi01J9&FnO9OK<9VtRD%_ z5=#Y}yyRi0{m{&54t?p$qQmG;pII|!lRs+c>HSM22^ zSucY8HuuK3Z^a)feq( zz+np;FF?OAdxpO0mHvTwNt{usvBFd>a|gM6jOnAV;eXdFJ<9wpy&gL`^&P*)KF-{v z&<`#%Ke^|jP_-?b9IjHS?^x!{^G`H*#`HO?i>0=8#lObb{{@}^{9>R zo^HdoiitHV%==&@=zy4E8pSQ>y6~t(GiPVjkzR*u&&}Bxsyt(8PThPD=k7z5x^wLz z@Mm>fTPQ8(GltEILNli!*qswPCGRs_7EWtm2yy5#)Jju#o6vL#gt>q zg)B~l8(#`z$!R#0(@+>3%jM>3&w#7~!VbsL~Tj+0}t!#HxmolVDD62v1IsO(ZVHa^iji#HYxv zcU@$po6FVjW!27iqXo9o-8*GMcid|*Kkc{~ix^U;RbzK@J+UG5iN6H@hLW)j;jy*c ztZh6Ku2wR!MSt;!?Oz|N@&~=<4{*uj9S;Um^i|^x?nbzJe-pVmqwsjv?7GnUOFE5j zD9LTX7~teu?2Hu2^(;jn`eG#l)~A1zj+F_0@lYB(GR!%TMJ8DK%*eu4Y1YRDT^S{C z!cNs4GMMg&EH{s&*Jb6rw_qeUwbH9Y^LO4S_cqv|GnBnkxsDR>9@@yMrN7fK;qe$B z(@R$IcxaKof`tmJo0l;bKksL`E@-&`jhXMPy$ zDs5AIDDsfIdblg2q?7SN*6~>*xQ1l@z(v@Ec%R29@E~ijSqC5Zn!!qV-Q7|J-5-Hr%iVUR|v)-o))#A3J1so6biw@g7n1l9oSp)QjfOztZu(Af_E zjH7FQ6YCAaTo5d-H1=}4B}~-Kk^5T|jTyZ+r&nhk*B_Bx7wa^^uGN^PbfRAJFn&%k zISGdX?YzM!B>o!`eywij92eUo6xA^Q_GY8_^836q|WWf2)MqZ0JR*9(DE>5-d(Y^B1h zZcOA5enfN~w5)CT=!^dXCBw-W@VpgWOb|nB29~?@@Qv7D6;{Wk#*-qQj^E)?Ug=4_ zSgfksoG>oS<9unOEaaZV>Bhb%D-v>ClsE$bv9jnj@1RnzCKFL~KbF!~^-vpv*lBAI zqte%{hXINPAXZlQAb)87#e7*7P1yInUeqW_R^OP!4KYsq*;x;itS=CyVMp*6maMq6 zcE?ZVZgfznCOS+z(fBA%!_!McM>ukFlN1tJNxPRitdDE*vTNT5GN7FffoJg^$_ecW z=tVt+UL5B9BCE5O49IxvpemZv-aEmy5|`24n9s@itS09(a?m2EaO!*%a?eamHOJP* zuIz1Z2FPtV;a^yqD5!O9Hs3Ow0 zFY$+)Bk5Y3I9@;n;V1P!J-nnh@#7JGBN+_D<5HV|tZQU=%+?N7w-@>?{%?Y;C-74k z6|ol6VvXR(X{eYSTZ@eUEPDTDcehJ&_NX~YinP>%-f}5&x_M)gIm&18oiHg<5k-;| z`62lV$uxdq9*WL**L_Y8)aPUdKH79Zv~#nr>UgiiR`l6--Gk4%x#kMRP|ZI;#`YOSv0y1-Eon`$UJ;@&VQ@ z(cjc!^`-r&=$cx0?@k9nikxFRu84kG>zpd7b(=*><`jTCvqV-8DRV);9Mq-R{xR zG27f{r9H=TccV^o$20quoxC4q_RE~;5@NgmG%C7sn>)q*?a1hsZSHINPVJf7`9RZz z8^X!@x^5iq-~oHWtaq6{eO;%Jl_AG!n;M@tH_Kf>hZ~>E<|NM_1H%#xVGtTp+9yp zaf^*ZbGw3ozI?aKwWIjZgNLS@W1oJd3yAg`TcIk2efX6JU0e58ed5-iTfe=*R*KeV zR=VoCej|EEA3<&TdY7wGeR79%67|K}?R)L0wb&=xV19r)8yWwBIe!I4#jrQVNvE8r!s9DS+-6h9I{Si_m|oLaNuOW#d(4)OU!Hk@WxAu8^`^1e z+}g3K;EC|q@^H?|tg1O@gma!`oxvB*Sz(T?uyK&VKm=@=RJ#UJxLF@M;OcllFIvK6 zN?$$s>2OY2c>HqY5D^`HLSI?y+KNqFvpRB9OX!fR;|B%%GIv1KTtgoFG$MBZW*$zsFh!2{FH$xq9qtqlRl$C3^EO0J#Z%B=C_;rS~#zC=E7T4aCD z3VrcXguMR7cxqYRFNeOXKwT)_w!rPG4Ub>?%3af^PhYr4)Pc}3SI=#cpszg@IBfA# zb<7R(G`FT#aX*YKUn8Rv5_gTHG?3&B@52_ytcjk!#oSu(rTzv=eHo3C)wJN|^rpi( zOKp|nep}l>A&CntKN-fB%Mp^3^a+_cEj^U8v@nndW_|JKU4Mkr zc-6X-%jfj8%E4Nx`Nv|0wU@i_lUM3R%kYGP^mU%lk%0xD+e*w%JmX4?`i6qi63S0# z3Fkkd=F~ZB9pj5w6F8wH!1M3vAzV#gdi1_V;X&*=v=|HgaASnLUCdQ-ZtQ2;*Ok%k9rZOuv!ybWKi~BB-1SrESRQ zvOZRGUN*)u4>^49(G92EW!*--=#^QWaiY;`U0Hj0@#lwSM$sbYupTU^8?}P zR&N4@fZ?RDF}>&lVpyW#sexjPm&`*8_bsBj*wv}Yd7Ch@uC)Ola|KDW09&Hc*sQW( z*(xWYuZBWs<~(WUY!2tJXw$&jo#!cxxFrQt&lEk!pw`#<)JI&D+;;1aJt4efauV~b znw;fihIP>L#;)dWMmbM~moaPj3g5z^eGB#~Gc0Ao>2k_r&#MJNOkWloQzVc1<@%}) z!&3F4%MqpK#G-q!Q9*(o?PbCwYUc@E8=7P@`(4h5OmyJ*S(RJmN%sJ zvDvjv6cRIMk(pD<$6P$Le`Mt8%mzy03unX)&rfoU!OpM1`e{yCW@YA%>1Ikc;xB8x zaj@|6zQG>maVlxfuP7W!E8oLl#Ftj)dQ#3(2q%(L5gRG9pGq@l88$RJ3NcjFVu`5}b`>NUmoWM1l`DKx$Yo~{X zXaxzcOr>q6o1NrrKy|@Kk%!~WT+A1f9b?7evCG5b>6bW>P7e(mPCxvXevnSuJa2z^ z{&G=V9>)iU8J?WXuHM*11e%k}8ZRn5?$L|x0)Inam0@DEkW<$;@hbksxjck&$`aTV zl0AY-H^#O(uOzKkW@hTE@>?W@tKc=#hJF|m?Bb}M!7ZU5+y$FRn%KDE*#MeosKJG4 z`$~^BSvU$~FCSZl<&Eu7%4JsFzQ$|VV@mq``k_vr7ceH;OP_C*+5NiO$Tcpz+x5r3 z!^hmM1lrhgxk<1&a;3}MZU@h9RK^d#G2bdYHn1R5?y`<2QZ9FA$!xsTiWx$sTZU*i zQ3?@mB9u;dl7A(v;pIx~viy zc4^_!zH~eFZrrChqr;-YIm^S-O0bC@E?@yM$uQ?Has(FUv(5QQ`Z|sy=tX~o20};r z7CgjgHjlC_+#`~c6f>FTp$2pak1Y)c7dD5-CZR&MvQ~%DE|akZD;EGeEzDv>ybV3- zMRK}|Recl7bnAMuxf=5iGj7%&>kj8)`LiXpI2HbOLa&UB-xyo7hvpbBroCHnE1m`` zk!s9e#3Ux^MEua#F2+A=S%+AVj!R>VbldHJ5v8d1=inRH88zAnYGnNRoaX<=lB0I| zs!=ZCELE1AMT=9`{u58olvdY-_E68;l^Q9RnlAt(f=QXzt#@X6-pL`5d2Q%_bWa%WTq%9;K8W zX~YRtCrYGrIcZF!>r|vNgaEUJCx>FNtLQx;&L%n76X$T@v1_rPOycnPHK-YD=8{?L zdG?GX2VHV7a>zn2zL*Lu9J^T)@vzl8Up4UN&}RP%FFgnv#Sh`Ni;e`11VQ7^`|V8L zLY#tYo2W(orDkm~-i&S}<&_bYG77;VG=G^#Dz~v6`%56qyPNrH&KeW-xicMwij1Gj z9J>}Hg;a|d+AIconA8qarLh}h&%$FR-z!f>0VCNUAnlN-un=s2Cu;;mJ%_0AvSm&f zsy3Xm9gzSE!6YeJFZxo#Rk2UV)A52}F|A08N`G<5qAqs3NKkTplR@STf^hrDtzM8* zhn3CUC@i%8n%IpEcFbppY3KPoRgrR-y{1W{OSkb(E3i+a7hP``?lBYe;(JMCzFXDO z%be@AZsny-d+WuoQzc1_H5Cw(%IlZAuzZ&MZII!0_rlLEm6tZ($+GWP>?(*$;Xz-8l#6UmE_X1TdgG| z56v%g>5sj@QzQpV$F)$EFdZTg18!s86E6ef@dPhWFM2+FvB>ofG=wZdeLe`d9%{gP*Y4OHC*?Dw zgpmloXafdfadHJZ0SSvWR^u@aDV)3LNuJH);rUCgbd*J!A#{`xaGtdB2(dq*KXxY1 z(l!U}nu7s7wN!fQKB*KltPJ>L`$%G8#M?1Eb}7rBE*ftffrv=2^@6PZ8)C&$>7?n9 zjU?VmMp-p%E7f2bTrPIA+OX<+mvu2~Wpbcx8*8QruO_Q69^rxtbN(_kC=sWkM=A}K z{m9tqR37H^1uGHMLTRXSvM6#xEl1Z7fIeFS8@xG6YT@yL!V`87%TeG~e?$qBQSp#u z^2Ho$Ax%NY(-6JrXr8!j(+SQ*$I}>^^#hT>(W%iy4&zFVgy^zr^hKCYMXxA#S$~q6 z+r7p3yGe+O?pl8V=+Rl!jqX~xld>VgZzZmnP(<0gK_p2*7ptQbjwU01aq023sC^wk z*jD?B&qfckdVvp$+1O>V2)M9>5FWdX-G@gPOQ2kYsWF(z2<9;w6WbMnU3*H@SKTTW z-WK^8&bt7J{!ojt5%_z6lw~R`C-2`dK;7tf#gLYK%_%zjZP*J== zzp>;?U?}aPri&ULa9QOn=N7*0X0*b|sKRFJOlrpNCIVKe^x$DlqC_E7KBw6NKU&jQ zqRvl>&8Kq&@4nzovz-Ib-@r;dX=LdpXRY<3WVZUG%zRQKVPOR$Nb88m!}6U2)o-+I zXCV-2LpNB)Eat(|hHF_R$*FKz9l&_qeyRCWpyRL^>kcX_^s?haLlKN#bWld6%o6rW z?@Dz$Tg^P4WI?W!udFbC>W^9|msHY#vgDpBY9i2⪼+Nv+$Z?f7MS+Z^@CRLE#|B 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⩔LgLHj~j@)5H}b%43~|| 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 delta 149355 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 diff --git a/host/scripts/app/dict.lua b/host/scripts/app/dict.lua index b000d31..cae5715 100644 --- a/host/scripts/app/dict.lua +++ b/host/scripts/app/dict.lua @@ -419,6 +419,59 @@ RETURN_DAT_IDX = 4 end +-- external call for jtag dictionary +local function jtag( opcode, operand, misc, data ) + + if not op_jtag[opcode] then + print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_jtag.h") + return nil + end + + if not operand then + operand = 0 + elseif type(operand) == "string" then + if not op_jtag[operand] then + print("ERROR undefined operand:", operand, "must be defined in shared_dict_jtag.h") + return nil + end + --decode string operands into + operand = op_jtag[operand] + end + + if not misc then misc = 0 end + + local wLength, ep = default_rlen_1_in(op_jtag[opcode.."rlen"]) + + local count + count, data = usb_vend_xfr( + -- ep, dictionary wValue[misc:opcode] wIndex wLength data + ep, dict["DICT_JTAG"], ( misc<<8 | op_jtag[opcode]), operand, wLength, data) + --print(count) + local error_code, data_len + if ep == USB_IN then + error_code = data:byte(RETURN_ERR_IDX) + data_len = data:byte(RETURN_LEN_IDX) + end + --print("error:", error_code, "data_len:", data_len) + + assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code) + + if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then + print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX) + end + + --process the return data string and return it to calling function + if data_len then + return string_to_int( data:sub(RETURN_DATA, data_len+RETURN_DATA), data_len) + else + return nil + end + + + +end + + local function buffer_payload_in( wLength, buff_num ) @@ -594,6 +647,7 @@ op_operation = {} op_nes = {} op_snes = {} op_swim = {} +op_jtag = {} err_codes = {} -- Dictionary table definitions initialized by calling parser @@ -606,6 +660,7 @@ create_dict_tables( op_operation, "../shared/shared_dict_operation.h") create_dict_tables( op_nes, "../shared/shared_dict_nes.h") create_dict_tables( op_snes, "../shared/shared_dict_snes.h") create_dict_tables( op_swim, "../shared/shared_dict_swim.h") +create_dict_tables( op_jtag, "../shared/shared_dict_jtag.h") create_dict_tables( err_codes, "../shared/shared_errors.h") -- functions other modules are able to call @@ -614,6 +669,7 @@ dict.io = io dict.nes = nes dict.snes = snes dict.swim = swim +dict.jtag = jtag dict.buffer = buffer dict.buffer_payload_in = buffer_payload_in dict.buffer_payload_out = buffer_payload_out diff --git a/host/scripts/app/jtag.lua b/host/scripts/app/jtag.lua new file mode 100644 index 0000000..9d06e42 --- /dev/null +++ b/host/scripts/app/jtag.lua @@ -0,0 +1,143 @@ + +-- create the module's table +local jtag = {} + +-- import required modules +local dict = require "scripts.app.dict" + +-- file constants + +-- local functions +local function wait_pbje_done( num_polls, debug ) + + local status + + while( num_polls > 0 ) do + + status = dict.jtag("GET_STATUS") + if( status == op_jtag["PBJE_DONE"]) then + if( debug) then print("PBJE done num polls left:", num_polls) end + return true + else + if( debug) then print("PBJE wasn't done, status:", status) end + end + num_polls = num_polls - 1 + end + + print("JTAG timed out while waiting for PBJE_DONE") + return false + +end + + +local function run_jtag( debug ) + + dict.io("JTAG_INIT", "JTAG_ON_EXP0_3") + --dict.jtag("SET_3B_DATA", 0x0201, 0x03 ) + --print("return data:", dict.jtag("GET_6B_DATA")) + --print(dict.jtag("SET_CMD", "PBJE_STATE_CHG")) + --print(dict.jtag("GET_CMD")) + --print(dict.jtag("GET_STATUS")) + + --first put/verify jtag statemachine is in RESET + dict.jtag("SET_2B_DATA", 0xFFFF) + dict.jtag("SET_NUMCLK", 8) + rv = dict.jtag("SET_CMD_WAIT", "PBJE_STATE_CHG") + --verify command was done + if(rv ~= op_jtag["PBJE_DONE"]) then print("error JTAG not done, status: ", rv) end + + + --by default jtag should be in IDCODE or BYPASS if IDCODE not present + + --change to SCAN-DR state + --reset-DRshift c4 m0010 + dict.jtag("SET_2B_DATA", 0x0002) + dict.jtag("SET_NUMCLK", 4) + rv = dict.jtag("SET_CMD_WAIT", "PBJE_STATE_CHG") + --verify command was done + if(rv ~= op_jtag["PBJE_DONE"]) then print("error JTAG not done, status: ", rv) end + + --scan out 32bit IDCODE while scanning in 1's to TDI + dict.jtag("SET_NUMCLK", 32) + dict.jtag("SET_CMD", "PBJE_TDO_SCAN1") + --verify done before updating PBJE values + jtag.wait_pbje_done( 4, true ) + + rv = dict.jtag("GET_6B_DATA") + print("return data:", string.format(" %X, ",rv)) + if( rv == 0x1281043 ) then + -- Mach XO 256 01281043 + -- 4032v (01805043) + -- 4064v (01809043) + -- + -- 9536xl + -- //Loading device with 'idcode' instruction. + -- SIR 8 TDI (fe) SMASK (ff) ; + -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ; + -- + -- 9572xl + -- //Loading device with 'idcode' instruction. + -- SIR 8 TDI (fe) SMASK (ff) ; + -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9604093) MASK (0fffffff) ; + -- test read gives 59604093 + print("IDCODE matches MACHXO-256") + else + print("no match for IDCODE") + end + + --Mach XO verify ID code +-- ! Check the IDCODE +-- +-- ! Shift in IDCODE(0x16) instruction +-- SIR 8 TDI (16); +-- SDR 32 TDI (FFFFFFFF) +-- TDO (01281043) +-- MASK (FFFFFFFF); + +-- --change to SCAN-IR state +-- dict.jtag("SET_2B_DATA", 0x0006) +-- dict.jtag("SET_NUMCLK", 5) +-- dict.jtag("SET_CMD", "PBJE_STATE_CHG") +-- --verify done before updating PBJE values +-- jtag.wait_pbje_done( 4, true ) +-- +-- --scan in IDCODE instruction +-- dict.jtag("SET_2B_DATA", 0x0016) +-- dict.jtag("SET_NUMCLK", 8) +-- dict.jtag("SET_CMD", "PBJE_TDI_SCAN") +-- --verify done before updating PBJE values +-- jtag.wait_pbje_done( 4, true ) +-- +-- --change to SCAN-DR state +-- --shift-pause c2 m01 +-- --IRpause-DRshift c5 m00111 +-- --together c7 m001_1101 -> 0x1D +-- dict.jtag("SET_2B_DATA", 0x001D) +-- dict.jtag("SET_NUMCLK", 7) +-- dict.jtag("SET_CMD", "PBJE_STATE_CHG") +-- --verify done before updating PBJE values +-- jtag.wait_pbje_done( 4, true ) +-- +-- +-- --scan out 32bit IDCODE while scanning in 1's to TDI +-- dict.jtag("SET_NUMCLK", 32) +-- dict.jtag("SET_CMD", "PBJE_TDO_SCAN1") +-- --verify done before updating PBJE values +-- jtag.wait_pbje_done( 4, true ) +-- +-- print("return data:", dict.jtag("GET_6B_DATA")) + +end + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +jtag.wait_pbje_done = wait_pbje_done +jtag.run_jtag = run_jtag + +-- return the module's table +return jtag diff --git a/host/scripts/app/swim.lua b/host/scripts/app/swim.lua index 3c57110..7f2b427 100644 --- a/host/scripts/app/swim.lua +++ b/host/scripts/app/swim.lua @@ -27,7 +27,8 @@ ECODE.HERR = 0x09 local cur_CSR = 0x00 local SWIM_CSR = 0x7F80 -local DEF_MAX_NAK = 8 +--local DEF_MAX_NAK = 8 +local DEF_MAX_NAK = 12 --8 wasn't enough especially for long strings of 0x00 -> 0xff or vice versa -- local functions local function get_key_for_value( t, value ) @@ -184,8 +185,15 @@ local function swim_test() --print("wotf :", dict.swim("WOTF_HS", 0x0000, 0x00)) --high speed now, enable flag with true --- wotf(0x0000, 0x00, true) --- rotf(0x0000, true) + rotf(0x0000, true, true) + wotf(0x0000, 0x00, true, true) + rotf(0x0000, true, true) + wotf(0x0000, 0xFF, true, true) + rotf(0x0000, true, true) + wotf(0x0000, 0xA5, true, true) + rotf(0x0000, true, true) + wotf(0x0000, 0xC3, true, true) + rotf(0x0000, true, true) -- rotf(0x0000, true) -- rotf(0x0000, true) -- rotf(0x0000, true) @@ -263,13 +271,13 @@ local function swim_test() -- lock_flash_eeprom(true) -- --read it back - print("READ BACK DATA") - local byte_addr = 0x0200 - while byte_addr < 0x0280 do - rotf(byte_addr, true, true) - - byte_addr = byte_addr + 1 - end +-- print("READ BACK DATA") +-- local byte_addr = 0x0200 +-- while byte_addr < 0x0280 do +-- rotf(byte_addr, true, true) +-- +-- byte_addr = byte_addr + 1 +-- end --test by blinking LED via periph register access --v2 board has LED on hi_lo_sel PA2 @@ -306,10 +314,10 @@ end local function start( debug ) - dict.io("IO_RESET") + --dict.io("IO_RESET") - dict.io("SNES_INIT") - dict.io("SWIM_INIT", "SWIM_ON_EXP0") + --dict.io("SNES_INIT") + --dict.io("SWIM_INIT", "SWIM_ON_EXP0") dict.swim("SWIM_ACTIVATE") --holds SWIM pin low for 16usec+ to reset SWIM comms incase of error diff --git a/host/scripts/inlretro.lua b/host/scripts/inlretro.lua index 01bb7fd..c2797ca 100644 --- a/host/scripts/inlretro.lua +++ b/host/scripts/inlretro.lua @@ -13,6 +13,7 @@ function main () local erase = require "scripts.app.erase" local flash = require "scripts.app.flash" local swim = require "scripts.app.swim" + local jtag = require "scripts.app.jtag" -- local crc32 = require "scripts.app.crc32" local rv @@ -40,7 +41,7 @@ function main () -- rv = cart.detect(debug) local force_cart = true - cart_console = "SNES" + cart_console = "NES" if (force_cart or cart.detect_console(true)) then if cart_console == "NES" or cart_console == "Famicom" then @@ -67,37 +68,78 @@ function main () nes.read_flashID_prgrom_exp0(true) --try mapper 30 flash ID - --determined all that could about mapper board - --set rom types and sizes - --perform desired operation + + jtag.run_jtag() - --FLASHING: - --erase cart - erase.erase_nes( true ) - --open file - local file - file = assert(io.open("inltest.bin", "rb")) - --determine if auto-doubling, deinterleaving, etc, - --needs done to make board compatible with rom - --flash cart - flash.flash_nes( file, true ) - --close file - assert(file:close()) - - --DUMPING: - --create new file - local file - file = assert(io.open("dump.bin", "wb")) - --dump cart into file - dump.dump_nes( file, true ) - - --close file - assert(file:close()) - +-- --Check for SWIM on A0 +-- dict.io("IO_RESET") +-- +-- dict.io("SWIM_INIT", "SWIM_ON_A0") +-- if swim.start(true) then +-- --SWIM is now established and running at HIGH SPEED +-- snes_swimcart = false --don't want to use SWIM pin to control flash /OE, use SNES RESET (EXP0) instead +-- +-- -- swim.swim_test() +-- +-- --swim.write_optn_bytes( true, true ) -- enable ROP, debug +-- +-- --check if ROP set, allow clearing ROP and erasing CIC +-- --blindly erase STM8 CIC for now by disabling ROP +-- swim.disable_ROP_erase(true) +-- +-- --open CIC file +-- --local cic_file = assert(io.open("stm8_8KB_zero.bin", "rb")) +-- --local cic_file = assert(io.open("stm8_8KB_0xff.bin", "rb")) +-- local cic_file = assert(io.open("stm8_8KB_testpattern.bin", "rb")) +-- +-- --write CIC file +-- swim.write_flash( cic_file ) +-- +-- --close CIC file +-- assert(cic_file:close()) +-- +-- -- reset STM8 CIC and end SWIM comms to it can execute what we just flashed +-- swim.stop_and_reset() +-- else +-- print("ERROR problem with STM8 CIC") +-- end +-- +-- print("done flashing STM8 on A0") dict.io("IO_RESET") + -- --determined all that could about mapper board + -- --set rom types and sizes + -- --perform desired operation + + + -- --FLASHING: + -- --erase cart + -- erase.erase_nes( true ) + -- --open file + -- local file + -- file = assert(io.open("inltest.bin", "rb")) + -- --determine if auto-doubling, deinterleaving, etc, + -- --needs done to make board compatible with rom + -- --flash cart + -- flash.flash_nes( file, true ) + -- --close file + -- assert(file:close()) + + -- --DUMPING: + -- --create new file + -- local file + -- file = assert(io.open("dump.bin", "wb")) + -- --dump cart into file + -- dump.dump_nes( file, true ) + + -- --close file + -- assert(file:close()) + + + -- dict.io("IO_RESET") + elseif cart_console == "SNES" then snes_swimcart = nil diff --git a/host/source/usb_operations.c b/host/source/usb_operations.c index d5d1da4..8a930aa 100644 --- a/host/source/usb_operations.c +++ b/host/source/usb_operations.c @@ -114,6 +114,8 @@ libusb_device_handle * open_usb_device( libusb_context *context, int log_level ) if ( libusb_get_string_descriptor_ascii( handle, desc.iManufacturer, (unsigned char *)manf, sizeof(manf) ) > LIBUSB_SUCCESS) { if (log_level>0) printf("manf_ascii: %s\n",manf); + } else { + printf("\nMatching PID/VID found and opened, but unable to communicate to device, verify drivers installed!!!\n\n"); } } if (desc.iProduct) { diff --git a/shared/shared_dict_io.h b/shared/shared_dict_io.h index fc56a98..20a5e1f 100644 --- a/shared/shared_dict_io.h +++ b/shared/shared_dict_io.h @@ -48,6 +48,16 @@ #define SWIM_ON_EXP0 0x02 //SNES carts #define SWIM_ON_D0 0x03 //NES discrete CICOprocessor + +//JTAG protocol init +//4 wire serial protocol for configuring and communicating to programmable logic device cores +//different INL boards have this signal on different pins or virtual CIC ports +//So initialization must provide pins to perform all subsequent +//communications with +#define JTAG_INIT 4 + // don't define 0x00 to protect from forgetting to pass jtag lane + #define JTAG_ON_EXP0_3 0x01 //Most NES carts with CPLDs + //Test EXP0 drive with pull up //This is an important test if reling on pulling up EXP0 pin to drive the cart's pin. //EXP0 is used for various things and may have pull up/down of it's own or significant load diff --git a/shared/shared_dict_jtag.h b/shared/shared_dict_jtag.h new file mode 100644 index 0000000..7c2ff46 --- /dev/null +++ b/shared/shared_dict_jtag.h @@ -0,0 +1,60 @@ +#ifndef _shared_dict_jtag_h +#define _shared_dict_jtag_h + +//define dictionary's reference number in the shared_dictionaries.h file +//then include this dictionary file in shared_dictionaries.h +//The dictionary number is literally used as usb transfer request field +//the opcodes and operands in this dictionary are fed directly into usb setup packet's wValue wIndex fields + + +//============================================================================================= +//============================================================================================= +// JTAG DICTIONARY +// +// opcodes contained in this dictionary must be implemented in firmware/source/jtag.c +// +//============================================================================================= +//============================================================================================= + + +//JTAG opcodes +#define GET_CMD 1 //RL=3 +#define SET_CMD 2 //command is only writable by host, read only by engine + +#define SET_CMD_WAIT 3 //RL=3 returns command status effectively set, perform, and get/return command + //set command and force device to perform command immediately + //should only be used for quick commands like state change, not for long scan in/outs + +#define GET_STATUS 4 //RL=3 only the engine can write to status, ready only by host +#define SET_NUMCLK 5 //numclk is only writable by host, read only by engine +#define SET_2B_DATA 7 +#define GET_6B_DATA 8 //RL=8 + + +//PBJE Paul's Basic Jtag engine commands & status' +#define PBJE_STATE_CHG 0x01 //data array holds TMS values to clock values bit packed, TDI undefined +#define PBJE_TDI_SCAN 0x02 //ignore TDO 256max +#define PBJE_TDO_SCAN0 0x03 //TDI = 0, TMS=0 256max +#define PBJE_TDO_SCAN1 0x04 //TDI = 1, TMS=0 256max +#define PBJE_HALF_SCAN 0x05 //TDI = first half of data array, TDO = second, TMS=0 128max +#define PBJE_FULL_SCAN 0x06 //TDI = entire data array, TDO dumped into array stomping TDI, TMS=0 256max +#define PBJE_CLOCK0 0x07 //data not used, clock TMS=0 for NUMCLK +#define PBJE_CLOCK1 0x08 //data not used, clock TMS=1 for NUMCLK +#define PBJE_FREE_CLOCK0 0x09 //data not used, clock TMS=0 indefinely +#define PBJE_FREE_CLOCK1 0x0A //data not used, clock TMS=1 indefinely +#define PBJE_LONG_CLOCK0 0x0B //data contains 32bit uint for number of clocks, TMS=0, numclk not used +#define PBJE_LONG_CLOCK1 0x0C //data contains 32bit uint for number of clocks, TMS=1, numclk not used + + +//Statuses & commands to get to the status +#define PBJE_INIT 0x80 +#define PBJE_PROC 0x81 +#define PBJE_DONE 0x82 +#define PBJE_CMD_RX 0x83 +#define PBJE_UNKN_CMD 0xEE +#define PBJE_OFF 0xF0 +#define PBJE_SHUTDOWN 0xFF + + + +#endif diff --git a/shared/shared_dictionaries.h b/shared/shared_dictionaries.h index 0d402bd..e84c3c4 100644 --- a/shared/shared_dictionaries.h +++ b/shared/shared_dictionaries.h @@ -112,4 +112,13 @@ //dictionary used to control swim communications //============================================================================================= //============================================================================================= + + +//============================================================================================= +//============================================================================================= +#define DICT_JTAG 9 +#include "shared_dict_jtag.h" +//dictionary used to control jtag communications +//============================================================================================= +//============================================================================================= #endif diff --git a/shared/shared_errors.h b/shared/shared_errors.h index 7572750..5a21c8f 100644 --- a/shared/shared_errors.h +++ b/shared/shared_errors.h @@ -10,12 +10,14 @@ #define ERR_UNKN_SWIM_OPCODE 130 +#define ERR_UNKN_JTAG_OPCODE 135 #define ERR_UNKN_PP_OPCODE 140 #define ERR_CTL_PIN_NOT_PRESENT 141 #define ERR_UNKN_IO_OPCODE 150 #define ERR_UNKN_SWIM_LANE 151 +#define ERR_UNKN_JTAG_LANE 152 #define ERR_UNKN_NES_OPCODE 160 //