From 893c600350224852554f48e1a53e489dcdac1857 Mon Sep 17 00:00:00 2001 From: wayne Date: Thu, 1 Nov 2012 20:34:51 +0000 Subject: [PATCH] Merge trunk -> dgg --- branches/dgg/Source/config_n8_2312.asm | 10 +- branches/dgg/Source/n8chars.inc | 259 +++++++++++++++++++++ branches/dgg/Source/n8v.asm | 300 ++++++++++++++++++++++++- branches/dgg/XSource/bin/CPMCP | Bin 51344 -> 51440 bytes 4 files changed, 560 insertions(+), 9 deletions(-) create mode 100644 branches/dgg/Source/n8chars.inc diff --git a/branches/dgg/Source/config_n8_2312.asm b/branches/dgg/Source/config_n8_2312.asm index 0380d2ca..b18e6b2d 100644 --- a/branches/dgg/Source/config_n8_2312.asm +++ b/branches/dgg/Source/config_n8_2312.asm @@ -5,7 +5,7 @@ ; ; BUILD CONFIGURATION OPTIONS ; -CPUFREQ .EQU 20 ; IN MHZ, USED TO COMPUTE DELAY FACTORS +CPUFREQ .EQU 18 ; IN MHZ, USED TO COMPUTE DELAY FACTORS ; PLATFORM .EQU PLT_N8 ; PLT_N8VEM, PLT_ZETA, PLT_N8 ; @@ -17,7 +17,7 @@ DEFEMU .EQU EMUTYP_TTY ; DEFAULT EMULATION TYPE (EMUTYP_TTY, EMUTYP_ANSI, ...) RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! CLRRAMDISK .EQU CLR_AUTO ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA) ; -DSKMAP .EQU DM_RAM ; DM_ROM, DM_RAM, DM_FD, DM_IDE, DM_PPIDE, DM_SD, DM_PRPSD, DM_PPPSD +DSKMAP .EQU DM_PPIDE ; DM_ROM, DM_RAM, DM_FD, DM_IDE, DM_PPIDE, DM_SD, DM_PRPSD, DM_PPPSD ; DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) ; @@ -48,14 +48,14 @@ IDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE IDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!) IDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; -PPIDEENABLE .EQU FALSE ; TRUE FOR PPIDE SUPPORT (DO NOT COMBINE WITH DSKYENABLE) +PPIDEENABLE .EQU TRUE ; TRUE FOR PPIDE SUPPORT (DO NOT COMBINE WITH DSKYENABLE) PPIDEMODE .EQU PPIDEMODE_STD ; PPIDEMODE_STD, PPIDEMODE_DIO3 PPIDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPIDEENABLE = TRUE) PPIDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!) -PPIDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +PPIDECAPACITY .EQU 232*9 ; CAPACITY OF DEVICE (IN MB) PPIDESLOW .EQU FALSE ; ADD DELAYS TO HELP PROBLEMATIC HARDWARE (TRY THIS IF PPIDE IS UNRELIABLE) ; -SDENABLE .EQU TRUE ; TRUE FOR SD SUPPORT +SDENABLE .EQU FALSE ; TRUE FOR SD SUPPORT SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) SDCSIO .EQU TRUE ; TRUE IF USING THE CSIO PORT (N8 ONLY) diff --git a/branches/dgg/Source/n8chars.inc b/branches/dgg/Source/n8chars.inc new file mode 100644 index 00000000..b0dbd81c --- /dev/null +++ b/branches/dgg/Source/n8chars.inc @@ -0,0 +1,259 @@ +; n8chars.inc - automatically generated by n8vidtst + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x00(0) + .DB 030h,030h,030h,03ch,03ch,000h,000h,000h ; 0x01(1) + .DB 030h,030h,030h,0f0h,0f0h,000h,000h,000h ; 0x02(2) + .DB 000h,000h,000h,03ch,03ch,030h,030h,030h ; 0x03(3) + .DB 000h,000h,000h,0f0h,0f0h,030h,030h,030h ; 0x04(4) + .DB 030h,030h,030h,030h,030h,030h,030h,030h ; 0x05(5) + .DB 000h,000h,000h,0ffh,0ffh,000h,000h,000h ; 0x06(6) + .DB 000h,000h,020h,070h,0f8h,070h,020h,000h ; 0x07(7) + .DB 000h,0f8h,0d8h,088h,000h,088h,0d8h,0f8h ; 0x08(8) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x09(9) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x0a(10) + .DB 000h,000h,060h,090h,060h,020h,018h,018h ; 0x0b(11) + .DB 000h,000h,020h,070h,020h,020h,050h,020h ; 0x0c(12) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x0d(13) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x0e(14) + .DB 000h,0a8h,050h,050h,0d8h,050h,050h,0a8h ; 0x0f(15) + .DB 030h,030h,030h,0fch,0fch,030h,030h,030h ; 0x10(16) + .DB 000h,010h,030h,070h,0f0h,070h,030h,010h ; 0x11(17) + .DB 000h,020h,070h,020h,020h,020h,070h,020h ; 0x12(18) + .DB 000h,000h,050h,000h,050h,050h,050h,050h ; 0x13(19) + .DB 000h,000h,028h,028h,068h,0a8h,0a8h,078h ; 0x14(20) + .DB 000h,000h,000h,0fch,0fch,030h,030h,030h ; 0x15(21) + .DB 030h,030h,030h,0fch,0fch,000h,000h,000h ; 0x16(22) + .DB 030h,030h,030h,0f0h,0f0h,030h,030h,030h ; 0x17(23) + .DB 020h,020h,020h,020h,020h,020h,070h,020h ; 0x18(24) + .DB 030h,030h,030h,03ch,03ch,030h,030h,030h ; 0x19(25) + .DB 000h,000h,010h,018h,0fch,018h,010h,000h ; 0x1a(26) + .DB 000h,000h,020h,060h,0fch,060h,020h,000h ; 0x1b(27) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x1c(28) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x1d(29) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x1e(30) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x1f(31) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x20(32) + .DB 000h,000h,030h,000h,030h,078h,078h,030h ; 0x21(33) + .DB 000h,000h,000h,000h,000h,050h,0d8h,0d8h ; 0x22(34) + .DB 048h,048h,0fch,048h,048h,0fch,048h,048h ; 0x23(35) + .DB 000h,020h,0f8h,024h,078h,0a0h,078h,020h ; 0x24(36) + .DB 000h,000h,098h,058h,020h,0d0h,0c8h,000h ; 0x25(37) + .DB 000h,078h,090h,060h,050h,048h,048h,030h ; 0x26(38) + .DB 000h,000h,000h,000h,000h,040h,030h,030h ; 0x27(39) + .DB 000h,010h,020h,020h,020h,020h,020h,010h ; 0x28(40) + .DB 000h,020h,010h,010h,010h,010h,010h,020h ; 0x29(41) + .DB 000h,020h,0a8h,070h,0f8h,070h,0a8h,020h ; 0x2a(42) + .DB 000h,000h,020h,020h,0f8h,020h,020h,000h ; 0x2b(43) + .DB 040h,030h,030h,000h,000h,000h,000h,000h ; 0x2c(44) + .DB 000h,000h,000h,000h,070h,000h,000h,000h ; 0x2d(45) + .DB 000h,030h,030h,000h,000h,000h,000h,000h ; 0x2e(46) + .DB 000h,000h,080h,040h,020h,010h,008h,004h ; 0x2f(47) + .DB 000h,070h,0c8h,0a8h,0a8h,0a8h,098h,070h ; 0x30(48) + .DB 000h,0f8h,020h,020h,020h,020h,060h,020h ; 0x31(49) + .DB 000h,0f8h,080h,060h,010h,008h,088h,070h ; 0x32(50) + .DB 000h,070h,088h,008h,070h,008h,088h,070h ; 0x33(51) + .DB 000h,010h,010h,010h,0f8h,090h,050h,030h ; 0x34(52) + .DB 000h,070h,088h,008h,0f0h,080h,080h,0f8h ; 0x35(53) + .DB 000h,070h,088h,088h,0f0h,080h,040h,038h ; 0x36(54) + .DB 000h,020h,020h,020h,020h,010h,008h,0f8h ; 0x37(55) + .DB 000h,070h,088h,088h,070h,088h,088h,070h ; 0x38(56) + .DB 000h,070h,088h,008h,078h,088h,088h,070h ; 0x39(57) + .DB 000h,000h,030h,030h,000h,030h,030h,000h ; 0x3a(58) + .DB 000h,060h,030h,030h,000h,030h,030h,000h ; 0x3b(59) + .DB 000h,010h,020h,040h,080h,040h,020h,010h ; 0x3c(60) + .DB 000h,000h,000h,0fch,000h,0fch,000h,000h ; 0x3d(61) + .DB 000h,040h,020h,010h,008h,010h,020h,040h ; 0x3e(62) + .DB 000h,020h,000h,020h,030h,008h,088h,070h ; 0x3f(63) + .DB 000h,070h,080h,080h,0b0h,0b8h,088h,070h ; 0x40(64) + .DB 000h,088h,088h,088h,0f8h,088h,050h,020h ; 0x41(65) + .DB 000h,0f0h,048h,048h,070h,048h,048h,0f0h ; 0x42(66) + .DB 000h,070h,088h,080h,080h,080h,088h,070h ; 0x43(67) + .DB 000h,0f0h,048h,048h,048h,048h,048h,0f0h ; 0x44(68) + .DB 000h,0f8h,088h,080h,0e0h,080h,088h,0f8h ; 0x45(69) + .DB 000h,080h,080h,080h,0f0h,080h,088h,0f8h ; 0x46(70) + .DB 000h,070h,088h,088h,0b8h,080h,088h,070h ; 0x47(71) + .DB 000h,088h,088h,088h,0f8h,088h,088h,088h ; 0x48(72) + .DB 000h,0f8h,020h,020h,020h,020h,020h,0f8h ; 0x49(73) + .DB 000h,070h,088h,008h,008h,008h,008h,01ch ; 0x4a(74) + .DB 000h,088h,090h,0a0h,0c0h,0a0h,090h,088h ; 0x4b(75) + .DB 000h,0f8h,088h,080h,080h,080h,080h,080h ; 0x4c(76) + .DB 000h,088h,088h,088h,088h,0a8h,0d8h,088h ; 0x4d(77) + .DB 000h,088h,098h,0a8h,0a8h,0a8h,0c8h,088h ; 0x4e(78) + .DB 000h,070h,088h,088h,088h,088h,088h,070h ; 0x4f(79) + .DB 000h,080h,080h,080h,0f0h,088h,088h,0f0h ; 0x50(80) + .DB 004h,078h,098h,0a8h,088h,088h,088h,070h ; 0x51(81) + .DB 000h,088h,090h,0a0h,0f0h,088h,088h,0f0h ; 0x52(82) + .DB 000h,070h,088h,010h,020h,040h,088h,070h ; 0x53(83) + .DB 000h,020h,020h,020h,020h,020h,020h,0f8h ; 0x54(84) + .DB 000h,070h,088h,088h,088h,088h,088h,088h ; 0x55(85) + .DB 000h,020h,050h,050h,050h,088h,088h,088h ; 0x56(86) + .DB 000h,050h,0a8h,0a8h,0a8h,088h,088h,088h ; 0x57(87) + .DB 000h,088h,088h,050h,020h,050h,088h,088h ; 0x58(88) + .DB 000h,020h,020h,020h,020h,050h,088h,088h ; 0x59(89) + .DB 000h,0f8h,088h,040h,020h,010h,088h,0f8h ; 0x5a(90) + .DB 000h,078h,040h,040h,040h,040h,040h,078h ; 0x5b(91) + .DB 000h,000h,008h,010h,020h,040h,080h,000h ; 0x5c(92) + .DB 000h,078h,008h,008h,008h,008h,008h,078h ; 0x5d(93) + .DB 000h,000h,000h,000h,000h,088h,050h,020h ; 0x5e(94) + .DB 000h,0fch,000h,000h,000h,000h,000h,000h ; 0x5f(95) + .DB 000h,000h,000h,000h,000h,010h,060h,060h ; 0x60(96) + .DB 000h,070h,088h,078h,008h,0f0h,000h,000h ; 0x61(97) + .DB 000h,0f0h,088h,088h,0f0h,080h,080h,080h ; 0x62(98) + .DB 000h,070h,080h,080h,070h,000h,000h,000h ; 0x63(99) + .DB 000h,078h,088h,088h,078h,008h,008h,008h ; 0x64(100) + .DB 000h,070h,080h,0f8h,088h,070h,000h,000h ; 0x65(101) + .DB 000h,040h,040h,040h,0e0h,048h,030h,000h ; 0x66(102) + .DB 070h,008h,038h,048h,048h,038h,000h,000h ; 0x67(103) + .DB 000h,088h,088h,0c8h,0b0h,080h,080h,000h ; 0x68(104) + .DB 000h,070h,020h,060h,000h,020h,000h,000h ; 0x69(105) + .DB 030h,048h,008h,008h,018h,000h,008h,000h ; 0x6a(106) + .DB 000h,090h,0a0h,0c0h,0a0h,090h,080h,080h ; 0x6b(107) + .DB 000h,020h,020h,020h,020h,020h,020h,020h ; 0x6c(108) + .DB 000h,088h,0a8h,0a8h,050h,000h,000h,000h ; 0x6d(109) + .DB 000h,088h,088h,0c8h,0b0h,000h,000h,000h ; 0x6e(110) + .DB 000h,070h,088h,088h,070h,000h,000h,000h ; 0x6f(111) + .DB 040h,040h,070h,048h,048h,070h,000h,000h ; 0x70(112) + .DB 008h,008h,038h,048h,048h,038h,060h,000h ; 0x71(113) + .DB 000h,080h,080h,0c8h,0b0h,000h,000h,000h ; 0x72(114) + .DB 000h,060h,010h,060h,080h,060h,000h,000h ; 0x73(115) + .DB 000h,020h,040h,040h,0e0h,040h,000h,000h ; 0x74(116) + .DB 000h,068h,090h,090h,090h,000h,000h,000h ; 0x75(117) + .DB 000h,020h,050h,088h,088h,000h,000h,000h ; 0x76(118) + .DB 000h,050h,0a8h,0a8h,088h,000h,000h,000h ; 0x77(119) + .DB 000h,048h,030h,030h,048h,000h,000h,000h ; 0x78(120) + .DB 000h,080h,040h,020h,050h,088h,000h,000h ; 0x79(121) + .DB 000h,0f8h,040h,020h,010h,0f8h,000h,000h ; 0x7a(122) + .DB 000h,010h,020h,020h,040h,020h,020h,010h ; 0x7b(123) + .DB 000h,020h,020h,020h,000h,020h,020h,020h ; 0x7c(124) + .DB 000h,040h,020h,020h,010h,020h,020h,040h ; 0x7d(125) + .DB 000h,000h,000h,000h,000h,000h,090h,06ch ; 0x7e(126) + .DB 000h,070h,050h,050h,050h,050h,050h,070h ; 0x7f(127) + .DB 0a8h,0a8h,0a8h,0ach,0a0h,0bch,080h,0fch ; 0x80(128) + .DB 000h,000h,000h,0fch,000h,0fch,000h,0fch ; 0x81(129) + .DB 054h,054h,054h,0d4h,014h,0f4h,004h,0fch ; 0x82(130) + .DB 054h,054h,054h,054h,054h,054h,054h,054h ; 0x83(131) + .DB 0fch,004h,0f4h,014h,0d4h,054h,054h,054h ; 0x84(132) + .DB 0ffh,000h,0ffh,000h,0ffh,000h,000h,000h ; 0x85(133) + .DB 0fch,080h,0bch,0a0h,0ach,0a8h,0a8h,0a8h ; 0x86(134) + .DB 0a8h,0a8h,0a8h,0a8h,0a8h,0a8h,0a8h,0a8h ; 0x87(135) + .DB 0a8h,0a8h,0a8h,0ach,0a0h,0ach,0a8h,0a8h ; 0x88(136) + .DB 054h,054h,054h,0d4h,014h,0d4h,054h,054h ; 0x89(137) + .DB 000h,000h,000h,0fch,000h,0fch,000h,000h ; 0x8a(138) + .DB 080h,080h,080h,080h,080h,080h,080h,0fch ; 0x8b(139) + .DB 000h,000h,000h,000h,000h,000h,000h,0fch ; 0x8c(140) + .DB 004h,004h,004h,004h,004h,004h,004h,0fch ; 0x8d(141) + .DB 004h,004h,004h,004h,004h,004h,004h,004h ; 0x8e(142) + .DB 0fch,004h,004h,004h,004h,004h,004h,004h ; 0x8f(143) + .DB 0fch,000h,000h,000h,000h,000h,000h,000h ; 0x90(144) + .DB 0fch,080h,080h,080h,080h,080h,080h,080h ; 0x91(145) + .DB 080h,080h,080h,080h,080h,080h,080h,080h ; 0x92(146) + .DB 080h,080h,080h,080h,0fch,080h,080h,080h ; 0x93(147) + .DB 004h,004h,004h,004h,0fch,004h,004h,004h ; 0x94(148) + .DB 000h,000h,000h,000h,0fch,000h,000h,000h ; 0x95(149) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x96(150) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x97(151) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x98(152) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x99(153) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9a(154) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9b(155) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9c(156) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9d(157) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9e(158) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9f(159) + .DB 000h,070h,088h,078h,008h,0f0h,040h,020h ; 0xa0(160) + .DB 000h,0f8h,020h,020h,060h,000h,020h,010h ; 0xa1(161) + .DB 000h,070h,088h,088h,070h,000h,020h,010h ; 0xa2(162) + .DB 000h,074h,088h,088h,088h,000h,020h,010h ; 0xa3(163) + .DB 000h,088h,088h,0c8h,0b0h,000h,020h,010h ; 0xa4(164) + .DB 000h,088h,098h,0a8h,0c8h,000h,020h,010h ; 0xa5(165) + .DB 000h,000h,0fch,000h,07ch,088h,088h,070h ; 0xa6(166) + .DB 000h,000h,0fch,000h,070h,088h,088h,070h ; 0xa7(167) + .DB 000h,070h,088h,040h,020h,020h,000h,020h ; 0xa8(168) + .DB 080h,080h,080h,0fch,000h,000h,000h,000h ; 0xa9(169) + .DB 004h,004h,004h,0fch,000h,000h,000h,000h ; 0xaa(170) + .DB 000h,000h,01ch,088h,054h,0a8h,090h,088h ; 0xab(171) + .DB 000h,000h,008h,0b8h,058h,0a8h,090h,088h ; 0xac(172) + .DB 000h,000h,030h,078h,078h,030h,000h,030h ; 0xad(173) + .DB 000h,014h,028h,050h,0a0h,050h,028h,014h ; 0xae(174) + .DB 000h,0a0h,050h,028h,014h,028h,050h,0a0h ; 0xaf(175) + .DB 0aah,054h,0aah,054h,0aah,054h,0aah,054h ; 0xb0(176) + .DB 054h,0aah,054h,0aah,054h,0aah,054h,0aah ; 0xb1(177) + .DB 06ch,0b6h,0dah,06ch,0b6h,0dah,06ch,0b6h ; 0xb2(178) + .DB 018h,018h,018h,018h,018h,018h,018h,018h ; 0xb3(179) + .DB 018h,018h,018h,0f8h,018h,018h,018h,018h ; 0xb4(180) + .DB 018h,018h,0f8h,018h,0f8h,018h,018h,018h ; 0xb5(181) + .DB 06ch,06ch,06ch,0ech,06ch,06ch,06ch,06ch ; 0xb6(182) + .DB 06ch,06ch,06ch,0fch,000h,000h,000h,000h ; 0xb7(183) + .DB 06ch,06ch,0ech,06ch,0fch,000h,000h,000h ; 0xb8(184) + .DB 06ch,06ch,06ch,0ech,00ch,0ech,06ch,06ch ; 0xb9(185) + .DB 06ch,06ch,06ch,06ch,06ch,06ch,06ch,06ch ; 0xba(186) + .DB 06ch,06ch,06ch,0eeh,00eh,0fch,000h,000h ; 0xbb(187) + .DB 000h,000h,000h,0fch,00ch,0ech,06ch,06ch ; 0xbc(188) + .DB 000h,000h,000h,000h,000h,0fch,064h,064h ; 0xbd(189) + .DB 000h,000h,0f0h,030h,030h,0f0h,030h,030h ; 0xbe(190) + .DB 030h,030h,030h,0f0h,000h,000h,000h,000h ; 0xbf(191) + .DB 000h,000h,000h,03ch,030h,030h,030h,030h ; 0xc0(192) + .DB 000h,000h,000h,0fch,030h,030h,030h,030h ; 0xc1(193) + .DB 030h,030h,030h,0fch,000h,000h,000h,000h ; 0xc2(194) + .DB 030h,030h,030h,03ch,030h,030h,030h,030h ; 0xc3(195) + .DB 000h,000h,000h,0fch,000h,000h,000h,000h ; 0xc4(196) + .DB 030h,030h,030h,0fch,030h,030h,030h,030h ; 0xc5(197) + .DB 030h,030h,030h,03ch,030h,03ch,030h,030h ; 0xc6(198) + .DB 0d8h,0d8h,0d8h,0d8h,0d8h,0dch,0d8h,0d8h ; 0xc7(199) + .DB 000h,000h,0fch,0c0h,0dch,0d8h,0d8h,0d8h ; 0xc8(200) + .DB 0d8h,0d8h,0dch,0c0h,0fch,000h,000h,000h ; 0xc9(201) + .DB 000h,0fch,000h,0c0h,0dch,0d8h,0d8h,0d8h ; 0xca(202) + .DB 000h,0fch,000h,000h,000h,000h,000h,000h ; 0xcb(203) + .DB 0d8h,0d8h,0dch,0c0h,0dch,0d8h,0d8h,0d8h ; 0xcc(204) + .DB 000h,000h,0fch,000h,0fch,000h,000h,000h ; 0xcd(205) + .DB 0d8h,0d8h,0dch,000h,0dch,0d8h,0d8h,0d8h ; 0xce(206) + .DB 000h,0fch,000h,000h,0fch,030h,030h,030h ; 0xcf(207) + .DB 000h,000h,000h,000h,0fch,0d8h,0d8h,0d8h ; 0xd0(208) + .DB 030h,030h,0fch,000h,000h,0fch,000h,000h ; 0xd1(209) + .DB 0d8h,0d8h,0fch,000h,000h,000h,000h,000h ; 0xd2(210) + .DB 000h,000h,000h,000h,0fch,0d8h,0d8h,0d8h ; 0xd3(211) + .DB 000h,03ch,030h,030h,03ch,030h,030h,030h ; 0xd4(212) + .DB 030h,030h,03eh,030h,03eh,000h,000h,000h ; 0xd5(213) + .DB 0d8h,0d8h,0fch,000h,000h,000h,000h,000h ; 0xd6(214) + .DB 0d8h,0d8h,0d8h,0dch,0d8h,0d8h,0d8h,0d8h ; 0xd7(215) + .DB 030h,030h,0fch,000h,000h,0fch,030h,030h ; 0xd8(216) + .DB 000h,000h,000h,000h,0f0h,030h,030h,030h ; 0xd9(217) + .DB 030h,030h,030h,030h,03ch,000h,000h,000h ; 0xda(218) + .DB 0fch,0fch,0fch,0fch,0fch,0fch,0fch,0fch ; 0xdb(219) + .DB 0c0h,0c0h,0fch,0fch,0fch,000h,000h,000h ; 0xdc(220) + .DB 0c0h,0c0h,0c0h,0c0h,0c0h,0c0h,0c0h,0c0h ; 0xdd(221) + .DB 00ch,00ch,00ch,00ch,00ch,00ch,00ch,00ch ; 0xde(222) + .DB 000h,0fch,0fch,0fch,00ch,00ch,00ch,00ch ; 0xdf(223) + .DB 000h,068h,090h,090h,068h,000h,000h,000h ; 0xe0(224) + .DB 040h,0f0h,088h,088h,0b0h,088h,088h,070h ; 0xe1(225) + .DB 000h,080h,080h,080h,080h,080h,090h,0f0h ; 0xe2(226) + .DB 000h,000h,048h,050h,050h,050h,050h,0f8h ; 0xe3(227) + .DB 000h,0f8h,088h,040h,020h,040h,088h,0f8h ; 0xe4(228) + .DB 000h,070h,088h,088h,07ch,000h,000h,000h ; 0xe5(229) + .DB 080h,070h,088h,088h,088h,000h,000h,000h ; 0xe6(230) + .DB 000h,01ch,010h,010h,098h,074h,000h,000h ; 0xe7(231) + .DB 000h,0fch,010h,038h,044h,038h,010h,0fch ; 0xe8(232) + .DB 000h,038h,0cch,0cch,0fch,0cch,0cch,030h ; 0xe9(233) + .DB 000h,084h,048h,048h,084h,084h,084h,078h ; 0xea(234) + .DB 000h,038h,044h,044h,044h,038h,040h,03ch ; 0xeb(235) + .DB 000h,000h,06ch,092h,092h,06ch,000h,000h ; 0xec(236) + .DB 000h,070h,068h,058h,038h,000h,000h,000h ; 0xed(237) + .DB 000h,038h,040h,080h,0f8h,080h,040h,038h ; 0xee(238) + .DB 000h,0cch,0cch,0cch,0cch,030h,000h,000h ; 0xef(239) + .DB 000h,0fch,000h,000h,0fch,000h,000h,0fch ; 0xf0(240) + .DB 000h,0feh,000h,010h,010h,07ch,010h,010h ; 0xf1(241) + .DB 000h,0feh,000h,020h,010h,008h,010h,020h ; 0xf2(242) + .DB 000h,0feh,000h,010h,020h,040h,020h,010h ; 0xf3(243) + .DB 030h,030h,030h,030h,030h,030h,034h,018h ; 0xf4(244) + .DB 070h,0b0h,030h,030h,030h,030h,030h,030h ; 0xf5(245) + .DB 000h,030h,030h,000h,0fch,000h,030h,030h ; 0xf6(246) + .DB 000h,000h,098h,064h,000h,098h,064h,000h ; 0xf7(247) + .DB 000h,000h,000h,000h,038h,044h,044h,038h ; 0xf8(248) + .DB 000h,000h,000h,000h,000h,038h,038h,000h ; 0xf9(249) + .DB 000h,000h,000h,000h,000h,038h,000h,000h ; 0xfa(250) + .DB 000h,008h,018h,028h,048h,008h,008h,00eh ; 0xfb(251) + .DB 000h,048h,048h,048h,0b0h,000h,000h,000h ; 0xfc(252) + .DB 000h,0f8h,080h,040h,03ch,0f0h,000h,000h ; 0xfd(253) + .DB 0fch,0fch,0fch,0fch,0fch,0fch,0fch,0fch ; 0xfe(254) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0xff(255) +; eof - n8chars.inc + diff --git a/branches/dgg/Source/n8v.asm b/branches/dgg/Source/n8v.asm index d2ed05f7..eea0e951 100644 --- a/branches/dgg/Source/n8v.asm +++ b/branches/dgg/Source/n8v.asm @@ -1,3 +1,7 @@ +; ../RomWBW/Source/n8v.asm 10/28/2012 dwg - add n8v_modes +; ../RomWBW/Source/n8v.asm 10/27/2012 dwg - begin enhancement + + ;__N8VDRIVER_______________________________________________________________________________________ ; ; N8 VIDEO DRIVER FOR ROMWBW @@ -13,11 +17,21 @@ ;__________________________________________________________________________________________________ ; N8V_INIT: - ; INIT TMS9918 HERE... + CALL VDP_CLR16K ; clear the first 16K of TMS9918 video ram to zeroes + CALL VDP_SETREGS ; set TMS9918 into Text Mode + CALL VDP_MODES ; set TMS9918 into 40-column mode + CALL VDP_PNT ; set TMS9918 Pattern Name Table Pointer + CALL VDP_PGT ; set TMS9918 Pattern Generator Table Pointer + CALL VDP_COLORS ; set TMS9918 foreground(white) background(black) + CALL VDP_LOAD2 ; set TMS9918 character bitmaps + CALL VDP_SINE ; display initialization message on composite video; +; CALL PANIC CALL PPK_INIT XOR A RET -; + + +; ;__________________________________________________________________________________________________ ; CHARACTER I/O (CIO) DISPATCHER ;__________________________________________________________________________________________________ @@ -109,9 +123,269 @@ N8V_VDAFIL: RET N8V_VDASCR: - XOR A + XOR A RET -; + +;------------------------------------------------- + +BASE: .EQU 128 +CMDP: .EQU BASE+25 +DATAP: .EQU BASE+24 + +VDP_CLR16K: + LD C,CMDP + LD A,$00 + OUT (C),A ; out(CMDP,0); + LD A,64 + OUT (C),A ; out(CMDP,64); + + LD C,DATAP + LD HL,16384 +CLR16LOOP: + LD A,0 + OUT (C),A + DEC HL + LD A,H + OR L + JR NZ,CLR16LOOP + + RET + +;------------------------------------------------- + +VDP_SETREGS: + LD C,CMDP + LD A,0 + OUT (C),A ; out(CMDP,0); + NOP + LD A,128 + OUT (C),A ; out(CMDP,128); + RET + +;------------------------------------------------- + +VDP_MODES: + LD C,CMDP + LD A,80 + OUT (C),A ; out(CMDP,80); + NOP + LD A,129 + OUT (C),A ; out(CMDP,129); + RET + +;------------------------------------------------- + +VDP_PNT: + LD C,CMDP + LD A,0 + OUT (C),A ; out(CMDP,0); + NOP + LD A,130 + OUT (C),A ; out(CMDP,130); + RET + +;------------------------------------------------- + +VDP_PGT: + LD C,CMDP + LD A,1 + OUT (C),A ; out(CMDP,1); + NOP + LD A,132 + OUT (C),A ; out(CMDP,132); + RET + +;------------------------------------------------- + +VDP_COLORS: + LD C,CMDP + LD A,(VDP_ATTR) +; LD A,240 + OUT (C),A ; out(CMDP,240); 240 is 0xF0 - 1111 0000 LSB=background MSB=foreground + NOP + LD A,135 + OUT (C),A ; out(CMDP,135); + RET + +;------------------------------------------------- + +VDP_LOADSET: + + LD C,CMDP + LD A,0 + OUT (C),A ; out(CMDP,0); + NOP + LD A,72 + OUT (C),A ; out(CMDP,72); + + LD HL,CHARSET ; set memory ptr to start of bitmaps + LD DE,2048 + LD C,DATAP +VDP_LOADLOOP: + LD A,(HL) + OUT (C),A + INC HL + DEC DE + LD A,D + OR E + JR NZ,VDP_LOADLOOP + RET + +;------------------------------------------------- + +VDP_LOAD2: + + LD C,CMDP + LD A,0 + OUT (C),A ; out(CMDP,0); + NOP + LD A,72 + OUT (C),A ; out(CMDP,72); + NOP + + LD HL,CHARSET ; set memory ptr to start of bitmaps + LD DE,256 + LD C,DATAP +VDP_LOAD2LOOP: + + LD A,(HL) + LD (BYTE8),A + INC HL + + LD A,(HL) + LD (BYTE7),A + INC HL + + LD A,(HL) + LD (BYTE6),A + INC HL + + LD A,(HL) + LD (BYTE5),A + INC HL + + LD A,(HL) + LD (BYTE4),A + INC HL + + LD A,(HL) + LD (BYTE3),A + INC HL + + LD A,(HL) + LD (BYTE2),A + INC HL + + LD A,(HL) + INC HL + + OUT (C),A + CALL RECOVER + LD A,(BYTE2) + OUT (C),A + CALL RECOVER + LD A,(BYTE3) + OUT (C),A + CALL RECOVER + LD A,(BYTE4) + OUT (C),A + CALL RECOVER + LD A,(BYTE5) + OUT (C),A + CALL RECOVER + LD A,(BYTE6) + OUT (C),A + CALL RECOVER + LD A,(BYTE7) + OUT (C),A + CALL RECOVER + LD A,(BYTE8) + OUT (C),A + CALL RECOVER + + DEC DE + LD A,D + OR E + JR NZ,VDP_LOAD2LOOP + RET + +;------------------------------------------------- + + + + + +VDP_SINE: + LD HL,0 + CALL VDP_WRVRAM + +; LD HL,VDP_HELLO +; LD B,52 +; LD C,DATAP +; OTIR + + LD HL,VDP_HELLO + LD DE,39 + LD C,DATAP +HELLO_LOOP: + LD A,(HL) + OUT (C),A + INC HL + DEC DE + LD A,D + OR E + JR NZ,HELLO_LOOP + RET + + +N8V_FILL: + ; out(CMDP,0); + ; out(CMDP,64); + ; d=0; + ; for(c=0;c<(40*24);c++) { + ; out(DATAP,d); + ; d++; + ; if(128 == d) d=0; + ; } + RET + +VDP_WRVRAM: + ; HL -> points to ram location + + ; vdp_wrvram(o) + ; { + ; byte1 = o & 255; + ; byte2 = (o >> 8) | 0x40; + ; out(CMDP,byte1); + ; out(CMDP,byte2); + ; } + + LD C,CMDP + OUT (C),L + OUT (C),H + + RET + + +N8V_DISPLAY: + ; vdp_display(line,column,string) + ; { + ; vdp_wrvram(GUTTER+(line*40)+column); + ; for(index=0;index9@%K**)HFw?riC&zO&fyWs{=GGijdcN_!;<> zm(O+0@_fZJZw^!YUXH%tDIwM~1`U*#FYqi{(6@-dZ|$3=DHybA+4zAZag~<`s+t1| zK+wOw?h)t=(laV$8Nyk;#R-Jc!SeE^70Z{@FDq{f1eX+?T;E$OWPSfoNH%QOk)!JC zrO)3KXsoSUstTM$-yO2P1v#=nH(>BSb#V;RFVF|V%4@2YHB>bsqknycVOig=)gTb= zbDh-RVBPJtb(Q6{b=CE!sP9lj*0)bpLbwnA`czJOs%pxs8!MJq$&CK=wL_3dTFGFU zPdL55XK31DnIrGLa^iL^aHZuy9z+*&Rhlg?3Z|T}-rjL&Xsllfy2@{>Xlx>#r><{| z-302RoPE|+US0f0s0YZK8W{2|y{=23_w1sg zU>kTXBJwsDa2ptZ==+-1jSzoY9)4Xv)U;)&=;${5Als1R6yBLg=WjgHu0c2f;b&c~ zPixwjPmwtcX-@p8k0%D38YeERT{5w9#j;Akye`0xbY!nM`1D2RSlc(;Jo~kq{ZG8l zG2Mb6=WM#X0sOym+4}fjHO_t(;m1Ca$66M8f?uld=zpC**w|FnG-2|D!U2i_wH=nlEk%lXSF^mBDfrz-nDn9KFY0WNWz`% z%{Rgaa}4Xk4QwekVo)`M$(Ms9!=?j1)#_D1H!9%*1NbhP86Irnl^*DjU%xtaT@MI@~42m#8{{##{_} zc&(}V@nV70oE>jN#2em~licYp{`juH7?xljs!s8J@a>B4t1j7oHQHdC4d_Cs*`Wo- z#miAaFIK9=^(Y~G0u)g;IJmcGTX~#W@OolB8E_$LaGRgH&21cn#A+d_>q|Z$r`OLF zd|xm0h_y*V+c+lihrS4l-0OODNhTRS!haiv@ho%wqsWuAC-<1q0HES7eciwu6!Py# ziKLM3J;>~gK8QPM#E@&E&FCbg_+pzvgktMANF4&qp>`7{YTz-`m5Y!_rU+8#LD6;39DL!lFPN3zL;^OHNx*HAAx;WLlK zqd0FbepQb?f$CURk6ebD3tsn`e~W+mHCuZJer}EU8;q0D1ER*k=`{{b?nL$OmZwGi z$(@o0{oZECeb1H@H}VYgjrhGsp%=_uLcj>Wj~4ne$QLsl9VH)5T31K9424Rz{)O!QBh9XF~E@$LY|4~$)3-KG(nrJW=}uw5OOR56${zZ?|T{g44f7s+k}&OYa0bFz8Po*ulM}IfbNx)K!u1Ai;Wm3sWCC6 zpyo%n+SGg-IK9;LtfBO;po)lPzX`iksy7FT7@NEbLC^O1IlzKIJ&!;rDnX=SVdFDm zr!4reY-n1lp@KdQB`#zeQZdLCX9Id56@K#fzF4dc!r_ZWALm4|Vw5)wObvrr_CD|u zt$*3AY2j@w;aGL1TdG?R^lf&0)Dg^nYdy0((F6Lro3iXqg5w(Y4qH%>iniNPrQ2ic z<#ZJDqj&xqqG@~LmIx>+X0sVB0_2wS(!+^)8>Z=2uCowqc1z8u_=zvu>9NUw20QHZ zZlr@3>@qq@f()xL*9h;8&8Gq`eVpuh?J9^D${uNb;IhkD~=VUHOz=~sS5_Chf z*TT%>wz8kXczB|i@ssZ$0kP~L1Ko{nt865~M$G7AAi`6S6k6wI(Vbkp9Xfkm1)WLe> z5y>Go^~_L=M*K#!jVVxshFzhR+EADNV5cj&+napWQ~XywB4+T9rViC3gMq1UKMHz? z9KT551z(J>UL*vg2(Vl~7b6=oIZ^a=@{hm5K4kv{#!)#HA3=H7HdLm$p5`4)5EV8d zoto`SNVF!eX+Td72fpBmz8$;>(&!VdxhzWw6pUsgBEB; zP78CyoS}TguTVX^maR{ft$%``5A_GxY-}6@oJjqncV)OP~sB|C~g41R#& zzLwOQ*?AE7r$9o|+{0%;FQ><(G(m?)NKEi|GBR+V}R4tPMCHEZs4Yj{q<-kGti z-x0fKsF9qRm+S~1a|SNhe|&l@%TYY5aMcHgcQ}IYAS+j71>bQccX-1cS?=P6#_FdG zYbLbYOeaXpM>qzgOcJEb%8$0My0l<#!GWGLk{#@I@tpis=aDa=sk!e2dr;$~RL1Ie zfmlSp0Xz;*u;-6>-hOgcPVcTgIKnVj<)SPWVmzgG!jq(+eeX`NaUcW)Y}}7Qw;!v; zco^0|uuexU)#Q{li{$1a1V?A)Asi#fw`NTu`Ql+5OIGjmum0qm9CMGNAf#zQC-@P_ zS@R}*G_(NwD@Y+()#f>hm~TOXK#aSW7*Nyb@p4#S6?93rKdB(2XO%-@62Ygvbxz58aYrc-9+>#$fgEyaldsS*1l- z1)7J2-@Ufu-E2flhJ?FE4eB(Hn@2e}kC~lr^CP!;NC3s1!3Rq8?Y}RL8H2pZcAt6N zu!8N@%6;)XC^SA#HgM{{YJ_*?ebx0f*G;akyUK-Jzpy}b=2$JZp;Qk&ul1cDC-LJ5 zk7CTyT^_R&a?|oY`!OY0sK+iAE8)sL*a;j#B6b*hOAB+YGN;fJt|Kdl>rWh2JpeS) zWxnV#cY88}2Slp*T^j0 z9vZ;qPSN^O5!DqgntuaCBea9 zbk0|)lvt`+LWv7eMCem_7KpiLm@8lPnxA;h7Y*~bMr`G)@iR~c>#=2IZC_elU2X0; z@duM{f535I?EXP}%uJWnoMRq6@`1U(<5&i!49aw%D9Q{m9ec+< zKL~@GmGA2GkSNG#$?)uDcup-yPTPuLRV{P4p?!+rGmQ1jjNQx7WqP#39ht!^wv3AQ z+;AiT_8-kQf8TLp)YwC}v{z!S);o?59Q#r2fmW0*-X9zsySGl^xvZ61vLn@6@t)QH z1z=>d-2rkuV3L}iWKW6E&xU!^A)i@w6vwn!K|Xbvf9G1$yIuqa8x~4fRYx(Mtyx7@ z!(yuQU!YT1+9w&Y(t}2WKxuY&($;`cJqnqOp1pOoAaKI*vr z3AfoD-jiwg_ZS^-LPoAD2^C)){8s1Plmqkwr*+-o?o1TbBkKU-H1=Ij;Bys>$$ADb?UW&puYWhyc=cBoqPyN#$QCdcxSM}o7{zUb9g=;1Pk`^Suz=E z57bP(H27TT_=LchBL{*P^!z2IKIQWfaY9q`wZN4=^8;?g??ey5wRgqFLuekZg?o1b z`+EiLJ@5C!$KJ9vx;MDLr@f#(azKBOYebIFfxYuHeSKWyGI5mj2}an6-L!}5^kq=* zvw|Y-LtI)iAn0>*AXpm^V!K$@h7kI$>@kGcHkNHfh;3up7Q-sRr1!MLywOlW>`Xu{ zc$mGLka@Nd^Ryx*#FOJQ+0@uW0QYoygv!P|?Kqkh?$%>jAy@cq-4)Ano1O>VW;`wV z9VELwn(5il>3Ns~ArxNERO+99SHYdXo%#)Wt@y~Q^Ic<)#GZQaXfg>M8Q8X+8dKz~ z{;Rq2Q9KvKroFTn!#x1{-!-<=e6FB<%?YA|z2WweX7+E8Yxp~?tb1eEIb6k^tN#E7 zb$T{p=%A-ohT>zq(Sf5 z7?}NBu}H}wwiDi&*)tHPK15*E!0AgF3ZzK=gFNe<)t}l0v+#^sijwiUh@n42SYiRs zGh&nHQFLR|W?(+Y&qMYp_seSz8YN`pKMZrzW6$tV^<~4#F1iV*Df^u@C)a1Wiae0> z0`#c4kX_Qh+a4=?HU}~6@jhB}LPIsH2D+?}~Gpu5lH8(#t-GPV9;!Zt6PxaVz znt=$N1IU8~Z(S84rIs&0$5-sl)z{q!P&})ObCJ&IuR#zm9Q!>ZkNsR?yX!U|c^V0& z{`Y+T69$gq0T^bq4Z)09*7OXTn(3Zgd>K)_dfi`sT<8 zfoiR1*IP1-B+OhQ?oGP$b8y~+WLU8Z4iw-x67&{9=mfo95S{Cr0-|I2NW(5Ix`27+ z9-f@N4X*gio>a@*1l-#)i0x7|m^-|d8)t!5bJ3dBlCkSl=e^y!>|f%MNA?)C3BVp$n5D5Ae;@x(D1=gwm(yFbapY4Y+3qrTy7ebs_xg8w zi`(_J-@<$XwH%Xz159~vM**5^FVWX`l5h9zK>=8!$WA=`V8*;64)n_Q7+0LBN0)+j zW6drKVwwW5=f7dCC^9UE%?5Am{^YgbbabyzH=Z-_=tPr=zI~FnBQeZ_8GP_VJTnQ- z^&{PTBuUcsCpt|*YU0bF3j3EdHbW7C({6pUFGH|3`V$m+ilXf^-xCHFvL^n@42l8x zlK2bq`>j7X^rkfJhF-%^nF2^WjydkN0{J;!KP-?pl9^H4Z@ssjXexZ6b`)L&1|T_(J@avNy|>q(z88Pr03_zZ%)hq0rS6$gWbg4s6Rdi zV2a=np01w=~Y9Lk$Q7PSEbb8u}hh=Od6mDxZ)V!wc_WTlS z=F%d!HPO`>$+vf%rT$NR=Ep|IU$S9(^=1b0OK>)}m0H6vpO627Cwz8#c=w>Knar?O zw#NShIh+`HJRX_pI^5|9WQ9uGLx^QC*1=d7V>=kjVQgo}Z63q<1%$~geVi#9L#`v8 zd{=_NF9eVU;LK3zFGD?N*zzSv{75`mnftw&K9Fc(@itu!Z{`9J@T6yBwK;tdHZQ+y znSO>#9LITL9*1F-VoOlA!Td8fDYyNNy7O5+h5a1(ZEmwU&szC7PRzely=HOFa#-ac z_T4;>vV_Y19|ICl9+w<1^HHi^44~6zQ*1Yuq zIEBOiy@_c^`<(NTH3wTt$m~zO<`Hgjtn9A|8gj8yfp3P-TA1s#rWaX;(~La~dFs{f zu&T$hgo4+f=#a{_R}bSvU0>(ILECn)8)m4rK;noWD3oR_}A|_N4bn{$5P$*G1Bn1*0~nbEw7!95 za0>PvsuftE0Q#)iInd3p#(F#6$xhd1$5N{Jgt^;m-BDyMEHu|Y4IH^&(AS*}`-=m+ zgZGTgg(W`!pQl4RoSz$;iKPu%ID=Z)vB!+Eo3QnJ`>NRTyRfF^}E}QQZguZogrIM_^cT@KL5{{QCb`i45ENVbGTxol0Ndy zL2_GyB&lgJ@+838#Gb_eDXa$MMemAw-}$HrrUW4;YB`lBc-X&%nsJ67y#ghY&lz}_ zKAsF7gcV1Y{cE;iEyN*Tv=w#ZD6hqR&Je@uyH8>4^P$@s5CQtobVsa|`zRir>>8>=09So#H6wP~>UYtVp9T)*^_a z*MWDBx8v9_w<%^YIqkJF?3Fidt>ro!d5`O?n1L8|EOZ;uzSrDC^V@^uw?8JQXN;`$ zn!giM&l1Jdw8Y2}sdqO50kOm!*PrMz#ZHC8pO_6w84U1H{_BL)GWemclN1noJOm;*zBGLnW-89(rkGG3GwwDMYFa(?fz+a6Jif&7@W1La zMmA-eN&rLsyKJD!B+mJ#lRDQJ%#Jpw;)AWn0#XaIP6$~@eG)zf}YqvXF2h(hwBU6SV zC8ZzgdQz-O+=F40OE_4P6#GFuG9H`Cu^IX^ocE-SO|Z z0Bd$WSIjn40dpkO49^#5Q^X1#C6U9;D})Iqd}q1^W;-n~iwh3-3=;IP{B^P64mjD0 zeY|yN;To|Xtyq8V6C&8KX=Z4=LrAQi-QQex{9X_G2 z`iU#q;SIMt-Nm!>_4{hTKXI%i>|oDL!DH)h+3VQkKfx&u58Y2e;Ny>81yfbO^T{;_ zo1q)U!NsO#=mzX*8W>pFyJ!uupSkrXM?8pw^J-X`r9@j5j2U-Zd!I= ze6{01@crt}>;=FkB}1>A2I4kQAIBz_NaFHI+&~g%j+lUQXzUdn60oresoFv~^*^h} zUEP|V(p&$dKoIr+8RE0`+p_*{3^O{v3r)sg}=DWn}+L~b6jR=p6jrd85rQ$E8_a*vs`A`NGv;pUiho|q00<9W3EwH zO^rPr$6)Z=oT)#t2PJ8v7z3rEc{@Fe5TNpbuoaBM(`VUmn6UE9-;Uj>KkBX?o;L>{4N;0A)|C zL<62Y*JYk@>E^JN&RFv`;r3Cw_h?5l+hwja3_s2m-pz;yCsQCjbIIPwK#T?I$%pw8 z`SCByyb_Uj!C>YE;ZmbVt^~2@hZE%Vo6o|crLUuAUowR$c~32ca*phZvkm+Fxm zl<8yRdJ#54K8blV%ThKjK41MUeokDPxS;t*eET{IQz;G)2J6wqAQ&qJXI0utfrn1W zLiF#D5^rqPWm~a9rWoD@Z5Fp6N|dBGWabs}sWUdYl9_cXbBD~l%f_6}%o|kZ4@Krf zoPXZfJ$EB0joq_G1P_Hpu42yI5iN4B{bi#9-#*Dnvb+F$KP(4nLhKDBK^tiMYA#a zh9(`=*bEt+Gt|N}V-isTbJ8(%GAw9MJO*73?ySSa#Pl^0#IM9G^qRZGxM$+Y1D;)- z(FmF&ikhByc-w*$>|1I?*Q7r3nQv{UDAP6aJqW0%;u9pGg-1{|(`!&W(At1j@Hz{u zhd;sOFmel$@!8DuzhIb=mslV+pANCQ=QX;Y%?p1D0~XKI!k>am*P`0!>w&e{0I_JO z_zQs$4%&}_pQvvu`(tG{84TzjwG`xtqs6!fF(sC)C_0M@-P*=VfcPD9pbbSRCgYH0 z&t`;>12G&zW!STuhcQHj8zh2w6;P#bSG3)Fgj{p!?l(*kOZ<_{PBnEu)MR|JYHBi@ z;{29c!k)xkLQBB(?xddZST_~XS#rY33Ili^XG&#wVK*LzRon9#v>6_m){_u=RYnWs zfF^Dbq&%W}Js70W{PE)gc035L9MLIi;P^JAq4D8~i=?Q$1HHhqcgnI?r&^KpY9ggQt%?-Z{ zI}H7#=uMW0W!=`%4IA%KuemJ*F{F6zLMUpu5gO2I1xrHLI0HpS>_#W7mBaA@6KwI` zv47V$X9y=VXCR--cPBiy`l*z};~Wk1L!q?w?Jjt(%CQFzBBR|`%-h`v252SrTeN>782;EywQe{8r3M}(JSGf}X_!ID_e-41$5 zAtA#XYsS;%G4Y6veI!mcxJ;o$E=#~}j_oD9;ZEcP-&C!*bLc&_)rld(3C|XEP}4nK zu9mrjQi2nH)L?RDy=d6uXtlwg~-nk`B}wu zxeOVsKC@f$&YdBc>mG&^n%zeDM5e^uU2=xt zPvQddBbMF6o|xJ9yOps%u?qg_=;2_I{zm*R5YI{YRSG<;NW{Xq1p>U?f;&1$AAQ77 z03~9~(l?(8=NPQ*ssP`JQ&HN}aZV*xRZOwS*MO#P&J7(O7w{wn0=$n|ILk0${|*#w z#g+{9ZmK~V_3;SF&G0t1?g;)03|WL`iDC|S^!xw^EU2&NS9E$unlK%4a}wSrh}7@9 z1}2}Rpgk$*PH<(6e{?C=?RVqDFH@TPwojm4d$%WvJA@`5@f)FMM^wzP`E~ta($xXk zsDikFbHB$VNGwGoNSY^;K4#KBcEG=lJP{hZ8!b{@C+g8Y@b*x&(80l=0E^R#bUorE zRoGl7)`-y=ahyzuP5u-pi2y6KVqBKdVz{J(W=>^GR`#?K29(|c zkRo>tI%25Ut!P;V5VZ7J{2oLaXemm3!k)*5{zQ}=ItO!M3wn}FOa) zsxr1hQQAg4>ygIBKP0N3{JhHlc&s2rF*t=n4hn*diSSw*?mj}S=7D)v8a}G8z8?=GZu2cFmXR5Jc6<;SQzz(=pCF7L2XBNE(bQ4;x(bF< z^~jeQUZY2DU^q^Xco|O7BQAzl>ycuH)AUFI!)x`(ScaGCk&79ARgav<@FqN;A;gOh z@%AraxoXK8=ZY=Jcfi%f8~#U*9<4$y*fKpdwP-@%LhQ&tfxb=tUXQZ5@KMlHf=FT? zQr)p74jvZ9M&`j|5WWVYE14KjlKoSZAlZD?lVpFJA-YJnf0F+Vh9IA|K$3q4Ly+Id z5ai#?5acgm2=c$e5aiE8Nb((meD`DxE{bsKG3YG&&rChacN0POH7Ew5KY*FEwFF$n zWZ4JF!;%rjT#tYAi;NH5$7~EZvwtSDtC<~;*-tZjy3AfDvu828OlJQVv!P&!T`#l8 zF#AemyOR4bgFpmc;lOJukOmO-69nR9NXn1$Cpne8H^5E??-A^nT;}iKR#Jeo4e3_0 zr=VSba)#}}R{|>{wpb(FAjL38G(xDwJg$pkI!nt*m~OdSPS-IxUl)ZjbpSHD;b=$#ONmD8x{ky@?IJmP^los+)p?IS#$Nv)X?OQpHX4)fS`j5Dn z6V)8?RUC^7t|y{$jOF=&8egn6Y5rW{gLA#+hdyicc06Butt`AYLRYRduh|mJxk3zS zAw|g?aRNgxDuFot!}2MF514LipP zV-Oj`$RtE2F;avGwngAObltgn^j5a>Ijc5kC{i?(3L515fJn|)$ydtc=!K}M6izZl z-mo}`MJMj%jE_yuR3(R~lFuO78(!6*=@G8(oil{ma#=I;@i7Cse`VqjEEA$sJv3h& zg858L>dsRifO)N%4d_!Y2H;B=0LWMuqyRGZZB!rySVwwVBQS8OHok`u`1jhlC&aGE zX2g4{(tRcb#nG-5hf*_-3pMk%xF6dy$mV&HgteGMf;owUh{YF=LT&0~&$Sf=lOFS> zPS1l5D0Gkcg4^6L3S;Gvvh0qz=&=%l4r)eWXc)J-p6Uj^bc+$hH|>LbcR;>zP$beV zksg>L>cK{f%ZN8~COmTH4hz3^Elz3e*IRbDieFkez-7MVGM_6hdvMh^%(4ev=5KrM zc7^|mZR1o_@9KDGnAZ=nZORq(xz?>H7;X=N{j`#Tn})=JWhqzRJP%LA&ut;2BL@uK(_uIcu?*bQ zFh!t&DHZSIWT_f*UrHU&R3xdf@YWgK==FQP2y#A4P;fGXS*qj!%xp;`I&_Ca(_8qB z>Chb+h<#hcG7(FNSQcW>i`XEQ;ceP&7ME(bCB=8pd4{2a5(7C@CbNNXNcz2>>i5d8T$p_LnF1O`I1eb`roR{mm6 z@Z-?RUzWl~6rP>qMS3C9Pr?6-F!`vq#Zc%`?h_5zzr}cTCvE}gHec<1;lP`DJzqG` z#TOBnqh2+*4@B}K9T6{khdp-|!cNZy3=x8d8Nf9S8(DA`0ajYqVix16mfPGBpK}21 zLh;y#)o$}WygX#Bd^kQ?=8Um|8^V8eS}Qk%-^Dt&VRQ(XVo($FL1gtByq%wsco9+Z zH49HY{PszBc3y^(oWzZQF{Ypk(^CjwqF5Er=uKLrl2FVpHAPkgEh@1tmM|X8B|H$Y zElTW57%MvZ;!IqH388OxWx#Vt-+Y53HWi|KYbLx7U0L`IkjdGOE^OtHcoc{SCw-gSNvKa;WhurR|oNSpbtI}c)9`y9H;Oy-XfY)% zHWRF6pU!z|Ddf}aI-IEPi08B)&1gS9a7C`h29DVi%L+N#$LzqV zXG_^HN@LadY7bsf;A;!!3v@E~ny+}nor6L2)co+ftHViW;Cw-E-g%nVlF28#kb9&wc z(MX>L;EGbrLkZgz7Eu`u2H4!f%Zl)K%QEx++Zs65q0)Qe}U{Du(UN1n3H@B%eDDMLVC^j4fYnsAy`s zz49iIp6A*<-Fb395?4^oj6z0A&di%0PZXTY4UB=}#spM#{wb=8W9nnAcoTtQ?>|z4 z+KR-)JVAX36=|SWY{C?|1Ca!BmsKpOT6PnT^rmBf>7j2{?~o=;RDpAW(HEkqIrIxS z5tDnKTag~W?Hr`WhUOu2>#wLkVw0O895_?(A}M|?vQK(`?0vrn{;wE6yy9bSYGx~N zw-CYeK0Mwb<}+i|YtUZeVczz?@ODx}AO!1KsFNI`)w4}t9F8}4;L8^!C=xFsb#UBb zspws}v!rVq2dUt7*VA(m_TcMrJICOq;<-4eWkJIMllGDLukZ|rrM)02@Z7~eBYN-! zw6;f2_Df(v--M2v@( zH{}r$9c-}#@gOp~9vu)51hPLoYd~odg#+67Ux$MU_{@?d(=g$4q-sjc=HwA{poL{P z)+S0=a3}}+U_iy|nWjhI6O{=*#Al&G$U`BHT%{7o)uTJXC;FoyNb@q-|3i{WKV$}Y z9fqt+U4MWkI~fN3eG0A#70oo zZ%AN=Kil!TDMpWyxZih1QjZzq2$}xU2ZY>T$6CPI6^>G&t21;&gu!V4m_9Dp}x*U|0~O8Y+Hc zRhP^B$Tjx33vd38ece<1+Nxq0>{s3F9{Xo7rZkqd3wAzlY{)K{Gpn&);iwI(6&QY| zbTWg!=)m{z{t$e-=Wf{RSB+IzI6V*s(9bBpKlrxW@q%C_T1vRVM4o4f{-xgUSaa|( zNRhcRVn88MP@xb-ppJE-lwSD%ehopVXD!NVp{uXn$`A{8p6;2OWtOd_p|t|N3DQvEG*wHfjqxfKhAD|9UgFG7sm@R`lINyJL?j82ym1ySp+o|}8W z?;v>KKsV*1jN7_tEf^lSlE`jr?l{5VSFodX<6~xU5dwjRg_lkzyP-p%*D85{CJbAP zbjHf^+~$%T*VEUcM#>9bK!v8Gl%#38H2Ie8I8nR1cyZw>yq&tZP}DMI$)uG7QP(8V z@J)H)JI7#SA0uyzt0IAgv|6as2W#985VQm929Kt$1Rb!W-GFymdB6zgIEQsZVet)< z^vFBtXK@#N*Y}#Z@SuFI-QfR5BraY49zo@%Snl zD)Gij9oQ(BIq*ub5Ep(sLW#+s(DCtnk+mDHfrTJ|gV5kiY{H%fqlB^f0k{d|0WF^2 z({8jDV5#{D?Ivpw?Y|#QK8vy*4JD)8B2dYRF*sj%BmNdb?K2a;u^-}Psx2@zU~7$6 zs#?KsJ`t04^?Zz1e%)ganNjM-p7T=cF~3gYwMOQnwm_8&mT#+U3%}ooW5n!Xf{}k> z{NthEoWRv1U&I*Tz4umhg)57-jgpSN`&qzkwWjB|rr@mXBEH)D6 zExBT(@wtbm*;e8ksu(my;u2`-6hlL-3v7-)hSbEbaKoZ;2SvL@vmWe zPVmN-I%kYQU)7s;oT9?F1V_#I=E%y26YZ$Nnm@^!QCPe~j~qZzSMjdE2=Q4^DP14H zD(kks01+1ADyL6uI9z6`BCALAjDbH-hY&p|=^Z&!N+W@C!^#L1jSs#nK7olThY4j} zLSoF>g$ak~nBAUC0w%vy(h4I-uCV++3QP<9&%kLw;((YdKl~bsiPyDW1_4-&xEO_2K97Mvg3=JL zb_{+gU;9m4j2^<02~m9IA_kP&-$HTV=>5AQ-2+3!TxU{K_DQ8qmY}_2Ph{0Z3R&-B zj-lcyFXR-@on~g@63~NITiw>;yu<`S<8lb+`+D@ds^71mtu(cTVQ;lu*k3?IAK~;w z=R#AicIoSP&5Bh%dUYakRA?8l;S9q%3v+IgSUI!LOHn_R)GM(~xWR1f)%x`J9*Obp zg?4{m$AfX=3^eBDyQHQoH$mHb+Vt_^bk~P0iYIqPN)Q42CkotM#0l zIIOpMorUkqlz~6fb7255GZH_5*Nfb6$ah|-xbMhK;-Lv#R35>JV<-eo&<36Pc;aj5 zjT}xVRnqn#S7LH0-b^|;$+}>vNMs0wh5du&d5pU#anuX7fW2b$87T;O^jqYlAm0c~ zthLYu_QIitcr{v9OY3?}TDTb4YbmE+B!aZ5(}MBDorsWR>+C6I==D3SpIba7VeBdEdbai4ix+CyAU64i$(;FNa zGRO~#rH$7bg4QSsrC4(z$iqf5pde=q00s?4HV5S-jXt0nhSA;0T3t^s#61y1V?w2; zO^*FoR#E5H3+y_7o{f?-QKuUVFjmsQ=>Ds~cO}ZbDU>^bLiTcVr?%G=>*6%AJ_}8U zR$5RX+~1?eZPu+hcprVCSmgs_!KOBT8rJ42H<9&yUY@_^woLXBNLafklO{NfqpkM<5=^PUZVd zd{+a7P)2i!ul2+~{E$Ub+p7q(#PcEROD~T~Z?VvxZ5gt_bCTKSxJ%)dN7T$m3!PI$NA_3w{ z3&9t~htS0PT8FTV+73n^a7m3#`y$3V{&(um*wFWwJp+wH2A-GM1DXAj%zlH}ZkfGN zX2%i4#pkwTL-#V(gGMq$N+Zz4(_{1lzP%|0%P7&FqOX`!1Q?$!v}} z`O%5>0Hm(YjsFNCz9c-DpRSbWDRDouiuNWh0KLlolzQLLJYv3#nc0ORnBnk(S&s+% zb~7`4XKpeug3oy3vvsm2RUh`ts88l3cC)?FH8?R!j=ovkmx+6wxHpJs z(aqw1hq&J*?yJN-B<^>Mdqmvt5%(5x|Ax4)758=G-YV`7i2H-${*btD5chA3`@`b? zU2$&{_wS4QqvHM}aeqwQe=6>ei~G;TeWSSlQrv$n?wiGZi@0ya9sF;qSXy)*zkFkynTvbM3xAE<9! zfeQXTe9>g8@qfQvfyX8V?qIEU$@1}6Tva$pTX1#t)iu{P1hmmjS3CU`bmVVw*D1Z_K|wE&7NM6GNkrP{332VNVG=QOO+o!y*cz{sCB97oh0WE?ZW$v|^c)f*@uY zar?|oC&)=nU2TFkVS;AcdNtdMDkp1iDTsZ;)M>b1#<8id9)svuO=uq>v|4RbX+^+a zQ(L!GYid|l8<+`k6)jU-Wf4gEJOJ!)#j@MHb+rLbbtVbn*RU%1YslKUbLM*&`Mz8} zW6r#Jo*4_Y@#Don)HejEP8M^dYnz-E%a_zH4b}(yj)z@n{CF0ttgmXS`x5jHM(1`X zRB=V)(%^C-_-KdYZ|Ll)e?S-e4Wpq57qD;8ta-5kb^o(e5ep z1rZQ0A((0$6@lZ&J4gE^sx7j8bNcq@RHQjo9ew&eexdW<+Iav@yv#q7~k5@kuH_+l3h#e<@2esc6b zaZ=k_a}^kn_$!_nYJ80SkufUJ1iZMCHO-9eVJybjcE-NP*smG;1!F&DjK>IxHpccb z_7G#QGq#qo1Y>tI#&f3x4;gC)V$YbUV{ABMm5g1?*jE_iYcL6(rq#Id@E{(rYxwcR z#8js7dx43|8Ea&03}dSqyNEH`H4?)aD`adiW1|_<7#q&mVLS%aWHWY{Z4NFhtD;g>kYKTi-7G_i_l zFk<8FC&s?O7!Q|f%2|$Q@HKN8qvu=AbjEy$p_I4)Yk2C^xFs(VDKbPqwEc^+neA}k zZ+{Mb`84fJEyJ;2;|nOz4eIA;B_!cYghNo{T_Q!xf_2t`eQ!qYxtf-nuQ}Sjq-m2b z)iS#-)iUrV*MLdmwCpxMX-w1xbm5sHRDit85f*8VjUdSB(lSb>qwa-TX2T*)>t3p5 zwxi>dZqpodZ`ZOHuR#4Pw2Ze_XjyEMjNs+CW1i+{&UNGt8JN=wYR4gs{VZw4fZ?iQ zAzq?e!*cJ*$Rg=OahxMAmZ$KBRQWq(^2z11aGarqGYfHNpSx6fP6ToFuRkjn$>D)( z2gI`1W!;zgujmauBI)Jhl(_oWr;=0js`6fy{(1c)y=|)e;eVt2<0#YcT}cmKf|1wf z(DO%>2&wYqkGMXk{1A*&t17=(75_Z?r=onjDvuLcd3{d(%TT^em509im*pQud7FMI z@j&^E`q{sID8Kl7l0O3w7gzuCS!}s?{E5eJmlRRa;cEPE;7tWy=szXiw`FT5)0f4W z9UibYJC?N$5>7b@057ia=6ohzuUtQh@;Tp^?Qo35byC0Zgs+9O*Ji~yk2Ln{kHG6z zc>MU2xK6_3L|K~|7PD944Mz=mkIMEIeJ00kF9G)2Wi#&Vy;?Z?Pv<|MLCx7~9zgyzWi1or^w`zFxWd z2g-MCmgT>TgLQHJi*`s~A*v{PR^q(_89Oyz9+L0NT$hD^1~MQ#ka)|0cc@e1ee*Nv zI~ng$;4RuK@m~2%Je=3|YwwTj>Tf09sL#Y3jzWFqV>sj_uJ9hQ7o?N;a&mhc7siKCZJHUX%544G`B!boA9r#9M%0 z$?FoYo@DYm39m05l)JU~HOD1hIdORP$CIf-|2>WPW2!uCdh+^=@}JdDw#$BoR6Q4~ zYCf-BUt0Np)h_G53%>?cKid-5XVA&=kK?ykm50x)ygsA+zv@?!sz?79^>EzSuRK-$ z)6Xg|wpZb-wa|UMh!?@HTj2>OZD#bRw;vw+$?@BgkmEg`IK2Af$y71k2NAc+&r|6q zl~?;XW^<~x-7mw(RJc)vTU2OQ^RL3k(Mi^~S%vK?bcbd7^(tJX!X+wPro!7)7*gRk zRQR9@zpKK>RQO93KCQytD(q6>YbyM+qT@vsKBvO(t8jw~*Qqd~!aG#hpu%bueock* zRA{L18Wk3*@KO~zRrt1|=K~cURbht8AELr@RQRv>ZL3+k+*vThrl*Zk84NiG)5G+* zo#)UNd}Z3K(gl-Hmi6#=Eqfzuo~&4JS#IL(3695~H^(;PU>fzuo~&4K^7 zIdE1+ipEM!C0157HZ}mL zT(PVYWr9n}m(aI;Epgx7;zHsnYpHmtA{TV!IO9wvB6UaOrFY=HL)E8D;n z;ju)hjSw7m0t6l-P@T%#D8Qvv@a90~76H*miBP+MB>9B*2)MDTia-|u;Q0x>s(`Ax z+X!|Or2ob;`b04$E>fDRssv*W5n3)>JeYY@fK|)=%P|02V<>~U02@{iY*8Q>OR!ad zx7ZbLAZQcZMxY@mX?lzRE!@P~r~rDE5Z*!A>*7sX^<`RQ7)D`&rj7ay2g1LfIIp+Q#}i z?V)Uz_EC+o}Ue3tWTH#Zg(Xd>5*s;7)JD#NtnyFf7t6!o$k*Q^1aJ07^E9(5()(kCU=6vlS{`({wfLSzy zPA~s(X!j7F4LZ7bYsDdECf)S3?`PC3udmeBWMcdS+WncC+9Bj+%z_AQ%9xM)KY$o2 z1W)w8%R7$YK9N8#GLv&YH1g>bjkZ6(bPwR zrjL2wc#O^ZwQpo&=4Yd|A7mi)F>&80?ptuzvY<<~r?W9xv>ig?_GH6#NP7_&55qJG zJaKRN}Gp@rnlAi`&02oJ+ zsf%Uu@oP{igs;af9cF#>{bk-HRi6zrjrbw_co8OkhyX6a#HarR<5wws8)h2uZGQv8 z#JAyTDDTWfqPnI7ru%z|Iv1tQh_GA1#INK{UH$nt59KTEOoU$nd@BCI*F(_zF!ISi z8)ns{cao}uFzHQ)+20a{|3igu!#4ihe)#Dy@mm%CCWUXqHohPZbr5Fz>9D{bEtA@9 zdgj$7pJvH`qN>y-=OgStnh8v z#?S4CpAHj0r10Yk--iEP{8okkcZF}mDSSq7F(Cc6{f98yr=Jkx8q9>09~)*G=&$OtY5Y(E_)KK#f; zUQprNFv|=6GlGi&@#m(&qW#Nd-d%S43XTGf2uyh+8tco=>V;WfI?VdIuax!uK-Fi% zHhvo;xEK&W9VR~f;Y8jOc7GJi@@#(+e!Oh_beQ<`rDNVx3g3op{08OcVdJO6#D^cA zz~8CxZP>q(j-lgD~3VvR}WeWb2f-4pLu7aBs{E>q1R`78J->=|- zYh-(EgyF{BuI%i;Zu?wJ7hz_}JI2{oob-;5C4`UtO%m zXC3qZ8{_d1%BPP<8{kuo$41qkw~^2BuwlDD>H3xYOoz#jZiRnL;oGo{?^GQoO#F11 z_;~Y7@EULEi1uxmSsc&w@~6UgDt!JIH_~szHoom2M40&L@aM_%7}S@}zpDVBihm`l z{g7(khVAxq(Jn8${dAc9hi|vYdr;xqu#GP=)9}+_f!{3gAG7flY~$xLl7^oS6CZx% zqRQVWd>gj$)5n|qONWUMpLBuGw}Huj8@BQ1$>v2F;@j}cC{KN5`W>lAG7pKnyKy&tVo zu)W{Ju!;KY{o>sUw)cN)6>RV4zN27!Kk=x7?e+avHmvmHHp1YKy`Jn-@UD>T&+7`d z*OT`Y{3n%vOu_FeI0sB%eIF_KTm{?f3BM4{e0x2atYCY5+zPhGXFlMIvf$qqmh@CG ze;^udm2eGVjH$gI@q6lo?e%E2g6;L_K?U3E(IX1B*CW0(G7S3AexB#IrU~26^Zbe` zVOwAFC2<`;Tb^G~uq~h63ZARx3l3^Td3*j2guoHso{tw02K{Yn{rrN0ZNIt86m0v= zU8V3RDgEeGu)SX0q+na$@?{*hXY0?q0cUDbTOe6`i22a}8`OI69l{u|jc}f1ew)I# zpI;wWu)Y7@V&@mh@;el4KQHf7u)SY=+0I`i%Xcd{SIwV5`I zA)uB0v-e|p3byx`Ur?}pelSkK_Ibut3bvn5OYHKO%Jya}*xqm6s9<~lzu1QTvOK@c z%<;7S9UE1Cs~WF66l||2_bOOZ`ubZ6w$G=&r(pZ}>qmq!UTtc;eoh$eITgHF!6OyC zUBUSZ-c6YD0L8}f-3J&UxGJx10XtIg2mRn9{a_p-0>8KX@P69SIaX;AIul&4z z@Zx^(E&brz`oSyv!QpV7?=eK0X=Qec?0u!RPgZFYX7A?FSe1gQxU^XY_-8{ot~G@J;>Ts($b- z{ouxa@CpI<%GTM-_h6_$|ec zYgsLRH{*8=eq0MZ_~9zy@BbCrNw8BZ=eyh22bV8_-3oDh218Sp#H+OOYS-0 z;N;>-#c5#SRfSiifs?Q3Tln&VblfY73;TdY#aC)hTEd+*Rm)&lZqmvdZmVFx_w4z8 zefiSmfpS<9Clp>e8O>H!tY|7n!Sdzxb%7ctUMb7cRK~KCmOHcA zof7zg3JsQfe&9h_uWd+Jqii6}US%hxo44$=bR$=}uzUJ78Qw;oq->excKa!V+({|0 zwx!a9txlQX`X;i_$@bH7npVsGu!d45X#S)b(vH&@$@mOmuoN+2!4xrJy<|)pM;Q~A zR68R0io|)eax;+;X`i&A-Xg+=$z+JFY?Be#RYe-@tc;XNTd0Uib10+INXwWo&vML# z^;mH(HG;xKX|prMD9phM*obkbkr>u`n5rQ>2x$*wNb4X&{AtpVeJT%*zCIX$r0pG% zG`|Z#=^hsZ`}$h+Ns%rfB1t-ch-k_OLqW><0+8)>A)?aV!j@FwU}1Y!lvhKhF;l9g z;8rUqigHXFNImkvZQSWEk>)5-zD#&X*sc*mb;0?-c7{;h1T5Vjz%iKBrNe{tbl_dM zIP~>x03_TFM92yW!;OKV;vr&mTwsduSYRZDLmveu&^f`@g2Ej^`5~O-Gc&Oadbnv~ zWqokz#Ci407fxR|aYn_NktHJ~N`M-xO<0ijIWeaOUedksuq@$58P&G%8+whE`}wl%+8$dN)lFDowi zU!b^v^T=)^wYsEJDiXQZkQ<6rnLa7~zo+tlKDjI9Rz-f81+@KtgEn0VHb$W8fGHSu Y{0dAfWc3Y<2Pxm-sTErT4b<)h0DZrIbX$HMu2lQ8_|zG0Gp!JA~k4=k~#xY$!x=Mey$ z)977*!XUhEiAV$3+?$*LUou!+TFB{#B&;d?pjYxMWs=kQ|a02IlaH7aS8;ZE)!25+6XN!_ExT} zs4Ok6s4TByaNqj)D!}P&5EKahzNfgjY-w?MP05Nfp6XQo*8h~#n>&EV6P(Q7skBK? z>X@F`mHA3iEcAhiEK`ID{a^}K}qBpO$@lR$SI}E1^p49NPS5rf7vELe+saO_ z58K0>-ohjT$@B!$P((=j>SyyVI~yEkf@M zLV)RM7K%f1OQv->>?ljx!fk0L+{H*^Jk>3dv;q2U{a;Di2N!=5)$wz`m!$b1w0JY> zVW1@8PnwG#Jw4(_^*st{uBE`UJm0(|Nq3wfZZN{E_zlAET5oO5waY8+y0&!H@>0O` zT!J6*vFl$o)Bft8(*DN$iLF6>Oe3xKZNs@$S1 zQ0C85*M3%a1?C*V3xBczs;yvBFIJ%z)lr>y{fcf4zPTicXYK&ZL27;;@&cnOhGZgQo-kj*4 zdHQP4g$VF?vSK5g`Ve3+K4O{emf34Cmx}dox7f*J*N&>%0he|>@;s(q{+?-y_KN(_ zz43S)=yC5MHE1~x=~TBAR8#EvU)Il7^+DTIEm)261XUBt`6ZT{v~<<|rm7FwtIAuh zQv=;{)A^Y3sruA?_n|zkwESkj!v4Y(&r09Drb*tr?ZKIy(T!kL)knO7B&t4H4NiP% zDT!p_)8uGh<%A*=%8jUfi7;y-%v@ol8ph=R$`9R1IpoBnPocC3Nmb-0I^-9ECxEo}L#a!W)*h2= zlJp{?B|SixvOTOZk0)L6#Z7Wxs31{7B!aiZRrgmeeahEPdCLt14BM6e?NtOJ$S!6mM| zU;^;2|FFrlM-6U%>E98T}awg%L?v zo#Ee1iXq93gHZ-Y;PVE#BS2;mWt5^Tv3%AG=I(bvB|nSDqrXKYuLkg0hm0aG!$P@W zuYylj6TjMl$OeQ!ZM~BsFPA|7@*-XYz@*fyB!^5&2#T!+N8E-rF0kg(zI19K7?%A= zu52cyRfCIss&+841Z!JhO=pbpC`ER>qA^(2pCs{3ev-;02e;UeBdYk-lP zL0A;mb3J3$@*uIGwe$F~h*$Lh6O}$;AL>2@sd!vwQe1GB2}YJORrTTf)L?*Bk=B7y zt3k(Os@4_>Oyq^1s_K@t_Ym1USnE&f$e2kvAvKtB6D#%W@ZAP|QMFyF_K(P+#YWMi zWQ-iSpF;#7c#uotK<=K%w@{9CmQkS82r?tCVq}o-h)c*PJD>|kBM*ZPRLPU3YTKft zsqA?OK^=Ta5&DQPyyTz`MtsULKM?hhAwYJJwi9VkadO~dAVTbNU@%eWhI)d+vz)@y z28D?qfI@U4&?9g06hWkL=~LGsg;Sr7dj1Vkpi{k@smSp}J%5elyfR}=P^LzSo^_TR zp&yN*8S<8wr~05uo_RK3e3;x=O!5eP?)eeGbnnGmp%ReVfylo>h16_NbTv|J%|LMM zlNmmaoFV@#WS5_h#6|)u!<#0uJC6`w=7@5m9eB=oha>-!)oWeBdLNoLOfTiViIylM z`J=JjhK}h2lu^;PJ96W(z3VJbp;o7$AufcaVnUh&kE$QP;ZKu3tiuS1oxQ!wG`z^IVtvyovW4M8k_r}O&@S#%Q zqX0eQUF-m;dOi#i#~FYT1l5|Vy#wE07o$R13(ZGzo*fiJirP{sq9b8Rc2LzA`2v{@ zh*Yg(3oVRCd^~ecx(Wj?;&fI5RX1-#&!46ScCJcOT2U?W*nCyLFb8bu^Vdz;LPM3y zzVZx$(Pf>F(ixl3xU=r9z#dO05a*)H*;9wUbK=PwN$R#gI@RoH_0^?J^8QWU62=(8 z9&F5{ZaBA_nqcscFlDOt#wMBg4Q8~Iklu1zeBmOL>+ifABwUxCz0IY4!fbrx7l?Ff zVP`yyehwqPKq$fPZII$xWUjl`PT9oRebX~o@vYA04BI+mH#COo_5^l%UI(r#8yxSf z+lDf_7{}|t@kUAxo}ZDoggDP>XXp8|#gORIJHda_D7M!i1p~Z{?J!cUth8+}K2ME# z!7$!xegymU;oVeSq#uRY@iOewo1~x`*{2t&!eF1cz@n3ZpCH!(Uo#`zzKL`pawn?D zk$c3hMPf7Lkv8(vU{!7;rJ&HU>oS(2K7Geb-V6La>E6Lk_wM$_jE5lP3?;t3$bDo+ zQ{yNC0V!)wNU(Rc8PwgraR=vl3x>h#ELVWY6qA=m(s8d$Xzd(r81T@_7+1lKM98ik zjvN_|?DG%Fjmw}_E`8Kz)nuKfWMhRkm4^vkW0}7dP0g5L!8__N#su4p4@n-VEYiF`dK?obH-nn1BEB3wX-oo zc> zr*;zDzgn(4a_YMrk7x24#F zP;CcPyHE=w@lI&;y(}GR^z{fqmkCWDgYdf&;g|UCgPvc=mE6=tw$i^XRUwI9hT=!j zQk~kq-0n@p2o&*eFhv+2thx<#Fj6Gwjr|Z($O$>oi!MY0Sa8Cp&aeV|P2l@0>_w{j z0CjRv#FHJF#L`T4kaY`AG(nJ?=BJQ9BM(85?-s(pc00-F4&}#-wk7%}lHWX4pOdG$ z6|1WC)0N@!vq~0zLmof6%F4{~%rv!QCVCE3+$yVnQ+6x0j4?go!D1mVZ+7W7%`Mc2tb=iJW3=bZ6@?1 zWHV=G#nPSekV~7H>C)PiH;*gvZJ1eDy?gu}R(rlvZFo`DZUHX}=9V)@gP9y+#=k0C zS~E5`l)DGE*ywLvx?)p&Q>2f){na=|Fl%yDf5;kd%fBhR;h(_F8wkuh7Hu=qQ~Bi= z3e!f>{9>wPlO)fDupFz&1ZkFjP)%mH7hxK@CKLE*y%;KXU{IDDf*9F+T-EzSa^-qq zTDb;U>4lkKGZQWZIx`FIXt-9mImA8_zTFsa8u@GC#1zLTN#0zN&d~J_dx@D7)L=Es zDkz%4j9`SAD%UO|R*>#vq>H^HCW68t`V^g9UcE3&>&F8nipR{zQ--d_(@;d?f=5uo zqQFkMk*4?gZ+Og>4Nl_4gl-odQT#9}y`P$1G!3X0ru3;Cx`;n6mVhVUu+W{RG|qet-Q%P1OV zo}yKX9>JqeQacY$OrdCWKomWlqE9YJmUr*^iT|@K$SoI1Am5>AP)_$gRokbA4_REn zYLhEiH^8CoR<)u|Ra>w_^KN%)-$m~S;Y9mU{Pj7eRvAGrj>HQSQm5{<&5)mWO*@(& zUO8X!pNM;|1w4ORs{imvcA@4{SoY_J1 zk7fr4P1EbQtGaiGsxRn_%!L8KC}&K3o73NJb)s=7`HQmUhw9J;VCcJs3a^d0d4*7u zSPDww-=1}ca;LIL`LR-L=xd+yYegvE0+jDtT1nZAGUV4zkRRL&4+edm81#JtFJ{8} ztReb+);fzrYmcRCJ&zwf7T=+0?aU`X+y3~``-Z0$jKyeD(cVIj7AuBG+p!hS$2|*$ zKH4YO?_NFH=|-t$E!2ms)eD9w^0OVPdxx4zQa)(czKHa{8JVM`o6+^z^WDQ+!2uRV zW*?G&6_TG1DW+Ex8s8pW^Vi(aDJ6soy~#}BL^64s#!{yc%-D&b$gz3kpZYf*eSo6J z@#u{d{T`40A0EAxqQ~>--&6EUh?YmP_QK>hf1ZD9Gx6nF3EAnhta?E<>NRLL#UUC; zZnvU!IJ9qKH}dk&7v)#=0-MwQmI~vkn%Z)AvJ!Xm!C|Br6^!1(vs*8)YT@v)k>Thi zCb$;Gv|EX{JMvGi-rC`3xgz7-5Y;TN*YU~iyDxv>&f`hqFYOfm`r3={vxG~#d6 z58_YN@0%MrLRG2Xw=lAwdu)+C8%vRry~p3?DCk`eV%s(TwXW~V;ewr;-3WNUiY=KG|tntqtmu-wJAku>Ol~qir!RwANm|=VS7{2oAz~fQ>vpWj37iU*rWIkBWjnu zX~7=*I+w}pXxfD!L@nB@`2LBgz4oR>d+o@}BEsM54S$Qm`-$+kd&A$R@cttFo!;~H;`;=dAG9~s@3ybI)0FOLI*6bKz^~a+x`B?S z6N>K$;Ih}TK9y~nq)T>m=eqPt_4B-D-1kNw}C zlp9~7nu1l+XWCRZ=7g`R;eT4lHEE5HoFn8{y zVB^(z*yWBo!yj2jGV;4nR?&yKJ9y+ z>i-NYA>XpOb}HE@v^3RStE%CTQzBV&z|kq@s42`k;Jt_9;B?kp&E&r?Taq6Pfw9(1 zymI$!VZGN#keX$~M9$QO0YDSZ*h&8Ta!gyPf0OMe^N-07)l>3#qW@FfZ@6I6T&6HY znr7E$O;FYzL(!!*L*gAS_q#==&YAM_W=RPjO0%27m?-8c`8(HKuV_1zaL-639Jxd> z?Qm#eW$lNDfMy@FQ(+6d%H9u=z~Xf80R6d+0fU<29sYRc>IcPmZXPSKPVF717B9lWeB)&pEf=8+Y`lSn z&9sV9#6mD2a#KjFRXk3uUwc7{wY($MYQ>zlKg}bq#CZI6tP1gYL>7YQu=&AY%nxR; zaLgOL!!g$Ard~#~JcD&Q)-f0+ZyRO}!A3S|P&A2_lO@kp7?)-EPhud5S!eW76v^Ks zH=KtM?-%}_k!zwci@(RZ`Y^Qd*Np6lTR=AU2W~m}8|y??EE+iiN93P{8+Um3Qo!oh zY>n}{9q>-^wBbF?^D^FJJIi`_lp+!0~b*48Ds@pP)yK{tvu~=E>VX z(pu#QCZQtXn<6*naNjh!@k;I+FEnXkv1lj1*_(lD6#zabT>5LgP@4%0V|0pF0= z8fPMTZYX*)9BA1;Zz9c_`0KgQG8@VREjxgq$S-G+f9iG~?W1UgNAIKP)jaxlJi3IU zXYlA96upQ?|CC41py&b~{Q^Z#Lo~0?g#NPqKmTWWs7gj>3OaU2 z+F*-lDx1#qHrhswLOTfKoTpb)%IA>suSofF*iZc7$Vr#d7rcSK5nq3y)&c9V>MBD3J>3y6rMuisXQEwK9N3^!p%JVg`{vZg?7n8#KQFwnIz9}iZKZU39@RyRp(~L3<;BkLViW@*U={)>zN#W@fK9Gn1 zJt=&kUH9(BGT0s18FFc(3KpZfwcWh~gnLl=C*{EZvQ`bd{U@xm@O2buNB}~Pd{Ibd zip&4Z^=*tFczySdAFyBK*pBf7?M(f)i|OcpQ+-n{2JP7xJrrg)KrKe>f%QRa{5`Z2 zt???xf@qEP&`LH^$V(b2z(he|57ClRaKu_5M|04~lIJ7B9%RwrSkHKy)-SL)gqf@S zf|{0CTd-li@*^nR6J&2R%atsD%O6;3NuBI~HFy;wU`_ngnHB9mEzHwv`shcC?DaJcVh)g+1j_YyTC6EC;Cj6Rec_7?vtqfh?y@n_epeGz-aHcU?&0d!QS>x z>q2g{cSz%Ymf?syXzfrR@jlJvbuP-ri4bMPI@4(H)O+yh6SXBi)7h@aY z5`|*%)unxCM2K6hSTd<_Oyj<&1jz+Z3aAaioc#5fQSzG#;j__f#qP?RG zIH`4=7TL}s-&F=2)s-Q^=H>md!+(4e-VJHW%Tz_Nd;Oumtv&t{g4q2fc}~~S1L!@r zQX-{wWFU5vt-B-DGeB9peFYF=lag7m5DTT+@iA@QOOnI;o7yVcnvtAEVNHH}C4iuP znkn8fl_-1vMC%TzCBq>DEZsTwp}_khW9>h@z;7x8j-92z+PkM0H=UI(`T&ZYD6qmt z>~?uhNI8l%V`UR7^Gj6bKK)U5TdF5*Z96OeRJ+!x9F2)8;N`b#dmw-jePR+4;F00A z?IeMMpgq&1#M`(GeviF4sDM5ZL#Z0xJt>|VfBkNgXENSUu>U4nnB&=-N{8WC&>=V}_9oA; zRD09vVP+eA7Oe|`{p?MyVf}3gOp7fx5C(FDL4=S&2!jbhW(b*ta2_F?AG_8-xR4`U zL`5HtkOzlr@rN$ymt<7jh zHeqOotE4rS&9thdTc)wJqRGAnnHz>S+16tKrs@umwuzBd?-*AEa%JyU%K$zSsV~6J?g^vc!0+*Zx}i^St+C!7P@}237$ww3z#% z2!(mNnoSGzdujQYT996C^G&(vBhSS+F+_9f{C_mW&~2PRTy!t27duh(COo}*q;}XZ z%AzumC)4n-m3Xzod=Uk#bL?(1Uj(V3_qAVSTIbl-WWNZ@1&(kz-~le(yWXi?suw+1 zJ}@I6l~Ar|v(ubnSHl@xV~xCO!|*D&W^|;DdvYQ#!ef-esm;uzqiaVaFCAyb*F)2P zZhXD{F+0cu$B~WG6LLPA{$%}swBFjK&l;{5jFq1ao4VL~qp|F|5PC2NC1jcvyXgn5 zxBh%83WJ_!`~R!;*4wBj2u=)Q!m^1@R$xYS8)`G6O(Xx*Nj$oeqGcZKpy;3Q=u3F? z9ExUJc)^VG5fqt)=+nkGYd>4aD#h||n(y+-4wMXgEjDamsa91B?%0acVs#T}xGXfiuSHk`zHEyKPtB6ni&*f*$zDk@C;-JHpVATW}N>>o$SR}tA*08 z-A;u{8tg%6uMl={Vm_QrU6e&IqYeJZM5?Kv<$X?k35dsj)2Dy;ZzkSgV#C0S9;f*n z!~`R)>aPA69J+4EB3~x?AhtpMRo&hni%Iqy@EUXjrgL1Fy3K~xmSZ%#9MfsR8I&9sj#_*lPH%GM3{DPhx97;1!SrT;fD8nz$)q)Z_fbQnU>rN^&yb{5 z_eSP~KeiOf`Fs%~YeR*2(--{rasF)*g?8iu~*F-b37r zy2qg1m6oXmshZbZNaso2J1J~HX86N26ASilrbtL{A1Nv=3ss|C+x0@#k-Jmb6vq=i z4^jTjRQK2$2_hO?fwS3}F5RT+tMag!YGb{kyk&yv#voRmZw$Ij1L%N7_}Fx3IC`Da zMBc$Ju2VRrTX(}qu@cVH&L&M^c&fG>JGf!Yqo zm`+DLt>zmQ=$(dDv6%b{ff!+Ry?e{`JMlmb#<5GZ#zVLyL70>jifHU82i0r z_1vAYgX{#w-oph0hUiNEF09XB%0hxtbtk0cw5g^qmG};OlRYgHwTquEPeIeAnp>0Q zOs%%rwJ05$3^gs!Nu^F3BuY=DVW;m%u=XFkKr(o%ROg^s&%Q4JC7bKa{ueb;E?fZ{w{6@)(j9i#w^aD zePWy?5-pxl0uJq+j?g!f(A3}~l)cVvNEjSOjvb>OgPDlQEZCzkl?mD{admQlIIO?c zP;I?%h>NGiwiuON4gSo+C^GVPEgbnH=ouPf6e1pypWUGaeW2A5U={!cf~o!|D+trvwX2xPUVV}34)7)qljRSM+%y;k ziQS~SAK{_cHuJZQWHZRv`RE^1{cajhNZtup+K%tS(WTF0W7q)L)cIyl>{1rLx?f!K ze(IajPx2n|x19vtlYu=AN3_mBXic_I68YISqs1M?36e+FgI7}<&Zm(_#i;@upCKiFnLlP4)ZpB>8a_T<4S#x_8l0aQSJxhvLZEx}Jr$#FSg$q_ zosT@jpY}i5hAh!YY&H;=6J(N;tv&36XvTCJt*ObLpFzenGW07DcC+q_sz=Qadk6J) zRxugXf-$U(vFJF{;t_MHfTWA_sqTruB1i|3LJ|Wdc#d_6h5c zRrJTVSw*elAa}@tu6U;Ci|z8W+my9E)GX28uEDl}lBa|ZVYM6sT4%N+c$2Bfy~maR zuD48eA9w0MPE$<>U3y)nD?i>~K|dQyRmL17<-HJMs#8t-obGpN*o?D)Pl8*gyTfUs zlNgrQXx7dPBnLWCT053UPU~kPcz0-xm4#nt4v;f&%Cp(Eqty6VF517?agErJv zpc#R|0x^Wx0D$dSz(v}Q0BH$wLhrw^1zttN-);p52Yyb0?)OkhD9^XNJl`hDgHxBR zJhv@Hq*0y&k=G_tc@8>F5Q0A9J51~o%Nw*-9#IgVY@hu&PjAi%p_+N``0YB;e09c6 zQ$J@MlELJTbEn3cR>S6SJ!eIq5j4{Y(FgxVy&$)@HzEinZ$*I+LIMyW)GVVbk&v4a zEL3>zP<8NH2lXwq(JBf$LR@v3pN0z@uCxI~y&Yi@b%fEun9)-YSaN`b)j=KoDJD7| zQnc5gG?7>uolA*8j<_Fy-gzf{sBE#t3q!I>j19t~^qX1z@v*_TXC4>qz!<uUHQfd&Mx2fDqNpbz2w362Rn*=n0bX4gGz&RTjXs_?0O4+^jq}!2jypba6SO4oF9@O$fjQ2{R;dz^~)DW zEKKW+agl4XEmMA=9?78g@6fE%Q2T$NTLy|%vP}G8@ATnaK^x1(!do( zfrqSi#VSRY0I5j739Fs=R%47wcW|7v7+}lxhf-)r(5En1up%PMOYSOLz6kPBvZ7Z~ zwXdVon3C1x(boDF8QClB?302WYbC#H&Bb)Qn&v`u z0??`LacX;`0~yMK4QlEFAC^xxU~|7Ec=HKu!P6=V>c2NzYQQ9YK})ooN`pQXfX^9p zO&Sd4dW<}S;Atig?kW^DIfHjj8bF6^*b=j75dAP7DAK+t3RYquUf=4{Z%uRh+fEea zzvHQQ>2p!Cn{C+Tb4@xrCuqKW4%V2FY=gXII!;(M(USeY_R%tjXRg4;nDb_V^t^pi zs{hc)0!$YsSzywzSq-_H!eFx**I-f*2k&F>o{y6~YY(&7w)|c9nC+VPX(v{eXi-;a z8)gb~^BnmR3bX$xAM+AgQ|YBWrP zXn)&xm>rNtyR?h`x@5x=DoFRW<>5$LQ(NfM{-K@}sneX(D1wxHo+?4W1jHk|r`5s!^4Z$>AE>s;;q#?M%1zamOF?BK5ad=C&JzXvgex}fch z+KH5gOi)8YE$siW0TT-ER^Uo1PGPw6yJ`xt0T6bM!8ra&Ue?-7HF#fE^FS(1Ilk`Z0b*odma0?Vt) zy4fZaJtx$-(|aVQD86Zu_xjit|FP+wul>ia_6}Co4fY)y?`>@id7g_sp~zdNMeYWR z=ojTJlOyHi&F}CAkqsjwZy6Za=?xJb?DAuX#g0SpLt%^ygMWTs)c+Y);uH;M)38fW z_84veMD~KDOJBkKPWUm6%s~soFisr}cL!W6+z?zW9~8mht5`fJLJNkmv_bri^#EI7 zo_E@bk`~Ho+eY>;n+awIvmf{4`XoFa+)!E6(ow({s%X90=xMdo z^44rq`9OK4%!zQvW&eLaQVbRqt zi^ei+I)QwTpz&+;o6!vxoaka_ED}2b#8mEnwi)0Z&FW3nGY-*;D!UPYrN#SzbczuQcz=lZ&3lY5#bKU8{dWD|%XYJdtc)?RptD z>!<#Otb{i8Q5!RL3Nm%MBkVli?S03OXWPFx>v2A|9WORm(h@Q=Sv>lNKtuedU)zhLWit8cwj@@D#0 z-#QW}WRWV4xyY)I*pivZ6H}J+WE>B(hClA_Z}+M0*U50`G!9o1oDu?R=e!JDRqUs`V6OFyU#nc!$YoOMLQ6K zD~zjiEqHr!`$5WS4%0~%WTNnt@FzGah-=jF55RkQZW`XDx&3j5KG#e*snP#3h{%ZY zF|;bg>Y2w9ywlu;O#OyNQbzbJ{q2u5Kzqi_jP$RY|C zv+ePVBaipc;Daeij@mK93f`pHP|?^}YmeN+lCavbGEsbN*FKFb?nNAp3qVAoV}>vf zGlY5I?W^Bbg%Sm~cYd3*T zMj1^_h3RdaMyqCjyn;rAz4rygdYPI^2`v*@dh{*SPg^dYj6m%XIya|k8=IN4c>|nS ziYZi%-ZwMpdXNnV6r$ytDQ*A=l*1pp62siL(KVyrGC_MbJw|d5X1sx*$aj~E z@#*RGe1hKPoSxkHa0a9C2O_0!CZ-~5P#8K3eFDPSLgL&s09y7U=_tnL#3^-1HY*Ra5p+K=`th&pH`PXab_M(ka3%T;?KrVCKrwy1xE` zw07FHIoTbBbfX=^k-~*=B+9^|&B500J7adxs+#f3sF&Wpp}LW z`iRG|lFC19@CV2&+CfwJ;M5yX>5%@7a3bGY;fLgLiE8R(9)2B#|C5J%FnJHOK%i(o zFLAwhFq*iVJMj`EjMjo?-~OG>;>v*z$RFI{`wuikb7|d?6CerR8n-24azxBw7UPBe z+`NPG>c&R}dWZpDDpXE%eF7;(AU$&iq;1Ja!=tqcq_?i(Jk*^5>A_?qYjj!y>5l@b z;0#E&B_m}=2PBa06G(&4fRvq#G&=egbcTy)mO%Q)NZv?)Euk6ikJiJ%{Y&j%D(*@{ zFj$-0l#Z~-ex&n%Yx2rQz3X!p&d|)cSR*vc^EKnn%y zPm-E&dbd;TZ#X>+n~c_vWK!%No@6p5S#w$vRGAdR6#^>9FiLUY=)^3T+l`{YvB-_2hrzPadZZ@RlhYau*W;9*Ti-P&2OiX1fC6R zZQ$k)S26$<83uaOTW@KGT&%dfC3hf&c;41SHNZ=fG~AvP_=ejSaPl9oe^ zUXIe|c2LGOfLE~cA+7;<{uKSQnet(E=$|fm&)@P9 zDi4yQYhP~Ai7mxh$Z2%O;AHN8%!d{2U~Dd*wF)%0wdLNMxWS*8TcNXmCKD| zp|v74Zh{;AKkNQYuk!n=tN$uW0@aONz6*%=<)HT~L1_`97iXhsU1j9halemr43DyP z5Zb<7OSM3%TD^~2^C}^?|OA%m< zgQ)`ijDuzYe$GK$FlD%3aIl{M|HZ-n0_@@-P6V*TUvh8&f%5ZrrhVoAX9K=^u)*p{ z*)X11NKX`gE^e=;e}#*t1x@pZ4ODdoe=Xoa0{%w88Ib6(!PZ&9`NPn~+i+LZmDa7q zL+CXcV3)9mVV>eYl&KXiF6cJnlRu45q5533?s z?_#cpFR{MYcRhLSXGicAmi{E=rQ-WnEIrFk4PyBl-^@Y?)^d{UBL+DL!(H5eqL3W{qD=xp zzd+b7eC`cSQhIR4*~p>8$S2X~(4g=EhQcbruH#zS2@i}yparPtPGgg3Q!Yc<-H;)rMfO9@%G z?8Nj$jH2L&x_3j#rtKZ` zYHTw5o=pCG4S#k7_N=*zt_f*x6uING_3U_&yL+}i_ULSFY<#wseH6nb7z*PLY6;qz}M(eq3rFg0(<= z0VxY}rsoh$w_LpEQCNqGtS7!sK@PrNKw;WV6SSMqn<-X=VX}rTNs5hOk8SExS;V?e0eC?BS57@`oam57wuj%2-kbC zGnAzjOwe$!9pSc|$qov~7i9oyY7P#PGO>&{d290bd8|P5;FDRja=i%V@IZtP7wdFG z2%8bRV`C|P0Fl*R)e3T0Sk@`yS2{IB#Iq(ZdaC{cctOj&&zCpO`w@M*)N_! zS!A%=gYgqF>&=QB!RRM8IDelvJyGl&DuwQNiUfd`3}j#;M^7rKu*pEQ9iwE<2EGGK z>c&_wcM-q+*Qq9)0vIVoBzaJ5C6hB_VhRzxALyuV+}y`$o>obIq|LfZejZ=0vzu@d zfsR@htyeV@k8Er~YSm5B3$UAlI&IRMvDOlx3+?h2n@J1Y37@}boY$PYKXwC72w|>T zL1_Aulm_1~lkiO^z21jedm}9aLyO*y79vH`d>@7ATxZV0LalkqRPPrAs=-01&!VOd z#}gofF0MOwC(aDGa0MgX zg0E}HjZ={$=C#=vb6p2-lKs*bG`Yqc#xj{p`#AC!jD6AW<^ha60e}8JT>l4cT1J)` z``Srlf{oJHwIn_7r68Y%Z-S(Ghp_ze%QL;{lqJHlJpDTybkC3#Jnjh5z_duewkYtq zx5;1MEO`fGGgNbginOEABe357&17ikg04Pd_+?Zplc9U4#EYP^zrtvS&GV_EBKHrZ zXs91+Jo=*bF8vA;%_j(lXb=U(NM*`I$+Xmt0vbh0t<&*}UJIs-%!(-s3<5}HV0k}g zA9oyAr1$q;hR+HJuQDhb%+6#9BOhYD zk=2quJe#JtPU0Gebx{!{Bd7-&Twxk#>KEY5e+*wBrEfT+8P!|aQ8y~T856@IC>U!V z7#C=!=r^z&MiH)0D#DHWppU`#2P2dD{sco6tg_rJ*eTMpvq@OA9Gav@$tKmz9VM;wtZhQhTq%Z-psrN-}$bn6s0tj|#WoWUB zI_>MO$7Nb-z#-9q@wsLkIj{F&6(N!V6nuw}l%oi@*6F$!IwO4Z98D1)xju=nOw($G zD7)O)4ggIs%U?GZuH^_@OhkQ;HFsl%3}fH>ZVri%PX!){8!sUQ=^5L#Xu%xfAOwe$WeWM4NS%hA~F!PlQoPW65YgpjbA&BkY} zFfV|u#3_juIw=wT2Pz9~2M4;y@;BzgYJmWz*1xl(-=4R)L6TNv|3(N7pm8YGO_@lA)=A#0(Wz&l zazcPvyAl$!Yk9Fc7AB4l#eUKl^1dS)+)RUeYH+lE+S?(3-E_t-HS#@d*_AhPVPL%$ z<@rgm5z6z^V_1Bo0VPR&5FNTn2q=krSl0IF-B=RovwndO8D!$jJA|ZJPT;LuUT6Mq z@P;XhlB3zP(=c>L4Mn0jYp-YQr6d`@p*TH*a8)g1By>y92(y@nD9FD()A(Gc7>Ck) zg6CIG$t(}xty_M~{EdVXw5%eB^6N0uX#**DCoT`t1&3;u@$Hm0V>BhwGZwM58NY|4 zXQ(XZA_`&|)1=JE541oEi@rM}16X4t&cyiw;>V@ASca5{e?Ti@LUx=`()xixFF8FC zeTyy)v0M`aZXeMy(u@2B>7PPnd1{JhXJhdh2@FrLMet5!EX*|y(cz*x?>{wsp@DtT zgg(?2Swn+AoZq9*c13fMluy)>hnChjiL*PDvnuD z^rJlb=REp_#D8G7e$AFKa#H^$}cyq zMe2kMoAY;ghO-20&_LIp4yvY( zF}OGVWuy%_z2doum!J*fxlLmcgYv%ue}s=VrXHnnUU1_7QZ&{yDS87%uVntI`*?IC zMUUsvzoY1dJo-f*T}IK@^5};sIv@Us4KE>{f5Xf4qXRt=LK`w8H^W5<_$O;47=$A2 zqUdh8@lkuQ>=_^R7JI+L-uu}5J@$T|y$`VWA@)AZ-bdK`WA=`)_owXr8GC=h-d*hd z6?=cf-relo!`{c)`viNRWN!&eN%2uB>`k99h>z;W-f8Te&fbIAdoX)vviJGyJ%qh4 zV(%>W9>(6o+51xVwzBu-?48ZtSK^J{Avoe0$V8bJAN3^M=A{%E{TSwCDTyljKKZU7 z-yZT^N4_28n@PSc&ylZ|e19Te6Zu-m_aylqCEv5;dw_gl^8FY2-XLEc`Q9gA zCHZ3HD<$7C^4(6p{!qv0T=LOBY>3kQYbhDh=oIqNzru-LM?P9Aj*ceZ&E&h3e6+|P zrG2BNRpd)2AN?nus6@UX`MP1dmOeqg&&c;@@*O50&AHia>ZPxc?{x~>L%!|gJ50V! zqO|(F)K0!NyGF7iD|z8UaAK6u>KE8Nv^7u1$4DVt;+RcpOtT)DNps%AxrXA%6> z^n$Nq1>&vV+OnESC#GRE>gy4G4%o}gWE*NSo1-!LIZnm?(0($eYGo&;Kg zQ3!bSsM;~<_~*$refebNNN|~RUFj%lN(mWT%e~8&OS7x2wO;p9R&5ggv-^sQ+S-b$ zN^5CZWkp%3MA?*BYs!{*mzUJ=M4&-WMQu@u$Gw#Pfjd;Cymq`>s>DA_&%JEwXm?d* zt;dRj)m%L$N5X%#KRu9=UU#OXrw6jCDp?Mpm#(sw)m7AbY9$s%yp>mZD@z$aCCisr zxo6VO~pNBi5&2+=Dlw4RJ~%J7o}wBh`G|Tdn(*eS`r0+SQTI&NBR#l2#qv6E?KmL$n&MZN>ORb(N zXjn<9RapU1!L6k#ViFgsO(l`+^JWny;hiBN@mO6`R$Er-K~rG=2fWH%vi#awl%ed} z(u&$;rDf%{QVsN9c$4^;T~^^)T2^B{D<13uNsMD!-BsS@rPjO3n58Hy9iJ{)2c%2s zQW;dSw#<#Hlu!=$vRZ;XHOsj6Fuhq(Qb&@hT~@Y|y*wp%CGk;Fc~8mm3J3tvh+#&^ zTH;}Dx^!1nm4~P;uUb-pqM==(u(eWEt#sY^>!jg!73C;1q3mX)nqSyfXi@CE-Y zg|`xly|Pl+b1T_7@re3k%|xm#t|({x!i5o#N_Y)XQp(4$n5^xQONRC|d(nM?mA-_D4{s&kpGBPxrk7wKL0F%*^RLrUt^; z7FSo*R@9-p;L1VPmHVc6mR8ilzVbH1S`bAtkBAe^igZWNC&MAgW3(h;UM*pHLdwC9 z9&$0Rk=|Trp=gr{f9DM}n=X@5OcItVRRq#+)xCJ(A%7}hUsXXpYcH3wtt%q+=d%aT%jL#0$3GWT6BrEVA{NgMJdOZ6n+x$(ajN~IKQ znPkc-lgx9MNTw1KeM;MSXh2Ml>E4?qQ(dMhb5Q>@TFak+Fe*(Q4Q}zIVlRR{w80?_ z&irYLnHbIJXU1}o?&cp{wAf0mT~?D|ahz@JL;8xEab`ddza(^>gCT@Les*Yy;~ z%Pa;;i|dUeDWs7osUIp3(5L=d}E=RB=juoj}^wXE?Viai(eF^b&d0Au;Jr)g zNzZ@apW5*Q__aiMes02{=Ttl%%KD?1;XfqOFBjowOMkX5!x|9puc=&JB0V-y_;VIHP(4$* z4EoYp+XXf3-f;xsJ%`_8Lf#{PARg7zXZZO(<@Gcge)gP&KO>r4%Hpwyx!WS#^}^jC z+~oA%=YQZnPUlhKwg~r6!hKG-TZFqqxO;^AzHmPlZkKS63)c*x62F6mn;5$~eM;WFu_n!IL26yxZHds(r2>9XP_-jbS9Nd%Ub)znl2 zC|$L@6luJ772j1+i9pFGR@?CXie{cc&0NZ%7+=^etML@qcq*l4sb(PyyX)SvnkoVp zGY~YZY6x7)K|3ae&ewbeD)%r7?r>v&*-$8zkOQ(~V~@T86n=32*)iv1Z*InJQ3H*z$InaeMV%6L3G-L zpdAe2{1e>C;F_{B0`?IAJU0P{1W;Ca4}lQ^apIz6Ih}=}kS-QdTUN#-(?ie-w$)6L zz7zt>R=8K7f~1-z1FT*}V6y-rSppwp;4*`73xNj1>j|j#a-KF2KzoXW)hYlwSwe7# zU}%ab+c|rV-SMLd6u5&2*0`54A$A%dXKSAUa<&c$Frfkw5kO}KK&(rEm7-KV0ye1o zQW*y|o+>7irUb~;p_xFVjE@oEHJ}!P*j_BM;ZI7jGzf*M@kpzr0magdD@vp_Zs`#d zst23N(t%X5!z%sKOz<)D?1f6r66tpq)K^7KRi*Tj1t$`u4vUn!VktDG%8Rgm0ry_c$i8jw4^_z zEL~AmDjiCJ5_qKVkg5xDDTUCZO)2y6-j5((A#g%P2w#EoM;_^&l*;85mCK|a#2uQA zxD9iO=q*UV3jTEp6zcv|;QScjo#m9`ZhF;8W+`;Pi81xdRDR~-52Q4 z>UxIW&97o{3PPjf5hcr|9pJWdNwI|gyOUB}Bkf6*_5rO6-)b^Tou4t}&rK#YCmhfE z3^5zN08~}Ee3kTwSxO-furzax^pF_{Ul4-tU-aI9w`5^$<83oqPhnZriZV~lDrvtt zc`N@zbJE89CuVLLJ||j?N=p}`#ou3%zY`xLLWz!px)~-^`X3A0fb=+W@<_k7;3S6h zn#C+V_f!f}wX*licuOg6=~>G?(niER_B)DeVej?qy@9=3**k^r0lP@Kd(qif~9kS$vQbLyIv<>DB{X*stw(>jsx1@(mov9n-mJ!WqNOEy?wKXTl zIycjo(jv%7#}5p`?uxV=KO<;3{IpbPM;si9mZS;phaaUGw7lZ3O1HPBwybviM8K(M zNjDJb=B=vrl&u&)1IeURLM|nrcy5E643_{d$Kino>&xa+63TQuUN)R$ApchUvXkIf z05{@iJd`FIKjSO`!L#u);P(Jq@iU%-@LY)^+QeG$@gB;>F8K&|#U&iql!%z4I3@^i%$b*L*!cT@7{^dMq z8R8hefGH`-zV_@N8lUq55;d5_`eqT25jJWosxet%<_kjDJ>n5Ci(jWY~Ux?7nMI5 zX872Qqu`hDV)z0!@NMM5Lk{65!-S9ShsDtcNC@A6;bryT0+$|w3BQE^JOmT|;;Xp7 z6Mn)sV2UUG>BNs7f(btvCVcwBAjR#+i|`GY!U+EmH7q;?6MiyG_?g%6xKH3Gd;^A; z;pY%C9)bx!876$2z(+sH@C}&KQ~oyc;30?blVQU5jpcD<-6?+qhL_=oPT@ZpX8Ggx z1*N6$6B52nzy^M%8IgDhru>s(!k>FRkE3%ggm1u{9*-XMuh8h2`(v)_j!1oC_ zfuD*`6t7af2e@t&lUIvY~Xh$m6!07VZv`NP{trldAhhV}_ zh6#Uzi^r7-d;>P{LxhaSzz;Eq!-QXrp%}$g348-K@TpzWLk{Ji3=_U>4v(W7V@&@9 zOzBDf8%~j5GEDeg80k^kCV_9j27Ze;%Rw;Zp9~Xza~a2fRNx!1fp47YFz^ld*GPY* z8TO`u{=L;5;9X-!0%e0q+;^dI5hb;GDHQ{V^lGfYYD{lwY2o$6qYq^#Z<< zV4V91iM`ru1>7m%sRB0ka#aCKVmz@(z&Qdg2W*vkA1Z$-y~G3d`iw7@A$_S43D*Po zOyiA~3eNvt#8Z76Fp;MEPPWffU&%1lSM^Ug{s#izfDQaZ;_M5-gr5u({@i;w{+9yZ zfDQa=;L&5?C&Ppv68Nd83*z5^4gBRCJ%Mk)1Cib;;>fw+6!?-;;41*r_;0bOkDOED zDZlTlk36I=P0DWu;4{@n4({s_t=}S^%45J3mW`hkKY9ozd0Gj;Lok!4z<*ZY&lNDm z6MhbU^bkz=$uQyjMEdOl-++H8{sw{nmcTb)1K&!S<01G|{=ZLtAA?>g!{o1j13r`d zIz|4s!_JcY4A{tjuApJ$pA1v^t#zEYB?8}o4gAbg@RMP}&k^|auOL|c3E04A1qTg+ zsr<<>!(YXN9y0I+Y~WkTBhUyx87BO>IK53tekWc zw+i@>fGK@){k)F&!3Z?Qx9 z9{+-Xjs5`tQHkYm^apPX*pTlL0UPrDnqcZ%n>oGX1Sj<$sfZ)k=s(UAu+e`E7qHQP z z5>UA5_YCxl=|_@PHiC$VF4T<(Dz03J;wITeL2wgrCE`ZZW!#A3N=W{5&pF+)|68N)ucw5yeR~mnEAEGupM7DiPh;VXl+Ra%wZ6Qk^QHWMMhu&$ zdeANlzc20S7sBdAyDIBzfAE8__AkHbe5vnCOMJZAULEqxwUf%@QDW@>lI$-_jPkK2 z-m9Xne=lGEbzyz~I3=v_6K90`vV2uopLg5B`aCt(^=0{s!fzht{k+{ox zy8I?D|B0}^A6ypJ_w6rr`FnWztHSy|_pPwLpZzGT?+d>O>+|y;!umXRofy|sJ%mfJ zz*2e9{`WTFjNG5Qgg+IIg!S(=v9SKVW0e@&zasbRI5En9N%(|tL3l@aRrn=hy7BV& zpeh(hk4gS#Z1`ovuN!{H@JEI}H~f|1?+pKJ_*cW%4KFVzkN*zCcN#uy_=w@G;gaEF zhBpnLG`ws0tl^g7p5b$bFB*Qu@EeBTHvF#P4-9{7_>$o(hQBuajp6SN|77@@;olAa zY4{eD^{~7y8@}D}A;b4$ci2 z;!(sZg2qEUhIkyYhB$^;M{FRDBk11}J&D*vJcW1~@eJZw#0kVn1U+*+hj8N^8>DKldSmRtPI0Sy- zA`~b;;CH`UYme%Us5ZRNZ>0B9t_J&Lk-?8vZne`F+! zIqYp4N*3fRN|Fvn(v@aUGJRshYgaUnL^2YqTrfW0HKDlB5c4Pekl_>yfjrpTZ;zxh zO6;r7$<@*D)e^2U0H10-rVDEqPVV3#`-K zvyR7`flj6gf3_Gm%L9ZdH#h3;pJ#!Skaa&@oW(ODuLDAgZ;rY(=hB6I{BSD382=I} zz+xdAVxd$DF&8K1#-(uGxSY!b3&+`VF~m#}b7=%MjhuF^&d@%UQm$UP zFmRCIU8mO_?onorSMwKuBv#f^7gi-?^C)?Z^Z23wzD9ww;7q52BhtEK#Xh{=%U z#nk-7PH@~Jyn7K=A(Ub@FBD`oFOX$5i^bV#k|sX76%3HzfoPMS7qKs>W?c2XvqF;ou1RRXvyQMA_YKh+`Qs2=QjUs3Gx07H1vKt zrV=o5W=txA*7w=k9<~5~S%=)L8^lp7#@#B~=SdeOY17RhciNq8aEF1sX>0E-A=J=^ zec~2*c4qqm%GPc(=%lD)^-Bjm?Dm{qa927r>}=XgasQ$&7`bzawj%-Dknr;ce*3;1 zts}LCVS}j+C^eh|Z_AnISHn#U9A+T)mLb8GA|wJo87Op;5hguki5zym`7HLm`Q*e} zCM2FRkebPSl3iqCA7kH`8pd1`%_^!*lN+?Ac*7j}Mf5b7hcb!ZWCIKQU#{(qU+VZ$ ztCyd`OeLp@DZ9FGDPa_19~T?A=(l%nB`sSZ@22uon6&(qHi&$=hWs%SpW}^KG;6XB bS+6JqXOD+Oa;k~TO6*lLRzd%mpGw^TF$n+0