From 577a0e2d3616785140ce7bde43738f3d8ae5c3ab Mon Sep 17 00:00:00 2001 From: cnlohr Date: Thu, 6 Aug 2015 23:55:53 -0400 Subject: [PATCH] Major changes to enable much more wifi information --- embedded8266/common/commonservices.c | 142 ++- embedded8266/common/http.c | 5 +- embedded8266/common/http_custom.c | 2 +- embedded8266/common/mystuff.c | 2 +- embedded8266/common/mystuff.h | 2 +- embedded8266/image.elf | Bin 462118 -> 464634 bytes embedded8266/user/custom_commands.c | 116 ++- embedded8266/user/user_main.c | 53 +- embedded8266/web/Makefile | 5 +- embedded8266/web/execute_reflash.c | 3 +- embedded8266/web/page/colorchord.html | 103 --- embedded8266/web/page/colorchord.js | 477 ---------- embedded8266/web/page/index.html | 136 ++- embedded8266/web/page/jquery-2.1.4.min.js.gz | Bin 29379 -> 29379 bytes embedded8266/web/page/main.js | 884 +++++++++++++++++++ embedded8266/web/page/test.txt | 1 - embedded8266/web/page/wstest.html | 10 - embedded8266/web/page/wstest.js | 86 -- embedded8266/web/pushtodev.c | 36 +- 19 files changed, 1337 insertions(+), 726 deletions(-) delete mode 100644 embedded8266/web/page/colorchord.html delete mode 100644 embedded8266/web/page/colorchord.js create mode 100644 embedded8266/web/page/main.js delete mode 100644 embedded8266/web/page/test.txt delete mode 100644 embedded8266/web/page/wstest.html delete mode 100644 embedded8266/web/page/wstest.js diff --git a/embedded8266/common/commonservices.c b/embedded8266/common/commonservices.c index dc01a77..de80267 100644 --- a/embedded8266/common/commonservices.c +++ b/embedded8266/common/commonservices.c @@ -21,6 +21,7 @@ static struct espconn *pHTTPServer; struct espconn *pespconn; uint16_t g_gpiooutputmask = 0; +int ets_str2macaddr(void *, void *); static int need_to_switch_back_to_soft_ap = 0; //0 = no, 1 = will need to. 2 = do it now. #define MAX_STATIONS 20 @@ -156,12 +157,49 @@ int ICACHE_FLASH_ATTR issue_command(char * buffer, int retsize, char *pusrdata, flashchip->chip_size = 0x00080000; return buffend - buffer; } + case 'i': case 'I': //Respond with device info. + { + buffend += ets_sprintf(buffend, "I" ); + int i; + for( i = 0; i < 2 ;i++ ) + { + struct ip_info ipi; + wifi_get_ip_info( i, &ipi ); + buffend += ets_sprintf(buffend, "\t"IPSTR, IP2STR(&ipi.ip) ); + } + buffend += ets_sprintf(buffend, "\r\n" ); + return buffend - buffer; + } case 'w': case 'W': // (W1:SSID:PASSWORD) (To connect) or (W2) to be own base station. ...or WI, to get info... or WS to scan. { - char * colon = (char *) ets_strstr( (char*)&pusrdata[2], ":" ); - char * colon2 = (colon)?((char *)ets_strstr( (char*)(colon+1), ":" )):0; + int c1l = 0; + int c2l = 0; + char * colon = (char *) ets_strstr( (char*)&pusrdata[2], "\t" ); + char * colon2 = (colon)?((char *)ets_strstr( (char*)(colon+1), "\t" )):0; + char * colon3 = (colon2)?((char *)ets_strstr( (char*)(colon2+1), "\t" )):0; + char * colon4 = (colon3)?((char *)ets_strstr( (char*)(colon3+1), "\t" )):0; char * extra = colon2; + char mac[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + int bssid_set = 0; + if( colon ) { *colon = 0; colon++; } + if( colon2 ) { *colon2 = 0; colon2++; } + if( colon3 ) { *colon3 = 0; colon3++; } + if( colon4 ) { *colon4 = 0; colon4++; } + + if( colon ) { c1l = ets_strlen( colon ); } + if( colon2 ) { c2l = ets_strlen( colon2 ); } + if( colon3 ) + { + bssid_set = ets_str2macaddr( mac, colon3 )?1:0; + if( ( mac[0] == 0x00 || mac[0] == 0xff ) && + ( mac[1] == 0x00 || mac[1] == 0xff ) && + ( mac[2] == 0x00 || mac[2] == 0xff ) && + ( mac[3] == 0x00 || mac[3] == 0xff ) && + ( mac[4] == 0x00 || mac[4] == 0xff ) && + ( mac[5] == 0x00 || mac[5] == 0xff ) ) bssid_set = 0; + } + if( extra ) { for( ; *extra; extra++ ) @@ -178,79 +216,139 @@ int ICACHE_FLASH_ATTR issue_command(char * buffer, int retsize, char *pusrdata, { case '1': //Station mode case '2': //AP Mode - if( colon && colon2 ) + if( colon && colon2 && ets_strlen( colon ) > 1 ) { - int c1l = 0; - int c2l = 0; - *colon = 0; colon++; - *colon2 = 0; colon2++; - c1l = ets_strlen( colon ); - c2l = ets_strlen( colon2 ); - if( c1l > 32 ) c1l = 32; - if( c2l > 32 ) c2l = 32; + if( c1l > 31 ) c1l = 31; + if( c2l > 63 ) c2l = 63; - printf( "Switching to: \"%s\"/\"%s\".\n", colon, colon2 ); + printf( "Switching to: \"%s\"/\"%s\" (%d/%d). BSSID_SET: %d [%c]\n", colon, colon2, c1l, c2l, bssid_set, pusrdata[1] ); if( pusrdata[1] == '1' ) { struct station_config stationConf; - os_bzero( &stationConf, sizeof( stationConf ) ); + wifi_station_get_config(&stationConf); os_memcpy(&stationConf.ssid, colon, c1l); os_memcpy(&stationConf.password, colon2, c2l); + stationConf.ssid[c1l] = 0; + stationConf.password[c2l] = 0; + stationConf.bssid_set = bssid_set; + os_memcpy( stationConf.bssid, mac, 6 ); + + printf( "-->'%s'\n",stationConf.ssid); + printf( "-->'%s'\n",stationConf.password); + + EnterCritical(); +// wifi_station_set_config(&stationConf); wifi_set_opmode( 1 ); wifi_station_set_config(&stationConf); wifi_station_connect(); + ExitCritical(); + +// wifi_station_get_config( &stationConf ); + buffend += ets_sprintf( buffend, "W1\r\n" ); printf( "Switching.\n" ); } else { - wifi_set_opmode_current( 1 ); + struct softap_config config; + char macaddr[6]; + wifi_softap_get_config( &config ); + + wifi_get_macaddr(SOFTAP_IF, macaddr); + + os_memcpy( &config.ssid, colon, c1l ); + os_memcpy( &config.password, colon2, c2l ); + config.ssid_len = c1l; +#if 0 //We don't support encryption. + config.ssid[c1l] = 0; + config.password[c2l] = 0; + + config.authmode = 0; + if( colon3 ) + { + int k; + for( k = 0; enctypes[k]; k++ ) + { + if( strcmp( colon3, enctypes[k] ) == 0 ) + config.authmode = k; + } + } + +#endif + + int chan = (colon4)?my_atoi(colon4):config.channel; + if( chan == 0 || chan > 13 ) chan = 1; + config.channel = chan; + +// printf( "Mode now. %s %s %d %d %d %d %d\n", config.ssid, config.password, config.ssid_len, config.channel, config.authmode, config.max_connection ); +// printf( "Mode Set. %d\n", wifi_get_opmode() ); + + EnterCritical(); + wifi_softap_set_config(&config); wifi_set_opmode( 2 ); + ExitCritical(); + printf( "Switching SoftAP: %d %d.\n", chan, config.authmode ); + buffend += ets_sprintf( buffend, "W2\r\n" ); } } break; case 'I': { + char macmap[15]; int mode = wifi_get_opmode(); buffend += ets_sprintf( buffend, "WI%d", mode ); if( mode == 2 ) { + uint8_t mac[6]; struct softap_config ap; wifi_softap_get_config( &ap ); - buffend += ets_sprintf( buffend, "\t%s\t%s\t%s\t%d", ap.ssid, ap.password, enctypes[ap.authmode], ap.channel ); + wifi_get_macaddr( 1, mac ); + ets_sprintf( macmap, MACSTR, MAC2STR( mac ) ); + buffend += ets_sprintf( buffend, "\t%s\t%s\t%s\t%d", ap.ssid, ap.password, macmap, ap.channel ); } else { struct station_config sc; wifi_station_get_config( &sc ); - buffend += ets_sprintf( buffend, "\t%s\t%s\tna\t%d", sc.ssid, sc.password, wifi_get_channel() ); + if( sc.bssid_set ) + ets_sprintf( macmap, MACSTR, MAC2STR( sc.bssid ) ); + else + macmap[0] = 0; + buffend += ets_sprintf( buffend, "\t%s\t%s\t%s\t%d", sc.ssid, sc.password, macmap, wifi_get_channel() ); } } break; + case 'X': case 'x': + buffend += ets_sprintf( buffend, "WX%d", wifi_station_get_rssi() ); + break; case 'S': case 's': { int i, r; + struct scan_config sc; scanplace = 0; + sc.ssid = 0; + sc.bssid = 0; + sc.channel = 0; + sc.show_hidden = 1; + EnterCritical(); if( wifi_get_opmode() == SOFTAP_MODE ) { wifi_set_opmode_current( STATION_MODE ); need_to_switch_back_to_soft_ap = 1; - r = wifi_station_scan(0, scandone ); - } - else - { - r = wifi_station_scan(0, scandone ); } + r = wifi_station_scan(&sc, scandone ); + ExitCritical(); + buffend += ets_sprintf( buffend, "WS%d\n", r ); uart0_sendStr(buffer); @@ -386,7 +484,9 @@ void CSTick( int slowtick ) if( need_to_switch_back_to_soft_ap == 2 ) { need_to_switch_back_to_soft_ap = 0; + EnterCritical(); wifi_set_opmode_current( SOFTAP_MODE ); + ExitCritical(); } HTTPTick(0); diff --git a/embedded8266/common/http.c b/embedded8266/common/http.c index a889f3b..08545af 100644 --- a/embedded8266/common/http.c +++ b/embedded8266/common/http.c @@ -7,6 +7,9 @@ #define HTDEBUG( x... ) printf( x ) +//#define ISKEEPALIVE "keep-alive" +#define ISKEEPALIVE "close" + struct HTTPConnection HTTPConnections[HTTP_CONNECTIONS]; struct HTTPConnection * curhttp; uint8 * curdata; @@ -208,7 +211,7 @@ void ICACHE_FLASH_ATTR HTTPHandleInternalCallback( ) if( curhttp->bytesleft < 0xfffffffe ) { - PushString("Connection: keep-alive\r\nContent-Length: "); + PushString("Connection: "ISKEEPALIVE"\r\nContent-Length: "); Uint32To10Str( stto, curhttp->bytesleft ); PushBlob( stto, os_strlen( stto ) ); curhttp->keep_alive = 1; diff --git a/embedded8266/common/http_custom.c b/embedded8266/common/http_custom.c index ff69ac9..4a1ee9d 100644 --- a/embedded8266/common/http_custom.c +++ b/embedded8266/common/http_custom.c @@ -145,7 +145,7 @@ void ICACHE_FLASH_ATTR NewWebSocket() curhttp->rcb = 0; curhttp->rcbDat = (void*)&WSEvalData; } - else if( strcmp( (const char*)curhttp->pathbuffer, "/d/ws/issue" ) == 0 ) + else if( strncmp( (const char*)curhttp->pathbuffer, "/d/ws/issue", 11 ) == 0 ) { curhttp->rcb = 0; curhttp->rcbDat = (void*)&WSCommandData; diff --git a/embedded8266/common/mystuff.c b/embedded8266/common/mystuff.c index a9551ec..21a4aa4 100644 --- a/embedded8266/common/mystuff.c +++ b/embedded8266/common/mystuff.c @@ -4,7 +4,7 @@ #include "mystuff.h" -const char * enctypes[6] = { "open", "wep", "wpa", "wpa2", "wpa_wpa2", "max" }; +const char * enctypes[6] = { "open", "wep", "wpa", "wpa2", "wpa_wpa2", 0 }; char generic_print_buffer[384]; char generic_buffer[1500]; diff --git a/embedded8266/common/mystuff.h b/embedded8266/common/mystuff.h index 745fef7..122ca73 100644 --- a/embedded8266/common/mystuff.h +++ b/embedded8266/common/mystuff.h @@ -13,7 +13,7 @@ extern char generic_print_buffer[384]; -extern const char * enctypes[6];// = { "open", "wep", "wpa", "wpa2", "wpa_wpa2", "max" }; +extern const char * enctypes[6];// = { "open", "wep", "wpa", "wpa2", "wpa_wpa2", 0 }; #define printf( ... ) ets_sprintf( generic_print_buffer, __VA_ARGS__ ); uart0_sendStr( generic_print_buffer ); diff --git a/embedded8266/image.elf b/embedded8266/image.elf index d3807da83d7d8a18916903f412fa559e18f15b75..4bf4060f1a9e27feb2f57d1a40a998d9392c221b 100755 GIT binary patch delta 223514 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ℑ)6<($2uuk|hR+0qc!W_1 zk)M+DwaNZcyO6iOzats#M5wFB!vS)mZgj-acI*%TiCb)wtvmx?c#?bEs4c4lV`Tu< z?N!!exxj|ElednC`B&f@%0tE#2zbq<{`e=Xp`ASIj2fR!tJd*>7`fKf=Fwq+1Er%B z&ycYwQ-=4H=w~8`Klogvh0<&AGmL%YXJ@r$=N&pmg~?d6%q+sO8MQ@H*PGL2nH z_oW~?$J&|Fd$OL@7nnl8C9_OPZUP?2s>ZRF`}j4( z6eXwEr`4Dh>y3YpJ3RB;M_Nx##^&R`9jSG$^zphYGrN!AiT)lu{r`|G{dVerr%?b; z^HFW&t8ZUp&HKo-@6v|7+=ePK*i!;=dhw(|6ypJslXHsCe zfMEpuykZ@M(V{uHganF%+elD@ja9Xg`3(k5_igM$lEN1}ZGC#1yxuU<@W*W*RJ%{Y z+{Cf_lz5p|jl4pR565eo>)_gLQ;}9r7C`aJmzl&+fRk-)F6^Hi5o< z<{HWVIgl7n4VW^qCmrvjzqcAv=$Vsv^7h}FeaTZ*k;&z}w_2#{)$2QK9dgoy_J*+q zihFb`u?nk5|dN8MX=~L+4%j`V%0AB-m>vW%A17MPN6bb8T_ovSmK zc$67LIf$patq(eI@o?1bog$IE#Y-7XtcaRo=IlMjLT1dn&z4 zVYzNU#okiDU9|Kj^MHTAP|7}@5q}|%{t%LEpeYo-K`%5bgt`^uc!;2+6fR!L8h_+3 z$!CGh&*fWW2&MESp1&xg3Wwb$`+t~N?AKS8-`CA85}H&(-K;nxs3S6=zc5pTSYr)(OhTjIhtSpT)(XkMtBwl*GhM5Z?l8Mw?N z*9cUasTqe1ZomE{FEmAfH+iRN*!(#(*EWc84#2s9F@#FIQt7b{3Us@n(`B-QkJ*>E zEyUIgdvgptJkztS)x@m6Kn#$iwblgM@5-DiCzo-?>Ns8hWe<+6?~$1nGU!KrqI14{ zFMeF#c>C+Yc$@O)f5%(zEfhig%=O>#Mwa{-9^2qz^-8o-wmI1J{GgpG1K`nhkf1Ut zR_7j5VvusZJDSbLk3IJNIHGuq3y%m20=3-FV-JOL3R{2<-A^2Mw?+Il4; zFt6w0K^lwK8H5@oEbt7!jV@D!(iAa5x{LRaog2{l(h8i4^HOc*|7XUbl)hR#QNb4h zwlvvC8!hO{+YL~DfPc7A(YgWA zCZCY@{>1+S5CbPZ3)84!ll%e;H-`x~t#Nf7L}t;zPHR6wQ50sC*L%oB~f79@xTCV*h1QKqwVBX|2#et@*H9 zr0SRX_+60pYl&uRcKI;q~la80Dp3_{&LNbDttU%>a(P3v&ab>s>~*n<)dd<{+VHf2%Ri@8CAbUl z7@Xs8VSH^Fd`HC<+sNIsBgVf%7p?4OxwS#x$=Y*6weQl*3?*8*ujJU3uyDZnmOZA<;aP2YY&+ed!K4`hq z!&TDAn^iPD`G2=YTavKbpVF|U+7e_@i~gO{u6A}IQ5Px99-wJ&zwVo%Id z9d}3TV)k11#-HvY7cUHBPy9h#7s3N-{=l|y?`(3^SRHIBF*FOaOX$ge!@4BAK&HnN zno1p?>lWDK!Og=>jg3WPji<`4;M}yF!9y2R4yUsocbg*!UB7TP#DcH3^sqZxz))oW zT;!s7vD}VFosU#Z1DZwAys06K`qqWe%6sE1Vy^fx|t(dFtl$j%a267y-!jEyp zQ_5zPtfyHY;!Q)S=%gq;vEJq3N%Z@a7ibrFKazA&Uz~&sDBWx+^^?}q8_#(-&OKX= zTHI_QjsoI2eNg^@Lsr%+o`Ki8sLfsBhuc9@#2LZP(gX7d#`d8*7P32JapfOV_#}n( z@iTpnC2dJ;zW?`7QJr>+S6q0fAH85zEPgp#$_YH{Ob@W~?8?hB=as*>G3OU|!6>Cs zW!uiJJ?~oQ!)%3uAtT<@Mh|5R#`)k1Q5vRIO{TV0&lV)G&L=q&4+R4`xI!X-i|3tL zXpsBurbl{4wSZ@NRJEpr!G8|2^0$$p8$3EVe!r%nLf_!1Ygk>EKLgfLA_fP^(cgwb zGWq4Vsn$|M)Zg54sOxO^Y|=e1?Nv8ybYbMUyrn?LWrubhhJ4j(F0f!s9?tqf4B+k< z7i^N>GLb9QNA2+L;(RL~T5ThHTV}+xb#fZkx>}VVWm^zc_Pd;0)?rk7U6mP8-zhB2 zP`8c3#>{(2^rcBqNtRxk4QoiH($oO}!b3JX)! zZ6)YiIXwOqE>njR18{NU5}}KRT+nw=GTUZu8*Mrkgsue~_7ES80lr;^HcCnV3su7C zcX*>nWW?p50U!QV_{k6XJD6498$eB+rF9)ak$ z7*i0;b3G%W&JO7L;AL6osgP|fE@(J2td1YRN}Ke;O}m3J?TQC-oeHX>=w^zlR73dL zZb3Ms`j5Zu09p;_4^tyc|A@c^V&T2glYSg4UZc^44Sn_CpY&<#;cd?fwU6F&%7f9) z+}51X+J;3vka7b~*Ru%mN6AxH77WazHN?+)`V2o#8|PNia%B*EvWwimVo-Y)P~Pmq zeb1L&B>rl)YUp45uIpso)dfRr=Y$7LnE-}i-0}j3k(slk>*{RFwrGtx0S9NzZY3nR zBF*y}cam_W2HGnI^aYm~;!V0ddygvK06Hvc}4b#{>3zYm&S zdH>FjGXJ9-8y=hLJJMx92P zu-HNwq0{-JT-w@Q`%gS51QV@`cO1h5xj+m-CD7#QbNBKct5*JT4M!C>D1WiDPQ4{( zx*6Z#cE9KlwqOEldrlJ_uPT@@q#$0iPQALo;D=m~52(jo8XexH#|9LHplAP=!D?Vj z*Lan_LH9FGQgxm88gd}oJnR5De?6=?fQoaA&E(7@wJH9vo%Vn4(K~l!j%)v+(-`pW zL^QncH0@<@hS{9fP{iMm;Ym-rp{Azeo9*ZM-(^@#2`98?d82=)<(ddCnx^A{?zr^W z99q@B@1AfD!aSOb9e!^$dG1D-vf-ZPTk__OB>X<7>Bd-$vibcH7hUl_ekdkJna|+2 zYBzV|$7Xqv=C3e#V@76q2o(t17Ld7r41;~-nLlO?7)V857axCNiHiL6$LK+uXd@v% zW>0rzvawOz`}_$Rsz~_F5%~S!w42F(KhdBWzh8zQ33@ItpL~6D5R{RhZjOhCi1wDA zw^9ZMu6!M&QVhLd?(bbPg9B=f4eAOKMWFe2t|MNH-{X2=c z{W`nri>fbfF9o(@PgV4tA;8|fO3dwHf%j-!ier4s|K{jZNDA9cDBJt(;cU}YQs2Ic z{p@Ph_`9oF-NGwDM+W#@h-Shj92087ApZ(+{w1)FTp`#0va*}65aYcRRNIsHBH%Xp z*S#6+=qu#%y`Ne6a@CRhQ403E%T@nzJ)(fdsucHZR&^L>-0C5Ctscl#1p z41Kn?zQi*6A$tkjqA5goB-LGjx`vxL@UKyl_zTVfF6{&li!oVU%))tqqtaX@Jm$}Q zj9USe_6UOGfK;!9@W8idz%4gljW+t>30&GafD@ObE+y#URcV+C9*c^kTurvzFbInG1WQI4_7~Z(owKykHA^W{-5$3m#@)xFaQc!xL#WI4VP4^nAvO zM*g~Zj`s!pqFGn^h?~Q}opom<|CS7uR2IXwa-GxUgC8+mN^r-HC}$hCV*niFn^KE6 ztR3Ky#;CrohE>usABa-h?so^71{i@m2H|(4cYL6n?QWCeePLF>2r4<}YvkU<5ejiq zg)gM2gDKG%z^NVyfFaU(Uof-Ii&BUmB=~7it!vQa8rDgMcLH{QEhN0k($g=SDm9a_kRQt4qG1hdYi)k}0B0=w;^^!7jq zXD>Hb9~lUN!0xM(ngX%CNf#x>AV^^kHA~h(Fp>SBSz0#;zW3U25CfYBrQ9HRJaTq3 zm4&UpL+@?0${}emgHkZYfa%|8dU|v9Z$YpDv|n7njC7Z5dheQ`kAXuMq@p1(g>@X1 zz8Zqf@4g`YHUu(#J1`7Ozk|IgjUEbxx=3o%|DNj%hM}d;hr%IfuU;_>d_cXA8m}bv z$q1tYK9)*@Au9SkO3Gd4uKmy*G6^TkY`S4Vqj@R;#R;TR;1GRFY7Bh=Fqy+j%t z0&`)hR2c#((Q_YgSb@PquApH1M6VWQz>sx z0aY{x7}R{143nj=!yt;)S4mgHaMq2Myu+cGb^I!A42L9mN2(2nqwthetcTOSTVKbo zjjN)~8>B~gcmrOP+IR>IJB-wfH|Q*Bsk5_9c15dQ>8rhkcbD?ObzTw#KrcmO9;7tccIdFk~i7|W7#()UqNI9Bu4gSpydXFYyzpA6(r&6ifEhkTr@n+uBehOM#Ez%2AX5g3ObEygly2Nl9aI)EcH1h z`&iO%Q5Vvu68|6(jyU|{JLEk}ugv|03dX~+X6gAD6n4~ZsV)ZI99%lUg%Ri6LLan> zxbT{e_2yQ2L#0$`fJoRVNd_1-^u;TJpu`ge)h5=cP6FqB44tVCvHUaAWdoFGK0b@h zZsoSdcKLS2Uk_19MX@L=cTV~hLomQeK5;NsbYI3oC-?_(9Q3;0=~o1O9ll!J3vyoA ze*s?!TG*>+t5?Lq6i}Hz!*E9R(c$nS_#gfSc_e9{jK>YYXTM14MzjrEe~~^nLNE-i z{>ccqa3;_)2Ft?}an&$V9Ahd;*;pZtCXAd1kMR`BPQrjWL{j|8cn{A1BE2yZ(zOAU z_At+-nHr)ofIQ$A>DEa2H)K`6nE(Spm4GtkN&7|k8UBzqnji;$k$yG7la^6GW4$E6 zCXun|N$|MTEP@dp+~SdZxChq?4IwC^fhL58Xf7>jEkyk+{WB5oL67=O`Z*EaVG|BX z&yIo$$dJ58!vP4Fz8DQw2&nEI4Kf>G`(2%+DZ#z6$I z>(5B{Jja%I!E3w2iUS?=9kKlHSPGZgz}8^^mtgn{`RBPI35PESAUd# z9}iE%Kcv|c;Bz+Xkc6j4ll(VP26&C-J)Hb6{wOU>!PWAdG;tzCQ~3%eLJE8>?V1Ss zVd>QR@}IRD*nYp<$k3=QlXs~4;zS5l22F0l0#odhkNDT5)fh0U`mF$8H%Zz_u#hdm zzD|OPW6E)rz^K0leHHu%@s7{&(@Uhii_eNf?$qmnNah)4AL9FHS%3UvVOyjdlR#wG zG)bXpaD;6!E8UHE;SCXd1uPCkAN^TcyIxXF`!LJ%sJeCtD$)&?-`LU;^ zi|H_oopM^j`}D)vl+#koWLU#bIL#e5eOhD6V5}LaBW~A$Y-VS+Qpm>e2UZ(&S~@-% z5{Bu~Y;VB6gyZuB_U8=kQ#GCiACmm1fQemoTCz@oC)i_+(#KOEI^^?4k9gd!@s$<3 zi-O}z-qbqY)K_LJ;k!oZ_7r$J@l@lEt?r$6sLWLP8>Mfi!VBP*tPjDGINP81i~(YX+j$G0 zV1Cg4D}^gI77dRtc}`pMoW2m-&u)~?JOpuUdgB`pL%Lt-Wm+xDt-35_J&cQYc%$^r z!)V0^HA>Eh!5HGAOTn5RpOt4fU)y2iI`^NzBQrDIyk=EP{u!_lmPk?t+FPbpYR!O^ zhBtq}3V3^RkDGtDcYGS$r~4heQUZi#WDJUl!tEwh{2;xU39-H{sK+cEGo8}MnZV=X z{X-^%vU!K3KQke6S|M#5O>1^;FMgM38}#=^k|{Za2h<3C#&TLO%M2>e4B%ZdJnpIE zgWm)6z7k(Ya|yH+{<@rmcdVtD>1c!_rHtudm^RGQe20vG0zWiSkVnDS+)^8D)k%Ya7KahKw#KJ^qV z2ljZqG+_mf-!JQ>g)1N(7D;3 z&{Dm&2=)N5)$z}QlV!g>F5O*?d#XLht5-b_8ektkUS0YEdC~Kt94KR(3t&^5- zK&?F?ZQcMo!Ytp@K|q63M{!S#ew44aE1QOKuUjs))k;~V5HbAOT2CL-eHrhG8q zW<(9F?5E+U!#k4n`h>U<<}7HeX+h5eP$N>_8l; znlG!p%3zOzT~s3-cp2VcNsaW-Cin^JCH*TfO!HNPr^WInP7$95`)jHndIiS=`|q!% zr(VU?Sta59!f3TqkB8%7o*m+qucg(m!Gx%N_+~?trX3{-+M555tS^D9viRP=GZzr> ziWfvgMZH`BFA55XiY9p>HB>afC3nFEH!?NLB@Ry{PJC**M}??W8K^jS$OL_au(h* zV3!pekHaI9dfL}p+wWmZN!-7ueN+=iPi}7#V6sME#9nHoiCGVcA3kL5*bAcGG8X1P zMYA7LxYW{M!|(_gvsVv^)MYG?-#zFWzl?QZO}(-C=8tzoNe`>4HsYO;Us=)h48I2% zb-eDM&+t8*VJ+JwzFf}2yR@pj?o)<~B(Gkb!fqc#0$60_)!%X}f6KrAJ-dE(-u3i4 z>=w!KPR9Kb&V2=3_q{d5Gx2&$+b?C;8~5@$SM#@Wk+6dGvinoAWslTDNu++%U zcgvqXcXCp_K`o=paD<8tIw*FoU?chAgQA{bo%oJ}qQ78$8r?)wyMQ#7HuJ(~M9;93 zgN}vATs$F^wGk%;YwGtdr6726RZN7ZcCcyTLGesr7CKcTn&+|CeFssvJu5Q64=2Yf z*vkh+Q67pT^`JPFho0U<{GP|!I7feBKWt?sCD2XgX%Uf$-&ggon;7zZw{q5+91M?$ z920Qut1rU;!qmN*)Fwwn_T z7OY~?vEPslw!pRR(yxd~opmbBeOkYlhCSu5eyFU|*B+t0(E>X{O8 zdlhS5cm8Bto#q+TlY3gd{K73K6NApPC8GIiW@|CI1U-dEBsiAVi1DHRW-nz=4!}2d znrHqI6&2ON-p~#?`}=@+eKmX8J9iGQ1X+yj4lCYD~byM>nR6aQ?)W7$&C@)OM5v7d>apRkZRAN@_$jF#{C3`v`PsR~2EyiZtM zz#-$B-Cf2Cy_xmZ6 zzVp9!D~P`HZS?n5!Ru&K`!^D^_bYH?pfl87>R`W+AXw0YxYpEu*7#b-=Eqkh%-AnJ z*uzT)a8%&{Xy z^k!soju^F>y1;C_eaeF>otOV15O3V*HzecCVBQYjTY+G5(Y@*B6y9fgozvptT+Q~Mv z!1CW8rv+m}Z%o~ud`!Stzi{^fiP#9AF9z&pZFtjtB6l}?rw`kQ0*WcKI%Zo&j<>U? zd%w$j}7isZaa$>!9T+1;VhS0kAKU#P8idXh9Tb&H@+~RqA zMN*;zWa=SopnbSooIb<`HH_a)`N0EmTp8;?n4Uf<3+;A`gwI+1hEY;TD!5Y&3R*C< zo9`B{f6k^hv=|h;bcJ{yXnX7yHA=C;6uetFN?CA=29&h^UPXPaIejT<1H7UGv}}1r z9iUfH`@Qn>_c*uu?)2U5no`QzGVZxs6qd2WeEcrg#KTx?H3{B@1dNY%;JJI7oi!#d zo)Jf*Z-ZT8?-6#xer+ejF=t!pT33j*_(&_#yR=h$hA%i+g}8E*t>#;HiW%jo|J6Ii z&T>2iF5W3_ma~@{&LBJ7j_Aq0wbOe7yjiVv&svN{_W{xC7~9UXc8X`mSU`)>J5vWd zMf&5st3ROk4j#S}B2RCd_Lj}dyQpXn8@AKc={T#!_=OTzuM=3lu->lmC$TcKrW7GA z2ODn>XNkeqXdiL+6l>4pi-hAeb}5?`iJa5y7Qeg0HLij+!XPIWo?(M{%_8yR8DylT z@I1?g@>h0vEjcCA~O+VKjXo<>Y1qRp4| zydf5R$!7EOp9-%FSTmpe6e)=34&Nwyk^OL8R{p7ozrYgs$n7HM0`upKO2mo_Y&iP= z;|pvt{4V?o6M7f%=~wJcezlEg{xvpBD#a^bV|jE>eDXEh##?_X(!OCa-W_{~Iv--r ziRdjBf5Vzv^C&88??>b4nHyX7sW|Zs>)2o!W~j>KP-kUUs51%;CkekkDWOhhv1oje zHLm>zS>YKMuddwKlut#Ei>&_3StLB46@ERrK%UC>WZ0<7YQeK2@bsKXp|}*Jt!e%r ze&x}1`q@qM$Je?4&VI*Bcw;bxLZdHLIbO2h`Uf_U*!j&&K_02);sBgu9{cJdJ8KQ1 z00%?0(gE^@pNid=SfoeLOQFvGFNvQnv03g{k-0}=?6)kIe_tp*`j$1Vd!Z0UT^6z6 zRycazShGA|D8BiYb>W8!MdR;S%LcnhCHQC+DZ_}Yo0zs8Dx`yz6<>C*z`=2bUFK5W=sJ4q7-=kh<_8-9!hj8d(jW4 zj=G4Rms!0!Q&7;Bk?}anbuaiS9pL|Uo0xhT&mdoK6UQ&Jr(T0f%BqTQ1+0HVoVmh2 z3b?Zko{qVhlIr3;L0q|{ZCKJZ(G;iXx*tt3h|GH8?zUVpS^7-hW z9t8hg6%}P|KZP9^H@|02?_|tC>8RTM2Sv*tSO)u5`4Jr5kf`5E^8R?+z?>*5ot zEp~k4ElG@B-zvmab|fHzl5vIy#CYR~Pp~h>wAO6fRx$A!n&BO>{2EKKJ=_YFOO}j7 z_a?P=r3DO`(=4-L-;8^V6yDr`~QU(~;j#bZjD=zg88WS7Ow>+AzKm~sOo zMY!F>LudSFqQy=28+%DK_>pzzmI9IaBfDSo_bqU5uLxv!w}|0Cu^vf(92_2YwW2LP zExTPs@~@?Wn?0i@`;u_^jo&i;noj!V;N)gkFK>42jPCIS6?cY$96Qy*=F}GP=T9uO zwv)us?6V%h5pFDgiwOUjB{ceNe@sP`y)4u+(o%N-W8tI|@1v=NZ4qz(%#tFPkc^`L zfWU$es?j_x9_2nP6+FLX2Zx4eV>i@o8Rm=4?2%Rmw=wYFKUd~ zexJ37`g;@NN@C8=xuu=+6ECpDqw~7?CT8_!e^3B+--ArScyhgsQQ$;0b3>F5*y_MS zctAU(t7Xp}#0kd}Jw4;mvRjIh2dr7+#k7>bBW2kRdL4g~9ARrZQftY_HwpF!3+FTU ziHJY&`e^GWk@W{_$^H_n|6q-pU&JH2rH;i7&gJ`U+DiDB_QKdS^21)MI$4RAa?>`6 z>wjSV^rdh-WI>H@Aw99>*a5&`7PFByDC`*~p228mtJOX+{2}XG<6W|!^r|@YkTrIn zIX2XJM_hZznujHlJh=5PI>6(`oEq0^SI4H>V?aEyK{YZ8MD(BRAb;%>aqmwylgGUx zCj7;^d#pixrlaD}Uo5fVz44(=>>O}hYH(*K?oY>Q(KFoB6i@O{Ky^2kL$?OZN0AF<}_6S3qGtLroH6U5&mn9g^z zZ#RlPk65S1NhFId$9HE)Z&zaI-M?J5zwn9heasx$?g#H?`g!9d%ke63dVB z@5OwTIO=Ja19!vx__6P+dYnQ1L}=~`q`T(->#iBG3ocY;HWI=6syunjdS{f$hPOv1 zjEyL7Cw@t@E$hb4JC-+k7pBV1ONy9WNlx-;IU+_mXn=D~T}a@Y2!>`%sr z?iQa^u~&KG?!5tgGUK0Y5brYHfajKpO^o;FZ*N$^c{jdym*~NHXFg(sSi*UKPj@@Y zqfP2{ai8-#9gc258t^L8`6o*7uw+yTeopL(GS8jbe(iN^yHzx6@f)@Ydit=q4dQt- zkN0)I`EX9HHtojX`@8uAe#e;>vB=EV@X}(@+>H<9fz!nTH{PagKXTwOuWAWY)JKE%fY+`L4$Xao>#xhOI5p*cY_aO!Ca|(~f><`x>qJamG!XsA?4<6mP5{=Bd zpSFODc!u?GhHv=&GiLjj%zpSD`(eFU<-yZ=(t7d4gOBuxf?mpgky(THLT&D?!B_G> z@@wyiug z0{jX|p*1ho!e(&OG4ZZ9Pvn8i#aVCOh$rW}?t1ey#vA5~1Pc#s;g_G_eg}=k;pMbj zqqL9Q!o8SJK19V{rs}o%PVaoz5(~$x-dv=*NXy~XO9>~Vy@FXx)fqQW>lOEsiQ8J^ zjsHmY;YZ?JExyeoe-0Kv`^6j|-i$qTZS~>%SV*9pW785D*|ulhe53!Zvc&QoSI%&r zXlh|+Kdlqrn3YiU3PUOj#5=F1bMBV%d>(!q*pdv}c{@<;#2U z_3OlHUp|^ISSQ^4czoDY(vI`(X>kOfNH}0;uMtn*1=zI3V@@hFCB&^0qy2bVt*j*j&-hCb$A+Q z4`1|~3Ff7> zVr~GEp1fAv3E+WE%A5Zh@Zg_Pduh!%@6=)^Y0|@b;r!!xpQKu>(^}EA9=8WICJznm z;lAuMQmDnl*`f_tX!x>LYehyqF5D~7C~k_U_4pgDe_aC=dzme+%rY&Q(n&}hsxU$6HI_VpAY$qSmM4Rv_=gBNmJ2>+=abXt~&4pGO4bN(TX54p!OA z8sm*;*+}-@8gZ{abRVn{T^sOB+eOkr!soc*QZK&P(Vy@fW0h$#{E^o zW#dP9$Z9b&m?!f+tHh~bUc|?&5;N@_TOg~%b~|s@JdLateU8tjDiZKW)Qi~S*>STA zYd#3Bd#8!LVnlq+#9*ARSS9c!XA^#4m9RDCfxP`H(V;1C!&|HplbUk>reS1=BE}B# z6&7=(gawlz9_NGo;Uj!KYqUxfH02}h?l&I17yp#s^225=Zr3EOi`T}tM8ff@){$21 z$x6{O1QGnXQY3}oi^tt!K?pzRlSog-S2zY-JTts0Muj3zt5=HMp*+NA$x4LLGaYU} zs<}%17|L7NW-bnOCgwY1@=X}`4rjRI3=NMN{+#_h#;ij2Xr+h>SGEaQ(;Kz8xa@VGC{8be`C{OHc&g<}gdE!`e{vI#N6TMsT{oF0j z8ckLIbofe_oGc?RFJN%+L@?%Z>k zYhVojmh;b`*akkua&e>$9}tkU9Jv|4_}z+I(Tl#oRe`u&h`qVo71Nf7F&@3#HLxA` zU_5KNSlo}#5?AA3TDVNS(w;YN989M17Hzazzl_`jqfoy`eWb9p%fy!UD6C~9?^)}1 zL|g(}vP^u}o)72KmWfUscq`UZyxIZ7P5))0qyzuRFN#zx^WtVZQU|pjWM>hG<~iQL z8cOoGC63exx9{xCzD$Vc_#_mT@a_mYYMFSeBVWvqekf|iW6%!VziQ z-s_)`)^$iyYTUI4orf;k?MUre+kSW$b1fB#37Efs+#nVv@G!o5sjDb~|I2vLQt{~v z97E3%Ed|!N*=VLmoa`s!BixSf;U1T&V$KfhX}NyJidK1biCEK_Z?^8E@c$y;y+rix z!bk9crLN*GJb=~dt+|VcEWEBAFLh%TOT@LVyaPYDL^OJlw+)CPh4@_~1o&^IjqzzQ`R`6Y0jBacX^tJ;@ajN!;dPJ%;DNurVJ)x687h<1J;$_@o6x{qwmZqz8XJFqphJc0QgEKGc3T z?0T?oPh7FV8s>_fJ@{y!3Z$|lepgE|itp zgSM_2l`Gy&=1qME>Ee}A+&@Zo_q@96(6{+_Toz!AN_%AN($e?c+O(c zB#mb^AGsLb=|U8gMh0Qbd#E36hjWM)hRazHHgK`no5tq^{-xpakE&w511ZW z0ItXaPFgIUrSY~NDOia1UoJZI#@ymq?3&q|_h%mTXX;GL#J7ETXExu}1l!AuUwhw$ zzFWol%{AhK0a%BwUF6y}fcr8(+h=$a{za(sb8H1Ufzv+|X9se7<63LmUrTiJU>)+1 zhT##7+4uRw!y3=_UOU{wW0JS<8N?fe9aw}g$Ngx0jp4@j>&&L}TFLDrcFEo1FAui*m8I0WH@o}#ISzASp1mvrXCu4NycgYdy~EPuh4*^T zPxu}8MTnrmJSw2{Y^ZYzGMIZN)Oi`$aSnf3vP=vg%;)-^eGgXn@BnvwVJv4aE)stY z=F!;9atz^Fb(&C8u?8r6uVwi9%Fe!Q-Fss55dM7JVls=Yjc+36vG)i&uEn#StV?(L zvu*Uj{CrKp5?_0lPYuhwqJvSpdevY#@3|Tc<$rO^y8anFmSwrRWl$gc@?B9roNwm2 zCtMRo@UHkH4JQO{QT~VLpK$FO#Ydn~z2mAknzzGWN)s=Q;Vsy7*PCN_9OEAExb}`k z*?KQK^{i9tT6kN3!u9od?rr8dpNZ=e_#43wr{gC030CKmSFO(eW30}SvB0CO&f;i-G+&&Zj{L>W z6H{mKUHr{?qQ#rMn@9dh97R3tn(-!Iz_|N7!QbNZ`KxoqJ8yA3X^XdJVS2EOPiOHX zJ`)enjxic1es~)_E1Rd8Ju1PN=8CW9pt}`|oVh#@Cn#3V<>jnI44a2}@6l{=cpksU zkIoi*=JRW;nQO%YOk^z2wf1c!*r)QuvrdhXh`K1foRhA<-r?Si`{xKuZ_(_uh<%SY zXQg7;dwiu=8dR=B{gw;oZ(|w1n=RVC&%?c6LU~L@*r8Km-21#Qo?%Mg$1_Zjxc@$H z!+b=u#ry;|lkP3%_1M?K^8-GV9TKBI;88)ls7*JoZMl(SV>U;0Y3tHTdnrDa2yv%f-9O}; z8E-dB{IQIG!m**dYB`_bG4kDKotmE#4OSp|PsGF(nA0B!LEIH_cLk5YJD>)FzwWn( zX7UBsuw(Vi)^v`gH!BkB1s@jO7ReX`AEiS~_!r__xw4yc)k^yJixYyV*AJ3&QoWI^B?oUy!{LjwUGyUZkmDES@aB7%0`+7 z_D&baKH<}193;kvzjH0~a7j-namT)?>UZQ%$m(Fj#+}(TjXCsE09?=vF>w=*jPd;+ zX)WSBN~`*P`Mbprnq=pxX(-R`GsG90cr<_ilt2gD&T~(RU7PW^m37J$R=|fd@5`vX zJ!rSqldh#(_y)#5I3?O{irHK$xFw!xC`nJT(&=fn8qsbceXbj24>iLf1f zJkOXaKHR~Bd3W^s9eg?(O;izghPa`aOqjW=swU#dEsc=RI#jx z_pSHg+ZOjpklIW!VL3fAQ+nH`uDGA@{)(NP4usiv^44sc=(m&Gd%9f@b$0BAqZ%*b zmk{Qh@?EI2&-bCuqweVS9%0Tg_*FQ=oFi{Q{s;b^FwU)aM?Xj@33Jv$UziALGL2-O z<4w*YQNELx^9^r^MZ0)?7UJ5pi*IAB!j-m%55gbz5!?52J5F_-+lxo)2Cm0@c}>PQ zoe~}{)biF-qPdH&;(V?+=HlzP`|GaEV*VTV_!&i6^R#Q=0nXh#3c=)*h~b}e7hc9T zDCG%kwrg-Hh9RC?;(DWupTb7ZWRZA;zs+Bm>^gmfPi2u6lj7V`THD&YmFx?;Q5uOS zxl1hZT@+bm{5@Ocl=HnJt~T|>cUYDW+4M=`)pFj<8biUjbOwE`18!3}?b=k1jR&71 zkgjJCW<#M@$~10 zW+5@yg2YILS1xQ2u@=kuk8j0%{4;x*xP}#p8`GWkIp3_gZNYxurL>O+r`YGPlq})< zEwATuAPX(QKBAnq4WbT-w%_u8d_$I4{4Gzb??iMd_+1U9FQ#d$PHRo9ws`z4@0M&P z_X|8sEHkTFQB7td)@k?k;PgLxG9IkHHbv@e5ec>K^+D@M9ZfMNhQ8Q65j5l9s>D$V z(Sdl0f{GrHC3by>8TPmcxXhRGhFN0kWeoa##8;R3WqxVA*nI_?5l6?18sGEv9w8{$ z(9>f3_k2j5;p3x!#{C(%bZF8~RU3Ac2G1HV8vlU2JU?E%@dGxX62=SPtGs2MHscZN zoXpOa8laOiQ&YXhi!=nV3u5+F{yg^{FR&RK!2cX4E?wm>v8^Kf8h??0F-}ar#*@%P z4qW3y_~+w9gX_Fg8#`svqK1ve#Nmt3$>z5En&tgBMg(d~YK*8mUM#-OTW~Q>9JtP3 z$^LDe(Z#RC9s91TU+G`}+5f0%DEsTgb^Wr6o7-ku8~>+t`G1ry5$AELs$a^3|Ax2= znubbiC2J3S*hXtRPTao1oAa=7qTWq@&?5>(>wQ{$dlP%2=f}E2f25}Q-dOR= zPngFij}^&3W6hc{R*d->^^#s8y58bpgVV;st1E^BhZA z+E{Vo7Ekqgo}|UT#j8DQ245H>n*G8%)vH6YCHwFJ@-(mM!3*Dh$7}4{%y+DK>lfZO z*hGOlKd!QP<~_GExZs^F&%N^wdo~6_&)~S+glA*KgPvF7gK3#Ruj%gBbO)2J8+6@RF$p{#Ryi+Y z*h9av{`#zDr<`+mth$8l)bGW!U-=6>eT;bFHpX4+55oHnZ|rWuUtzl-BJc2q{Lj&@ z?ss?x#?udp1$TLiy6b1cq5CIH@3Rxp@pBG|V|Ov|<{lEmf8+7C^3hP~iN8`}F_#}S zv!lc=!1tMMJ>AQ%nz0o4{5PKJoe#?b{PGTo2ESv0o&JOHyT@aA)DNQTJ$}qR=PLeQ zlkmOI+wo=BMECoAPObi!zV2PadJeyN;?jNo4*w=ojC{beyy>IeEbOgbJtV$;fDN0) znc}TKcx(Sv*DRy*+Xp9^vo1jA7V`CmMI=R z+*drF1i27Vi{*(7_;zz33vcj#2_QN>P zFbb^2EuLHI;_|s#nc|l}vGrUf-2dXwc{!0TlefuqQ*`@_cfm6CgTHwD#4pJNcXfPh zahtSZ>6kN?x)U>PW6!WJNbYg9%6=v#oUxO{*(2*9DpvP@A}Jpwy#GemHcb(2|HdOj zI%283Dkl7miPlZ5_?stZ$4rYmm{_ZWrJ=LO+{B(8qB_iNfAH%3(zjcG7U@;?T@{;0 z4)J6@hbUr5jP%2~%g8!c`<4#0J8{15^hgBAY(ec!Qo~J!kzVW#-ExYgG5KS)htbKz z()p8H(T@^5y_lc2ZJqnM825;GXjFt0YST@*tLpMn3ori?e~0&3Lie9M4@Z}ZvPZmg z&CcW?_@yeAFiKb-V<)CaG<(d$!z*FxXsTV#fU6>IKlNgs6{cEl0r@rU6)7xSvuabt znvD|EAM<9s(I~OuF<%^HLyaNE;Jx_M37CRSJTaE8t;;a62O~xDKfFQUUCQBq-|5g~ zc@I$?yeek>gN@v;M~Z{E<^=~%zyAkwch`}^<6qvf$&OcHgeHo=j#i2$hu?BUl!dmw z0`#WH_?Kt#r6a``|MFjP%KEb>{4Q@eQfzsObzkvq;r)z{Zt%+p_|U7rIJdg`e;gs+ zd&V2%DQ4?4-Xf@y)b#ofBK%(?J3T_&f5z)Ia3XqVVr^3jC^kgpDP=ETRxm=?t9X~1 znZA`<_OpNVWb~85$don)E zdDP2f+VchmiK$`Ei_`Gg=yZJ0j9>bz7{F#>;d@Q^xSL~m+u+o33&=`{v`Tq z+GGjRICE9>m&65XT%)Ja=ZLF2TpV{d&$j-NL2+m3ao^7n{XNVb$A3qwCAwt5&SLTd z9e&}dY%PswLGzPlFPt=|PtCMG-qCMmq`vxTl0Q}|4!4y5USqlKoR-1HeF|xTTlM)O zw_rNYD0+?eNJ=grgHi;WPkdz#zf z=;f!L=83#CT{Q7Bx6jT+dCMi=ua8gqa#Nc#yu`$ODJyuGXdc12X;Ch-5|4{4+)WLm zaD6(n5Fc*|N<{V_&IA7MTgxcjpRXrR{iP}(sz#VKI-F(NLfMma=*6*w8~7Wn-CN@? zJJqz~Y9(ATlrFyWGRO0(bkV@u{O;2{^yjYji)P#VdLKucv4l&}3+*wj0R@rZhk zoCY_YO2asY=r7X6b#HU~j($_wK`q2OHM-Y7TF?QF@9|Ih9@8;T6aEEzO=WvDVU4LV z`Smfz(^ZGN(#6X)&98V5M(5pwlwjZTY)x|u{&u?fx2Cx#zltOH7IP+lGFR-fn4@^l zbaB&S-p*^Li)FRUBU_rv@bx9lL!egtP`0UIRp>N{?h&kXSie~Jls2}+rVKS0Try0A z`IsXE4y?V`)pv3Yle0_0#IAF@w?-J-HcX85F~3@`=^O0qFv?@_8_~la>xrxwCVuxZ z*Y^lS1hz8aQ`_9ZBMKO&XnNH)x8ylxVpeT)7Vkbx+^KDjqnF=dR`XikahNE#ng@C0 zL$?SrU-PJ7J9&@3QB@gH+QCk<$}2-5_-|AR8YT*T%_+80n4G}xSyff-lt|2qz?Jw> z+wo<;3>86s=4Ca@$QH?;B!-Fue&+TK#}36c!+7lKGU=D6lWVlhtT+1jh^fH=ud~BL zMeRD~*KCDj1$UjAzdt%iz0{^t7bBRgZyO-%PUH?32Nn#*YvLB~X-PJ^Lhhd(-n z_fYY>zd5zt1t{PEo^1Isl4tHJ?00tTM_saCKX7CQgCj zhLvDCg;F_0d=+30;U|ZPe*?_1wGU`^m@si})8s4=&(||gaHqd$dr|DHXHIWDmcns1 z{YPB=)d3%Um}+7&!xI{b*~eqKEj!@eV}~_h!{btJ^7s*#KnxL`1I;b_JBFZOCyyy- zsicat8xFtux2qPMuVURvki=4tRVBF%>>T4}!XJw3Y+^5x7@yQ9n7W?CJWSjeHtAs1 z7>^m5X&$DUebc&{*z-fgsX%j3Qfms{5Nz7H14lPZMO$;0dYfvlT-x2lqA0}u;Ijq0 zs#tTvo-BA%m8Yq>X_v`V^S~~ri8Ukff~{31>tWHdzWGecal&NkgFn}i-`W?)O1#{) z8*^x#xCTAUhAOh9Se+e{t{_|)!!FY?Cp6}ql`A1DPCkM3iW@iUO z?wA?3hVIuz8J!s{K4@UB&yNfiTN{`o_-BK~#RleX)=x+eiGmpd347;wC2E~&CWey)_9jE|A}K}sW+Y^=9?0`__ID_9DM}^fHs&$O!XO{ zmj;PzHgg;kqCv3P*1D~x`ngn%{a@8+VlDi?(cNTIy3ZGD@*>{;6~>Y^Lb|bia`~>F2(#g4X8Scun6|EN^4}g)i(Y za@v~v^4I!`Z`zt$x{d3b8Y8^gnL{k$<1C)R7fwe%shadmv~Op=#C{ib;>^R?4)IzX z`h0#LaWu}{zs{#)sVFk%;#=7l-06wHWOB7=Z=TS~Js)t7SU1MpB0B}Jl;bZogZi8C zhuA@9hKD$5sZrTH#OVeaQJ?whJH&4)c|&(FT?PccDHSj1bkR&1-cfI?d7zZDjyaM# zXGW@oDh{k>>X|7H$=+wDF8axE0qC6_3 z-XmP2LUwMr9fhhYYPIAmbegh8>KB2Mp7SF~7lq5JDahCR|3X~iMUK~O(j&k{USu$G zi*!6@yX2#GNNU<8X`kJaR)CUy(mu(LES7X5XdL7>OYkS+L7$XLd1aZTQHS-STy|JS zbQzQ)4mu(oX6dv5)CPIcQ5k-*T+(|Lk~+^wecKn3pZ1lcp5IDZiX4Z)-q}Jn!eu{5 zd2zN5ZeEpw^lN&+4e4;>&oW^Xf06Qqa6sKM_m1S9_w}4VlzivEC4UQ_hSR_mf>&)+ zGRZofqSMZgq+a$O0Lt-2U0`}F8)3vhQvOh6oXPDx>`pX7WhkgQKydrC0|-!MqJWB z>IVf$`+`O?0=LFeufI+^Hwo41exyyxEls6eNGS2>e@`@EGUecFOe(4rhg5hNE*&}} zrTi8s6@5WV>8K=1()4KEVLM4rw3qVO=cHX+yrhE@rTjuyN&S;RssGyufaY}51A0i> zU#Gb`otP{mxCctDxuTbz;FolYubjwFN~)wAdrNBVBkf{e*24$tbVR5#TPyNWx*${1 zHE1N{C>K11=Z=>0jbkK@!bb)qKcUn9gjTqLPuv6Sb5lB41!l6tO?33#$fhTmK*>E*SO=B|_U;YX52 zY>?EpNzzBzI_SJv3i=mHhYyQ%gI$sq6-yd-P=*&Dl6>Ijk}m+I5^yV%jdsjoDR(;} z`HEvQ!L}1pUII$`*`+6CKmkrX(SQ+mPPTIAmr`NyHH25k_i~|tL_+-iaPMNTE#=8v(i3jD z^Z|}X;`9I&Q6VVtm7ugjiuIK8dESzmYD&917W~-~goo6@Ul#$rP!F56pm~8|TEg!% zlzMA|q@AS^cFUSV35*3nRa^pqK~q{y}3QBd+5k}7FnZ&?C^KawTXF(3V(hR{3!Qmh1} zoD{5=MTtuTG-{{XsF~Z!(@1RhUDjE zShF?5yb)3m^0AEAwoxXiqfYzl^aN-KB3QUdCe(AYq|EQl2TnTn?WhE65wbZ z-vtIVQN;Iv8v>JYP4^HdQL?QCTpN^ZgMjf)QNy9YfSRoXxGpf+#4EXm@sNa9)|x@O z3P5Cpsj$c(3s^-q0a%sF+XnrGz;U{MsXWFnHcz{xpwvxy}+oD z2nXmU?*gl+7Xed}?D*yB`s9KzMM3gHgPgFtF5hX86K;$jSa!B}ZoN0ISS!H`%(#e;r`dzUI^4ExS4g4g^511rVmDMh0V* z98R-=!<7nd@b% zilo{iObvp}?gCRGkne}8vY|s*HTyu1>J}Od3{|a#h5-8jlb;xaJQi5xql1*o+9F0Z zhpx&1#)N6WqC|98awH-dSk=UEC5H~-=DPkOU@BO$U8{6pn-AOyGD_SR9_TWv>M9XX zQ#beySjjH~Q)J}m0Wjr^u&G9fGegH2z$Eg-kFaXPuLG<8JkOxxi9aSl8FtG?iuR!Y zOans^mgu!b)j>E6GD_)nLoE{S0U0GC(p_(2(2oM96*}o>DY=eS=a~e#%H&L7n%A^c z6Qgpu)S$E$Sm_Yn4~8P>=V5hr2Bk!-0`8{c8^EgMZUXn!={tbceDEBwN^eJCRhlmXlP;yJ8!*)zxqj84KM`0B>C=G`tmzX* zyUo@NJ~kL^G#GqpFd*Cj#uUMEgZ>F%TIEqfE&|g6i*)V*gUGoDxEV0%)bp-R#Jn2l z43KHFCpA_z*5|2)i&7yR3LP>&Xpolz)7(Sy8^EfBZUUa-bRspNtvjw=GE-wXE5tIR|s<{9R6|G1KtDbrtm=Z=+a}!t%5k6kk`h>H+p+FG_ zf>8zyfE(-bIA98=-#}mx%_(8k4n`T|gjF?VD>+Ir2l!>!QXJm^>v3h9E`jlYkRtd2 zxVw(Sy{jW5tcrA?lEdj>U{&{7z|ZNnn}Jnn6#%PVeh3&UTAL^Z4x)!_O37svpkq}k zKS8di)N~6t3E`B`sG8OC7+^JRv&R*w1^2)X2|c7Y%nUNOM%r8U!V-2 zL^vFjB0gu36INAl8CdzbqRT0QTLyi?YVpG?GC|qYK!{PRs1QAXgh@^by=;&Z zj?(olwW`|_VTY!V`i}*pB5ng5tUKxl+*QYGfK?;f1q`uPmwSM1z*>To9Q*}f)ukUB zPTw-f39GKSNXg-!a0}>?e^+gN{HNTx5MTo( zN8cy|;67NmP{cGt+L(M!pqyURbx2N_rhRf6X_aqu$WJ$55Us5w1E&F#&N?Nh#ZW#N zTDDQZPT&YoGQOgepmP;itwG&r{nF1iC)`6&XXMokf)HpnY9ee^#HxDEzHtEZd56frse z3s{ZqPYpVzI@LOUz)Gh+FwC?P>W{W!1Ez!o>2hi-glRY@|6Tfmc?p0LvCLphSPjW8 zC5Le_a39^+;ve$gLtcGg)!H5YqTah^dv>6{(xFHRt5R+SOp#MHMgyyAAFRtMEkl7p zG#v+g6DB`|?*o&4{kqlDLpX3Wa!R%X12laP%^2Gh@0y!tr|bU62Vq(ZlaDQicm_*5 zEgr&ybRCy2r(J|%U>udyY=1P!ZvoSoNj~e5Vr1+74IC57pc znvB~(t_rd1DW^z8A7ItF7AQGv39E(KN`ri5Jq$ByLFGaKCB_rKVqhiz+F(Ff zwb}ayIbpJ+Qhp3fgDLS(fN7CU8E_A*&OKqx4^1;RFug#@cmgmflkr4g8z{+hfz{e) zl|g3>aGb7l0T@uTC9IYdcY)jKI`}sJzf6V#XRBpI8!(l+l6!+{M}%pRr9?C`$O)@q zCI(o|fAPSonv#LlX2$?vxX=iN2H##zSX*09Fm>IxtN=r1S?ch!(*fbQ>xOO5hZx?{xte8oDuI(xJ$U zfmQWY0=I{Ze0tTC!-%%be5gl2U5;>+ZX6OMF&Xp$2GJ5R6A?!MQz9(7BeEr|#(?&~ zq(io&bR8-o!qg*3KA|S|a-Y|kLIkL~{8<^m=`CPtXdJ(%z%<2>afqdQASA3BU@Kr% ziZQ^d*K`C{V@7viSxu<_*TBG^HpNT<_5-HK7622aR4)Wp3+OdUA9BK~F4r66gjIbP zDLFDjSouE;+=BW)<>szI=^il2D007A)ww)@^$tYZC|Q6i7z|8R;IHdY6%baX6|QU{ zk1)s+fXNZXk)2~uB20q`MO+L_bxBG;0yojIn@{yFXE3mu+1mlDUK0l#rt1#{2GmNC zu$quZNx9r}BZjmnvQL0*Ixd$=nla%wb-A;4^=8g;;3Qps1sG7%C#*(2e{1y?uMJpb zrjr#rq$<@;1gNgkADHTi5;P9jQ^%7H#!G-9)*>UUCYX)Dv=SiON5I-R4_wE$x;@ne z))JSEfMhT#vZ27ix^XrzpcVn)*LC?rV4IHp{p2AbiYyNJzhVdGkWs?ZfhnARbAVOd zmjP$1qPPkM;hMpTh1Cts4X-7rO;9N*9cpNVX)vKk>es2ZCEOG;imanSPFN*kD6rl| zvrQRb)VBGo>HyPhgTcqZ6cOd-6JQm=3E&hxvOs@55l9?i8cWEgH?XSWKESG5j?m;N ze{wn!Oe@{dhroc^c(4qZQcaHb0jn|K6tJq-AAwbZJnL3(@7D!}ndYBxH(>HL)F2<4 z4Mr{V-Z2CaRM3}~Nl1CflvA`4=$tMA;seB=@oC{F@E5N8?TnS9WDy8&K zU^g8<2JWHb&Vg3vCLR9@tVTfkgR&57?S?Q#s{IUdH(<5RP>D94 zVzNO_SQYyWgPd@-T7DISQ90fZtd>(p4f1kewXi$~j0|WcL0FZw_tA|B=()U{qv%fK_n~23A#&1FVb*s}gz-SlKQDR?GIa27SWnX=xX*R`+nWCmW1f zl^!+(90gY6_7z~2`(J>+f*~dPP}6EhrND{0oQG6rz#Et%BYg|7w&(zU0hki4t^YfN z8KNt#2L{xNh;VaVep)x6lBoc0qRVdsQv@Wx3#?kcduX*E!fK9)1`gA0Uk=4Kvnsm& z2(ak^(}0zHI&gPgegs(cj$^M=U0rT7*98NaoC$$H1}3Eg26+iE^>vb;2PR6n zxB#ri^9R6ckJA!fU48X{p{nUW!s3=nizcnW@N5~tG)BIAn1ev4ZoC1whryVz7i1*w zqvWt9Oo<`e!N62ar1QGc(J`$jNIqT3X`5MnIz@??hk({lAV)4>$}t(7Q3g7u9FY7= z$Z2dK{DVPEIE0gcsT~mR2@IkY zDPbDK=HNF7n1hne5MY(KvB1jD8^F4sY}1=ypsP6|OvdEsEnsSl6Q?IR-gl8YM~pZD5s%MWjRHKSfTAQu+{BC1N?S z%GpQ2RMh0i1q`Cu5?0l8#2_cEO70l2O56p5PBt+r;_rY}#8(Ukw}EN(LJ^xHt0N|? zY-<23TQ6WW0@{I9B0_=51!b5psyXstjd8z0PFT$mhk=!!W5A)X zB|o=;wYaGMAAnK)^{EPg+^uDG1OdRRBpL!ESW5(9HCQz_=(IBE5LULaO76h>b>Qq^ zIGTfBUqe8D;4oc2%OKAIrc{&u+rU(6l$#HLRU+0I^z#k+n+^IqbUAFZP5Z#8+?N5X z;wlG*Z!MREmHecVBL@}0)VL@?UjVDI1^}VNfFIGinfRLQl|F0;t7^Kf%eC>J7}a7Q0;?|M zjc>D6;%WhF5#v9?s!08m9Enihc2j}^Ay@N46tK#D2Vgaiq&6_@|A6^#gc=5{A|tHo zl|CBRI1r%~I9~fe- zs0phoYpmo*oK44+P{Onfr;H^7YdwzYzpufdzrlbo?F*5?>%eN1%rWQ_rVNnIhX(mF z9aF@F<8+-0gAQSe-$Y8pcYf}?4qj6200~L~CZ{A%GstlPgqBbkn+5~7)peFC9q{UI2-2}3V%m@* zKPkYJunqY22X2J;HRg4dIvA)6CCGRtq>=@6zdfD-Y{ zpkvC$?G%t{RbbL@svsqQUGAx4KTt|_804x7;(=9z?XL6@nYsakBJKmZ>fTvO2Yv{L zfM%1^Ttfh1)ot>DRo(9}=%}kTD1tl`yQ;pA3{{}6-5{N#uw96FC}YX^dd35k;!SH} z82`a&8^{ze0a$g**}xE)Jn?)CuDW<_<+2Sxk{a@FNRY*y!9=#c&; zU=Zk|{?&ybWMB=pI)`K1V-5l*+p8lcObH<48Nf8)5Y98m^MNCE`59n9`P``MkpGLo zevp&@UrC4hA03}jw~&z1Jp@oLNy*f-x(m4jlZX;RSUsH72UcB?ZZXkx;78qPLOw$v zZ-M~w`GV2`&L&1Z7^DKLd3q4AnibywR?Dv$z_8O2JyXXN0bv!vYNZ1`!pi>^VC8=| zF#Pw@it#KM6~TF6Edu;kf^$I})D2VJA%(F-Q+Kpb#2eA*s25Pqc8cG2nj30s8e-`R z7Z5G2>N*!Psf64Qa?-gD+!S;Je(urLOHnJZ8oTNOtI0XgAa4ZBb=xMu`WhydQ&s91ot$8}mrlKQ8)$t00Ql5^r;svHEpyJ(O&?z$L5T<8e z(kVCSsOx~pPX*-E8A<1A4E8is!}$>bs#tCt@O|KxP^KI-X{}ci9NB=W*vV-Ga2hZ< zodv9_>1~7lLLHMnVYynsnDU81N!?RKN`;WqGJ>4C3_9u#Bho2>T$S8eU^TRSrSxG- zSoP`~N)FqbglSA8N5rTh!5mwiOLb8a>3BjOr6(v(>3}D!dP+ZooUoenMgXhQ9Sf}5 zS$3AefG~$cD(VRarAff5NM{)I3Dbm0`b!OR!YZ;ngPgFEuak1T(?rhlbtTFrVf7ff zPnUZl0>WzC`%KB9uda|H+e*l3o}((O*G4Zz9jh6jg+bn;4fZrt&SDXua^DtMEg=&O z286rAA?5fzVAXhY4LXEhMK~p*O39HpQ(KuJN+@Bi7f}8C>j9oRRuMOWTs53XgAQS( z69-IolprUt%1k$W~#DG_TBpz1hZDZyA_azvOCMvmyZFc2*=b#)l& zoPb=dpp( z4Pe@Q=|YjkfdSEqQDJgQSS=U20IRC$ru1P$xTg4PKaNMMVSS7Wh6{zs9bq+C&M@fA z)G_H0RyvCfI=KcN!b)dDwNAE4-4;iV3J?&E^v%KVoKn)UY6ABlR|WN_L5DDhE|tyS zz^Y$7Q#$akZlt5Q+}hK;hptSK)dvHj6=sl*Nr|uxa?>Ss@ zn2>u+4w)F25JE%92#sNcn2^hu(2!d~_SRCgpP5;X#J*eqF=+f7d(uqB?p50qH2(cPX=Y>JnmQ}0_!EmVyJgF;KY*=? z*9|)qJ>(zolcV|Ak0M`wy6jkJx@ML}?6KcAX!rrZ>Q5a?)Idg;?C6*v8k1QXu^pWr zG-n2l*e8GsgXSW*jDPvL60V+$82>v+s0C_e?ZD!LfQ?{p7hAyoNMtzdJM@9Dhinv# zi!_JKs!Xhk)kFG;LoP{^e(sR^Q$%CQ(5#kdd=O2@EJtGPYtq~UyW$6}$1b*?M{TF< zoXqkg?w|csmXolfZ(M*(u^p|lox)~05|^{1(x9ScW@*Ge|MY{sbbkv|Z}sDmfi8?* z?B}!lg#rg#gVRGYs{*lGb0zG?Tx&f(#cs@vwo~@TLE+PfR&tkx^Isqk-M1@~gm zEQEDiLc>p8lIWX7KU+jv?7Q!pgNtXf?crMT)v`@sk9Q{+Q%RMJ9b9kNlWxnP5vQNJ zl%pLu@vs#3{P-%^zYX>^8j2w(!|J(4UTtBorry?I7i%7*$76j-xVyHsh>HDtt7?4% zcCX_J*5E+w8Ga7D9X7T8A=r=Bp0OT3^Wi-9r3DS_|JNc`q=)ZZY^!5oOsQAI?&|Tj z<7h%=1t-?>lb@S|W?ImQec1XNT=mKR`>YF4SiCJ)wO|$OeSVE0p?hJspf&6>YgcP1 zD|V0e4R*2jiG$$|+W%GAsU+Nu=feZD{Ry}>^IX_n`ZA0;ExCoT=f}IjzBJgs3U>co zu6nM*7v<6{RoC@|PvWY8u7|zW?}Ra>;Sf8ZyI@r;{bSbPbWUbfAZ{SPk=H8NWq*X} zq3ZtMVrWr;SYx9C`axeVsg?e5UpeiGeJkwJ917pTwTahi>oeD7d+o65xl)?VVK2X} zhgFIS{HwvLU;v`Qh*iNEFqhPNu^$><10RN6PL~IbSceqZe}TOvmv=3e;%0E_U5$Sq z5+2tb;o4kyP_U1HF{dEJ?xB5yUF;q62-|7QXxQ^(Vz5twE6%t$WL%b6Jt0=4>WS;E z$?UflH`|VWS|}^_-SQ#WJM6R8Yy6dPi|4~$>n{fT%SC~b*cJcNb}IIdJuB!%*t_ST ze}wISHS8t5=5Fdy`oD}&iF>#<@p>3`5c=h4Olbo8SENkot7vQe-%oZn}?8YXrSC)kc3{{(h= zlsJKmQ?t{LEFvv-;bp-tmUH#i3fMt>4ZA0P2zqf{*8gfdLGb(A)t@?3%UbSU{T7OP zq9?4IjVd?<_L4gl##B<}VmmzxcF&z3G-CJ4rEopv!RzUxP zUBO${V;3t3Y2LM+vP(0|k667T&3|D}-p{4c`Y-cR!u$V9Wynt9Rhi{TEUg@s_9!%F zX~bG)(zJm+92;4WUEGmt6R*m)Aw%rL;r78UcI$Vtoyz>X>8f}*c7K-pd$>!k;4;`j z{3(>3Qf2;mG=-J$`?@CBmHov9a3(Hirw`apS^sFe{LI1L9gSN5o;8_kbJ?ZXJtsch z!}~v(pOWDxHf!uz{g$e_XaMY9*%8K6QXpansvnF`c7pJa$19+r*wqsX=s36=SNXgW zP628BuOi|7|5g}NszB@tnrz3Zf0bSp%*O6h%^R>Q_z`w1TZ|}z^Do(}Y#DpS`}1ZN zQMuTYu~)E*eR|m+R>f+~B-mev`y=eJp9R-t&7&}w8Ya#?S}8qF!nerh;M6S$pNAd9 ztFUh#OJO~R$PFL7h!kZ@?aO2$xkhYYcsEe-Lf_IE?Oq8 z&zf$qd#EQoINOiQ`t(tv65ce-^@u*Z8A+&r!@KC9yjyRygO=3x!`7lR(I zG#6M%hFiG^_I>&TSZ}-3`jxONUJXyk_Hp|ZExr=QoB|TNtFI1rakZxz|JgzGco2y_ z+dm4LWkDlW1sd1?+0J;cfIU}gM&^L9w}fqPC%e|a_WAZ%RFm0jdVB1CPq;tqEl~w{R`}|tl76%e(S?_S`Q;lm5JRG z-E60Vo|#pdSY_2)+f})G{@;~^C*3}|KpBzPd%$6~<7iZ7ITd%yPA`DH5#4M(d1Ck0 zG}v{`*f;F|GstiY?r~u%@E`e5WwWq1q*jxzvo_)Cs zpc6Z|8Nn|0Lxv||2Rbik#D1FkmhF1}Q4u$ zR|dkKE4#s%Qcw7AvdI4k?0zz$ztO_{uZsK!TO=AqMw!A2LVv)8OLF8t<|55l>_=ml z=0(`&hX26+Ue7An6RqZeVsl#)_R4BqA>rMv6YOs93FEt@K*XM0eQhU*ewh`J*zY3- zSwmT|e5i+p!S+8QYuah^aYBy78{F{W>wGlihh1l7t)%B>mQ<|9suTWXP3F#ARp*1) z-3d=vLs|bN9Qm1t-F3ZTjfO^vhU}=_fkp88^EsH)sQ6Fm$Wd49J+LdFJ*~;SKUW2G z8}{1F(_weWUxHqIh^B@L{2DUE9=h6tiuu_JMw$XDXI4PsGIj-|zxBf` zw;5@Mzz%5liVKjjJM5_Uggwy@3L3FL%{w93#oi*$2zId#RhI_4SoZX2@CIiP>5Z8c zwYX1?dOqxx`l9vZi9ILZgnb`d0lNV|1-;lOxHS*vXn>E@UHn)6ZEG^uac$!DK6Y330qh{Y z2zv3btl#F4qA}w1R}kcAFbTJ8Xb_2YmXPK^+X?OvSnn|v=qT79j!X#}vovDuUyZ!( zg*^c)4~GJ?Gpm5uhnVMsW^m=&0YQY^dtEQY;*d=9&jE2{eHznoXXPt$4- zEuvc!PEPrs*blzi*-i!i>shL-1NNiPs+H#i&AFMS5pSI}_aEw`0U7@DTN2Giq)6rH zaXW(R@2~#Wf6E%ah6`ijnMRd0^JSk9>|%Ah>{EhWtS<(&)DPs%3K?SE_*CH4U>EC{ zAp4477we8Idz%M}fW%s6veyT@Seu*dU18=wiC)!&GkUtf_S~03fj+jQ7hB)Yc6vf= zdw<)}i*0YPeRuX>B{b0#(dZ&0@s`;>CD_Ha**-nk#i>j2GcVZ1wl58K@n+ipRdH!n z(RE@Ms1J6r18oR)vF)RSU95Ae{7(*cvF?PjPv1CXOou&|^Jd*pd9%fSyZdj!DaNII zr}Rm#nv}P6ZPUP|ROVG*s(u++cK^*d>8GRdLFH~K})5L3ExKrj+LRtUyI+Z;W zyAKI}3>yDsJ2aKjjbt?6m0-;(Rq%ofWcFUXC}`da8nG)|4p(mooCShL>^DN|c2|R$ zFghanZ|o`Rwq$HUrRvBbNmLyd@ebG&+_|tS6JKo&W&Jn$TO#gq3%_Idbm5R0=rt2*-;;e-AD3qux6@)IL~_gOorVP*V&FnY(IBqdqu5RLibfw z`~a*wk(@r9Mdi#Mnn#1?32X4a$p&)nk7e&e)5Prhou4MtTq9#LK9 zQ{l5RFNfXApW*GYy??L5saTtf{2UYP;x(};h;gtRaB{PT@mInbr@+3YozX1f^CZ~8 zofqul+FWr3cG-)9Mr`{Zf_*MGqI6(TcP$`MpCercJD|_Q-AX(*SGNCQ`Bq9<|J_IV z8I4`bQZ2p!?vnL)!uI(WSiPd&s>}+B$3uZ7un%^h1zr`n?(pKRdq>#sGk1V}P8$Zh zvb|yV#Qs%H^;yD^BnT!giP4!;Yv764)tc8}Pn>@Tz5m*!^vkjL%lZzZihm)izl4c7 z`S)MNl>VYo92nlt1&%nPi1b)k%Tir*O0b^;cg^-c!(ge*OYDvHF8CyDD%d*9u z$HN|i32^Ea=3nV767K3tvq(-ahd1D=)=zT*cn0jAcmVdAehMZ#wbFm{Q>|QxT^pDD z)E!kkpXdUoXNih#a}xDj#e2eBk|Y1oP&pcjeQWG;)EG1uWlmiRdoTGDtcJ+v4RCGd zo3fs~N@*##$;o8s+%@{a;+8oX#+>ZpVd5H&QNb?OJx}%(!7ldks?9@%A8}pQw@-HZ zza_^aB@~_hO~)o?oYp51_Tdacj#{l0cShgH>#3qOiG5#q-FEbgLRqoPuB=#uqm{4= zuRXdLg4VG2^G?C;zvHTaMquZX0-9tEX|YZ}O}wswJpr$ShhR%@7~cv7#9pIIf?a%1 zc67UExUV6|o`gx4hkhy+7=YWe}{E z>1NgdgC$iU_Pg1=vb{{6xVk|x{)dDNaZ3d1u2I1*uFdu%gI#R>?}EL7d87CBnwXbVCYS#fuc97{qe0jkdCjm>>@zb%|LCs@j3mRmVXra87g~M~>*T3kslZ%H<;Q z4XYaV1k78h>i++x3y>l9XGNdE9^-GU!O^#wQD7L9^Deg=T%&8voH~4NZIO z9m!CSZU?*K!EnC2R!V!4*b{+Ta6Q~3^WR`ku6b}nwwI18##QWAt`qEHSJp1r#qQ}% zlAZQz)98>zidw9htf(8ZJ#8#OBfE~_(i{wX$VLaf*fW0&JUHv`u!i&<6%r!>wf-B} z(X9$1u_s!Ku?4RSQ>>(xie2_Mw$qrlnbk1y7HAdpkZe!)eWT&2+msu5v{ZwiR>@EB=>nS7lp=R}1_J6mm)$xVXGOWX-BJBcuGWHIdKABaq zn2}8Szrx$Os~bExYsSEy?Gs_lDNwP8=Dc7Rd&9ZPb_EK1VpgV- zI0#3I`ZIVZt_rBadfN7iE(+vg{+eXey<*#BFfR1HE-#mz^qY%k-e z6KqFaVLhi+Zyf@AA|Dg<;(fB_A=ndhp*8w0xf7~btQ}CT`3CmP{}J|5Y;kh#E%Ys6 zjj{CY;99Nwhz$dAKVjCET(Ouv)Jc>{5slcg*(R1-sZibUdsZn95dyMr{9=1-p0+oxfDz zk0d;ob1=gQYSr@j$N9^qyGUc(#UzW&0U0os%?whQU;f%LDY{NTG1NciN` zNXGwZ7sep=WLW_7b})_E2SFp&ZB*mE-l;`EV)axbuZ@CTYpe*oVwx;LcfdG2AKhU9j&L55t&C@+EFwDKCZ$vEDYTvQJ=l@8>}y zuFabN!Fqx%{me9>Foa}0!_STk>HXd6}$D12m4&uj^@J;qnD#I&M3;BnOT*If15S; z!EV5#aK0DtZ;42BM5G|TguM~{2xCeCt^P7cCc?S`@;4)0k+R`VEa5b zG5s&6N;uL7VMqD|Y^RH0JN*W>(_dgaEuB?m`4rc4Q4iI_IvJ~x1GA7)ePLi&Zu~|G7P6h`sLbvYpn-mht;yu*~JsiLt!`OC|KF5Ol+THVBcMDJDdIAJJIYQdOQ>sd((Icc2B$=G-CI} ze}i4D{a@X_(K$IF8qglr@~hEL?Q|fa{amft1NL~2aRKaNcki*VH_K_m9Y zH4Gk>HI>UPqFb(n6@ECJ!_bMB_(Qe#!}c_y&U#N z^qmV(@v6)ULhJ_-`tyWtecNzj6Khf{&@F;p-2Af?{YZFRcMPK8;YTQ^^Te_qCwf#r z5RC#=5X0fUVO4Ow%VNI~_T-%gJBUXMO{Fv^C*(-17R%8yuxIS^E`VL^ZhYBx$}Y?- zKVl85{QMjC5PTT)AH#Jz|4Z~433v53unr(iyvmb{W!VOHKy6{NOJ!bS+uPet5Ml)? z|C_<~-vjoRyj3NORM~d09qkBXN~>UCwyR|g@HyD!^hvmutIGZj_EXc>U`#1E@!_yE zeJ&{MVwFw%{}v>?3Iy5n5gx#eT>*WmA2Bpg81-sZsx;J3=#CsQn z^FN8^^ZCk9SnR#MWndRp+ zsq4hPc{~B@fs{0FSVONY&a561>!TJ`uoCW-^&KxNe2RT*?hH5o)aEuMymkkK0%8}~ z5%$gLK-fbzCg{brx#DAC-PjcLRBH&-te`7O=$VY7{+C6W6_D(21-sbew-olC@p;fJ z&#Vf>2WCGzUtIKrnBJ;B|2c|;-*}vB5rxGb!dz0+Vn_W6Y)7A2gHG(8_&V6dZp=@xgRZ@V{ofU|B;ln}hPC9>MH^R?kZhcEV)f!Y1M+xu)DDrj4AmMcY&oD z0lTt&gGOxoL6wkk5WHV5JTutEo^-Qqr)6ffQmp3zjl5ofy-$1qdqsQOqN5dY16JR@< z6bg&|SpAY<7u$ZL?F4F8&|)3$8g>7FJc#CImPo9q)v{+`PqgQ)$1e6`n8mhJR_wCx z2K&;?@-JRj>rWMY5kxD3NNh*n!4BdF>nSVtn~J(Wh}4tX1H4OrZt(pYTn0gUKTXsZfKi$t#dj1zwZ4?>`8)4 zshruH#@^U$(?qCdmlh#rUSb1t0cL8bIu&QQgFhc(+(*~>7O z6p+~VS8b;^{qPVH730u?#COh4N&8kf7w_QD8 z2iM1X%80#jZ42AyAZzf`P$5x9ET_X^jZGu3@vxnq;sV&kUY6&<9*#?bM(j7Ej|96| zk8srB=d(TS|4MiR`4{Yp-^wCAW?c;XG3!@Bv(g%ziaX~D+Fx1Sa8y}$xHj8+!tRMJ zuk`t!3i^@Z3U-Gb#NIGvOX?*t($s>}VV{66hF!s>uq(I_E4J9q5pt5qrrEgWW45f~KN`yYcXlA-4Sl+X-%5W(6wlNI;FeuCOMvE4v1}`6gHa zm3d8rxmM5rcam_|-3^nUdgb1#DD}#0SOKZB=U|@=-+?`=KZD6mWtV4GpkjY9p?p=L zDPP6@uL2S&!`td67LnHh_LGjDu-EvHN{ef`%6?$b9}TB@pz%MM zgl4`(m%&_8VX+He4*OIy4feX9VLc6)3Hu&#FYImj>7ZYb?W*hFaQggLiRC2x7P|IN z#i^zpOm^zh_L72;2?5d>)te>ItzMb3B~qM5Q!=g!XL}xXJ~nU`l3H zCax#Hk=HEPz4fB?*u}2kp0F`|`*u`b7KUMs15}rh#!@dQ78SKBpuApX0!7X51 zlvIh>Wm^Ti*b}@p><0I)SVSxPWLAsC!*HmmC&J#I&$k}C*z5ieuzRHm9zwnv_ObQ& zG|Rtu1o`Q=B>P=mv_R}uZVlIGNBhB)OHR)Yda+x4KHMBo(EK52{s{Z7c*E7+|8Y#B zc}?FByEQMsKBTO1O)(kEnbjI`4}7S%wzMX*E88BsH=+i(x)Cw{yO8kgJ=leDdI;?0 zGz#vME4U1t7T%}@rJ_wkZLmQJLe6s>QCKr zBZ+!gk;hzn9rees*YP*j;OJXe0m5WB;yTh2% zkoC;0;KW;CSBnp_CiA{r)ARqokl`8rSJ>V7Xec1|O#WNu)B@N&^t$y_ya?7xQN^o* zUF=4#zLEXEK8rfsRCJM8c2zJi*u|b)gJB1{N6?6U#6Be0#dX=|k#O~}!~CBVL}E|C zvuvj|=Vn%yiW_jGmd%Cj^jYh%iyi3mu;Cf|CA@T z=9{2d6*OY^N{gFw*`9o42YVH?fp^BA8c^BSA`;?IX9qs=p=HpTw3pQbfmCl-Vsl5xavJ4?BpngI+w6a%#X!wo}#JMx`CpZMMTYNAtKjBtoL1P^f{~^ciycsF*f*PYK_m9>Qtf3s0gZ%J zXN|u9c?b#b)srkDa|Iu_YOU)Zi_|~dy#Y)gy^3ug8SG;Dk$!^h!tD+sYZxKzWQ3!3?vD-tPT(fdKPG_y2fzdQaqXub^^u{Cwmi(V;b zmLIV-n@solpNtMcB(`XaY}c6e3mUOCLxN^#(1@)$C}<98)-e7`Sad=VjcXS1q$6m~ z51PqABetJwf@W&ah^@IxcCEiMuPgb7!JY?GV9jui*{!gb&}`V_{WMH=DmxQL@}cgX z1=qtW`zq|oyF``opL)?OeMJdBDEJcYh)9!b-P?70txNOs`%<468p$}d$5aDf%MP8UMUNLMr`{(;BwZ#0sDOL z(e0JuKK%(9by>6=_9pWKj5)PltaaSTtG21Ii#;^!*iKKh$*f)x@1DyZYK`{)Q9&f$ zHjA#Yh_o1KYVi|r*Uaz1wV9W~4*GvE<`lHpo7HODaVFOMD=9i9JTuq5qu68yz|v^q zn57qQgknAU7_x<7&YbZMj9$eK_N)HFo6G1dLvnmt!$WA}9hO~HZu1&nQ zy0d7p_{40V2K)Pi_rabM55enb{i*QNB+`umeiqgc$i52RA@kNViVDPT+4i;*=)lYh zTD%8k)f1Nl&1G;In>14@Bsyo&Ll%)1`-br(>~UQXG-3^z0(~dg#s0`<-Mfmio5Dy- zs$4vrYdZfQ6EeiLWGL$2!(Nt`1dZ6s^7>#Gt9w=U7Tam%G+33Y#dpG<;P2e!{hv${ z%`>2wxOm>P|?0{PTrMRze2>W?JKiGP)$NRUidvOTd8BvqQe@rMKcDIj*z09tL zy_Mb?^kP@g6zpR6&_ls4R_`|PnhkHN^{2!?N!Zb%P(bX{%X_dV=?6joiS=~vvdrpg zaUXm)@@hM?=oPW*)T{C+3GZCbSVZCZuy05U;Lh36XF;<(vnmtkHC@{L?xHerIajs~ z>;`NL*K7Y*6bF&;*c=06O5;5SR=2By39#lwBd>}z*e7R}M(h^f3%f@jw4So!TCS@1 z;k()YJ>GLI!jV}{#XcD?f_?M&5U$IPmcj1DZ-S=go}w{gSKI;hEW zA+v%Idwbpj_GH`vb}I+N4q^`&*J;}xky(Dk+PKt<`@_x8|HqKfc&l5+<^tu+wvV$N zM`k${`va>Btf8#fExr);Q`Q^c94O--3W)t^e4g!8U{+;f565C_s7&nPcn|ifSq5v; zsbQbP?&;OA=3l8yh7#V-Tl}@?x|W$$v3M`E>biZc$t)kL;85(I;iF&=&C#$Y_(?%C zu|mS#axsjL6p*+JET=PrT|6e+Ti;vEgZ41yR95WPcZMBA57<8U$olmAKO=HNtrYjh zky?2=?84_{jan+M<*MM$gWa;rgGTJKe}diZ(_#14%zMNBPonrm1K3W#fT<_7Ol+s$ z*iO*jW>y2lZop>u75Xl){fMiRn(^;J!ma5AyW(v_0kP-DAb4v$sr4trzEPbIyJeTa zu1xHpuYkRDZ;&Rff1DZTr)obk$-V5S5^Ef>|T8P;Y#%f0F_ZQ zyL$tdv}Lx0{XD-jyaje?M#A3zkF*}UxH_TuOR(_KS^u0h^vZl#hnGfP|ACVqjsG_! ze8}wkNcDI1R9QcmOKPQfJS_XIw&Qdi43NJagL3t(TCSpkXNvbARw-|y}Z zQ!MqO*a2-DcmO;MjT&$sT+V!Pg#?@mUkt023gT+mt+^T2;~5oxBa(ug}^Pv8IC zj)c3q0sbu+s^B!ZKJ#@jn4%WDCvFaQ@s?TtBJ5syCuo*rRuJO0T7PQ&3KD(?v)04K zNu~{~XSxcg5A5A-2wa=(Lt)>v_JuL079Rj>eyFlTV9%{Fu=j(?H6%3ls^A{DMdtfp zFtu3h);tCK2J?K-h}|nM*-pg^;WB;{#3FceSPlLa#%J~X-)44EnRo~S1+-tVi{(i6 z!(auf^bzocZ2w2li@j&O4f~!__efD!-6Nd;y&6?4H;FCiqnG4xzBPHrofn z9{Ur6M(km|7`*1i<%t~nliJ@6E z1$M>Pxd3_M?p!tYPr_cV^I`YUYe6rz<{kKvT=q|o6)R{4+%&XNJOO!+wW!RVXYzIaly=u!~*suki1(=IAF1 z`!R6UC+qJF5@=G3#a^#h!((#c?_fLq9(FgjezGVlw!IVFJD1%vXvFo|ej;3}^{*}( zPr|LdAQTYK$eQkRi~B+!xcOcHBS{Sy0{b2GXxPIyCg{%&`ic^1C&Iye*sc6K?EAud zp@7)4`Xk$!2Oq<_QE5(;{#Jeb+6bNqm$|Bur^0UJr7))I`Co~nvgngg;EPb8_Nk(k zVh>XX*cEhzUBQ5$7Z1$-C&BfZr#{9052vo1N=BcYF%R~d{s-*Gtnb6ti``ovz&=_n zhyCntHSFcL#?ytLjo{=*VKc29f?d)@zNO;4V-z?zsf`uAU@XNuo= zod~-EG1}CEn{3B0Ei;7^`>ELd*nQ`GB(_cNJpUolP|k%nfZgpI!xDFGVi1Hr|xQ) zUo4wFVN4}OD^?KFj0<-0plrW8*hlhqT}Lr}2V``9>z;mD7uLtNvQG~7iW1#&#;lMb z_LoUs4R*0+uNyV#!~&V3T!_Owh!mGKnc25`@g#7ez$<`ngx5Z z%!YR%Uz+c&$?UVjy3ZFqw=qn1b*{i(LAwO|(99Z|q53faPog8qP?xK#kA;2GJ4x6quP=dU02RQOgzvjaeG8R+cnh!9EkzyinYN+f_)ApJr@(Slz1v zJz%%8mo?b?WL5=Ye{E+s*h4TP=*9N4H(ZC0CSC`?x?iO8|Is9T);kOK{re)goC{nD zd+cw4F_)AlcE!_!U2OY|U>7@}zr4Wy?}+XTB5_}wE7Es@UA#lKw_Q+7%---e*?t7< z6VXH%a|%@K#++rle*foO5^8-Tuc@$S`#rF4sgJ>)Xivgk)AM19rQs9n=q5jJ2mQO& zU>EC#q=qep)9=42v4Vu1{s24Dniq=}h+ViP?BLdi9bCJh7t5yt+AP?`o{W_(oY9j9 z&Y5d6s~c5#s5O~uxhm*gvDarlHfY3NL1)0tyJXN@024%Y|G%1q@6%IZS8zS-NpuVB z7SDvKH+8#MtyiG;2F>HvU>DoxlUc6@JpCg3KiA}F9vO;Mj$R4{7Q&d4My#QcW)bYu z(I>Ej`v!Jp-@!;z*;TObH5W<;rWI#UU{g4K zCf6MmF4)ks8Zt?rpPhu32NN6@T@j453r02liRxg9ePQxL# z(?15g*!F8|C+MlL0#eX3f_>&IdH+|-W|HAM-du|)Aa+1c!9Irn+ZxI)$t*wO0lBia z|12hKM;LQzKs}r$xc2|9B+kwSZVMuD8M}JrF4#TsaL|aYc@p+r^eMQ1F8g)Ri}$Ii z`rP?7_J7|P#*;vwq7!>8&xQR~>sr{W;BT{auA*VRRr1#&Vg1+ zeMry=sg(!7U-E+e#p};WM(H#`{xS$ccS5Aey=L&9u z-Qs(LUR;|s_rrCWXT$Q7_WyaIfY=l5A8_gw#^=?nsmZ(xg&TSOW>HZ=JJ_w<3?@4b zrP%YSFKquiEDFzmNHj+}5OxFYrp5kfP!|@EfHus;@f`y@g zSO-P5?2}*@cg*%R-YhB*t4lQ;8^B|;=Io#m&&c+UZxv-LN^G4A?;A42Tjc_c!7la= z_~&33*Ju6H!7kRGq2N9ZcJT=B|G!;aL?qrOI~p78V%u*CcCowkR@f(;nXu>0eQ+8w z{LX^iyDu&F`JarJ$nfKqB`~Hm55z98683Jm&fA4X>>$>Iy%akKjo1^jx9u8#B|N#d zg1x>6!LImV7eFtz{z%wMYdq}WE(&_F^;ZPDxZ;d!LWbD(n_yQk6Lvt)2EEubd@<}j z-~-qnM*SM};_Sats(UAQBkQsZdpWg+ccitNIJ?1~bYrZ?E zs|}E!^}p!|s)# zuvSOf|91}s#BSwbuv>X-(1>k61$J*W!LDEi>{T!armoZz;#yb@d*VIzf3MM}gGg-A zGq5MrOF<)6%jD=^uq%E8cGc7A0%F_C!7ldQtR3ti z+6VprSwaht_{1uieP-A>wej4x3tbH0;(KlMAcW;?7xfaj=W6zZ7;4{V8a~ zZcJrr$e71JD(i|2X5rmrgxj>lh2MYrqqpMjlDD{2D{h|m|Qw*_E??>yQ?R`NK?gP_wJcNa{;XRmqbdqOD}_MU&3ESs3oD#b(X@iw4{1ZJqvqW{{d4rJyd!X)|RZwJ_z=YVRz{=SUn-lFV_LX&E1(){! z4N3UE-Vg3bhFY)>?0^n~F{K_7YtpH*qim;FM#Bzh46K`(G#6*Rd|qySl`E-$GOi-S zH=T5PgUgX=TTg&oifFy<7Hcv#l7{;;r%JsE#vJAt;%oPPgb2^}sPd2I#zP2|ol zfL-jd+#R;lkwGJ_%RwAuJCz-hxhAu|Tc)}$!QMsdPp!P0geS#Aq44ZbSgdzND!kB| z%(YzQ=N0Vkp|^uZTz%rjml|OAbmhk&61xTb4e{o4!20kRxq{1JFm=0F^;^A0^zSk5)6%%%20R+tqdRU=P!~uy4Dc!FKv3j64M=*1B)x z^)=j`s{(ERaj`da){nq%o-_6$!%^=856|`+U@$oqdk_CB?32&GVR!o{@CLc;D%gRp z@t@*+P=>daM&rK|2`;GuaUWQbo&dXLCkKt#flh>d=D!T~5KM(#@$E3~l7De8SpHvv zRe#D*!cG^$F8nrZr~iR{He3n2tk`8&!5;7OCxu4rxzZZWxA;nFlOPgXv>DvIZ^OPv z^s}BhVXn!XZz`o>X#D)(2{WIwTrTZj?TV9vNUSxgE}90rC+@a}%I<~bsFBwr zu(#N!WxwIg!&-K!IF@%Ym9xA5f!Zmg~UaGqCRt3F^U(% zm{PZ22K&Z(Q?O5iH4Wuxda#Qo&#p)GRJU`gY zYNfbK*8CUl2CI>+KP?&tR~oRTZc&EExRXWXiQT0=VGm7zxIg)FIyUIV)}L%U0Zo9_ z7zH;8)>=pp*3Kv4nR#g_a9L&*5UT}h@qMsQ{!dzueKLQ7L|cl!W;6v>5IT-dhr#ss zlXYa(ikHvn@OW)(a=K2R;#A)b_Dbyt??b*?c@lg;=4WBA_~lk7 z#Q#I9dMkH-R5Fg=Yzk&-@2+IHm3vu4 z;gOl;NbD2-G1lNntoxgK>ulH?+QqOYof`0mpckvR(v9^hXHdbETtJmgg}sCxvxY)q zKd*Wt*u}{yns?ycQ~|F}|10i?Tf>-A?}{sRBqSO@!mS?+>$6PR&xCzUxE#im3X9#c zt6(2b9*2G0_%!In4(^M>UMVTz*}e+)-oDWn#c6*lcmNeEpyOdKDG0GA;}m#j?9#jz zG-3z(2JGQpmNYk?>*u}QLYCF@)T$8y2i!e>x z<%rx9-@%UhM;E3-v3v6u*i&YW6~zs)73>AD0qk>DXV}N1t%7~$3JEXmy!LB@TI?!&0PLY0{WUj1RUk)W$rzn^K`tQsOR!u2HjJsH zGUBbcO0(8CT^mlyd?xIP{6`pb(u;S=npfdH6Epssep`sd9@oynF1EcFT$def3Ae}< zY#rdQ3LmwyXpPwKFebpYS#ydt_?ZNE!>)jC zg8lYq7VJCp->drSyGtd!~J?VCVk(A_k8RrVUyHo|M;qI_1=-fA-L$G&+9Yi0v zK5Iq7niNE0J32RLrdfmIp#*2m2-ua4gFO#U4Gj=`xn2Nk{-v(FD2r+c zNbIh=4fdGL&KmuD46!Ha9N2IC-w2w;u!CC~G(Q&_>i?lSdsT58_;3PJm!1f7Nx_ZF zERFcL*rmDMn#`V<4+Xo}`@svaxA|9-hWZtu63%!VcGoRUqG}Lk1tC^9Du^#&SNv-z zTlZrzZ^XVYtRL*_S4jA#(hl}JaaAF z1#Q~@A0^@C_hcv_u0_u<1jI`KT%tK*+RFLqadY&(IP6|`7o)pOtc7`|QbEg7Cr ztKgwoH1MbDBvQpgVQ;s)!Mk9S{c_j=-2`Jw!z%Wtj~lEm?BeR|)#7{#^L4DB-c+IAn;+IiOCkyS;1B_X>Kk^;-pf|EzDs*Y-g#rrzqOOFM-O zu>;yA*u}OFx19+k)@)Y=qk`RBgGSsfYc8;c^aVe&|9kmeOok`X)F2Xj?fx0|J~7i8 zDln@u@vvOk|EwV`_EGOgIQ6LZ-=A}$2`>Fo9HCBz-Qr2Gvdg^0I@3u%3-+XY4X(}h z*I_s2Ll|=^EB5C0DXjX_7Q38;m){E5yW20YgJ|(|)QGFJM=^GHArM z|6;rTbxEnVTXWa7g|VdJFxT|t<0$O6V^^;{0(%d5%6jbcV4n>a!CkX{l{NSg>s}*2 zYqp@LRli!iB?(8j9qc7H5GK2%Jh3;B-EGI|h|CI9+zYKLI1Tna<@TVz6ZY^`W|Hu6 z>Rot83M!!XExR=g&U`Rz`!%ri(!2oc03vR=Mz`jFi$4~|lzLI@_l?)Ue#6=XGbgJ1 z|9vFu3iCg)3%m-C#HPyX>k5rny`$FmgnPh^y!L@rvGixbo;OqBF4_KAU8RV0 z4jI^!BXK`ij+VjR-Ab(rz1S6(;ci*q*Ba7d?+rtPU0h3kdI+{FiB?MR+AD~}KCc}W z>|)Q4F}BlsvwA}8J>vvx@GtgKJPp?TE2$Mqc(*#s1#on3w#(^cSi_-SnF6bvg1*uE z%znRcf3S;P@#BTPQc}XLdCD17HV@W5ugVs}KBBz~JJ1iTMOU94VD=l_R8hS*!_v%xO5{k32p&A%8{ zZ?)v9=~!4!_2_?s|0VJ6Ro0NnJ{fzx82j|cx>vtlpp2O=fFrS1gzU3IfkjlTo@nIt zrh{NO7Q?DQ_9ekCwtZ=^o71-ol<>RPpDn_X*xmjsth-_puWoA=kiNC?NJOc@^C1hO16%xlu*ST=m})r1fXEY5s1< z&agT`nqe@Pl472QUaMI#-V1LFH}d*0_z~A)Q`wK<2Qpu~b~nG%sj<7Z2dJ?Mm@L(5vA&r6kw(>04Uxc|f=~=;QjS}v(8&d{$S|-*4P%H0* zy{j*RkHD^$ZM9CZEewJEUS}BW1Jmzdq^T~k>pHGN!jVo0BC&_&blVBy%*+Z%?5Xjf zHB=%dI|cW4u#0^H_ypFBNh^2-iE=Km3Z9<%#&wGVGhocAS7v5b5Ml@M0qhO(YuJ_j z3VZ5puwJ3*vK}Wmi~5ma9t68rc7a9Dw=;*qcy-gx+6>>7^w*)IM7=2B7_v2P*E zZPy9T2{{#Sfmjo2lQu;VU0_V9^<7~H(FfMbmVQ5LGW+H`2K!)a3h0iY5jX$)fcr_f z#gAD;KyzSE!1=H%`^*}gianvega_oxdaPgg><42`Jt5X4RX~+(NVLj{9pKu`17Yvj zd*%Xa_1>9Pcwd-Haw>Mke}Fxd*9VQ*_B&u2Rz1NzKw<=rUT z*eyE{_FIveK_l*){k&m2^RJ|Y)?y>C_npDmFNL-B*1#Xb3PPF|ZHsYj4P#0{h;M?` zvKh8hb|!2;_rhAD^7A*i`S+n;$s!g07tAF&6?^}G({`LL&UOX21RjcBPV3thWySrm z$>#yEx89QqO{JuSXYZ*+MoC)`-0#_J%#%F9{m4_xwA8UF=EsK(IehA>kH00`HV7{w9dTt+M?`cu3}f z8+B{AF!R$en1)PjpU(%oxE_s$<3HJ+ejii`chP5|fY|mggI(;Q`3m;l-m-lWgjh?l zkyk6&%X|Nzfs6frG#OeAitc@jm|RO?&)BbE_r$885qpNOhKJ{hhi+U1B=#YCRI{BL zm2fMMhU;?>7c`4_)CZTd{SUC$`t?C0_T-ugd%`{(G-BJIl3gv_}s7q`@f^!)ETt61FWu9>$}2w``^fGur--I4@LyL zSVO5mN5ix-@wKoI>9@k^eXhp;VG>+YE5*HG6@C|XPkaJzo$c-auUqq{aNXhUvi%6y zy?7RkIr$WO^SK!IaNhto|31)Np}6MnSms}b465SYfuXKkU z&=43GX|fM3^p($C(PDjD@6i~(I28~$jSoW#5XKuw+J$DOspA{amhM;G|UC3A2 zx00Ry*YaDOMH+AMK3UYGV{zBo8OB^~0j!ouKN{W>meaq&J8)GH|A9S}>(%G7*u|a` zLn0==q}H^DJ(j~@@7o8# zp5fzR--0K@6fG%mvDf-Fu!n4V&{ULg>u128j1R$@)e7$CP(bV-I}qmA0V6udt9f%$tnL6x8kan-4X0!4TbD~wVj~v zg;Rqy{x5`#1+ZKEL$I%g9d)UD@wjDM7#C^0#hRGviGi>mv`>T`+?hcyu6XRva|Y2( zh84BC_cHkS?DQ*mB&^o#+@o8=wV4;eU~#YfxQaugS|SQfRUEUyu^Md^fm0AaaGWW zN265`hiqO9@e!M||6@yzNHpITr@*$0hmla>H-cU4TkU#%3cc7Z-Za?7w)beZGyY0= zoVISxD3!z>%MrmY_B=Q~*u~z4&kc65{a+gF;^uE~Tpu#T>RPq|7*;YaK_^) zqiPqsf~Rb!mGd&Im15trzY6-5*5hBSdKAPju($AaD*cK`*MWV+-Vydq;!xPz@F>`h z#=!VX4G`-FWp51{u{X5GvOS&um2fNPx&SQ`do1U{zU?l7Yjb7q!M=U}7si|d z66*$|fWC)2XWn?L;yl=UEB1d^yd@cEQem;}{exZX!{o4F7yHJuXRwRiTl)vQxN2wo z4|fJF9tEq#jl4$No>@1K8Z_gu_sW{?O<36{!&;)^2Vn>LLVxyuY^h~0kYPu!z?)-NfgfNl>CMCH%nC^Cr()~> zw(ui91HH;#7VKglK&HZJu4w#kCE*7~55nFY=D}pA;KbG}f<4jRwT6I}!nNodd3_k{ zA7@t3;(=LHzisu2YpOsAchSDEm(#&8`lJzia*cs~+BpOEJESXvUhE0`C-?~bs8^Q5 zdAKX3pF;t$XZ3p96+N*TOt}<T?!SnOl?slhIG&)pd`Pr{yPuLZr>z4%@wWV{DEh^4SA`ySqyAQW7i z?ThFC`@w#qeFAK!XTV5P&|<$2yf@gzT8ioO-v>j6cr7wi*^|L8_L}~??R5JB*!PHq za2Luo^7_)6%&oY}=SuA6pSKU^e-h1iu=YC?EfCk{!kYx{0K12_33{8BkmPlWvr>8hX+TXQwc9kTlQ@1KK6?5+1D*p)4U7ZZ$HeDA>GLE}Q$-ToF# zc1aBqdnf(Gb{e@Xvl_f?Ap3tk;zku3R2+{w!`|I~3zMC?bO0>pD%=1c4y)`f)?{`o zZ^Q1L@nP5}qUWsF{;!0)_eI#V_m#k}!*Z(1--NZ~)D!Q(Zsn(eSHWZ_y;z441zNXL zVHY?53(oaOxT`k~BC%W30d9p8Roo?L#MX3&JsevFjaYUCF|e>#Qo^ktLdK9>!A0=S znV*Nf)4dD(X!SYlfWC&^6E%aoHUCq>2{3L_Pl&x6&VaY{{=bOCtGTi}8;U33&%-V( zcFSIc9ndn^!?7H8FRp}LR$NO$tzQLut6rnBb0Jy-RyRsihNp9F;x!ZYjpQjMJu!#bj_2X9TCAY=gWVGcS%Y0H zyEKQ{PT5gI*#DJLLt-=;dY&WE%@$?$jU=-+z@!=1(l-k=#ViX@Z`W#0#6S-3s&n} z_TtGz>Y=w>6)b{1v!7!S0a!e-46u@0XqJ3eS8WR^y( zc_2+CXePtD|CA(BLOYs7H)d{vXTh~x#Sg(;(j=XoS!Kn#->d9v)@1f>`0rpB=ebfT z{g;H#algP`>ovO-OxV`uPeO&+tVn=;= zu#d_tN8)<4YVo<&U>DbB`}x5>8TOpG2=*#?rV>Q+Gphpemf6ua){qu^BWkrr(JNwA ztX^3Y_Mv05V6TV0TzkPttN((hPfn;}vEFQ`Wy7+)oY^O$LxNrG%Ekw~*nwUU>|%dJ zH+PS4{wLAAt-b(z<}ZZ3i~SoWmNWsEz^Yh*er0>+PF&R!8|+#1P+QnT&>rqVe)<`k z!4}c_2G~vy4E94{7aj%sR(l-WDpz(A>>j!x>lMVsFqe{gQS5ui6xp@@wC5|~3Z}y8 z!$I;MfPGk)3w!*YhkclQ1Gdwpumk!pjEhvU*kxDPPQ4W+bX!z6){Mvn$Y=@M-Y(eN z!?jtzNw9Ya_RWI5KC|YQ__w+2fmM5T|5w6YHx_maPOgel3tr{dfb={^`}~UV%Rm#* zXfsg-=feBt3SMzp?5}2)My$7WYVa2$Dn*M|kf91BYQ0ythU2p6RM?a8Oc-+tNbJq( z9N67^5j+l!#(qW6i+up8**g!b#(!NB{d0jKuxIo!I)AIVxR3Nz@7)^ zSfgIatcHnoD_85A;7Th2ue(Emdtps3iRRj#+4|?On_seq3Kqg;w5n_otmB&ed~Z$W zTCUVvDg8i3eKk?qc%R%d3U|mXN8&zcAF#*oJy_*r|0L+e4(@-jhhtUHi1XdA)Uq-%w-`q)VNarU zU`M)%HR_4XsaN3MlvA(l3Ok^^gMK9JedPdnV%9&OHR<`k5{~FK*pE&B2X~}^TG@Kv z;yk!J>{gD1$xfS?xVbV|J*wbN3z{=Cs{wGO`OQOP5M2~RVzo?;t_&Kp9Etm8&Ev3_ z>r=3Y;KfjOVdnHNc$CoFD^>6zT+6kI*TM~_3gS7~?+@RG-Qtho+U)-m*z@Td7;_4! zqJ%4375HaZ5i7Vg_Akb`oLNDLHDMLR`mi5T_73_!ur@Slb`17`Rj!oeNQtglG}wG?R5D{FMiz7zIr zp9%ZT>xb5$7rS@=3#(%J`NA5V|5xM;Mg2YO3ANS%#W;yonF_CKJ7wFzTDod|2Y4@7 zevXG-@k!QW7f;BV_uz`(6fP&>yV;j;Eh1I+73@vvM;KG7%uB2xlV-C63%l6w8xIe5 zvA5x)3wx!cgu7)d?5M}XyW|RH6$MIS&x0pyr}c9)t0%;sbT4OCpzpwL%tuL|_kSh4 zY`#btv=T=vGRvu0L(|Bs#X-d|Z3x%qK-Xj?3$$UCj^+e4fMFYfsG`BH)V%A&) z*Ji#1?w6SHf0P8A#!2j!JrfE%2YU$K3VQLS$q`S<4=wzNx6JlG!oIuS1nZr$f__wb z?f>PRXs(zHEk)Vq!`pIIfge?X|6~_$!L^ZB&%+9Pzd7C04A&{S0VX^BV_C75pX|eJ z-=6VT!Wko-!7LPOnW?~N+lLpG)%2{gcgX<+;k{&6xD{m;^j;1Q{YcoudH~F7s{V}S zaU{GsjCTPFi+yLi5Vq6HgGTI!R?}>!GP42|ABI2m)=Fy~Ng)7pm@Z?86m z(WY(}ds8|x*v0AzwfH31!#5GuMkM=W*c0`G-2aFoII*|bU4mWg7Vj7AVsG1{ z;M_x%(orNF#HlX8m`%#8@e_9?h(=yFT9eru%dObe3wjMcvItb%D%*F3Ycmgr*VFn_ zfrCkS%nl2pQLx8#9PGo$d9Y5mDtjC3uWKxUF{Qa8_V9fl>|)QkQstSc+iLkU~lAgZLo{gi}L?iwpYLZL&9V844is`Zl9k;8Uitw5QO+t-1SraNkz%<>6Wn!if3y+sJc-b{9by}l0(8gVzYYR&nuE50;n z#P#H>C;k%b;#zF!`~P>7a0O4oT~Y?Wx&V9Zzko4U&jhgc2{~PDduHofA6*Qq*gf=r zu%3V@=>4Qg`#)WAKrWze5syTm3hvByb+yXN5Yv$Hf4=Ko&)L8E zeBOD#>silQ>$fg@?X~wgPMe%uv<1sw`T1|(kO6x-4zaFL87lTkccj>lVCRax2TZVE zfxuo9mx&L^!7Ua0(*5k@axphQD#Q2YtwtBSSVytSmKavJi@q7&!^ERAKNLLhzFA)z zba;=f?|MqElldp%9`tmEblCcyL5HpP3p!kt8>kn1tqctw*!#zE;orQl-k!UPy)*U^d$jhoU-b;kOr5Yt z;)viGk-3bCgiXJ-Ne#o?3mBEL;;PJNialEA1wZW3y573#pDy-j%@9jUqqX=q+W*~y zXO-dW{!JH_5%$x}YOznrKiQ+&)@7zMFdGrmvE!H`&~9Q$X$yxd9oG6A5Hbd4PD3Yd zs{&MXve*ruDQ@b0_VcVbAv0xRHW|v^EOsXwgMY5Ln(Lne^Ofk93%nIfW;`$zQRxR_ zkIIksONSZiMt%NgU1dwZ4eLzoXNU4GIip6NZep+4zT*DUXzXHpRMEuD1OyMxo@aw+ zso3?b5TBVn`<#}iKxtTuy0ZTdQNp{`$Y6rK08bDzXY_1b@W9^DE)lz)YsHjJKV8Xw zf}SqkS2`Vg{WR_W`YzG?*OlQnpa0GU&|zP4KZ|`SwmdyIAkX@l32q~??|8N1DrwZy zE_gbKQ_#$R_nd)gcd_^OJ~l}|Kpfn~;w7Np+n>2*)^Cws zcH$13I_sbzCK!fmf!HhgC3}g8q--hdqj4SnsU)|56F}V70irDrwNC z-PqjA%-;X&rTcOkY>xsRBJPmOo^4%e*r%YYf)2Oz{(oIcRC;iuO{#R3*ul*fcghX? zpV&bx3x3%CHCC3PLJfrAX$FdTh?=E5wY4>1)eb?%3T{XijMn-ENvC9q) zo+08I_7WI#t)l!TkJ}iuSUu;QERk+#vC2<+1kMVO5U|NCOU1Ne`)>HU9c zTu}h_kI45DGZh51Z}7nEV(3=}9rgw_-MTsedtuHH@2GMFRQ{_HhvkYkKD$_Gt;Ld4 z4`2$@SQ~Lw=555D%P#h-v96h$Wv-K-#)jIHSsPkq|34vQz}~qowXTXLWu{V?Ynn=L z5+9^*g8RV!%nUpFD(M|EuXj#yNNInL_kUGdrwn=0r2_LTKm!BBee_L57mI5$UoNi7 ze1+H}ag$hb+MZ{LJ?yiyhdS>Sr#jjHKT*OJeHQo&v9eP|UuLHFFn2jBT4zsYFRs?- z7FWTq#mX)bINV9!jrt4}(|*bz(K2ToB=%G4B(XiP18op{c&`w<>@>0WjF-fI1M;aj z)uRrW)tPci_^wqNU;Ov_-NkMgcEdfz-VOVR2g*cmE*1M6aE;hyVa|hi7Fkyi6;}Tl zQWBo;zl#sf1=^ig%=b=WpAYsI%aW#Mkl2gyc3@s>tloSE2r(W|NmME?|R+EsbT#e?27tYR}e5g zXwc^%u{$tA+)^67JR$f;Wu^mgw_JAm`CV*62n}F6_6!!l$*+iwV zPrX}QT)FpCU`@saru{U>BnX1WhKo5|(AZ3|zDnf5wfd&g zN5tD?el>XDzFFVslHzYf%n@^fqU-{(nt{uu6-szmJ`zh$jln+iH@~#dC+UY#^nf2s zP4^F`23MFVLti4D1<0R?T`umO^;VB|tQRI7-n2CH-y>UWnf?eK<%T+ckdFQh|Laeu z`O~y>#9Wd5dhcAb^!aA#3(V516)%1Uu*R{g$FPr)t;O_Po^q*!66-0!=*~xRv8Q8k&|#({y#!mTM4pe* z+hPynhb|x^?CJP8=&=3&4mxaot#t(idpg!#s+*waW8<(NwaUzNz&<2(wnqWMRe5-K z68l2hOYGt87yPjAMf~n#7J%P*`u-xGE)!C)KE|Ppz*Pe zP=dHd?EA@0Vo8-L6O&I6bHv&dQxI?4qcog;^2_{xr9_p!iRj;ASNdZp01wTc11~Rn z1N%AS6zghujMzbp6W6IMBQZnlW5wO#nJ2zl-R8uWIrlG8gsFQlI#E3)_Nscq9<{P0 zGhKzfs$Q^1WvA=Lvh~beu57VYnYF^bW_h^REDKe@-Q^+B|A`0do8}LgoWoKxgTx19 z&-K=ohO4sw2Jx<$mlS%r^t2M4a>i$3Vd^XF!e5BJajgj+*lYAZVn2xe96Y5fip#!Q z+)nj3=+jZmy)HFI!dJw8;+8Tr>N6ynDjwMT$51hMaVnZ(k4D1G;KNsE&!$)Aj!AEw z8Bgo75}d%PXkajzF~J9C&keydL+l`y1>HIG3tPeW#f!N!`*Y-5zM7XMQyUq&TGa4`wHqC zJZ3yFr$XvE(w@v)>pT6x{VZj8aZRvEg<+rMZ?vvLurIuu1K%dDN|owXAa0p?o>-Xn zq4}8!4sOR@Lv(*r!pF-`#olke%LQuWfqg$(Yh4wYsT6jPH@mv&TwCfRRuv`cfgNbM zuM)n5`iG1GV(+j+#V!o{A^aGz13JMT1u;rY@9EfYg8yu>NAA3ezjCi3;fxC_8ELpC zW~OJbdv=r94`}y_9mE6KPcLB>AVEASc8{ORdZYB0x%cZk4a;(6uns8jw%ES~^p#jr z3TU;MQNip6z?cMqx*z-*UVpC>-}GX5>5B-@5J7eeh_;l zuYX<9Fzow%tH4_Z4{XnN)-@7vWhyoQwIKs$9WWj3f?n5DKo2=VhpC9+?JD-=x38Fb z=<$AHPvtRUkMtShra!nbQ3-h~yPnub_*p@RJ(qLDW928%4X>~0G}c3wE`E|ch^0#tNlC~&L`NQc>aY2ZAu@9PcrsG`Z4sT3Y8FLl0TPiEibzK~wU^-rZ= zDd9a}tqZ6kGnK+^bER8NFM0`keRL7Ko?iB-Z12p}1N$mCGd=IA(i(lvR7T}cP%2&J z!qQ>)c!t<}!)?I>Gt~6B(YhL&D{h(fd&KH->hQhx@E=?(%n71{d3KW>KvU}^_NqE`6HqU%Ggrhjrv?C_PjQR!gIx3LiisE`XX_SG=g3t z9-TdPzboqLEtZ^ugPVK*-z%674JOzdfw4LZDI);|n7?EA%cL5Cgm|AG#CA#X6F5>VRzNp#2!bQ3dl1TiC< z2nyylias~!upf4x3_4tu{ZEO#f4mz!;&PMeAIflVz83qCxi%Dl{T^cb8;c=@eY5E* zcG+IR1A8G45_e6(Y5yN@lNOGdMFgKGQ-eOA1<#jaA4Gq3Qw~D@8Znm^Wm}88pO%aRrp?7Q4bvDeCaGmBwwFTOL^ z`JC9Ntn%NLP{66-pT)vdDNLpGzWJtr+FN|KbUJXixKrlk!4JCwABj)* z{y+5QBI6XX%BBWjFU+Yyhy9AEG3fAax#8EXt9L6hH_LpuJanwnE#ds%>6T&`cNX`} z75!H1;hG?poNm)*DusQ^o?(xCaFxCpm7By~q;tjTQe^(`4+UV3&lLE{x*Av~_Ccd` zYjMOrP%LW-Xh>!Pg1xJbvPVAHd%zjuGOLuvW(5=MQ_4MJ_uyVJPsI5DCiX7&ir5>@ zJ7Q(0>4WWgKj?7Q%cWJ$P}Hz{`Kg%2(xA`JVqXQnnqBM@TZz3XbrN&=5nKp8eE0TD+e3|1*^E9)4LUFj-8`C~$pd8n{L5OKwi^o0$UG4;~9c*~i6os)Kso zFNeY_#jIW$+w`_#NVgM9Ns0PF_3irxF(Vt!ac14p}TW(R$ObVfA&zu-hTg z*i!6$qJy|&4(OoZhaKp_;`ZME$0^~n+qq&IW2ondz0)lc`wsbnSlOi-ePCZ^FI!j8 z%f+6`cQaGx$6~L8@|U3i%&;&LtAh?(UlVlLQ?^#jqND8AbBa-EC%#Y`4c{vE@$P=H zq{{mr5^b|-xtRT#0`2c89xg|UUHBZaveOkYJ~Pt<`(!*#?5Vj?++Tj`T#@~Z+=@HO z#ijDSGQ7}Ajm2DUB9=D|HSB5HEO>ShyKGnc6%gzZ>L&K0-bb8*WBw0vfy}-I_x^X z3p$+74dv2CcNW77d*|9E=&&2;9dy`h;*g-j_KyfUZ2hF9tN$zn63!SK3cw5(tNP-g z!`$y#P&0!L+dnVpu!sGjpg&X&8P9|a*t^)fL5JPI=Rt?vfi>2(0Aa3mI`E^|i?qeu z%2cNPzl{>CQhKwUSYMT!O=d1Fbf0i~i+yPg5c`?%7;!h1rJkwc{WC8Y3)4u$-hAGe ztNnk^Y}(|mVt1<*rvhpi=EOn|b{4zgUcrBW*u6hY?6Skf-T_Y#yX+WoWjZwf7le#S zVi$(HDnY{wtY`Kmwx`V(n@^p1gxaAq6N9Jh1al1c%BBZ`=|QnyO1xrSKG@HGpNp%c(U~vB9_sJySN&_n z4rrZNYo+oZTzCCrasD45Rvl>p4ivk+R^*;xFp_pmHzgXN--vsx6 z_9WK+?;(9HWWb(+_k#}m^7}gIuzUO;>-1RcXT{Ct7k>@Bub6v5BlCZV5-xm{SW>!F zU_V}+9dy|D`}2c7Av046PgOnizUuCxPPj@MBT+3bdq3Yw37>$wh`mwt63d$cg5B_5 z*40?w%rp#NCO-}T)t=05_(|!x-E!$QC617Rh&uhL7>RCTrT~3!vA$9eu!Gpgx*8ss znIK?ay5sCodDuamBX0VGdsCJ01H=4K0QUNLMC`lS^Y*B*rI~3MK2{Ai=+pk5qHK4u zq_n7eX2##MtVB;`P+*Krncd4Xf)2X}XNeu$rNIN&sg6cIL5IDb7K@pJwEw>nOt35c zXV76!#}`3|eIoi=+%h-(y*RCKrCTm2%C;7J6zdjf|M%&(uQKFKa}2xE{y~TRRC{>P zVUN}b>l$8|J%FJeotcpyXAjSRB=(ZXaNX0CQQ_UCQD9}zVegV#-dh9>`+>EKn2n1% zceO`BbjwUY@NQiHG;pF4KFM6*0@7hBrJ`wK5AW~A-t%t@e%R-R2ZIh*<$4|#dy31? z1{3UI{F`+}x=c)C1p0>c%$B$@>uPL`*!Q}%;=%GX=riE{BItpc2@d9f zg=eaGC)P3zKd8h(`i6hW1!^*T7T0^ADeBTzVr8dMX(MJ^pwccu?<#h1-NZf#4zWl6 zA?0kM;i2MP^bKDs_OiM>6o6~9=T31|=DWncAO6{X^?0G!SN}8CRR*SGX)k+O39rf5 zf(iC?ydQMf7t&{9pH2TAJh02I3p(t!N`KK_=EA@FOEIK1nVB>AKt;;%4hx>)!2{Q4 z&kQkl2S#zJ*rWJT_A{+;Wuw*nzpsRc@dL4k@pBhY5MPQ}u>|pB@UIIVbGizopPl_@ zJXoxJ*lnF9Zu-Y#CfcON%v1z>{-y^H%rFwrjG&t-3-`{RWn$mQKF(zul~?{;2|x6% z6-z7C=mUHHT0B$?11b3=+1vDlz!NIzNRL-(@+N1*Tk@_aO{{|iQ zBSedb{j-QtX*aQtA%}{+OCK**73mTkm6?X&I_U&A`C*-9^__Y=SsA{8UL|fTogn7r z!u>{LEAYdtrVnZkhf675h16{YQ%W;UU>`q;>9PB;4@P;@z@os(8oDe{lgd{9tB+ zfO-0-H-8s%^Cjr@7Zpc_ZNybs-%jiW-a$Ay6+?`6D`&Iv> z%(MlMmY23xm2Dy+c5l8H`(Dug@uD}~#j>WU=_&3frlNDKXRgZncoF!329H-z}yw{PzU? zvEYZ>DZfFV_r$LAgW!Re=6cF^KT-4&_PyW{>*~QGalT$li^W}X1D^!XrhJZ3y_8X@NYAHlRTGbY#% zN8gLR;WT@y=s~rZM??Ir#ba{A6YWtN_C4iZvG;?A#g+YEg%{-lR0Ma(75zh8C1xbv z7yIh?TaP$AmLn?o@xM}Xi?m%CAR2Fsz4h%X>2eu}n!$Jm}dNA|bsup$p zs@2$>ONg+WnGs6Ce&oJ8=&(b-*SacLn3+1^Qxyf>-tw7ZyXzpXEKg;S@T~77mQ1Pxqz;{jWj)ySRV$w0^dz6VA)LTxuIKVE3lI*a3A89@xvRd(dG5 zCZIk+hh0zqpu;Unnj#7eocZS#Ew(LB5i&~4l;@kmyP*v1x>g1q_8|RN>_OV;x#FQ< zpqPD~=FSTG)nXn%q?b##Dd7eh#nRI(z`l3i7j)R2ekACy^(TW4yZ&c_4!7W1CAt@! z(ODxQrlMxz6=L6YK1c;B{*UdK4|c;}i#5Kf&hLW<_D;3=^SP6%zjZk$Xsor^|DnTf zHmNeWDp%S=><0SSqq2Q7QxANo{0;hCV^3yJ*<9)D3+Y+?&0vDP+k7SV*{ki+BI;VP zZ>L?w2js@i4W990E*65AW<9gl`}Czct4S->=%Yls5GXJs6o6e|mUZj>6(8MF7QZGhJL9r=#N`h!;7=dP%ja4>!Z>aGB=7}vp;i{zR_3YvhZ7Y z*o^2s3Ex9M2!&zaqrVC|Z2iAMhpo4GAy1j=hplgFT^%U5R>BW^yE{V#U`M@&*e90* z#om=q5c}a`oY_9gW`>@nW?2dH_esQ^JSo($x*uCi| z-ZuC6XnR;(;ttXq^tsG>W(RSlbg!ptgJ*i?^bdWI=$$KCDt0g52nAq|$_L^jr) zZzmQ7e!?D&VtGkUaJ|9|b%Q?d2Ge`N19K+8v+*lA2$gM>nR?)M+0$L@DcDm?$7=NH zE7o`AUF|?6q@_#IOhvFS%d>-Ld}chbZ^4&{J?stkt6tb6F~z#dPI)CftCPXTLeFj& zJL-9%z*D!dk^R@R(6`cdNIM# z*g)|dF&$VX-dxd9&wu`2_~DZ@y=nhH`pul7!Xw45Xq4Dj#06qsS`+P8rLb?)SBgFC z*V>~xr;EKXZx8yMH}mFb*WeO|DS@1=sZtz#eU7bBt&hdBACsJ z#@+~?w=&~_yJb(!JH?dMyc70+GTc~QFqx?cc4K{lr*CFFusy?qXL#_y$;14g7EEJ< z33f#d!818{V0&%}p4noL;vDgFx%a2OTl9X6xXhkR)Z>-dJDctoA1`JRZSr0?$B8AC zYV_%xnX>R`X-vVi;DPbtnIS$Sdz$^Dsh)DFIwvr}mFrUfw4r!c6(EQPF>fW|--+ol zJYTG@5{^J>APIJJeqxAnHfN`bq&U5_@W%5$_=rD&1 z{Of&C)Cu>OMq7i#JLx;^|K}*-!{_Cpz~s!SXJWqzyFuJ3SF|YjVZY^iBj~V?@ZX4i zpsoHey#G<6UUjBngxAkQwDG@+3`XPMZ;zFh20=~HoK$JG39 zx~ejN49nJH?o@DRvA$AcFbNtPBlZsht_&X7d;8Vmx$;xb&L0)^bQAZ@^^6to$o1c# z&yB$Zvl!7|2s+H1@t**EmpwGl>EogS*q+10<8nPuiG3(t75rrq&S?2bQ4#Elb`$%N zdr}4!fQcgAUiQ{}a(~Lk7&&i+*0vVK+P}=&&2UHt5sE9Ov0H=8E^tb$${& zpOls0d8|>Nwx1Ql3;XgLEbf*)7X}aP{r`ILf!Xu6xL@Y2J}>Hoy|#Xx_4MDJlW<1+ zPyn{RW6)viy9OP$zI)JN>w5)VT=`u+hI&BAfL-8#pu^S=4mxc8@Swxij}AIq(KY`k zgbdgPP6_%Lv2P?}#XcopE%x1PcJRa8q|)4r>%??&Y4E`Px&D~@mR}U}1p9W}Cg`w( z*iJl3<*0OG@W9;VXn2PBfP5Ey_sgPwc!@l;TfX(HB4f7L4a^byF874EYcBA)xGM9P zVquA%!d~sAul2|Cq!HXqvA&WA<|?4!cf`8ND)0Y4R-#wV*zVuOi-OK#KOOfG(=!SW z6MMDK4*vP#N!inRbI zBj!@1?4@GgQST75o~Y-KV!yh5Mx1_ilKKB@5Zf?Le&bybU9 z%RFdPY-PxXt*;I`Y`ye&$9fel@oH=2)Z$P1j?~|6s*+CEjt_sssdV}O`m34LR+U&- zs@_^lm_$1gJL(BBn7WB;(Fg14L49_mM;84rjmX?g7cA`eEoX_n^e+=L295e$nf=Vc zl*F1s3X|ZcyF`75*oFThcHu>-KxG2Wl!dtqQFgW1CyLUV%6~>f!^evCl_r0r7!PH~ zmX%nl1ciHk-=Y2xeN&)8?6dR@VqdWDiv4TD-;2E}Hv6Ht&Fv#THP>1PBT_9&hcbaC--)m{)X zVDBIeL5ICN+!b`#{)It@tv??0#o`(Tntp`wj1s)6YS8Cru@CF5*A^FVH?jBFQ^m5T z9>YDvjKs}BhyD8NHL>qV{|X+sEn5f;SN*rBv^sM$EfBaid+LG*_LjC&&|&M{f)2C$ z5NHoE*B@LyCz!^IE5oAuqL?=b1b2`4`dpyTkHzmapC#t1p`t0`Gc*4n=G2H@{Zohf z>6vGUePzuPYlJGdu=kblCi|`Uid^7=b;VV1rC4$r_9{pNo6sZ^ZsV z-bAsoQ&}^kJMri62-6^wqnjbFQUQ8!Qz$%3?1pEH{iL}(c+4~a`-i?CiQDBmTmCPP z5c9u<68cKf!M^V6f)4v8+&}2`nQ08>=*mc38a$K44tlbfJpj)_G3}>@Nx)PD6Dg+G zvR)%zA@oaSumf5gblB7PqS&2z zN$h=PRq(GWE8%m{YB5I;8r#2F$ELmd9I>P{q;NZNqdqf&4&RjZovJ!ET}^w7TV{Qr zSeWX8nS!+c4-Oea#13eLcsH2{=<3Wg{8;eAc+kHHI_#Zs`{o^+Zb*~GvZf%!<);6t zn^#vNg=@t6N`+w`*p3f6%o@OdYS7_>vVMP)uK6cHk16oiri==^qGyA? zRE*wC>tnfixVS-|x)zmxAc1;%iuIKOg?$z58FaV>*B=G?g$%eV>-FNpGT#t9a9!3P z5_{1-6Fg=Dh5dehW$=`pzyx!+pf^8?y>OcSs$gB-$dm~yY-Y-|$p=A*q?8E)Apu?Vyqgs|L z|5AISDmX5fU>`Ili9HfmiG6#$R@_15DEol8ZRS_S!Zbo~tr*WYL5F!!QRmx@a3b!feAr}{fux^(Ba?ZdOB~c{a>6KP@?G>`Z2L} znCqC{d?NNGx8Wwmm9nka=lqUh2fB;c^}t6fK?kmC(l!4ij>;MTY|7A^1@YBc|4pl+ zBG?vg+3D#0^x%QL&|U~Syjc$VU9k@-tAYpK zC40)7ZCdmU-Zf_o2s-TN!$X1&d&4;~=&3~P zhaJ$Wpu-O6KS7869%l2+iVknSnfCv7IilS|2J9QpVL^wv{0Qizpu>CQdTtIn>_F!Q z9ZuUk`~O2BV^L=29`>lb5j-$gM58{6P@4IeMF-9=LDz&k=j$dNz2TEi1u1(Sr{|2JEPR3_9#v>bBb!jlpi9 zKIm|}T>nWyhp9iE|1Sy|uq(Pf=&&n#D(JAM<8MKSt-l_0*r)CHw+;Kh5=|LjgaTh? zodva4e50afsIT3w@ZT(!l%{XCxLS;Vj`#pE{!fDcyC%P`zco2Q0hnVJ1*(2sR0^l_ zn)D5W4$~XTwh^D5%U&(^Ml?J4;eqlr>a$WjlIx#D-|dUb>9=A@sW)(q7|+>3A1`*p zlf-I21wB7_;EB0xUE88g_|&YIr-qDanduFDO|EpS+T!4_y;yPzu2x(v#$PA)vqQh& zfqgF+DfVIKf{LfI|4&fDy_uX%Ou_BqE%iRoyGR|6aO{) ze-isRzkNGBcxcn3&f50n(3|$5H{yjd5X1_xzEY22U(>DX3LW-Hv=+0wQMQ}7c`n;S z>_7*KC6{WLe-g|w!#G5IxR}DX+a#VNuGKf5CE^}pJl_Qmyq~m2eR_8&f`fe~I56mN z*%>242F#&@#>R?I64Thr!LwZK9<2yAqR)VRY5t=IA+x!3XN_dri6bitcj47~n=b|F` zz^tDfblCM=CiWB3En=^O+r)Lb>{DeWM&`t?cPv(K53%GD!wUP{-Y4j=e-!AFglFw#<7>*3OY<5@plV4%$9^cH0UrdZKRh=<6<=cPZ*=otYruQMsP+yJ!>kN&S*g zU{WXm^SD66vw{b9k7oxRwmv85u=Tl3y5^sRGv+%(k-~#=!>h%=60;_L5O>JD?XJb^ z$L@g#i&;y30g?KZgPfGc$DXHOgls_Ucwt+E?sp8YI3T zd!7{gRpfug-c{P}R+KH*<^&DEyo8~FL&g2{O+eR%0@H&Z_G3r0?#1nBd$Erndx$xb zQqSSyfthEDb%&_DguhD(zx`PumM0At>`nOXpud-ypkZISUy7@8178O}ENkl6mOYC4 z+w=&Va2sWKh4&IW>S3V(+%`9Gw%8}S+k$6~*we8=LsL!V9 zV(q|bxZW1~koBGTcUiw;_o5>BxU7FDc0e2VD&80zFP0^Z=qPb&Si>y``aE&2M}NOIm{w$FUg04! z6I|_{MFa3&xuRo(4!@T5o%<9w^*zM>vwpr=&<#vK^GUlM>;)Zz%Fo8&|&Mdt!u5oek^^( zx_Sv$=h1yV=x}8UwEwOO88Dj(3vi8iA2Gw#t8X!{upi7$6Z-~suGok9n}Q$SH`nvF zIK6yT`crWq@Bi)gE;4o#`wh-Ou{WHP#a&d81$ABU-zJ`#^-ldNBZOyXF{ea$fLLE? z<-^`p%ln56xK<_#oGSKWJVVT|qn{i6@RF?e=wCF@Gc%(IbI@qe=l0;4Bi2Zl(@-x| z;-PFhrM{?WOlB&AeGZr;?wuQ6B=%^%nEf@%Tb7x!@OioZ0RxKq2Mj0|_vynz2JGGH zxS)>`dwq-(dxKh>nGvelr?_+OFZQK-kXYGi3g9%Y%>QY@bXG9I`zW7E?-zTY_`l$R zCuUFoeTy}8h*)xJY-nai0`^VrOmVvYY2f@&V1k$-q`)NcG2#Y&-VxJ#{GW@xKE4r4 zN{zwQVm#lA{cKz{u(&!ph?R}MTq5D8`1&HF1QRJ09WVB!b(z?g-$UY#+4HVgn1X;^ z=MUnYvZr>x!UJ#b{l8zxs29@%dOuKnv6$XJDfV6QO>u`@={m76H4LAY^;7pRbl7hP zCyHIqjIt8$*&|{ei|FyoVjeBwFT~u0;H?fQ3hyfJmGx7^!W6_9v8QjG_#EkU;6pLz zf9h#FsPcfG&i^|r!Ad6MLa~2V`C8yEgNw!0M=Wbi0^y7ihj|W3vVS649o<+d} zSLb>b2M=5$oiTex{3I6@ja`07F|d=x+>0>H68nbuuGkmGH{!G@%Gc`9qO6&+FfW#< zfBWF66%!nuy0Q|iVN92ZHOXl?EDHr-c6bWBCFaJ8zxmLjVc7S*^~AnvcL<)^Cn^my zP2I$*qEzM=$4P9U1R3=?BmI#EF`FX#Q0s&Ao<;8?d}~=IK3EZp51Z`$9%t z9uqm|*CU4z&?yDAizBKE?W zCRW|4(g%YF_GmpBbodqd8O7@kE7nbUdQQ+|c$Zx16T!4ZOb_rZ6?e;?wZQ{>vurl3 zXrNl`pligQj@pW+@@A8SFRfmcj1mpPUIzyReNbisf?esT;DKG|`9X(W=T*aWs8Tzr zu_?;%Wi~_Xk$5^3hVd|rF9#jA{!Y-}%S@m!dj{*^CwrLxbxL@MN{3gD0GM_Xqtn~rnyVvocDnp)B7-svVfgi;_zcxFn2m;yLyN#b~iFmCM9cx$xyp1$0&rub=g6gARM^ofUN0 z`kg_CH{kkbSpFO`U>A5a=!?Z%TJ(OY*t_0J@e#S6-H+*5|48O9#XT~&J+^qh=_;0- zrlw3{oDvMOZXGhV6MH(kiv4#i zb~&ynyim97Y6VOX4~jXi(SfDmRt|gm{uX$d*bDsiUCXWNRW1$1>&nnrKq z)UX@tDduU7#tsbu!M+qH2OT~@Ug~@?=SOp7d?Y(a)AM2Z<+fC5A2=|3Vfj0 zJv%J;;XQMmQ^kxH0sTQt`>B^CI^~RK#YtzOWp0+4{hZ!6KcNU3_Q-V&I_&4!BZCfS zf4Ni+8L%Ic?-IK=3xWq$EU5=8tV@7dXaxGDn8(u;=&0hiqI-(>&t)$X_v89!C>ANf zyuz=GYcqc*7N!weBd!+Hz*;eT01Z@~Sd3P6W;`(aJf6*ir?t378lLUSN^s`Kbb2t2 z&5Q}=#DeFN;F%OWaIfrnSiG6IQJCO|pBj{@bX72!F~OYw@q80JYck`3?P+#W z7>Ueys>Swf8a%B}>UdJU>P|zUM3ZTUV5-YZMX)Q{EqHnc56m5pppO=BF>~W{^_=UO z8!u_MoPC$LX^Dv?r@!O1KwKlH$p^)(RjT`kJ(<0>Tb^88w3~>PU7|d^v%VYI=lUwK zUL{f5FPLE8uMV=VhKGn9^ic6Il_iKqdosHNcS~pARAZ$_#kt|q$Ks}c{QBRaFzoGR zP0(Qn^rLkJv`*~XPtE9JA8apHo2kdJucLlJ?^jmB$HD`}j{2}*f}5)%dN5qf!!vx6 zJqluUW~K(NRX(FK*`CZkVEsPp>E$5_56co4P(@}cg}HdB^tIqwkr@x{Th6EU$Pc@d zYs4Pi|BlunQwn@ z?Q`7Iyr4?mS~Xor8;Pq_fT7+*tgmzxv=ZCjTD*mHMrFs~=_)1&My03NXQ#u&O;d@V z`wYh6O8B+FnPi}=@VLxW1iPYZ#ja?&{VD_d>0q99m7Op4ru#_H%Zrro>U~D+hwTq- zQl+p*VwJd`G)AS}Zbc9s#FA2HVAr#6&|x3o4iT%K$~k9RFv0HG^jW=-JvRJ?2Et-2Q;*!6GIUFRHcKJAskTvE7qC;+>_USf7hJY&T^KHMeV zEbEVmg()D|Wgipon>{~^IWeSjPVXMAnvMe}iKVB)FvHcL&ly37={@>6L5JP@i9v@Q zL|N=T=1OsyqXE77Lnr{dfjff^cgX&w;;xz31P|<~`LCG8P5sS!79E50mRv4vs)QqI z6HIXXTzIdb!`@5|5WDOl_Gq;a&D<xR*qCf%>+?@S(De_UpBLjhP)DzHrKp?f8J zYLo}F!s*#p!LvGeVDI@G?Cuw9dgm#2oja73P#tN$cM$swy1R8n(mOM~fjOVho8e+t zbd>$lVNdH>!E;XVz?_}Z4-YO6rYnO9_G*7b?7QDzgZ_2!!%Pjq{V4X8)x1~HNqEQX z>Do*0ImM~>N;Lh($$l=N9uLY)?_uwNr-I}?*j38R>QRuL@;Vsd<|C8{lZs!8(ab0G55Bp}b zrlkHcXWhZC=_J(tPFijWp9*auv4EkJgyR1JK^re}p z6ZV2#CH9nkQt?#YbCU2@THCuAF4#Tj9dy`dx*7eK+cJRPc<*OmHK5 zYybCZyv!yQfVsz0_zJP7=7!*bJ@>Q3zERB!9@ty*LhEYS+^lC#aL*>{=WNRCOKzET zkHo5(8=tCwKBj#x(sIu{V5+JnGo6FI@eLGv`VSX-7LLsR8r21Ry`LUDX9f?PLoJsk zE8+O21{2&)6*71Wf)0CsTOxK4{}(*4&q4nPo|VA^Z^D&B1OE=DZ-WW;4E`Wymhrdk zQ#9O8EU85AVF%Pf?At`&tmEk~_BnZMSqV@1MPlWrieQGF#vTqj?0xAKu^W3Wc;G&{ z?1p<4b;6#$ZL^+E?j$^1yNiA2?UPMJ4YSn~&_QCa$0LFV_M7T4;_lghOYp#Lv;OE_ zVdqw&Y2mya3c!x~AL4eo@Grpw+p}@sVnnwSyE8k8RWyw*T)7xE|2u~a*k_YrL5F?y z9v^g=k!a9ojP=e1a|NM$@0x6n{BYB+ecqvjFPn$O?#;6ST4!NQ}V((W2f(Ne2p25}?=nyei5F<1+=&H!bkmc#17&-7f@l?EC0H{e+(Yjd&#|GFTnT3UYOsCz1TPGr=8o4ZPKq87MO)b z)VqnjX$}q^*o*5Bv7bqf4jy<{)xi`@2|Aocojdn!N;rr)!3299+-F@wx-c{A0Pdzb z2y~^`ho#T#mkxX6s`?k5gv-0gKy=-d@KNC4V1hTxo)dx&`|Ns&bp`$yD*czEb9h9nhV@1AEFIu&$AKFf*e9b2Tw4e=jTHir#VoWx#Ii ztKeB3Jg_&Vb=K8@nZ{t|p2oHqP_)%XEUA?Ce-gg44agZa%7i_1`-^?uA8d~r7@C>J zV9L?hh~R;}CPs?g`%4CB|99^vxqu48zT{?!?YT90VBb0K7T2mA)AvH~FAILy=c5ms zbj?2rdP&ruh`m6*wMji&BX$qgiv9So#Xd!FZN#dg#0bC+uA|t~)LrZ|!C-N7wV$FM zLLwJFRO}nZ>0-&LQWy_`o+r1n;N9^myxmMMc|X zrXtuK=x&ev>-37yQ&u{q`0eekVr8d*x}H)l-bMFR#&~7W*!*CEUC{zDJ0_lYg6F-= z1OzkRcs>=^=(|y$)q&S$fBJ847wSDCcPHK{F84ddLHaRBEYG`<<*o$st@SCXd6ppI;vlt5^zp zk(dWB)n6_xRidjBM7_qQ%)TLQ`kPA67{(pN-WmIeYowv?FV^6U^)m0RNYqKh zG*ob3SO5B611eR>fDT=8rETPjf{Gd){R?ESxWC;)qt*~z+s z=qmO)=q>h@a)g+zmpaR02iG8$RH75`Cf@&VP{JqFxxoZ`Nbe3h+=WW?SrK$taixaW zS(jjDPSXyP_h^xeywh8)nLEk>;wPJcj1D(YV?(pCl9y}w(TD+D0 z|4t=*gLzD>I#Lfl6#H!Wsd(?KcQ~UMM%W8&px9T+;r6Jq;o|BX+z4?8F&(?)4DJ8= zPV;ezGQ5jjDfR|(tvGp9(R8sZnjv;YkJ=+6?0TLSyPg;9Q9a8tr~mAW#NjGPL~YM3 z0)o95cM`kO9%2?$jXu4^9-+QsNoo3E@|li-;$dRyze!xB??!!QiPKN0No;dgQFuGC zds!>)r+f+@A3USPRD^y~&_|2i@K|we_DmBG6w}sn@gWs1m$o058Z_A!Xf(LeEkBWE9o)3fP!?F^t=p(W3cva^Vg{#Fqa^XG1p8Gyx?+yLMvZP+Z zu5%x;*Udq}1G90ZH}^*=;YD;@Fv0%W!-Sy23~z%zmj@koW7C2T`;mKI(8cAZ_c=>L z2JDJn4La;;S{ZcM9r!rtu=Ov44p(%||F_Q2f?6Z4R5$aJxJb z2a54G>T{8}HuEiFPseRy$!VJ4jlKWhql8!N!@&f5jvo&?toBo5|FSM&Rc3;NYvf^? zz6>5So-zrW)&vvmJ6mad$NCYuq7h>E=2)@h66N7u`lhiP#JlU8k$5inUl4N_MSs7d zSAKH)p%Q*vS}j(7suZ^Vzo5hG%R@yq=M{d~qqR}cVF%qx>|1l6^TPh$M;UCBR60%E zv|>ZyyT!^*!NFdPi-Hb2xTnP$N}XRhmNf|L#QI7N z!@fFp7W)R%Gk9Q++&8R;ni3wOGh9GA>__n{f@ezbz+Sw+4?67g z{~WOc{i8jc|K}^=h4!HM&>T?n3yL1Y9@34(4z!in4R0I#u+J0SgARM-_DZ_OzeWv` z@Qr6^C;(eOCFrml9%o&{3wwCSi+P35=q|J;vpevYvNF8TUJ54I!?i-}UF@CUfvv9; zyJw#T58U+bZ$dGmRbnp1wEwqJf`}N2ZN)x_?&1RKSvPThW-HZ;_mh{NT_NtM??!#@ z5$}+BnOK6R*KtZ z(=RqD4f{IY@Zw_rwh${j4Lj_Gwu{*BhKGnfLWc)GtP!g0|0jhE*u!;-xK<4?)K>(3 zO7O!!WzXdki=Iu+Oz&a#14ii9;F&!!@Bf%)E5naP_XX2JakUEKc~GpcRMC6E1GAsg zz*j+EEq2*8V%8R(jW5Z8^3TV&Qlds84YUy-oK2^QJrZMFKzXqD_VdNQoXXixT@7L% z-EPY|qc}&buM!@(>)nD5vsUoe2OVa8ppObV%;j3$O!Ge}WWcUy zdeC9!n2Ht#9p-d|zC7qKH!$?oL5Cest0fujI6_4W>i!kbeIDO`p}@m z)<*>$uEDRxGsZkv^FL0B>RizT7mx|&HcA7NtPj!~kaFdkW)UqA`-JnUSoRW)z`jlY zDBeXH3%2v5$^ysJMZAOe{~<~sVj3>?&UKbpQhK8?E;9|o_#5<@5Ikl)u-|r03m!9` zX{>M-8Wr6XOtUg$f_?M2FL)M;eQ;eYJ}=j^+hs-2J;jVJ_4F3Io#!wAcsQGsVT9eNaN>N;UeNFZOkR ziMWq6rsffQ)bOIr1Oa=WUm^C%=U>6UO6>FF8u6*BPaP|lj=8*2mG&-6U83(F*d0pxLRfc8Y}itPq9aNuzP%sxalSo z_%^ZE#ADf?&i{W^LUp9xzz2#Mm6lf&6}1veN{bYBK&{2Ul}^tt5%VIGvdhKp*n47j zRrJrq`buqy%V~(n_$Fk)F8p)QVfV6hW$~=vLYykq2-S!w%V@P0PZJZ|9I>bAA#tT1 z&Ho}Ll%FDk-S9I(hu!e=;wt$G`USC{16Kq;?5C(ttSg{T#axO6SGr1Tg8iT9wpPL` zytCMibrCB&1qb_ADEbG_KACIe+fTfQz6oxkSYN3u?1z?VVzzcX&zF7sw*9 z@++evc0iAdy`O(3_R~`HDMi^@u}871n6d=7tJtH}M=YuGo0}xOLk$ySCc0xPrc@Yq z)F%WT_JQS$pu-OIR7A6&~3_8r^gkE~8Xc(rK=rz`Lo`9{lvOZYzPl6%hWYQ*>Y70{d zP99a-E$A={kj91v9rm$oT+m^r8~>!FtN;AxK_ndA^psK2VGrY+pu_er3_5K8lAy!( zFSV`?FD-|R<<3w*u+MQTgAV&x_Nn#Wy4mPAA9hgB8uU3rT&-``%F+If2rcB1Vn(r< zc(ho}RL=kR+9Uz4(>H}*6%#f5mOUzLrXrXJ2^#*NJ(;~(ZMI*ldPyZ3hui9#I(OSo zzyIT1uU;A691d~;H83PIjlnyqAdQ_b_EmGS{nFtoebc}tVqcb1?NL3`GN<=HBz%4U zN$jEfvkRyq*p)5}{D3{G^uf#o3e!sheLeX99{5fCTz~us{w)&vUm8*|qe9_NvX1A| z;DI?M<7vKs9$tB>#lHKs68kM$N3l1q9qm`yG6^5I2RcI)nF$DXMaKls$jo?PeWidV z+oLq>X}UV-umY<5{CAoX4&sl&1T*aP@@}!`^5Nit@igkQNW59*zlpujKC@pDewmq| zzudoE{C0ci1B$utD&8?ybcDET=F7ywQjI=v7k$(4f}q1*)Q<-p_FeILaa!!m|7*bn zyEiMuuIOL(DC$+2=>a@Pbu{QRc~BT?u`k`}Vr8eGVV{ET64QQKfb+A7O5s7$sdTk? zJ$=*5|B5{YzZzUr3h$jg`vx8Mv%@7phX=~9`pc!KLI&*3=Ob~uTxrV#i^gEz%Qv#F zpj&08126|sI&iX>qc}l!{Jg`^( zPSzD%S8=V%Hs~{?95RN8*?j21P%$HcX}mp|d59#?YovQ>X4s>$X6k|IJ@wpcPv$Cp zr}O`P%J5=&*d`TTBz8cH#k^FaqOZiF*o)PFcvF@_TbGKNSJfrmQI#Yl3j++0` zN>D)m5_IX*@Q*)_X)@`t%N`vZ#sz(R@J|ra0Dq^vr;ca@(@fk~++IvTC-~?leH0$9 zKTKnksLiG+!34Xa>0&k|Dta_{7H6g&n9T~$r@>>!19J+(Q~tpwCEzN3H|n!i?BQK+ zYR7s>B?5u%*}%Fg-7qr^z|1`jY->+uhMoG`R`kmGpM)1+N3k!PE-tJ}yNbOgx{2Av zXkfqK86+l1f*309kUi&#y=Po(zw$1gn&1Br(G|+5(>Hu~Fu`8E3&cIMXQi0N@P8Wo za8=en7kgj%)iuQ^!l{$Y{{~7px=qDi$*sk1Y>?Rd_HkkrOWXD+v4{GsppVPUNWeYh zZ_ww?;F&8fdr0Ri!4oT{$HjhFd@&SQmYGUn5AQd@vnF_8*V%Gf@$;ctah~pSsgn|F zGxesk*a3AF?=GEyPP8YpHQ!%bCY#-V3xRs{h!{9=Il#y&&ipl$Br@sdRS8fY~(ApA0&@S=L_- zI?OQ~|9^rG*JgdI>xz+XBW9%2U#Qwn2?{spvya%Pnlr>c!(S%$RWMoXAZ`+;m8`P2 ziuF~Zr?AfiZ;7j<5!^dsFZPw!`RBjNP@?H&!jED}X-%vXa|tm`ZLTjC-QMEl(f`2? zVxOSHG)%_^iXHTk;!0;U|3`-c@TD>n>6<}^>$3in*o~E@7eT;2-)$)7#7sTy#9k9! z>{n;Hiqr3Z65U=Qqi<$<4D(6`&(Zc|=F*~pvDW2>Yot+jyttE?vbWlk*|+cVVr96Z zS8P(@<>KmG(TeP$qEEzC`ljK}#O~!UVxRT)yrCEs*rU}i=&up_c!9hn?w%`J|96!w zmP)r4>#IZs@Bn?I9}{%AHtQD!9rnI*nfM?)?ElM@@GH1C#NPkk4*I{uvZjV%`@af0 z?1lD2&|yzax8E0?=`W`JbeYvF0W&Nx*L{ON!?Vr z+&+7%Z!CHPS4(GVYQ)|%Is{MW;OQ#fTmJO(-`^@RHdp$07f>1=uWv?W@J+?y8YY&M z*3ED+(?P={#ruiz-y!xTx*+f)Vr8dM6qlQN{HQW~$$b$_u!p*4W>FX(s)`ui5kZFu z2z`{eD)UKVpBv6@@@xH*@O+#vW*t!YfhJRheb-tP{C^D|*!4UeblCdyVqXz!@NoTc zX{CgiVT5^y-=I&ISw)Xw_hx6YZ_NYjQQ3i+sR#D+!Wm+hJxlB>t~@ChAP6&sVHdtT z6uu`EUL4B81Vq{8Vvc2WV5Qhs#7|;Byl!@Lx;a&T|7TAnu9CS?pCw{_rBQ)v#8kRe z>?hd|vX1{Vu}{YT6W2;Z-~N_j!`VUXt7#XpvQz!tZqfcm_I=^!pu@h?wz@U13FdzbCG?dF!z08E`kWDT*n9p3V&5Y! z64NL>ZV37nLBBTW(}O-sTy{mbhKxJKsxJ-E+^jP~3&d?{NS_z&$?Q>iNqRqN1hm2I zqGPas#M54!{ra>2O8B{@W33s3Fy|K!w%>+u~++_gJ<f&d=)GXFCSoc=E<@W)vB~n zpZ^Oc*qg>u>zV=>Khv>H%oa=U-wd9&GUI{m`B(6)5>rn)|9`54@AvD13HBAy?%?8& zrF0joY+4^ZGt(ICOY~sz4)V~kGlPFz@Qce$zY;f989si^7Q6R%xUec(sQDYCZyIZJ zTgUoUnhJWq?hlpeV-qvufqh8X==SW9AMU2_M&^HSC43$4A53%AFqa$+{5b>xGj#Oq z0qbh)!K~BpBC%hwJZF#mFb(t11^pmy;g=iS>y6S|p zzg*fcWWcUyaL{4v2L~OtewcMNJUla#1$$dNH+aS;*7##0QI~r>OH9;^%Ka{o*(>QW z>ngig%tSL|Nn2ag8+U|Gun*_s4ai0PF)+%R|GO5VQ0syoGfI(MEix zG=jKN?6c5~_DF|)%(+!eyXg&aV=%$)qnHYKCfuAfrK_^+U#nVjnkZ#kJW}Z;#TjhjEbDcY&kDo`TbZA7ISl&|weVpMnm%;m3mxqHfRl-B}9~Y1g zdoi{;tQgYG#Z}60)MpE^zDkS+>_E2-I&6Ih>k6V=r-UQwEcS-Fr%kF99;I*gwVTCW zAC18SJD|BihdG?l$@_y2Ymrt?h)a}kbk7A7?5p6_pu?Wye+3+g~-T7_F*d z`U#;6Y!WhH7uX@_u>HFP9k#zd=&=0<2OUm+=Kq9{0sD@ATF_xPFfr(`8@M{?u>H3N z9kzeInD*1cA>jg#g#xe(JRfw}{+jU*7l%}F#wDP(x{ZgwYp&zd@wX(EoWo1~2 zib`q-ag7relVQ0+jv*9bj?s9BAuNVCog+@Ph*OC(5`QYs=#?r-MrXJixR zFP43)memSTV4U_aYFdypkxk+zBb$JxTJki@USzSCi02}ksrhotMr31i!!*W!V|0^c zB(gEO7unb(EE|zc;x_EOi zM|SEXLCJ}1s%#AMC~PFMn~)`wBHv@#-}6Y^-wldGjd37BMwT3lED_(#-+IeNWHS)e zA)lpfel<3*$Y!>59u2m_?T~SH(&Y`IbPW=j$nwmaMApj~p?57CktJthbFpPJ$FdPw z4r9dTdgL)&ALZ{=W3T0Ss&;rC2eWAW&@vL)Y}Wp6^dxAzmL<_5n-y@2u_0WMrQJxx z2aO(kBjY!&Acn!s{2ljLP?sW`#AP9yMD(<5a^CcBH%b5YkO@NdZ;{O=ztGZ)oGvz} zbE=5kPR4)nTxyK+*@o)DL~>S#+zStqxPMv$i^yhz*=OlRHpiKf>A^=H#~_=`tY+AJ}afvKj zRdqt#`@A4UBAdZsIP!2E&@yDRgSp<=<0i61CW(6rSsJg%TaZo5|G=^rSrRHXAD_qg zZ$_?v;V?iuv@g~Pf<^A3^}UfzBKlc2BAZefhHM)0ILk(4v&Ni=>>pK9|8oG7(uI}> zkxfdkL{8O-Sc+`s`x`BLk!7TloUO9-BAdD3d1MpL3&`z=UwL@N@*uKQfdurSr5D-k z{dOXoedE`bjmW07QfCCED6+}q5tcqKU}mJjmV?M9mm@5_$fl?#SbC9-{WME2vgr{^ zEWOB-gunhT15DAau#7}D{eGp<(|RkBO>3`0mI!X3{ofC8 zal}#N^SMfH4kDYDoOXUtLS2!~mb(wKX%nX*n*;cBk)@|dn3IuBIHg)IZR=uWiC-BB zn67mx@_FdR=v8Dhb$*D9O4*BSy3=-KDIu}{*3ut9Hi`Qk*)-}SOOoLvN?r^1nPyTq z5C@Zp!GVz@vauO$+2mO^BAX@lwaEPvpT8C!H^KzhXqk#^g8LNN*nDo;h}=1G;p^cu zdt4aA zovmf@BeK-Fco|^XBl5qX>r=dQpe?o?SuBAZM+8yGpY$fhvrkj*`p zju!=q7TI*!OyrYwWTTM9{!#uC#$L_A;~sop0<%hh-?b}PGoZv^HJo1*h`onBb&s1j@(O@qvFs8 zm_fJG#X*P9M8?@q9I~w7#6BO{)YLhajmUkpO&PMeReP6ZBeKa%B5oYW!5U;!>}!!_ zaFrZ?j4XRziFlu}*RpxCqTQSzp(4v@B=#dLy~rl_W07SDRmaiOEF+Om(w>)DdXal- z{r$*hf4dcn7bO;RLv8}X5fDj z8B-O3$Y$B{3bL6e8!Q`j6}vrMOKb%R(Vy%1~-vSTY1pviFmD+B@rT*>hRl) z4czu5#}TF_4_Y6jE*Ck3fp{K-j0f~0o4PEtY-Sl7 zDQYdNVn?2gKMC_i%ckD45n1L1vH5%47zrSok?S*LGi3h9*brHZmL)Qgd+2~VZwzvo zfh;8#p2SRX(P#Pc9zQ$(YYO=M>wn;hpMn+Woe@ungWSq2;l zXA-jbm2f8`n-VHUHh$wJ0Pf1j$dWpdWeFt#T#0N-=o(~GLgkkJR%DaV3S_*gFh!QB zSrT+NvWa-LZ^Lmk4r{ariCAPARwb|}kmV{i>yhOu0o7`I;mTBBFD28=yl!mvB8y+K z-=CcCec2@9hfCr?1T7euoc(4z^k$Mk9z!4!*vLx*dkDiNHE%ta+sWU&=}p(Rhz zvLvtwSthMsGX7pQ|r|SYXnRp1|plf%t1D(9)@g6=nQ0;`z7M>$Xrxu ziEQ-6Mo)Q*JRTeI{|K@yP{nWEJjQ=B(rv*(1{`tt3|Vy#OU7S#WKS3;31o0EJ=D`V~Q+mehH`yIaSM7YgtNc z8M5(Pjf_eqPGnP}Yeg^pUlamexJsbUBAY;K#fX1mBeEF}UNQRK+{{BBjJx>x0ojz? zZB>@J~QCr5-;8K&K)Q*?1mi=|wgrG}_XOEE`h^bOy25VLNipc%2m+-$vHf?Cn zWsLtOXWv_%MK+QBX6Z#Xk^O1uMK%cyT^=M(WYdk?TY58rh2(amfOwYFZ89^Pq#D`O z>waW$@5SE%W20p$DbXLa^lKO=BmfJVXcBim zwLI)V?xG{!kE|l5ybd7C;#;yYVnNUxCnKB6ya3rGZXUAfPfL(Z1zwA661oz(qnRaE zEAY$f5zFX#OaH1RZ$&ndZAUgU$v4PmoIHqZ`c3-6pg(0Jn?(1I17-{yhpckUepLhF!CBi(?EsY;y4 zCX+AtdViNtr;TJp7r8$kB*JE`m!V5!(`^n|a;s${vT09kmfnn?628c0O#b6qW(mSp zM+j{=^hK74W7h?#7TE;a*V3=E7HlRmi9qC@I-C<02Wz4nWC>eJZm^csXAN=z$)Pw5 zN9Ll6OJp;!Ohh&dx$}`tQI{YO!(RMWBXd!HMK)oswe&`ogo+#=iUCzjEAD`(ra zUOb2_fr|Z3WYZOYvHZ4L_9DylB=#p<86^5dki{4WryhBXmVZY! zjkMj8z`g@=7i`2&7P47>4n!86Bz6$;Laq|#Uy->ey~yg6Kpbj-30y_qZyAX!0g3(q zvP?oEk60SyW+bw)@sP)An_H31NP0IiY8A1_(iO$e<8i>uP8%%`n~+T%*CQ|29&*cq zoDJ2oBxo4&B(5UghRj7pCbCJ~N@O#tK7%ars`0g`e2IKB9wo5SYl1*$Ygq!F zgIvH>xP z`cUG(&EehcZ=rf&PY;YFLkZsB&a@=1HYz4EyUeM2avZqrAH!u?ZH4sL2Y z98OPZCqsVPGe`Y@Q`IH0ct0_G^ly^Y?=Xe;-tXj0Wq$3q;ZBL+-{BhnAspHCTuS7O zl$5oJ{i%^RQ?@6bNsD}*(z>Z46zQItvS(9GBr-5HrT?aF>5*|M=~AOoafzP$!o`Ur z`$XE0@BrScoBYLSwIrX#jp-$*UC#Q9RKJyRN)(ZJQl=2d@o}AgqF2*ux zQzp_SLn&7?&CAi89Ax+=OFBnt(wjlqaBEctDrpR|OVp~PP)S|N{!Od8pc0hblvZ^` zC9%t#tySGnNnOg?RI83gC6y#g3avT@l`JHrVzjC|DhWrXaIMNjB^ELfYSpok4OBwb zagkkI+K!7%NZFhicYGwDDycd?aub&>S&`+`%w1WLWoap`iS+D9Y0B`#{Org{T<*+{ zEKFIH_#->A8n?T9Mha5u6JPd3xi(SID{?MX`Cu>cxF^vq78#!MOJZ^?(kJ{2gXM9F zyR#$R6Zgd;Q&OUdeX+>OlmUsQClkV!M8nCEV^Y3Me0p-^%C1{vIAMv`BV}sZ-FXOE z|45wQJ2Ew0h6))9R8BV0Dsoa%$~KMa8`%&^DNXFliS!_(_JbllQZuei^c@sAF{LCi z9;ExumrHYErGMEV7ca3@F3S@8yVZ;sJ&4U7OCdL*< zdZji_O+bUs6S#(3&W|{Y6IV?kJ*Ar> z&I5^urbJHbA}ObjIB9C^W@NuF@$Hnzp~)LrT=~n)kRuDI9q@x(Q=O1AkZVht>;0)X z?8uzfksQlhl|o3ew2%^@V=A7?wIy+CQKUzgZbauPb*gg%*YsNxmljb+If+|vK59if zS1&rk&g(e0C0;~5c}Hj0yAn)w!p<(P1sSe4Me`o6HSh?{`?xm47i#{Mt9O*E4>H0| zDyb|>M5jdtjvoGm|FVFjc>wAR(pC#wCRz7@q@>h z^;gI_o_RIByZ>Z|nD>S6w4xgdS6Vz8&c(ioV8wm{T!p)-kZEwWm7G%8{0lih9==jm zoVAvRDhz5)a6Kt}sf7E*!^)s4C4zd({zTr&Rmj5eocw{4RFn;QMEr2_bNC) zC+2;MH{lw%uG}x!qbS;!;5EYzk1D66#sB+o$#7RKDY1_`yHM1;=sz?f0elB<`@mHT zW#NNx-9-QPs&Is|HNSKsd_27F_NaOZOL!2xywO#UZ3vHqYpn#$f?rE=JjGdnqPWIY z3u^JOQaH=MEz*UWybsRm>Z-v;+#iJ-hq_(|awJ?2m+f=a5>xnXczAwPtyhJ2z%L~u zOmX(Yd0kvJn01L`@CS1yG2j&F}3E(I=>nS%`B`)0UD_8CE#QjWo&!MRI zs`ft)&YpZ&y>=u;J{_)l!&FI{Qwp2Mbm9`gH7Lvjo08)@;Ps7xhX>&NR~(Njb~0$o zj|u0vp6qwTe?7eJm7tBh1$%Q{FI&5BgX<&FWR-jk7hL6fy<{IN0sMxde`8cVZ7H0_ z%+-2VRDI_`_-J?)IgmalIqDCWba2%#CyM)MxZt4cNp}_=51Xe;B|{g&ZI!NiJz3n# z;I&OI+fsV9C~iU_yKZTGT~b5N?Qm$k>uuCIcofdKE~-9aBlge3%TLNs&+$kEZ^KQG z1|{?%Y<|E}?03TQnp3_G?;E)J?8Bp)X@4q5KcNUQ+T*T@IEAuZJK9xWzLx;H!jqbU zDj5cExy4myT;g5;H?CJjsxovwym3g(TdN~n09Q;ooGigIcn(z*e@+|3QJC-eNq~35 zD`-^xwfjSGZU_I@)5QI6aHwz88!jaVZ-r|oyWX?fey8wW*P~{Y`ySY{#*r4-Im?ZE zo3ufDwqc>VnD@HoEVy&a;lrRRku%_id2X_eOoG=Om*Ksk>_g5hxaq9JqnHjb*@Rna`Q@V{*z%^Ms?Ieog5R@*-SFNpfTCo2A*g>zQA>Jd%hCb)KB%)3L|e+I`F zGZHP)if<)=kiS`$R{cF}Hp$ZOe}!8=j(VQ9@4%sC)6IuQ$ti%8Kxa5-tLrV(?#IHJ z-Cgxpzv_nL;BL1@lQ~!f%U4jPN+iN1a0bOK z|0IExa1#mW150?T;Sz>k4;K4%@UZs}jiRRDG^e%${lDmwppM_epmIjgO}4`g?V`y5 zzmovZiK_QvC4w{#s(RPE$u`poZhO>Khb`jX3qEkZ>lNt)je_kG9Un)LeS-fDU@7vM zaMcG)zq%34g+qlwo46G&`O{SgCKAEj@Vq_IWE)y1?o8*hu9F?FeSOfV4#3&b47Hk-1hv9-x4G(xNQtl=$2{Azl8&u*~ zRhR=0TNw3Bqdr^g|Lc0!h`Y@HQ&H5N?LXro5zc~-ppK+kB?pV(olMW?`5v5W;ru&X z?=H=E!yD-(v`tm#uft7!{HNd~L4Susv;0T%gm=U1GR;sO|MBnv6#bbl{Z^dj`~ll_ z)Q%I>%-*i|n2z8`c;|$udZ1VWjKa15cD;XS_kr;8sZn)eFYa;zn>#+Lo`MiAhFfoR z)ytY{{=XhYLno7>9}nLF%jeoz_>-fM^8mb_Iv=gu#CkX*;{TSY1h^S)?!tMtat}H0 z2#5V2rx5qg;1b%@Af3RyaMpKGuM}4Ezr(p-gSA5G3fE@FyfgLKo(-3u$dZaOmH-F9 zYw5>kWE=`-{N}2+hQvKz_&k5dBRm6kBd$7L6uv~V@4!E*S3 zwV2sb_z^)A!=BwRKz=q2yK@@?25+I<(CvEPgXY0h5Z|C4cq{x6N} zM-(ORN4*EMhYpnenueeec8BG+pdU^36VMAj*w25~R}wq~?!7ar4qS!D!sbiK!ZYFK zU9LAnhd&oSu%2E({3=IRqu9oRK<=_ig5-^#tfHv*S6%1#z(J!7IrqcWS4X|I+Wi@L zyrroied-dkTymeNO7Kp&95hm`@69G;`w_zz>nZeirg%*zJm`Q z@2Y;Satv=f#lI~f5gyrvMoA-dwf{^wzI z_TO)p2#R5Ka83ywm740zg*z?{+RP2`7T14dLlSVWFyltP4*wDP_(eKHWiPFG5rfjP zK|lTg9+n>Se$!R31J0TiEJ6>!bu)rRW*W!*xePRBoah8M+#U7m^gwnjJbb19T?EO1 zD<8kv_Gi?)LMLD_1{;UC>i&}$On^gw^N)apr^EH^UOjEU5H5QwXjE6jwc}m&N|D&# z2RD*n(@P$QGg-9y>w%E-QXEAFv)L&+z^$+|)&DA{1n?V7cdwxf%x+!iB7ghiU)I#NOJEL_p#k9dQaC>W=|0*oszVauJkkbSga2}AY?RUY&w@1}CA*Dq2 z!+TiP%PFaFtMDw>E75!e-J{O)e}RMfKjid8A-`J4;#PS$1zx~>UZ(kUINb{lASS}u zoRFNV+(XWJaFI21&x1QIa=ixa|0=lp!=MCigtH3OT;cEkZ%5I)8%Lt4egf`;>p2rz zpaXakF1#fu;zsyfE5gssl5cMwC z5l(>ftTo|GxYXLcE`$ru@;~P({%?f0aHeaja1|_fj|wC_&J)(a@_NPDI{Xc=e1&zQ z@$eRkA}8uSrAN9C;hj_bw;3dYui%dDGjuBtIp4u+kM*C*k}CWIPPf`j7gnw#tu3i)V?nT-AeH(9OL;rXwfZwEzw6r9TnXt|EC2i&D+uU?=ku@UeND?`O_ItlEp z?XQO8=_f{$`|~?d)Uqg)5TuA7g)2Uast4YL|0c{(%dD&1KZdJmq+>OIC;nNc8}~MN z!8cJ)&bGz>Q4~eJwWd7bc=}(r0sikhia|dNy5;x}P)Va13RfSXigW-{mh-ZsUXzZn z7+%2M&_s9*+;(F$$!p-f!=vh#P$m3lV9Lf*|FiFS`FQ%@u*ZTEiuW*Zna@o>-35Ci zSYolpk^p{&<)e8s2tg9~C!9^Uqe|6u+nv_dXyvdMY`&r@_Bn7R$8d+}buvAl5l6A@ z{GgwYhg(a7p?I1EzzN7u6=B%93SM(tFi_nIm-dKyX}TLf2^U=&RO!p`?L~)^yXi*Q zyfrBqiti8wTdxuw!PjsZ2MDsPmJ}X<<$b>*?fxem(nTma>O}vuk6=!Qi>xD>TzGGD za=-74fVaVVHjF#tP|TU-zs)THPJ^>6qw4mVq_7m0ACn%f6L2+rvbD@!0hfN^csQ$8 zpMclxk0vLt^>70jG;QQ1csWZx+9p*P4?FLm=xv>DZ-eUw`qQH%Xg9o;BE497V0wku zFc+}SP$l#WT)iSVplHYQq07z;){w`;>Fg^^0#1jE&6$&&|DP)!CI<%wrEv9fSN-0v zl)wTw_kx&rx31&s;I_HJA=EAKbY?@-2orEaQ83@v!i_U{lMVw3?{&BvOTHKxQ2YN+ z#2^|R5c~kkb4X`Mw`2Bdh362!G+hGW9yHQ7f+blOVQ$$xpxsY^2mTZs-JT9_W1m4m zsRZQ1B|LLMdSw0&Ip<3NED9%UgSl|-o56g3Eu1;u|74itU?uDp`afPHyjuKMMAd88 z!cW8U(auLycr3HwEW$HOuts@yn-s0gGWi=g>dFwu6K1@E3QD%#FFVW&DX*$lY#)M;QB89 zZ#qZ-Pr%PvbHht;+kLLr==c$Ag$vT6$tv3pJNE~@$@%&q+~)buE=q}X=*7s$3dxKE{b2L6U6P>D@D3Iv ztXov0E`kd zP257^pB&4j!^1gb;-Vrv4k5(kV`j&*;1X8JvR9Nkp9C*>Czwr3;APZ#U+upP&ZLT% zLX`dWC(-}P{uT9J&<3k8Sku|@K$U<8;acn7?=x`vlR+KV!z4MG;1A(>!!vXaL(U#} z*d0-CFIJM{Hn_hvcXXAHUw0fBMA*lrQBj1P6{#XT4Q}Q>A4q~i&N#ThS_K!v@?&H@ za96Dw?qfx88GL}bp-Q{Q;a9D0yGj%d7X(F~fHT=Xr)m$iaQgJ*?Q-XRaVLNf?$YSK zgxfe`$yW9u=Kx&!TyQ{<7NvZw?RsZ;1@{vk(c#DYqo{eo1eoTW4i^j!R>jldW^Odn zR#XlzgEzA#oS)+Jb#M-ojnt`>z$$q0_0eQ2e+aJY%sE<2Qv^&hu@&eBz`>b3HoV&|Jz&Re=#`d})&9~2i^I39Ls04+bGvE?tLw`CBIg`YH&!|_f z-50`cc5t)%Mp!nl62B_4`%%=jxZXS-urg2NWema8Us+MOa}SQkBE*Nipw$cE3*yt=aNvINmfS zDDt=d$KapvTDD5LI)MMcl|&%DK<4}3;5p3q?X>$5{i%|Rc>P3GLCEO=H*?Y%(eAzB zoXTL;d`5rz-%ieS%p!6k25UK^@iz(~XF5E5e9T*?0_0&dxazW~_l^#5Ih@`*c(CYR zxNx-pzJj!gC*jTGf@elvhUdK*^YE_P+}8fI|FVw$3lZXB7Y61tD^lbK;n0yz(nA~k zy448VF+$}J&G0@aK=GdiH&5X6JG##Mi907Gqm(-jIKbw^MiTy%IEtdrqscoKv*Gm= zsc9rv!j&wsS_nXj{06xHyRJ7;mq-QNg#CCO!2@vUD{j+i_gdJ^ih4I|egj^1M(~hJ z{GTXlzKmXh^7gLIVc6*~fJPb)rsHGaWlX1LZ`TVR7W04FNpd(0 z&ii}RJDP4JoDUD*5cMK{_;F_jisjculMju|hZ~4Mw%6j}8u384lSQU*rP!Yv%ngsi z<;^_pjJuT36L1{~cvV-yEAY14lM4>#L$U9~uL*=Dym-j@5=DkJ)P4)k;R%PiI>P_L zu2n_t2XYEV0{vw*k7mIuEcc#pF>6RNOoCFKA@F9#2{Nn_I2x9(M>k6Nvj3liqG}Ky zoY6&oA?%$)k?90n2QQcv^pd;aQX=pVAX1$NV0qs_Z9Et^*1_Aj)w)3Ye;syjk0$Si zH^Q|HR1&_L|35=f^kwi+$oKHF%4qTt%wOTM3z!{sk)}`=TdbW@S9k&ae5Q`D2b^c^ zp3j8W&kOD;O@+(+Wxjv^e-?_;{=xo!5xl?}$!>smPH~gR^Q&O_V7D1+9}@RVg4=A* ziGQm~-hgXhGj99?o~ITp^nYno2T+8pJDY#NS#P_^XEr(vqRy;yy`$mu`N5*qh2@*~ zewA@>2_I~7^=3BgjDhEI-;g$^;+qaTj3cuCP$SW76fPT$>B=DFTmv@^2nL=N@HXoi zkvrk#x@HDx3m3m5$AdcSJ_C2+&QsMn@>vDoj5#=YBg zimpRZ&jNxQnyQE@VEG|wwrq;;fm;}=dnpb%55uh#sYzhH_@@`(tfuoV@Cq9BdSxGW zK7{*o;&F@SJ@COfM0loF{Dh*Mlg|#Yi(9O=G*v*-n;%6@?BS;klB@X}9ZeL=U& zfTapEPo@1IXcs)+Hxz>$`mGr{$H4Pw1KB!&sc?%E^JeH0yA*Dvn;G{daCLFaYtZ&9 z;7~<0Ihn17%f<#Pt{3Addi)q1m3|B#m=@DFnZnN3a3!->o(}LQcwMgllOxj2+7G49 z899&E?#IJ5JU?)bPGBE6oeY*}_u+6+C}?x>VifYqjo+$MojGvb_`qNZY(A1I5#9t> za*{bh2e=x}WU^w1rW)Z!xU^63Xx5wJ|1tl&ky2%Uhih(5KCl>fenC<9m79EQHiaY5 z5}s(F>ilj8Z{fM%&ot-4H5|p7MsyCmJ^4J}kB6tjb@)F@+g}4Wkzh4Dl7Llkw;Ro5 z#Qy&o6fQ+>BCLna7b+#i+u+5c_4E4hx3Kd=)H^FxcROJkCB020xScEvXk-$hG_nkM z!NI5}Z(2xrC&5{H{ucn4|3l6I@i3PFbpWH_=87PP=fUz7OOwFM;DS=uTchjvMmTFh z@P@=nIFEZq6Lomc!xfrg#+|`dN3s0G;4atQ z;^Dif*G?DlBXBx*vk&M5Y!SZI^&Zx|6PC|NfNJdj25zDe# z5KiYN)J)CK!tx`gEyS-p)T8Leu^4w+6n_NE*IPi9qaE-L+^1>x1Mr?%!J}Azz@;oo zO*d@Mtk#aP-&EnTaBbb8QOoczRo)LiP^#zuE|kC+6w9qMoQvQ+zXz}3l)(!)lrsJP zFL3D*y!EE5s2c7z&-FIw1lGV+JlbU@vsd8qF?rZ$0K51g-UVQc}UzN^3sT3MNh%GqhiTL>1MdBPw-go`*7w7!CbK$ zcJ6gN{#R}87q|z{A0IY~qbS=F29je@sDT1rduH&`$WXW@H#lNB2j1~x)LX6-I0G(S z8BO|M02eKfde3S1>)>Ul#Ju};_;xIKoJxc>DDs|)dVkRdb+GxVZgGDX?)`DF zFW4dWi(=kCwf!FW;HY36XoKez21~e%k&Lv~Zu;1f%>SDhDoLOkDo??nh(_2=2RH$4 z;)JBT=4o(YXP$c1ybvyDcH^Q-tQ?`1H6roCA?HrGk|(MCaeybO;T6{0@xn;@-=3xZ zH$5eXTQR8K$x*8ga3}1f2J`n1!qyQ=$|$KzznjYaf$nfUPtQH3{k!nI`rw45AKb`n z>(JcJ0ruJr6LG9&2Y$?On!hf z#`?b$CPgl@!p;x%)9v_=5LI=z4DUkK%_$+coSRZz{qW+Bi((GbVVSRRPK7i31UDdt z!wuttlh5&R&Q-xl=>>2;YrJueUt)1MW-YVthTUnwW4IgO#eHMmbIP9i|1}f`iekzA z{0H#H0gPO_+w6v0kB=p9nH+$ZvB*5y@gsCbGyT>C=YGe*=0mhnf+xe9Sv6m!?FYei z`2Sj1_W$Rg$hV{60<;g5#Gqj=>@p6{|`BDpxC=K>TS~jd<56L8LW7|hRbIK15qp7m|Q}Io$g~8 zC+dSXbP}9vO+Kf>Yj~^1zl!2YF&)JY?pT;ptczjuxkPo#1uo2G3>aPS6>60A3aiw&S(1`J%Q|NdvrIy$u}qQ}mvAxHjtDqXYN? zZaEY@6Z$Q@W>;|P^@G@tbv(?~Sniy~viu2N$xQJR*a=?D8xY^<@J@satp^r|!WFkf zy_LkT`uPPYoE|}d^Wnx<16~X-<{^^1wEZn`(=*ZJDmVe>au&?_qzdm5cnfz1@JT0bbrNI=Ks8Rf_F5QW01KfNZ|^2{nlXqUj;jy^O;tDKU~GYA_~J)Hk%uwr^1&S6}5K>L3SHov|uCGs)6{rzB-9N&eai5HJj@gPOG4{l)@ z9?=2(1g|+amOP$M$)}YwRGaO0XE@X~coV88ocDI{rqcj;vNiIJfvZ<0A9{&9#VE?S z*K5{%3*d&YU2icdl18-*_TG#p*X=9e77iTDX7draj$^q@m4OuJ3Aou>guVoC=DlE3 z#jnAQY;OGw$J3k!6o0c?IFn~KF44Ri_Ra_fq7Cr6oS+xI z3K#L(?ZaeQO7MNSY-==m7`+>w$AQOR2v42=|Ab=iYtiJZQmGSY6L$o!<8_Bu?2dZn zIss9*p)q(|?{v8FLVg!Om)LlCId4qJH!masv*2w!XLN)1Uj}FUBd0(ASD>i>F6f5$ z!5OrPT0CIS6#9)M&B=v#G#nbWjsT^XcyQjUQE#cvaUtB~Iv&nyJ#ao;nHTVU zc;3*McNqbyMh#am9haE-|5g-LY{do;fEZN6t=!4<-MNzqH?t(;AVayo2G>#N>6$-* zcQ6pe6o;IBa6<>ztI_U1!}1%uFKYM0aEXNPx7v_%bO9w`4J?D;EP9292RX&cgY#JD zAEN`947ZF6aySRBJn!(R!^%F*SpqNTN#~B5Z-%SiJ2Xmqg_PiZ@WF?9{?E*2Pot>s zO21bTgq@e+IqdCBm3#o_vuqxy-FL&o-V4ToHn@$kf2eZjaXqHRI-aN~)m3yne30F= zOt(_Pec;M7<8E@*dm4%g|E`p(!?ADyn@8F5$ zh0|9B`+^N{9XGpsYxkGnmUux>gm0s0%Z+-wwZXsO;^at`=KKdPcrfa%(e5c6jTCck zDCduoqa)!xtb%)Jj>3hv1>X-C4HM-k`CksbroeIYa~Kl9Y!u6j+~jt8DZGV8GP|iF z3^_N$wVZhPjVSCS;0A_PoK>AZ24_wW-h!!vcbpz%a0`6Ux<9b(T>4+Sb$fgd1|6+C z7T?1yEHeE@7k0vvVBUf`nFysyIt#NzJ3@00xRf?w`h70k$|07yaXAvMVl(US6GG0E zN%XJGA+h95p-V7W$FjJW4)7|tg!MqGVjet(%?GNa2ovyPC&NQak%pXS;ljco$FIS| z$dGhXY4vZzMVt?q@IH;Bs9+>&hk;bVH}FPlGHQj(&k64Tw=1L(4GJR2fNR_!0Vl)T zZVetpJ`H9z@#KF=@OZd{RrL&5;)`E|BLBu%^8Wu^c;gn1FWd*v>Ci{&}5G{Bss;ruS{|9NL)f)^TSyin9K}QR&a{;({Q@4(Dy= zCy6D+S@8C#|06}hec_Gl?)n1N$~I$W(~>y{{j@-LNV{4 zHdp``XYsU~9yqRs3+KnYpSAnFu*Zr@JCVOLTxk z;cjp6cAMsja4Y)+vurPh>(8R!YxkvaLp#@dT_<1_JiOWU?l$xP0}{aaU^?9luV@WE zo$>)}FVVh-MZ2s zqG(|pFk7dwu>7Jo;i@{F24|iTtYT-u4LQ-|N2!*96t@qXD(G6 z;Y_FwZaJS{yXvDO*otBu_hi~@{sOMB?(OcC0IVuH2$#^x&)4>;(-_-l1vey)f={*1 zfKGyoQz;Qzt#sSd;4Nn`|6im7C_qt7ou8_CHoS)8`7WAQ!IjomtZHEMi|-QP^Ki$Q z>DN4<2xs#^0|Tgv@ZWG1v#CtK(ry2MhtDShnGYp^2>q+B-tj;+RCb5EaX%nOyPpj2 z92`r&EjJ1-ofsTUPJ$26NZYjiOn5O5D2&y-1RiKTq*?`ci{HnpRIf-LLD76&%zI4N z+27!%!EUk*yaB&p%?%&JwQQx#xUmmzAi?Hz{5N5bC3AjY2BNNTJe}8M zs1iyb{c_wJ}1L4Kv_~3v}kbHxsj-h&!4sZ(G!imNcnlFZjvw1y6^AcFTObYsk z&2S?Fo5UwoaO-*WKi6utH5jB{9#p~eaAjLm{pg@n(H3}fC_`_rL(V6#hyRl#0^GlW zH_i#pf`5T)-->$GIs+Yw36GcA{-NzNi|K#c-wE14Ukv1{rbBg#hror7p97iS^WjFT z7fgp~EuQ)x_Y2_ce*W)*NrD!^b$7bS*Y~c6H?uKOV?XXI;wbj;PR9tH!nN>=RvkYF z=bg>Z?NMeD;2Us0i&hp!ir<5q+Xwf0cf$+Z;8yJ~@WHHD^6qyE6MvQyyy_Kik3xQb z?KBcn!79;yaKVTSl>v4BKMX}S^(X(-#sFSEKbl-nTmdgG z56=C{;bAw${2L5pU?tq2*^DWHM#w{D`Lrw z&1rCpdR(9WFC)>pD4JOT`4O@cf_K~z9HlOSE9h2(RD#0Jov?g2IA56Q^nSRAHKP=w zL|6k?RR+%yy#zaK-8gqp?r+0cOy@gUf2ss*M^V7C*d$;tY<@Ociu6z6NbrPX#swr8 zHZQOBgbQgCc`AaC(+AF65Ihrdn%MsqJdk)c?0&>nZ6nQCQalMo9q0QAox+*$=H9{l zJ_}|p^>9{gqzsndffJSzxB)glm@Nsu2ku~v6OX{#tj+H8@b(v&|BERzNx&;8s1=!w zRRkZxWe>-^cVKb<60ScXD8irM6>O)wYxhI&a_0Lfn!8;{BYe^H`!pvDuH;!U4n9

J?=2m`b`&)notmL|7hJ*9aOY|FAK@J=yUl{+cd_TV-7MiE7ct*+ zU~#;%5Ai5IRhl0h+YNy$i-RMYk?@o%UK}z*=L8hy_spdZXTjax3*P5j1ZUnAyc2pg zy!VI<{fPwdJqhS|ce$k~1X3cd6pE@*W)9Tttal0eVx@u|J6$_`9&012n z>A825{M(#eY^Ce|VFIrl*WbndS7tfkAXGvnw=1BKVdp?c)y+h}@ zXI-)A()n}qF1d8pRSU|NZhGmf$cM*unS0ixf=N@(%AYhP@1oIX6^);M_NKr58F{Sp F{{tUcIFkSX delta 220805 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 d8 #include #include +#include "mystuff.h" #include #include #include @@ -10,6 +11,8 @@ extern volatile uint8_t sounddata[]; extern volatile uint16_t soundhead; +#define CONFIGURABLES 16 //(plus1) + extern uint8_t RootNoteOffset; //Set to define what the root note is. 0 = A. uint8_t gDFTIIR = 6; uint8_t gFUZZ_IIR_BITS = 1; @@ -24,17 +27,37 @@ uint8_t gMINIMUM_AMP_FOR_NOTE_TO_DISAPPEAR = 64; uint8_t gNOTE_FINAL_AMP = 12; uint8_t gNERF_NOTE_PORP = 15; uint8_t gUSE_NUM_LIN_LEDS = NUM_LIN_LEDS; +uint8_t gCOLORCHORD_ACTIVE = 1; +struct SaveLoad +{ + uint8_t configs[CONFIGURABLES]; +} settings; -uint8_t * gConfigurables[] = { &RootNoteOffset, &gDFTIIR, &gFUZZ_IIR_BITS, &gFILTER_BLUR_PASSES, +uint8_t gConfigDefaults[CONFIGURABLES] = { 0, 6, 1, 2, 3, 4, 7, 4, 2, 80, 64, 12, 15, NUM_LIN_LEDS, 1, 0 }; + +uint8_t * gConfigurables[CONFIGURABLES] = { &RootNoteOffset, &gDFTIIR, &gFUZZ_IIR_BITS, &gFILTER_BLUR_PASSES, &gSEMIBITSPERBIN, &gMAX_JUMP_DISTANCE, &gMAX_COMBINE_DISTANCE, &gAMP_1_IIR_BITS, &gAMP_2_IIR_BITS, &gMIN_AMP_FOR_NOTE, &gMINIMUM_AMP_FOR_NOTE_TO_DISAPPEAR, &gNOTE_FINAL_AMP, - &gNERF_NOTE_PORP, &gUSE_NUM_LIN_LEDS, 0 }; + &gNERF_NOTE_PORP, &gUSE_NUM_LIN_LEDS, &gCOLORCHORD_ACTIVE, 0 }; -char * gConfigurableNames[] = { "gROOT_NOTE_OFFSET", "gDFTIIR", "gFUZZ_IIR_BITS", "gFILTER_BLUR_PASSES", +char * gConfigurableNames[CONFIGURABLES] = { "gROOT_NOTE_OFFSET", "gDFTIIR", "gFUZZ_IIR_BITS", "gFILTER_BLUR_PASSES", "gSEMIBITSPERBIN", "gMAX_JUMP_DISTANCE", "gMAX_COMBINE_DISTANCE", "gAMP_1_IIR_BITS", "gAMP_2_IIR_BITS", "gMIN_AMP_FOR_NOTE", "gMINIMUM_AMP_FOR_NOTE_TO_DISAPPEAR", "gNOTE_FINAL_AMP", - "gNERF_NOTE_PORP", "gUSE_NUM_LIN_LEDS", 0 }; + "gNERF_NOTE_PORP", "gUSE_NUM_LIN_LEDS", "gCOLORCHORD_ACTIVE", 0 }; + +void ICACHE_FLASH_ATTR CustomStart( ) +{ + int i; + spi_flash_read( 0x3D000, (uint32*)&settings, sizeof( settings ) ); + for( i = 0; i < CONFIGURABLES; i++ ) + { + if( gConfigurables[i] ) + { + *gConfigurables[i] = settings.configs[i]; + } + } +} int ICACHE_FLASH_ATTR CustomCommand(char * buffer, int retsize, char *pusrdata, unsigned short len) { @@ -50,6 +73,7 @@ int ICACHE_FLASH_ATTR CustomCommand(char * buffer, int retsize, char *pusrdata, int whichSel = my_atoi( &pusrdata[2] ); uint16_t * which = 0; + uint16_t qty = FIXBINS; switch( whichSel ) { case 0: @@ -57,13 +81,14 @@ int ICACHE_FLASH_ATTR CustomCommand(char * buffer, int retsize, char *pusrdata, case 1: which = fuzzed_bins; break; case 2: + qty = FIXBPERO; which = folded_bins; break; default: buffend += ets_sprintf( buffend, "!CB" ); return buffend-buffer; } - buffend += ets_sprintf( buffend, "CB%d:%d:", whichSel, FIXBINS ); + buffend += ets_sprintf( buffend, "CB%d:%d:", whichSel, qty ); for( i = 0; i < FIXBINS; i++ ) { uint16_t samp = which[i]; @@ -76,6 +101,22 @@ int ICACHE_FLASH_ATTR CustomCommand(char * buffer, int retsize, char *pusrdata, } + case 'l': case 'L': //LEDs + { + int i, it = 0; + buffend += ets_sprintf( buffend, "CL:%d:", gUSE_NUM_LIN_LEDS ); + uint16_t toledsvals = gUSE_NUM_LIN_LEDS*3; + if( toledsvals > 600 ) toledsvals = 600; + for( i = 0; i < toledsvals; i++ ) + { + uint8_t samp = ledOut[it++]; + *(buffend++) = tohex1( samp>>4 ); + *(buffend++) = tohex1( samp&0x0f ); + } + return buffend-buffer; + } + + case 'm': case 'M': //Oscilloscope { int i, it = soundhead; @@ -118,6 +159,61 @@ int ICACHE_FLASH_ATTR CustomCommand(char * buffer, int retsize, char *pusrdata, } + case 's': case 'S': + { + switch (pusrdata[2] ) + { + + case 'd': case 'D': + { + int i; + for( i = 0; i < CONFIGURABLES-1; i++ ) + { + if( gConfigurables[i] ) + *gConfigurables[i] = gConfigDefaults[i]; + } + buffend += ets_sprintf( buffend, "CD" ); + return buffend-buffer; + } + + case 'r': case 'R': + { + int i; + for( i = 0; i < CONFIGURABLES-1; i++ ) + { + if( gConfigurables[i] ) + *gConfigurables[i] = settings.configs[i]; + } + buffend += ets_sprintf( buffend, "CSR" ); + return buffend-buffer; + } + + case 's': case 'S': + { + int i; + + for( i = 0; i < CONFIGURABLES-1; i++ ) + { + if( gConfigurables[i] ) + settings.configs[i] = *gConfigurables[i]; + } + + EnterCritical(); + ets_intr_lock(); + spi_flash_erase_sector( 0x3D000/4096 ); + spi_flash_write( 0x3D000, (uint32*)&settings, ((sizeof( settings )-1)&(~0xf))+0x10 ); + ets_intr_unlock(); + ExitCritical(); + + buffend += ets_sprintf( buffend, "CS" ); + return buffend-buffer; + } + } + buffend += ets_sprintf( buffend, "!CS" ); + return buffend-buffer; + } + + case 'v': case 'V': //ColorChord Values { @@ -125,10 +221,7 @@ int ICACHE_FLASH_ATTR CustomCommand(char * buffer, int retsize, char *pusrdata, { int i; - buffend += ets_sprintf( buffend, "CVR:rBASE_FREQ=%d:rDFREQ=%d:rOCTAVES=%d:rFIXBPERO=%d:NOTERANGE=%d:", - (int)BASE_FREQ, (int)DFREQ, (int)OCTAVES, (int)FIXBPERO, (int)(NOTERANGE) ); - buffend += ets_sprintf( buffend, "CVR:rMAXNOTES=%d:rNUM_LIN_LEDS=%d:rLIN_WRAPAROUND=%d:rLIN_WRAPAROUND=%d:", - (int)MAXNOTES, (int)NUM_LIN_LEDS, (int)LIN_WRAPAROUND, (int)LIN_WRAPAROUND ); + buffend += ets_sprintf( buffend, "CVR:" ); i = 0; while( gConfigurableNames[i] ) @@ -137,6 +230,11 @@ int ICACHE_FLASH_ATTR CustomCommand(char * buffer, int retsize, char *pusrdata, i++; } + buffend += ets_sprintf( buffend, "rBASE_FREQ=%d:rDFREQ=%d:rOCTAVES=%d:rFIXBPERO=%d:rNOTERANGE=%d:rSORT_NOTES=%d:", + (int)BASE_FREQ, (int)DFREQ, (int)OCTAVES, (int)FIXBPERO, (int)(NOTERANGE),(int)SORT_NOTES ); + buffend += ets_sprintf( buffend, "rMAXNOTES=%d:rNUM_LIN_LEDS=%d:rLIN_WRAPAROUND=%d:rLIN_WRAPAROUND=%d:", + (int)MAXNOTES, (int)NUM_LIN_LEDS, (int)LIN_WRAPAROUND, (int)LIN_WRAPAROUND ); + return buffend-buffer; } else if( pusrdata[2] == 'W' || pusrdata[2] == 'w' ) diff --git a/embedded8266/user/user_main.c b/embedded8266/user/user_main.c index ef43fd9..80e3f04 100644 --- a/embedded8266/user/user_main.c +++ b/embedded8266/user/user_main.c @@ -31,10 +31,16 @@ static volatile os_timer_t some_timer; static struct espconn *pUdpServer; +void EnterCritical(); +void ExitCritical(); extern volatile uint8_t sounddata[HPABUFFSIZE]; extern volatile uint16_t soundhead; uint16_t soundtail; +extern uint8_t gCOLORCHORD_ACTIVE; +static uint8_t hpa_running = 0; + +void ICACHE_FLASH_ATTR CustomStart( ); void user_rf_pre_init() { @@ -43,6 +49,8 @@ void user_rf_pre_init() //Call this once we've stacked together one full colorchord frame. static void NewFrame() { + if( !gCOLORCHORD_ACTIVE ) return; + //uint8_t led_outs[NUM_LIN_LEDS*3]; int i; HandleFrameInfo(); @@ -63,6 +71,18 @@ static void procTask(os_event_t *events) { system_os_post(procTaskPrio, 0, 0 ); + if( gCOLORCHORD_ACTIVE && !hpa_running ) + { + ExitCritical(); + hpa_running = 1; + } + + if( !gCOLORCHORD_ACTIVE && hpa_running ) + { + EnterCritical(); + hpa_running = 0; + } + CSTick( 0 ); //For profiling so we can see how much CPU is spent in this loop. @@ -97,7 +117,7 @@ static void procTask(os_event_t *events) int stat = wifi_station_get_connect_status(); -// printf( "STAT: %d\n", stat ); + //printf( "STAT: %d %d\n", stat, wifi_get_opmode() ); if( stat == STATION_WRONG_PASSWORD || stat == STATION_NO_AP_FOUND || stat == STATION_CONNECT_FAIL ) { @@ -142,7 +162,7 @@ static void udpserver_recv(void *arg, char *pusrdata, unsigned short len) // uint8_t ledout[] = { 0x00, 0xff, 0xaa, 0x00, 0xff, 0xaa, }; uart0_sendStr("X"); - ws2812_push( pusrdata, len ); + ws2812_push( pusrdata+3, len ); } void ICACHE_FLASH_ATTR charrx( uint8_t c ) @@ -158,11 +178,37 @@ void ICACHE_FLASH_ATTR user_init(void) uart0_sendStr("\r\nCustom Server\r\n"); +// system_restore(); + CustomStart(); + #ifdef PROFILE GPIO_OUTPUT_SET(GPIO_ID_PIN(0), 0); #endif + int opmode = wifi_get_opmode(); + printf( "Opmode: %d\n", opmode ); + if( opmode == 1 ) + { + struct station_config sc; + wifi_station_get_config(&sc); + printf( "Station mode: \"%s\":\"%s\" (bssid_set:%d)\n", sc.ssid, sc.password, sc.bssid_set ); + if( sc.ssid[0] == 0 && !sc.bssid_set ) + { + wifi_set_opmode( 2 ); + opmode = 2; + } + else + { + wifi_station_connect(); + } + } + if( opmode == 2 ) + { + struct softap_config sc; + wifi_softap_get_config(&sc); + printf( "SoftAP mode: \"%s\":\"%s\"\n", sc.ssid, sc.password ); + } - wifi_set_opmode( 2 ); //We broadcast our ESSID, wait for peopel to join. +// wifi_set_opmode( 2 ); //We broadcast our ESSID, wait for peopel to join. /* struct station_config stationConf; @@ -202,6 +248,7 @@ void ICACHE_FLASH_ATTR user_init(void) InitColorChord(); //Init colorchord StartHPATimer(); //Init the high speed ADC timer. + hpa_running = 1; ws2812_init(); diff --git a/embedded8266/web/Makefile b/embedded8266/web/Makefile index bfeddb3..1c65988 100644 --- a/embedded8266/web/Makefile +++ b/embedded8266/web/Makefile @@ -1,9 +1,12 @@ all : execute_reflash page.dat push +IP?=192.168.4.1 + mfsmaker : mfsmaker.c gcc -o $@ $^ page.dat : mfsmaker page +# cat to_compress/*.js | gzip -9 > page/compressed.js.gz ./mfsmaker page page.dat pushtodev : pushtodev.c @@ -13,7 +16,7 @@ execute_reflash : execute_reflash.c md5.c gcc -o $@ $^ push : pushtodev page.dat - ./pushtodev 192.168.4.1 1048576 page.dat + ./pushtodev $(IP) 1048576 page.dat clean : rm -rf mfsmaker page.dat pushtodev execute_reflash diff --git a/embedded8266/web/execute_reflash.c b/embedded8266/web/execute_reflash.c index 652ccc6..ef83c67 100644 --- a/embedded8266/web/execute_reflash.c +++ b/embedded8266/web/execute_reflash.c @@ -127,7 +127,8 @@ uint32_t Push( uint32_t offset, const char * file ) fprintf( stderr, "Error: Timeout in communications.\n" ); exit( -6 ); } - devo += sendsize; + if( reads != 0 ) + devo += sendsize; } return devo; diff --git a/embedded8266/web/page/colorchord.html b/embedded8266/web/page/colorchord.html deleted file mode 100644 index e3c7494..0000000 --- a/embedded8266/web/page/colorchord.html +++ /dev/null @@ -1,103 +0,0 @@ - - -ColorChord Control Panel - - - - - - -

ColorChord: Embedded

-
- - - - - - - - - - - - - - - - - - - - - - -
- -
-
-
-
- -
-
-System Info...
line2
line3 -
- -
-
-Current Configuration:
- - - - - - - -
Type:Station (Connect to infrastructure)
AP (Broadcast a new AP)
SSID:
PASS:
Enc:Open
WPA2-PSK (Ignored in Station mode)
Chan: (Ignored in Station mode)
-Scanned Stations: -
- -
- -
-
-Command: -
- -
- -
- - - - - - - - - - - - -
012345...12131415
- -
-
- -
- -
-
- -
- - - - - - diff --git a/embedded8266/web/page/colorchord.js b/embedded8266/web/page/colorchord.js deleted file mode 100644 index 532447a..0000000 --- a/embedded8266/web/page/colorchord.js +++ /dev/null @@ -1,477 +0,0 @@ -var wsUri = "ws://" + location.host + "/d/ws/issue"; -var output; -var websocket; -var commsup = 0; - -//Push objects that have: -// .request -// .callback = function( ref (this object), data ); - -var workqueue = []; -var workarray = {}; -var lastitem; - -function QueueOperation( command, callback ) -{ - if( workarray[command] == 1 ) - { - return; - } - - workarray[command] = 1; - var vp = new Object(); - vp.callback = callback; - vp.request = command; - workqueue.push( vp ); -} - - -function init() -{ - $( ".collapsible" ).each(function( index ) { - if( localStorage["sh" + this.id] > 0.5 ) - { - $( this ).show().toggleClass( 'opened' ); -// console.log( "OPEN: " + this.id ); - } - }); - - $("#custom_command_response").val( "" ); - - - output = document.getElementById("output"); - Ticker(); - - KickWifiTicker(); - GPIODataTickerStart(); - KickOscilloscope(); - KickDFT(); -} - -function StartWebSocket() -{ - output.innerHTML = "Connecting..."; - if( websocket ) websocket.close(); - workqueue = []; - lastitem = null; - websocket = new WebSocket(wsUri); - websocket.onopen = function(evt) { onOpen(evt) }; - websocket.onclose = function(evt) { onClose(evt) }; - websocket.onmessage = function(evt) { onMessage(evt) }; - websocket.onerror = function(evt) { onError(evt) }; -} - -function onOpen(evt) -{ - doSend('e' ); -} - -function onClose(evt) -{ - $('#SystemStatusClicker').css("color", "red" ); - commsup = 0; -} - -var msg = 0; -var tickmessage = 0; -var lasthz = 0; - -function Ticker() -{ - lasthz = (msg - tickmessage); - tickmessage = msg; - if( lasthz == 0 ) - { - $('#SystemStatusClicker').css("color", "red" ); - commsup = 0; - StartWebSocket(); - } - - setTimeout( Ticker, 1000 ); -} - -function onMessage(evt) -{ - msg++; - output.innerHTML = "

Messages: " + msg + "

Hz:" + lasthz + "

"; - if( commsup != 1 ) - { - commsup = 1; - $('#SystemStatusClicker').css("color", "green" ); - } - - if( lastitem && lastitem.callback ) - { - lastitem.callback( lastitem, evt.data ); - lastitem = null; - } - - if( workqueue.length ) - { - var elem = workqueue.shift(); - delete workarray[elem.request]; - if( elem.request ) - { - doSend( elem.request ); - lastitem = elem; - return; - } - } - - - doSend('e'); -} - -function onError(evt) -{ - $('#SystemStatusClicker').css("color", "red" ); - commsup = 0; -} - -function doSend(message) -{ - websocket.send(message); -} - -function IsTabOpen( objname ) -{ - var obj = $( "#" + objname ); - var opened = obj.is( '.opened' ); - return opened != 0; -} - -function ShowHideEvent( objname ) -{ - var obj = $( "#" + objname ); - obj.slideToggle( 'fast' ).toggleClass( 'opened' ); - var opened = obj.is( '.opened' ); - localStorage["sh" + objname] = opened?1:0; - return opened!=0; -} - - -function IssueCustomCommand() -{ - QueueOperation( $("#custom_command").val(), function( req,data) { $("#custom_command_response").val( data ); } ); -} - - - -window.addEventListener("load", init, false); - - - - - - - -///////// Various functions that are not core appear down here. - -is_oscilloscope_running = false; -pause_oscilloscope = false; - -function KickOscilloscope() -{ - $( "#OScopePauseButton" ).css( "background-color", (is_oscilloscope_running&&pause_oscilloscope)?"green":"red" ); - if( !is_oscilloscope_running && !pause_oscilloscope) - OScopeDataTicker(); -} - -function ToggleOScopePause() -{ - pause_oscilloscope = !pause_oscilloscope; - KickOscilloscope(); -} - -function GotOScope(req,data) -{ - var canvas = document.getElementById('OScopeCanvas'); - var ctx = canvas.getContext('2d'); - var h = canvas.height; - var w = canvas.width; - if( ctx.canvas.width != canvas.clientWidth ) ctx.canvas.width = canvas.clientWidth; - if( ctx.canvas.height != canvas.clientHeight ) ctx.canvas.height = canvas.clientHeight; - - $( "#OScopePauseButton" ).css( "background-color", "green" ); - - var secs = data.split( ":" ); - - var samps = Number( secs[1] ); - var data = secs[2]; - var lastsamp = parseInt( data.substr(0,2),16 ); - ctx.clearRect( 0, 0, canvas.width, canvas.height ); - ctx.beginPath(); - for( var i = 0; i < samps; i++ ) - { - var x2 = (i+1) * canvas.clientWidth / samps; - var samp = parseInt( data.substr(i*2+2,2),16 ); - var y2 = ( 1.-samp / 255 ) * canvas.clientHeight; - - if( i == 0 ) - { - var x1 = i * canvas.clientWidth / samps; - var y1 = ( 1.-lastsamp / 255 ) * canvas.clientHeight; - ctx.moveTo( x1, y1 ); - } - - ctx.lineTo( x2, y2 ); - - lastsamp = samp; - } - ctx.stroke(); - - var samp = parseInt( data.substr(i*2,2),16 ); - - OScopeDataTicker(); -} - -function OScopeDataTicker() -{ - if( IsTabOpen('OScope') && !pause_oscilloscope ) - { - is_oscilloscope_running = true; - QueueOperation( "CM", GotOScope ); - } - else - { - is_oscilloscope_running = 0; - } - $( "#OScopePauseButton" ).css( "background-color", (is_oscilloscope_running&&!pause_oscilloscope)?"green":"red" ); -} - - - - - - - - - -is_dft_running = false; - -function KickDFT() -{ - if( !is_dft_running ) - DFTDataTicker(); - -} - -function GotDFT(req,data) -{ - var canvas = document.getElementById('DFTCanvas'); - var ctx = canvas.getContext('2d'); - var h = canvas.height; - var w = canvas.width; - if( ctx.canvas.width != canvas.clientWidth ) ctx.canvas.width = canvas.clientWidth; - if( ctx.canvas.height != canvas.clientHeight ) ctx.canvas.height = canvas.clientHeight; - - var secs = data.split( ":" ); - - var samps = Number( secs[1] ); - var data = secs[2]; - var lastsamp = parseInt( data.substr(0,4),16 ); - ctx.clearRect( 0, 0, canvas.width, canvas.height ); - ctx.beginPath(); - for( var i = 0; i < samps; i++ ) - { - var x2 = (i+1) * canvas.clientWidth / samps; - var samp = parseInt( data.substr(i*4+4,4),16 ); - var y2 = ( 1.-samp / 2047 ) * canvas.clientHeight; - - if( i == 0 ) - { - var x1 = i * canvas.clientWidth / samps; - var y1 = ( 1.-lastsamp / 2047 ) * canvas.clientHeight; - ctx.moveTo( x1, y1 ); - } - - ctx.lineTo( x2, y2 ); - - lastsamp = samp; - } - ctx.stroke(); - - var samp = parseInt( data.substr(i*2,2),16 ); - - DFTDataTicker(); -} - -function DFTDataTicker() -{ - if( IsTabOpen('DFT') ) - { - is_dft_running = true; - QueueOperation( "CB", GotDFT ); - } - else - { - is_dft_running = 0; - } -} - - - - - - - - - - - - - - -did_wifi_get_config = false; -is_data_ticker_running = false; - -function KickWifiTicker() -{ - if( !is_data_ticker_running ) - WifiDataTicker(); -} - -function WifiDataTicker() -{ - if( IsTabOpen('WifiSettings') ) - { - is_data_ticker_running = true; - - if( !did_wifi_get_config ) - { - QueueOperation( "WI", function(req,data) - { - var params = data.split( "\t" ); - - document.wifisection.wifitype.value = Number( params[0].substr(2) ); - document.wifisection.wificurname.value = params[1]; - document.wifisection.wificurpassword.value = params[2]; - document.wifisection.wificurenctype.value = params[3]; - document.wifisection.wificurchannel.value = Number( params[4] ); - - did_wifi_get_config = true; - } ); - } - - - QueueOperation( "WR", function(req,data) { - var lines = data.split( "\n" ); - var innerhtml; - if( lines.length < 3 ) - { - innerhtml = "No APs found. Did you scan?"; - } - else - { - innerhtml = "" - for( i = 1; i < lines.length-1; i++ ) - { - var dats = lines[i].split( "\t" ); - innerhtml += ""; - } - } - innerhtml += "
SSIDMACRSChEnc
" + dats[0] + "" + dats[1] + "" + dats[2] + "" + dats[3] + "" + dats[4] + "
"; - document.getElementById("WifiStations").innerHTML = innerhtml; - } ); - setTimeout( WifiDataTicker, 500 ); - } - else - { - is_data_ticker_running = 0; - } -} - -function ChangeWifiConfig() -{ - - var st = "W"; - st += document.wifisection.wifitype.value; - st += ":" + document.wifisection.wificurname.value; - st += ":" + document.wifisection.wificurpassword.value; - QueueOperation( st ); - did_wifi_get_config = false; -} - - - - -function TwiddleGPIO( gp ) -{ - var st = "GF"; - st += gp; - QueueOperation( st ); -} - -function GPIOInput( gp ) -{ - var st = "GI"; - st += gp; - QueueOperation( st ); -} - -function GPIOUpdate(req,data) { - var secs = data.split( ":" ); - var op = 0; - var n = Number(secs[2]); - var m = Number(secs[1]); - - for( op = 0; op < 16; op++ ) - { - var b = $( "#ButtonGPIO" + op ); - if( b ) - { - if( 1< - -Hello! This is a test page.
+ + +ColorChord Control Panel + + + + + + +

ColorChord: Embedded

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ +
+
+

Welcome to the ColorChord: Embedded ESP8266 Web-based GUI.

+

This GUI uses WebSockets, and has only been tested under the newest (as of August, 2015) Chrome and Firefox browsers.

+

For more information about ColorChord, visit it on github, here: https://github.com/cnlohr/colorchord

+
+ +
+
+Current Configuration: (May deviate from default configuration, reset here if in doubt)
+ + + + + + + +
Type:Station (Connect to infrastructure)
AP (Broadcast a new AP)
SSID:
PASS:
MAC: (Ignored in softAP mode)
Chan: (Ignored in Station mode)
(Automatically saves to flash)
+Scanned Stations: +
+ +
+ +
+
+Command: +
+ +
+ +
+ + + + + + + + + + + + +
012345...12131415
+ +
+
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+
+ +
+
+ +
+
+ + + + - - - diff --git a/embedded8266/web/page/jquery-2.1.4.min.js.gz b/embedded8266/web/page/jquery-2.1.4.min.js.gz index 23f28ab9460800c357bed33c33706161c222fb0f..b9125eb3b5fcff751b0b171d9d3c2d2b7cf00e9d 100644 GIT binary patch delta 18 acmX^7l=1LWMt1pb4u*MJM>ewWDFOgWQ3rki delta 18 acmX^7l=1LWMt1pb4u)9_J2$fLDFOgV0tZC^ diff --git a/embedded8266/web/page/main.js b/embedded8266/web/page/main.js new file mode 100644 index 0000000..c6e4619 --- /dev/null +++ b/embedded8266/web/page/main.js @@ -0,0 +1,884 @@ +var wsUri = "ws://" + location.host + "/d/ws/issue"; +var output; +var websocket; +var commsup = 0; +globalParams = {}; + +//Push objects that have: +// .request +// .callback = function( ref (this object), data ); + +var workqueue = []; +var wifilines = []; +var workarray = {}; +var lastitem; + +function QueueOperation( command, callback ) +{ + if( workarray[command] == 1 ) + { + return; + } + + workarray[command] = 1; + var vp = new Object(); + vp.callback = callback; + vp.request = command; + workqueue.push( vp ); +} + + +function init() +{ + $( ".collapsible" ).each(function( index ) { + if( localStorage["sh" + this.id] > 0.5 ) + { + $( this ).show().toggleClass( 'opened' ); +// console.log( "OPEN: " + this.id ); + } + }); + + $("#custom_command_response").val( "" ); + + + output = document.getElementById("output"); + Ticker(); + + KickWifiTicker(); + GPIODataTickerStart(); + KickOscilloscope(); + KickDFT(); + KickNotes(); + KickLEDs(); +} + +function StartWebSocket() +{ + output.innerHTML = "Connecting..."; + if( websocket ) websocket.close(); + workarray = {}; + workqueue = []; + lastitem = null; + websocket = new WebSocket(wsUri); + websocket.onopen = function(evt) { onOpen(evt) }; + websocket.onclose = function(evt) { onClose(evt) }; + websocket.onmessage = function(evt) { onMessage(evt) }; + websocket.onerror = function(evt) { onError(evt) }; +} + +function onOpen(evt) +{ + doSend('e' ); +} + +function onClose(evt) +{ + $('#SystemStatusClicker').css("color", "red" ); + commsup = 0; +} + +var msg = 0; +var tickmessage = 0; +var lasthz = 0; + +function Ticker() +{ + setTimeout( Ticker, 1000 ); + + lasthz = (msg - tickmessage); + tickmessage = msg; + if( lasthz == 0 ) + { + $('#SystemStatusClicker').css("color", "red" ); + $('#SystemStatusClicker').prop( "value", "System Offline" ); + commsup = 0; + StartWebSocket(); + } + else + { + $('#SystemStatusClicker').prop( "value", "System " + lasthz + "Hz" ); + } + + + QueueOperation( "CVR", ReceiveParameters ); +} + + +function onMessage(evt) +{ + msg++; + + + if( commsup != 1 ) + { + commsup = 1; + $('#SystemStatusClicker').css("color", "green" ); + } + + + if( lastitem ) + { + if( lastitem.callback ) + { + lastitem.callback( lastitem, evt.data ); + lastitem = null; + } + } + else + { + output.innerHTML = "

Messages: " + msg + "

RSSI: " + evt.data.substr(2) + "

"; + } + + + if( workqueue.length ) + { + var elem = workqueue.shift(); + delete workarray[elem.request]; + + if( elem.request ) + { + doSend( elem.request ); + lastitem = elem; + return; + } + } + + doSend('wx'); //Request RSSI. +} + +function onError(evt) +{ + $('#SystemStatusClicker').css("color", "red" ); + commsup = 0; +} + +function doSend(message) +{ + websocket.send(message); +} + +function IsTabOpen( objname ) +{ + var obj = $( "#" + objname ); + var opened = obj.is( '.opened' ); + return opened != 0; +} + +function ShowHideEvent( objname ) +{ + var obj = $( "#" + objname ); + obj.slideToggle( 'fast' ).toggleClass( 'opened' ); + var opened = obj.is( '.opened' ); + localStorage["sh" + objname] = opened?1:0; + return opened!=0; +} + + +function IssueCustomCommand() +{ + QueueOperation( $("#custom_command").val(), function( req,data) { $("#custom_command_response").val( data ); } ); +} + + + +window.addEventListener("load", init, false); + + + + + + + +///////// Various functions that are not core appear down here. + + + + + + + + + + + +function ChangeParam( p ) +{ + var num = Number( p.value ); + var elem = p.id.substr( 5 ); + QueueOperation( "CVW:" + elem + ":" + num ); +} + + +var hasCreateParams = false; +function ReceiveParameters(req,data) { + var elems = data.split( ":" ); + + for( var v = 0; v < elems.length; v++ ) + { + var pair = elems[v].split( "=" ); + if( pair.length == 2 ) + { + globalParams[pair[0]] = Number( pair[1] ); + } + } + + if( !hasCreateParams ) + { + hasCreateParams = true; + var htv = ""; + + for( var v in globalParams ) + { + var vp = globalParams[v]; + htv += ""; + } + + $("#InnerParameters").html( htv + "
ValueParameter
" + v + "
" ); + + for( var v in globalParams ) + { + if( v.substr(0,1) == 'r' ) + { + $("#param" + v).prop( "disabled", true ); + } + } + + } + + for( var v in globalParams ) + { + var vp = globalParams[v]; + var p = $("#param"+v); + if( !p.is(":focus" ) ) + p.val(vp); + } + +} + + + + + + + + + +is_oscilloscope_running = false; +pause_oscilloscope = false; + +function KickOscilloscope() +{ + $( "#OScopePauseButton" ).css( "background-color", (is_oscilloscope_running&&pause_oscilloscope)?"green":"red" ); + if( !is_oscilloscope_running && !pause_oscilloscope) + OScopeDataTicker(); +} + +function ToggleOScopePause() +{ + pause_oscilloscope = !pause_oscilloscope; + KickOscilloscope(); +} + +function GotOScope(req,data) +{ + var canvas = document.getElementById('OScopeCanvas'); + var ctx = canvas.getContext('2d'); + var h = canvas.height; + var w = canvas.width; + if( ctx.canvas.width != canvas.clientWidth ) ctx.canvas.width = canvas.clientWidth; + if( ctx.canvas.height != canvas.clientHeight ) ctx.canvas.height = canvas.clientHeight; + + $( "#OScopePauseButton" ).css( "background-color", "green" ); + + var secs = data.split( ":" ); + + var samps = Number( secs[1] ); + var data = secs[2]; + var lastsamp = parseInt( data.substr(0,2),16 ); + ctx.clearRect( 0, 0, canvas.width, canvas.height ); + ctx.beginPath(); + for( var i = 0; i < samps; i++ ) + { + var x2 = (i+1) * canvas.clientWidth / samps; + var samp = parseInt( data.substr(i*2+2,2),16 ); + var y2 = ( 1.-samp / 255 ) * canvas.clientHeight; + + if( i == 0 ) + { + var x1 = i * canvas.clientWidth / samps; + var y1 = ( 1.-lastsamp / 255 ) * canvas.clientHeight; + ctx.moveTo( x1, y1 ); + } + + ctx.lineTo( x2, y2 ); + + lastsamp = samp; + } + ctx.stroke(); + + var samp = parseInt( data.substr(i*2,2),16 ); + + OScopeDataTicker(); +} + +function OScopeDataTicker() +{ + if( IsTabOpen('OScope') && !pause_oscilloscope ) + { + is_oscilloscope_running = true; + QueueOperation( "CM", GotOScope ); + } + else + { + is_oscilloscope_running = 0; + } + $( "#OScopePauseButton" ).css( "background-color", (is_oscilloscope_running&&!pause_oscilloscope)?"green":"red" ); +} + + + + + + + + + +is_dft_running = false; +pause_dft = false; + +function KickDFT() +{ + $( "#DFTPauseButton" ).css( "background-color", (is_dft_running&&!pause_dft)?"green":"red" ); + if( !is_dft_running && !pause_dft ) + DFTDataTicker(); +} + + + +function ToggleDFTPause() +{ + pause_dft = !pause_dft; + KickDFT(); +} + +function GotDFT(req,data) +{ + var canvas = document.getElementById('DFTCanvas'); + var ctx = canvas.getContext('2d'); + var h = canvas.height; + var w = canvas.width; + if( ctx.canvas.width != canvas.clientWidth ) ctx.canvas.width = canvas.clientWidth; + if( ctx.canvas.height != canvas.clientHeight ) ctx.canvas.height = canvas.clientHeight; + + var secs = data.split( ":" ); + + $( "#DFTPauseButton" ).css( "background-color", "green" ); + + var samps = Number( secs[1] ); + var data = secs[2]; + var lastsamp = parseInt( data.substr(0,4),16 ); + ctx.clearRect( 0, 0, canvas.width, canvas.height ); + ctx.beginPath(); + + for( var i = 0; i < samps; i++ ) + { + var x2 = i * canvas.clientWidth / samps; + var samp = parseInt( data.substr(i*4,4),16 ); + var y2 = ( 1.-samp / 2047 ) * canvas.clientHeight; + + ctx.fillStyle = CCColor( i % globalParams["rFIXBPERO"] ); + ctx.fillRect( x2, y2, canvas.clientWidth / samps, canvas.clientHeight-y2 ); + + ctx.strokeStyle = "#000000"; + ctx.strokeRect( x2, y2, canvas.clientWidth / samps, canvas.clientHeight-y2 ); + } + ctx.stroke(); + + var samp = parseInt( data.substr(i*2,2),16 ); + + DFTDataTicker(); +} + +function DFTDataTicker() +{ + if( IsTabOpen('DFT') && !pause_dft ) + { + is_dft_running = true; + QueueOperation( "CB" + $("#WhichCanvas").val(), GotDFT ); + } + else + { + is_dft_running = 0; + } + $( "#DFTPauseButton" ).css( "background-color", (is_dft_running&&!pause_dft)?"green":"red" ); +} + + + + + + + +is_leds_running = false; +pause_led = false; + +function KickLEDs() +{ + $( "#LEDPauseButton" ).css( "background-color", (is_leds_running&&!pause_led)?"green":"red" ); + + if( !is_leds_running && !pause_led ) + LEDDataTicker(); + +} + +function ToggleLEDPause() +{ + pause_led = !pause_led; + KickLEDs(); +} + + +function GotLED(req,data) +{ + var ls = document.getElementById('LEDCanvasHolder'); + var canvas = document.getElementById('LEDCanvas'); + var ctx = canvas.getContext('2d'); + var h = ls.height; + var w = ls.width; + if( canvas.width != ls.clientWidth-10 ) canvas.width = ls.clientWidth-10; + if( ctx.canvas.width != canvas.clientWidth ) ctx.canvas.width = canvas.clientWidth; + + var secs = data.split( ":" ); + + $( "#LEDPauseButton" ).css( "background-color", "green" ); + + var samps = Number( secs[1] ); + var data = secs[2]; + var lastsamp = parseInt( data.substr(0,4),16 ); + ctx.clearRect( 0, 0, canvas.width, canvas.height ); + + for( var i = 0; i < samps; i++ ) + { + var x2 = i * canvas.clientWidth / samps; + var samp = data.substr(i*6,6); + var y2 = ( 1.-samp / 2047 ) * canvas.clientHeight; + + ctx.fillStyle = "#" + samp.substr( 2, 2 ) + samp.substr( 0, 2 ) + samp.substr( 4, 2 ); + ctx.lineWidth = 0; + ctx.fillRect( x2, 0, canvas.clientWidth / samps+1, canvas.clientHeight ); + } + + var samp = parseInt( data.substr(i*2,2),16 ); + + LEDDataTicker(); +} + +function LEDDataTicker() +{ + if( IsTabOpen('LEDs') && !pause_led ) + { + is_leds_running = true; + QueueOperation( "CL", GotLED ); + } + else + { + is_leds_running = 0; + } + $( "#LEDPauseButton" ).css( "background-color", (is_leds_running&&!pause_led)?"green":"red" ); + +} + + + + + + + + + + +is_notes_running = false; +pause_notes = false; + +function KickNotes() +{ + $( "#NotesPauseButton" ).css( "background-color", (is_notes_running&&!pause_notes)?"green":"red" ); + + if( !is_notes_running && !pause_notes ) + NotesTicker(); +} + + + +function ToggleNotesPause() +{ + pause_notes = !pause_notes; + KickNotes(); +} + +function GotNotes(req,data) +{ + var canvas = document.getElementById('NotesCanvas'); + var ctx = canvas.getContext('2d'); + + var secs = data.split( ":" ); + + var elems = Number(secs[1] ); + + ctx.canvas.width = 400; + ctx.canvas.height = elems*25; + + + $( "#NotesPauseButton" ).css( "background-color", "green" ); + + var data = secs[2]; + ctx.fillStyle = "#000000"; + ctx.font = "18px serif" + ctx.fillRect( 0, 0, canvas.width, canvas.height ); + + for( var i = 0; i < elems; i++ ) + { + var peak = parseInt( data.substr(i*12+0,2),16 ); + var amped = parseInt( data.substr(i*12+2,4),16 ); + var amped2 = parseInt( data.substr(i*12+6,4),16 ); + var jump = parseInt( data.substr(i*12+10,2),16 ); + + if( peak == 255 ) + { + ctx.fillStyle = "#ffffff"; + ctx.fillText( jump, 10, i*25 + 20 ); + continue; + } + + ctx.fillStyle = CCColorDetail( peak ); + ctx.lineWidth = 0; + ctx.fillRect( 0, i*25, 100,25); + ctx.fillRect( 101, i*25, amped/200,25); + ctx.fillRect( 229, i*25, amped2/200,25); + + ctx.fillStyle = "#000000"; + ctx.fillText( peak, 10, i*25 + 20 ); + ctx.fillStyle = "#ffffff"; + ctx.fillText( amped, 121, i*25 + 20 ); + ctx.fillText( amped2, 240, i*25 + 20 ); + } + + var samp = parseInt( data.substr(i*2,2),16 ); + + NotesTicker(); +} + +function NotesTicker() +{ + if( IsTabOpen('Notes')&& !pause_notes ) + { + is_notes_running = true; + QueueOperation( "CN", GotNotes ); + } + else + { + is_notes_running = 0; + } + $( "#NotesPauseButton" ).css( "background-color", (is_notes_running&&!pause_notes)?"green":"red" ); +} + + + + + + +did_wifi_get_config = false; +is_data_ticker_running = false; + +function KickWifiTicker() +{ + if( !is_data_ticker_running ) + WifiDataTicker(); +} + +function BSSIDClick( i ) +{ + var tlines = wifilines[i]; + document.wifisection.wifitype.value = 1; + document.wifisection.wificurname.value = tlines[0].substr(1); + document.wifisection.wificurpassword.value = ""; + document.wifisection.wifimac.value = tlines[1]; + document.wifisection.wificurchannel.value = 0; + + return false; +} + +function WifiDataTicker() +{ + if( IsTabOpen('WifiSettings') ) + { + is_data_ticker_running = true; + + if( !did_wifi_get_config ) + { + QueueOperation( "WI", function(req,data) + { + var params = data.split( "\t" ); + + document.wifisection.wifitype.value = Number( params[0].substr(2) ); + document.wifisection.wificurname.value = params[1]; + document.wifisection.wificurpassword.value = params[2]; + document.wifisection.wifimac.value = params[3]; + document.wifisection.wificurchannel.value = Number( params[4] ); + + did_wifi_get_config = true; + } ); + } + + QueueOperation( "WR", function(req,data) { + var lines = data.split( "\n" ); + var innerhtml; + if( lines.length < 3 ) + { + innerhtml = "No APs found. Did you scan?"; + } + else + { + innerhtml = "" + wifilines = []; + for( i = 1; i < lines.length-1; i++ ) + { + tlines = lines[i].split( "\t" ); + wifilines.push(tlines); + var bssidval = "" + tlines[1]; + innerhtml += ""; + } + } + innerhtml += "
SSIDMACRSChEnc
" + tlines[0].substr(1) + "" + bssidval + "" + tlines[2] + "" + tlines[3] + "" + tlines[4] + "
"; + document.getElementById("WifiStations").innerHTML = innerhtml; + } ); + setTimeout( WifiDataTicker, 500 ); + } + else + { + is_data_ticker_running = 0; + } +} + +function ChangeWifiConfig() +{ + + var st = "W"; + st += document.wifisection.wifitype.value; + st += "\t" + document.wifisection.wificurname.value; + st += "\t" + document.wifisection.wificurpassword.value; + st += "\t" + document.wifisection.wifimac.value; + st += "\t" + document.wifisection.wificurchannel.value; + QueueOperation( st ); + did_wifi_get_config = false; +} + + + + +function TwiddleGPIO( gp ) +{ + var st = "GF"; + st += gp; + QueueOperation( st ); +} + +function GPIOInput( gp ) +{ + var st = "GI"; + st += gp; + QueueOperation( st ); +} + +function GPIOUpdate(req,data) { + var secs = data.split( ":" ); + var op = 0; + var n = Number(secs[2]); + var m = Number(secs[1]); + + for( op = 0; op < 16; op++ ) + { + var b = $( "#ButtonGPIO" + op ); + if( b ) + { + if( 1<> 1; + } + else if( renote < (third<<1) ) + { + //Red to Blue + hue = (third-renote); + } + else + { + //hue = ((((65535-renote)>>8) * (uint32_t)(third>>8)) >> 1) + (third<<1); + hue = (((65536-renote)<<16) / (third<<1)) + (third>>1); // ((((65535-renote)>>8) * (uint32_t)(third>>8)) >> 1) + (third<<1); + } + hue >>= 8; + + return EHSVtoHEX( hue, sat, val ); +} + +function EHSVtoHEX( hue, sat, val ) //0..255 for all +{ + var SIXTH1 = 43; + var SIXTH2 = 85; + var SIXTH3 = 128; + var SIXTH4 = 171; + var SIXTH5 = 213; + + var or = 0, og = 0, ob = 0; + + hue -= SIXTH1; //Off by 60 degrees. + + hue = (hue+256)%256; + //TODO: There are colors that overlap here, consider + //tweaking this to make the best use of the colorspace. + + if( hue < SIXTH1 ) //Ok: Yellow->Red. + { + or = 255; + og = 255 - (hue * 255) / (SIXTH1); + } + else if( hue < SIXTH2 ) //Ok: Red->Purple + { + or = 255; + ob = hue*255 / SIXTH1 - 255; + } + else if( hue < SIXTH3 ) //Ok: Purple->Blue + { + ob = 255; + or = ((SIXTH3-hue) * 255) / (SIXTH1); + } + else if( hue < SIXTH4 ) //Ok: Blue->Cyan + { + ob = 255; + og = (hue - SIXTH3)*255 / SIXTH1; + } + else if( hue < SIXTH5 ) //Ok: Cyan->Green. + { + og = 255; + ob = ((SIXTH5-hue)*255) / SIXTH1; + } + else //Green->Yellow + { + og = 255; + or = (hue - SIXTH5) * 255 / SIXTH1; + } + + var rv = val; + if( rv > 128 ) rv++; + var rs = sat; + if( rs > 128 ) rs++; + + //or, og, ob range from 0...255 now. + //Need to apply saturation and value. + + or = (or * val)>>8; + og = (og * val)>>8; + ob = (ob * val)>>8; + + //OR..OB == 0..65025 + or = or * rs + 255 * (256-rs); + og = og * rs + 255 * (256-rs); + ob = ob * rs + 255 * (256-rs); +//printf( "__%d %d %d =-> %d\n", or, og, ob, rs ); + + or >>= 8; + og >>= 8; + ob >>= 8; + + if( or > 255 ) or = 255; + if( og > 255 ) og = 255; + if( ob > 255 ) ob = 255; + + return "#" + tohex8(og) + tohex8(or) + tohex8(ob); +} + +function tohex8( c ) +{ + var hex = c.toString(16); + return hex.length == 1 ? "0" + hex : hex; +} diff --git a/embedded8266/web/page/test.txt b/embedded8266/web/page/test.txt deleted file mode 100644 index 9daeafb..0000000 --- a/embedded8266/web/page/test.txt +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/embedded8266/web/page/wstest.html b/embedded8266/web/page/wstest.html deleted file mode 100644 index cbc343c..0000000 --- a/embedded8266/web/page/wstest.html +++ /dev/null @@ -1,10 +0,0 @@ - - -WebSocket Test - - - -

WebSocket Test

-
- - diff --git a/embedded8266/web/page/wstest.js b/embedded8266/web/page/wstest.js deleted file mode 100644 index 661ed2c..0000000 --- a/embedded8266/web/page/wstest.js +++ /dev/null @@ -1,86 +0,0 @@ -var wsUri = "ws://" + location.host + "/d/ws/echo"; - -var output; - -function init() -{ - output = document.getElementById("output"); - console.log( wsUri ); - testWebSocket(); -} - -function testWebSocket() -{ - websocket = new WebSocket(wsUri); - websocket.onopen = function(evt) { onOpen(evt) }; - websocket.onclose = function(evt) { onClose(evt) }; - websocket.onmessage = function(evt) { onMessage(evt) }; - websocket.onerror = function(evt) { onError(evt) }; -} - -function repeatsend() -{ - doSend('Hello!' ); - setTimeout( repeatsend, 1000 ); -} - -function onOpen(evt) -{ - writeToScreen("CONNECTED"); - doSend('Hello.' ); - //repeatsend(); - // doSend('{"args": ["entity", 1000], "kwargs": {}, "op": "ClientUpdater__requestUpdates", "seq": 1, "context": ["ClientUpdater", 0]}'); -} - -function onClose(evt) -{ - writeToScreen("DISCONNECTED"); -} - -var msg = 0; -var tickmessage = 0; -var lasthz = 0; - -function Ticker() -{ - lasthz = msg - tickmessage; - tickmessage = msg; - setTimeout( Ticker, 1000 ); -} - -function onMessage(evt) -{ -// eval( evt.data ); - - output.innerHTML = msg++ + " " + lasthz; - doSend('x' ); - - // obj = JSON.parse(evt.data); - // console.log( obj ); - // writeToScreen('RESPONSE: ' + evt.data+''); - // websocket.close(); -} - -function onError(evt) -{ - writeToScreen('ERROR: ' + evt.data); -} - -function doSend(message) -{ - writeToScreen("SENT: " + message); - websocket.send(message); -} - -function writeToScreen(message) -{ - var pre = document.createElement("p"); - pre.style.wordWrap = "break-word"; - pre.innerHTML = message; - output.appendChild(pre); -} - -window.addEventListener("load", init, false); - -Ticker(); - diff --git a/embedded8266/web/pushtodev.c b/embedded8266/web/pushtodev.c index 615db44..6373b1b 100644 --- a/embedded8266/web/pushtodev.c +++ b/embedded8266/web/pushtodev.c @@ -84,7 +84,7 @@ int main(int argc, char**argv) servaddr.sin_port=htons(7878); int devo = 0; - int lastsector = -1; + int lastsector_block = -1; int resend_times = 0; int r; while( !feof( f ) ) @@ -96,9 +96,10 @@ int main(int argc, char**argv) int reads = fread( buffer, 1, 1024, f ); int sendplace = offset + devo; int sendsize = reads; - int sector = sendplace / sector_SIZE; - if( sector != lastsector ) +#ifdef SECTOR + int sector = sendplace / sector_SIZE; + if( sector != lastsector_block ) { char se[64]; int sel = sprintf( se, "FE%d\r\n", sector ); @@ -120,9 +121,36 @@ int main(int argc, char**argv) exit( -6 ); } - lastsector = sector; + lastsector_block = sector; } +#else //block + int block = sendplace / 65536; + if( block != lastsector_block ) + { + char se[64]; + int sel = sprintf( se, "FB%d\r\n", block ); + + thissuccess = 0; + for( tries = 0; tries < 10; tries++ ) + { + char match[75]; + printf( "Erase: %d\n", block ); + sendto( sockfd, se, sel, MSG_NOSIGNAL, (struct sockaddr *)&servaddr,sizeof(servaddr)); + sprintf( match, "FB%d", block ); + + if( PushMatch(match) == 0 ) { thissuccess = 1; break; } + printf( "Retry.\n" ); + } + if( !thissuccess ) + { + fprintf( stderr, "Error: Timeout in communications.\n" ); + exit( -6 ); + } + + lastsector_block = block; + } +#endif resend_times = 0; resend: r = sprintf( bufferout, "FW%d:%d:", sendplace, sendsize );