From b503db77f1efd334f1a0a2b30333c48faa31cb06 Mon Sep 17 00:00:00 2001 From: 5Breeze Date: Tue, 29 Jul 2025 23:08:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=97=E5=BA=93=E4=B8=BA?= =?UTF-8?q?=E5=9C=86=E4=BD=93=EF=BC=8C=E7=8E=B0=E5=9C=A8=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E8=8A=82=E6=97=A5=E4=BA=86=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A024/12=E5=B0=8F=E6=97=B6=E5=88=87=E6=8D=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E7=BE=8E=E5=8C=96=E8=AE=BE=E8=AE=A1WEBUI?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=EF=BC=8C=E5=8D=95html=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E5=AD=97=E5=BA=93=E5=B7=A5=E5=85=B7checkFont=E5=92=8CPC2U2=5Fs?= =?UTF-8?q?font=EF=BC=8C=E8=BF=90=E8=A1=8CcheckFONT=E8=8E=B7=E5=BE=97sfont?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=9A=84=E5=AD=97=E5=BA=93=EF=BC=8C=E4=BD=BF?= =?UTF-8?q?=E7=94=A8py=E8=84=9A=E6=9C=AC=E5=8F=AF=E4=BB=A5=E5=B0=86PC2LCD?= =?UTF-8?q?=E7=9A=84=E5=AD=97=E5=BA=93=E6=96=87=E4=BB=B6=E8=BD=AC=E4=B8=BA?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=94=AF=E6=8C=81=E7=9A=84=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Keil_5/ble_app_peripheral.uvprojx | 80 +-- src/epd/PC2U2_sfont.py | 97 ++++ src/epd/checkFont.exe | Bin 0 -> 142432 bytes src/epd/sfont.h | 893 +++++++++++++++++++----------- src/user_custs1_impl.c | 478 ++++++++++++---- weble/log.js | 64 --- weble/webApp.html | 609 ++++++++++++++++++++ weble/weble.html | 297 ---------- 8 files changed, 1705 insertions(+), 813 deletions(-) create mode 100644 src/epd/PC2U2_sfont.py create mode 100644 src/epd/checkFont.exe delete mode 100644 weble/log.js create mode 100644 weble/webApp.html delete mode 100644 weble/weble.html diff --git a/Keil_5/ble_app_peripheral.uvprojx b/Keil_5/ble_app_peripheral.uvprojx index 08f4490..917ae15 100644 --- a/Keil_5/ble_app_peripheral.uvprojx +++ b/Keil_5/ble_app_peripheral.uvprojx @@ -16,8 +16,8 @@ ARMCM0 ARM - ARM.CMSIS.5.6.0 - http://www.keil.com/pack/ + ARM.Cortex_DFP.1.1.0 + https://www.keil.com/pack/ IROM(0x0,0x0) IRAM(0x0,0x0) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE @@ -185,6 +185,8 @@ 0 0 0 + 0 + 0 0 0 0 @@ -351,7 +353,7 @@ 0 0 0 - 0 + 4 @@ -481,7 +483,7 @@ 2 2 2 - 2 + 0 @@ -580,7 +582,7 @@ 2 2 2 - 2 + 0 @@ -1319,7 +1321,7 @@ 2 2 2 - 2 + 0 @@ -1403,7 +1405,7 @@ 2 2 2 - 2 + 0 @@ -1548,8 +1550,8 @@ ARMCM0 ARM - ARM.CMSIS.5.6.0 - http://www.keil.com/pack/ + ARM.Cortex_DFP.1.1.0 + https://www.keil.com/pack/ IROM(0x0,0x0) IRAM(0x0,0x0) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE @@ -1717,6 +1719,8 @@ 0 0 0 + 0 + 0 0 0 0 @@ -1883,7 +1887,7 @@ 0 0 0 - 0 + 4 @@ -2013,7 +2017,7 @@ 2 2 2 - 2 + 0 @@ -2112,7 +2116,7 @@ 2 2 2 - 2 + 0 @@ -2851,7 +2855,7 @@ 2 2 2 - 2 + 0 @@ -2935,7 +2939,7 @@ 2 2 2 - 2 + 0 @@ -3080,8 +3084,8 @@ ARMCM0P ARM - ARM.CMSIS.5.6.0 - http://www.keil.com/pack/ + ARM.Cortex_DFP.1.1.0 + https://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE @@ -3249,6 +3253,8 @@ 0 0 0 + 0 + 0 0 0 8 @@ -3415,7 +3421,7 @@ 0 0 0 - 0 + 4 @@ -3535,7 +3541,7 @@ 2 2 2 - 2 + 0 @@ -3644,7 +3650,7 @@ 2 2 2 - 2 + 0 @@ -4317,7 +4323,7 @@ 2 2 2 - 2 + 0 @@ -4416,7 +4422,7 @@ 2 2 2 - 2 + 0 @@ -4561,8 +4567,8 @@ ARMCM0P ARM - ARM.CMSIS.5.6.0 - http://www.keil.com/pack/ + ARM.Cortex_DFP.1.1.0 + https://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE @@ -4730,6 +4736,8 @@ 0 0 0 + 0 + 0 0 0 8 @@ -4896,7 +4904,7 @@ 0 0 0 - 0 + 4 @@ -5016,7 +5024,7 @@ 2 2 2 - 2 + 0 @@ -5125,7 +5133,7 @@ 2 2 2 - 2 + 0 @@ -5798,7 +5806,7 @@ 2 2 2 - 2 + 0 @@ -5897,7 +5905,7 @@ 2 2 2 - 2 + 0 @@ -6042,8 +6050,8 @@ ARMCM0P ARM - ARM.CMSIS.5.6.0 - http://www.keil.com/pack/ + ARM.Cortex_DFP.1.1.0 + https://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE @@ -6211,6 +6219,8 @@ 0 0 0 + 0 + 0 0 0 8 @@ -6377,7 +6387,7 @@ 0 0 0 - 0 + 4 @@ -6497,7 +6507,7 @@ 2 2 2 - 2 + 0 @@ -6596,7 +6606,7 @@ 2 2 2 - 2 + 0 @@ -7279,7 +7289,7 @@ 2 2 2 - 2 + 0 @@ -7363,7 +7373,7 @@ 2 2 2 - 2 + 0 diff --git a/src/epd/PC2U2_sfont.py b/src/epd/PC2U2_sfont.py new file mode 100644 index 0000000..e759730 --- /dev/null +++ b/src/epd/PC2U2_sfont.py @@ -0,0 +1,97 @@ +import re +import struct + +# 读取 font.txt 中的全部内容 +with open("font.txt", "r", encoding="gbk", errors="ignore") as f: + lines = f.readlines() + +# 用于存储字体数据 +font_chars = [] + +# 临时缓存 bitmap 和字符信息 +current_bitmap = [] +current_char = "" +width = height = 0 + +# 正则匹配 +bitmap_line_re = re.compile(r'\{([0-9xA-Fa-f, ]+)\}') +char_comment_re = re.compile(r'/\*\s*"(.+?)",\s*(\d+)\s*\*/') +size_comment_re = re.compile(r'/\*\s*\(\s*(\d+)\s*X\s*(\d+)\s*,.*\*/') + +for line in lines: + # 如果是bitmap行 + bitmap_match = bitmap_line_re.search(line) + if bitmap_match: + hex_str = bitmap_match.group(1) + bytes_list = [int(x, 16) for x in hex_str.split(',')] + current_bitmap.extend(bytes_list) + + # 如果是字符注释行 + char_match = char_comment_re.search(line) + if char_match: + current_char = char_match.group(1) + + # 如果是尺寸注释行 + size_match = size_comment_re.search(line) + if size_match: + width = int(size_match.group(1)) + height = int(size_match.group(2)) + + # 生成 FontChar 结构 + ucs = ord(current_char) + ft_adv = width + ft_bw = width + ft_bh = height + ft_bx = 0 + ft_by = 0 + + header = [ft_adv, ft_bw, ft_bh, ft_bx, ft_by] + + font_chars.append({ + "char": current_char, + "ucs": ucs, + "header": header, + "bitmap": current_bitmap.copy() + }) + + # 清空临时变量 + current_bitmap.clear() + current_char = "" + width = height = 0 + +# 构造 sfont[] 数据 +font_count = len(font_chars) +offset = 2 + font_count * 4 # 2 字节总数 + 每个字符 4 字节索引 +index_entries = [] +data_blocks = [] + +for fc in font_chars: + # UCS + 偏移 + index_entries.append(struct.pack('0P0|-2lSwj319_2| zv?&xiB`qd~Xh3DtYT+V-CS#()@_UpaKX>x z3DoLPpf3b_bS_>b8>JoTh<{W>y}H>S@&g%}k5?|t0vHu0?r||Twz@|UP9(wuGBG>M z2AH_V1zoQ07IZv~4e+Eidtl-o7t!?zx?_}vZWz)@6-?aYBD%(4kWgWw3zO^ICrt9S z34UDHBcMrush&>jB7UKE&QBq)Q5cGM7fjsa;^__cGy%u+>^K~xyUStX9vAWJ3AA^C zuz~PnFvPC`Chl>e)U7ELh;h=#X&BGsn4?K^kWdHP@7b%Kgdpw%1l&;LNtEsVPSWlJ-Oe7ir=R)GN<$(lcl_r_yTmjDcrqSX1)$|n(bmg*D?Cl!4Ib(Ap(5%7d)GO> z<8`(idOH!CN-+@8+lhu=wf_X=P4eD3?xBH6u8Rt!@%EE?o*}YgupCUfq?0lC5Og`_ zIO0Q^9;S3n{0Lf`=)()*{}yyZse{TygMh!G!+j>GYRob47lZ)6wo=CWiy+2+umJop zho>Besd)jPHiYvGCDp>3=mjf^ajhWz8gNy^=I?ZXVmSQ-w~`))HN*zpSyf=`ByICbLkbYjuBuc~S3CqP*`T$Lqxnx6EW{H<}~X0Wdu{1KIgofSu3c6|KP5V2}# z<5eK!8FyB7WQ2iZl|%J!O;!$0dInEUC={yrjnLJe{>P=tp{lngC$=LJ&v2jQ8T|W1 z9%t(Q+a%cbKJhR$pcD6?8RPj6kv2@Uf_ey!GmpMIHPyoLd1IcB8qZu2g&#Ihuoe)W zIg0Xd*|7T+=6Ql7Ar&oy%Ag_#tg6AB1^i5F*~ zD4d*l3#l0qa-$AsL+$A^Qq-WTC^b%Nuk37s--$`12$UK0ti{qg&$3y7{ zx$D`JFUhvkgB6oQ6_en9HG&L2GEs&e=81}TDBzhN;Wbq8&dG5@|CnL0;*Ft-H#~Qt zgk8$Rn-s@Gr-14olQ=dziXA&SF56DE3|73(y$#&k7WEc^j2!z{bbOA7h*dODq^19c z*AMPn=5~CiA_DWe;|Hh7f{eeu7|qt;$VK)e}T8P`I$j7*(IZr(}0!(KGUF4;4fK0qMK z^6z-2#*rg`c`J?*kbd_@;%FE=**`fIDn9aLNF6-Ye@5~QFL=bW;*@7N^vEQ&|5LL( z{byxQ@n3uYhGcd^Ok#S)RcHQ+LI!?$W7GM&hh5U($*RGzE&UrFVZD*F_e}R6GC$Qu z^*dxiX`}Yl{19NY7VL~4%t!LZ;u4P%)c>|Ilz8OXko8efe$U*G@*l@iPmlRq7|iw; z8A6sPcy;Q3+Yp-7|F#sW7V;vtFd~7P7XBU4dWP4&PFC?>L%)gRhW=~FNUe(jdhLId zr~6MD1HJz6)Gvh;T01aZUM^3cBPEpOa-YDcl#_aw`X)2bZUaoZ`r?9Q+HK zIk-b;KCgG6emWG2UqSqNW8er0kchr3u6lF?>Hl;Qisv1%c+U`ga}0hM@R^`ipFuwt z5uIs@!M`Q{Iw}dn3k%3^Gi99i@bnjX2A`%DeHRzK3TXD|~#8 z=xru|smOcM(?8}!W*w&NM(4n)iXZKn2r|_(_yqFbarpNjK+U?HA{k!rkmuy@j2;P8eX7qf3{Uam~d&l};`eAQszj+OUK#Iq_7>`i< z+dpaW3{`={P<>WW=?NDCo-pC%cDTnp#)W2zVem4!a_|?P!8&Cs{e?cNO}!6IrGE)7 zRM8-E2W?OY{Q}kByf@D*rmRA}YaxNr(_|DtZD|51C@(Au9+GKT|`p5lM>95_?U3oz?{TXr1I z08#(jisQ(BI7%Jgv9=r;+i&qC(UM2iim@u`)S=&wku2zgdYzt)v=HL>L<6zj$ih(U zE%k6$4gP)W;42eXqaiFk0T_svfSdRt_>c&Q*U^6fc=wQT=rY+obiHY-6mdNCldVJY zR_U$&w^hgC9Hhc=b1P))f7|6aat2`Kko6oHY*dN{e*<4cK)fm9zo6qTJwd}2E#hp7 z7>WHvTow+Q|3@>G5XZ;2QC<&iynio73crfh4-|}VfBHI4s3|DR9(n8FnW>*+ zz=Y_sFIhVPq65#Kq2UH^_uNB?7YjIB6O6 z)K64QQj8NP-=@llA@Eid`{AUE;WzPB!VM=qUI_OW;l?=a)m_Lla}xrhpIU)l;&4_N z!CM?@|BW_Q^o=ocDCwWH?YjnzcLY++?8ow+ z6$9v7s4eBwyi2KIP&JjvF=W0P(Ua&EXmTNxdWC0dJeI#3&4|Zw_#VW(uV5o;Rk-)* z6O_-K^wE(w%S@={RAJ6e@b+y?ceb`hgNd#X~dm8rcR&P zD2NXO(wG359p%b{e}uSFAQ2N6x{`2I#^YjN3)}=XHfR1oZS}}VOmZQQHc!t+p~>?j z`t<%D()vOZ0MC(Mg$ghUALXcx*TNbZN}T$cXYlcU+CDFs@p5JvM z`EC?Z*TmP6NmK+X-RSCE=!&vDd{lsl4uF$;P_7zu$y4c1TuZX2dnj@cQKGIS_aIuR zL319QQ|aFW&DoFfB69W!$~WdOL*_;Bf-nhO7(TB-ytxRzkca8we3K$R6649xYV@_a zSX?-p)G|^zc#0&Ok8#J4R16)ID!pg70<)}g(4|bgYekUZq~{QFD%}M(S`4xFbkO{1 zc%J>4KAwVpFcx(jrUq-@3XEho4w(;vg39230r!Nt0}z$36ZF!QhwjPP``VCsJEsi2 zJduU$KKtvIks))L2z=xwP!E|40ij^`K7yL1!cD?2i)(X{4$KOmE*f-|kn~)UP|hnz zM>2(Y!u-3dzzfe4=HF_rsr2%06tXr^bloU)SnG(BFq+EgNPe(QUsds` z-rr%e5v?zS|25%4+k;j@-j@tzelnNVT(B?`O3V9|2P1B+^lS4FPtzXA@uNdGFuq#z zLd&5WAZ71QF-5en&@-6xrD4Hq_)4=gE;BHm5*@Z@@NF7!{v7oj`SnFmTeP0G`0<_> z&VD>5KZ?H%l8_oMhMJVBrm_tf#FmOxqL`jqN)Pps0DrFFszKizdKn`dSDI(VPfCZk zp%Y2Fty0s^>2vh+NLBGk=m#^%;-B<95U(F-VsH)Oe^M+`A)DeBsY15FQ<^?nwCE{z zffV&0OLUbKehdQADwm@Y4639@4qZGwpIZ)HN8(42pJkR7j3`2{z?Fv4put%>?B()% zhU+1EOgB^>-gGTjLl_=C8Tz(|iUG3LQ~XHp1hSToQy~A7s}cXRQTaW{x06~ivv~$j z3p!ECJP!A1LdD{M{s$@i|3>}WDG`;$CwciCa%H`B`s750ULUH47XCelra7e0ON2t} zpwM4x3bkVD4O$dkuFt;=-86!V3w8bhn%zR0eKPa{DLHM+aJ|7d|9!8_VRX;xSB~`X7Nn&-T8AXf^&-((`8%5RcG#8mbu$1ADDQUOU>j zpC5Vh;44)1wo1=afLI%_&5O~Pf_jEwinC{~=g=7r_1l;yhr77%zCUYj<2& z;v%LYxirBXe6DKniHTn!d6@L^sp2m^SVjPU_5Ua2#T z(9BC0_*Gyb@Hq^zWM<1^v1K)s=gL(e9nw&I{5JTsm^RaRt&}eg9Jz?3KRMBX2KeDA zpeLyRLHhOf&OP`HSKy-_G<^5Mum4?%E2IAxQxgX%0ETI_OlzI+!$E6LgO-V8N;Wx- z)Qxlx$rCTYQ}lr}G?P((4iOoQLg{>s&Y{(qO9sl}(;1`g}vm8qq_Y!mY6 z_LnsH{p=p@9}8cr(U)mDP(zu)@nzGp<(+ZYnTFKm|i`Y)nDt5IghuvUW z%|=XX*xjaF_K+!$J!#5kFPIA0pG}3#U|!48&FfgUc|E(tT*Ru)#msNMn1#%ju#cKI zu+Nw`vagyiWn<^i~TE}Xv^{mmlo%LFGumS5%_F3yL z_BHEncG7w|`>FK`_6O^g>}~5uSdx4dQ)M43kQ>-0+0S;%jjUa6Vh81BcAFev_sA{m zgxt!WmiMq1*g`D$jeUBl+s+Sy852is`tWL{erYqE8-y|!!Fpsj};wFTMNZ6WrE zt(X1GwwF!V_OXB1`dD(pezrK_I#!r)J=>gcfL)$&1M5h*k%bdj^(PaI)ek0EtACbY zt9~;fr+QA}N2-ewZ>ip$_^Ima62Dpf*~ITwe?PHg+piPLx4oBGxh=zf%{G_4W1HXp zz_y$0mfE}R3u_;<-&gyJ{adw`q|&^T$c1-G54Q z>`qQj-@PVz!ESHz^4-@a7w*0-Ik@{<$sgVQ)8xS`{+9ghD`q>My<)w?apf+DeARwO z@T$)^LRWpyar0F#I8^qo;}cgY%G6bP%8wdqm8Tkl$~^z4lm{BWt?Ujwr@Rt)OZk1k znet|!I3>B|@|290>r?uu6YHLhwx~4z%nQM-v z7PkK=)!g~})ZcbmXRYhWo^`|C%2`kEzk1d)`-f&dyZ?b%iPt?d>*?!WoAt_dj84Mn-FDN1X_1?MmiFS%n`!HBnUns^twrgP+jplI+;Ls{);m6% z-h9XR(=W3vx-zA`&^r)5rg z>+(5I?e)z0$57jxmg2!AZ?$5{bNZv96#n3-2L^=# zm6q*|QR)G+v){?~c;E5DOAlC7U!UtttFJFobQE*nci-{)c`H|9e6I&oz21fg?z`(Y ztXm0GLxVaNJ%QJyO*dQL%aABR%j10gZgW7L>aJaMRZ zG;|z_FbxfQK!eG|WHP zo!K7GzyWzd6vYm>Tz&3oRBVGgeBv=g*%wFU_6YsNP<@aICZ3AGTSBIRNQ_G4YFyTG z9dKnSimJ&)lDkv|nvV|%b>T0D;uJ&~Ls5i~Ya06^_h-KHm9IQlwjst#QL?kMp`q7e zs7bfG&y5GmRC;!7a32oiiPIO0c!WZK9OW91p*XLPACBks z8W7I7pnA|#WRIqi^yP&RzmM_S;C880z~YL@d$)-c#fluGWYaSpp8r6a< zbrMa2I)j(TlZ!ZtbWsuGu4eFxD_>ABPiS2Ek|CWK>oxh5%- z;>s6L&(DaFOAjI9a)<%~gEBU*vj>VNdxI%C4)tm-(l{9tf>Y(n(^RM^yn_%u#@r>u0gGK#EKHRgj@}j zUnrP(8ic619t+s(Pjd2%&hQ`-9{*?rGUGqz!Ew#Sc+84*Jj$UYLSBvtgwiBYl}xpC zERH~DToTb;6kU|Sz)B*SivBB!7_i%H0HsD?!g)FqD;YDnOfH%K6p!LjJ+9m+2gWkS zb=JZbQAG(#A{v)*lWJ0B?RRieBcS*WMu_>;B)Ln*6I`ikqmr!4KxgX=SW%Rikr~3K zFeD-MDlS>$AcxQWDFf<&t2-)#5b@w-jF1S%`l1AxN~)TwCb(iGoI^w>2s06hOQ9d- zEjhqWBhW?U;kkh5;uICh(g=`E<4(2NWe7_wd91I<3SHTmG0Yk?0#lfDKne3rm=yX^ zGIL|Osj^v^tF--Es-?gK|Sr8^-ixa#iyjd57NmFIpZHtZA%?EM}!VKT2@mQvYcjGR8?a zCF3kwuCf%eym6*{N|5nmY(B8u3G+4U4>umIsO1n3*kRDbOIu!Uh-B4yO{QD5^G7lgJ<{axOcP zYaFxZcI%o{*^>=q`4wPcFAnX2jy2xZz$C^pf`Yn@bFURT{@ zy@!5j{Fk+-!OL86c|oD6@+E{RXT&dB;t9D`gF(VT69qUBb>7*Em4?k%n+E z^7VJ_WA{!TgWj{a$P5zJ$tZ)9Zrp;jT{`YjcgprZg{F; zK|}M1S(&F75vqk+LU>UZZfc*kC{SIs^y!4;Ijx82Q$1=;#G`Ie_p6>!PXk(iwNlO1 z^-wffA@kql4N==5V=7ZLEec|vF`f!}%2)>PW#T%364c*?e-*B%{vg9I{x}C6Pto5$-HhG(J@6KJKWQ}B_{ncbJMzT=V4o()zJ15&c&E79JWVy23OHWz)Gy=xd z@RCShxS+dG=|WcB8_80Z!&oPy1SONySn@JFDM~WEqk15@GnK{o9h{^ZL9UWXG`M;) zc~dLjpqN$jm^o~7rJy#J%IHq?+;oN4Oe$eV#1&rNXN{yObGQs{#jU5prGh}k##kg% zbxbCBF3Qf?Q*{@%k#s$XW-3?lW}``VnZndtS;EeS2B($^s+=1q;m3amqpoQ4ZFgPk zNx|<%PpbD~Z{b+|=&fpsf?i4&Qg-E{eO@y8wkO}S(sQ+^X;KA@nVm~ll&jCBdNaM3 zf}qgT?rrdnQitoZhBX3Pq(@Fe$G1PCpvZX9zNGNhZH}&L5>jH9Mv$rEr^y>tHMMI< zKzLs_jef{vM0iEiIb?b=kpk&B+ErKO9vDOPGGJ?xUn zEog$b$Xn#OdS+48BONJf$!UX3!z|IRMP*PY%X-=|V`^<-y^H!5XFiy`+0y#ZnJYGkx&w0U&-iN&KUMwg9dj$Y&~ z49k656egEbZBWoZjlp(`z8k8JRXvuQF-EeZ+JZUSDWzn5nxa&O5`|I3np2DA#oBxI zDOF}gx}qYRpce7FY;u#lNxqJE?WMY+7LQ-9Y*)Qw4P$kERW4}J6>^nN(i~UgppI=* zYn6JrE8-1%!!?sz!l4n*fNP*!FArRUXha(aYCT)B%jBMcE!>Wd|48DJ$ujw>$ucFO z0WBO9nSpn-(26AeVA3Ej>Q0H=sLYM5Q?{dXPtk=W4Ll+*>bo>j6t0MD8Z8>%=G-0G zu3V!N(72TbBGh!2pd#x=9oKU+Y-*qu&dkiHz&01EZ+MBkRhD!PG)kD)(C91~r|}ca z=}dL;Sf;u_(KzURqcLo78B`P)rvEg8&5>-ysW>7YWqHKlO7N`oF7s|`D0BJr0z+L= zRyZ`d28|#89bXkL#Q4Fe%b>71kyJTf$w#@~rg}$5T*_FAnyM_YYf;e13rP&i4Y?To zmPFhm;&)IVTCwo*2%4ZtCi~^Au_aW~BiW-ViY3}5xlAZiG@mfJN{)+xF1?wqsO6KY zylcQcP;<)b@p@`bQRh-w)P2gOmng+mUR2N@5o-{)K!gq&?}oZ zX`m5#+|Vklx)w)nM1!6sufeIGW`+&|*V^{5C zVON;xWl{|VoM3bfIY>=Em@W3n}pHA26o-qhSx%4R*Y zsK}yXk(wq|8h&cOXy2`<31}f`u&nS_&M}78dq5dz&^fU1`iL^JX3{m%J(4lL6V<0= zGB@lAZ`L!5hKFu+Y6&bAzYNhW;~kBHA%V*$`w;t*@s*e#y`*MlWoBh%@6lC_m`4^3 z%tEhoAdHgGfS=2KUvaiUC!kVIjUcryq(iD{^ourw2QgJyBewNk6NF->(fXqkl)$!E|F z@{$N;H2qeg2brZS3IbtpVsO!L-Hw6QX|xUs9*15gN$xVaR?ZmDWSNj1^FB<&plZG1 zkfJhBFI;4Ir!b6&)hxv`xj9KH?j5YNaJmPRP+1{#}x;oCOo@?OzRP|9R z#_IRrI&&b{+a6MJ)j8DFr3O3v?d@>!i_U>=cp^E0W;J_zwOf~Bd*?NsUHi1uak+gR z{?HyIHhTs19i-dQOM}@%KNEB3;cB^~*LAA3>ZR_y226BRd zrchf~CsWlOZ9So0fBUxHK+k?27_zq@50*Bojr&7^pz05){wNpD6t8GFZ%D)KN$h^5V|h13@g*Vq<9 zK3*4yrzdHFJ~t9bkFKzlO*$Pg7;?*-#-T@dwY zoR6JhLK-{{o7`W6(epf59gMc#W)>-Vf<`y&wKpZGC(`^3TTU@5fNVWds=drVAZ9_$6+T zo8TUY{VvP`xak`o3t=|Et-@Xkb0yrlgo9~-+XcH6rWtN8?3>f^`4G5AU_T2Jf_ofx z?QAT{!%g2HI0!QUcNlg*%q>I@`yQAPxREw?(HzD;1$Qp&0+>;_(TB4lCu7IR4g2#j z--mk?wqYJ)r{Gp#kK$6$PYDnEMVMFN9w!^-4Y)BjU|-F^7ChWzuve-`EADvY!u|n_ z0{0l~%EkCp3*27VwVBWX+zqgsV6x%Hz63i8vkLA}*b$gqxXHeG31fwDkHA*4aMuNH zvNywc;P%3P8m0>F)37Z|fg>8&pN6T2dldGLW%%q3xnch|%$0DD!!B43J;UvSeHbPL z_XzB}V8TQX`+k_iaAU5>UW6Hd8}md~f>RwMM2{KJ?J%QofB5{rr2$&2kQ5tJzGTl$ zY)I&~dF3(7Y16nN!kEn@F;f}J3d#x5y^QwYEf}gdWY6?Bq2AAdA%C(tZ{klzHk##H zlTq@*t?`vCMrJ89xm7BB_jag5d$Bhxm%j5l$7MIz;%=uETB%7IBX38}-7`mgfHO9$EvJ$MPgQsOi zn0UW@`uhi_lntfQaZ_(_pY4#5^`zg(SUbElUYyv;+)ybZjXf|Nj90*nU zgP{sqfMx6sV`V2o`rEP2Hk0@bV^zSv_Z&3)w7D)2+TOXx-`U(AXs+mM3Ut#t-zKc0 z1bWzinCsdDfo}GUxxPJ!$ac_58++HRtv_n(h*&Y#F?>amwCVG8`+R}Uy=^^Muw-+X zFBk~TGFi4ejX(_?v0vu|0s{ zEEs5RP!PM`V4z1^k)>m2K3};n*d1u1m13Vr4|H;=sUy(Q)QyjPn1oC|tRo^8a}3(c z*lffZ=xYmM%&5nX*ABx>aAwaVTK0P6yA0K@L;S%QKb^-IXMU}1x(9%t7+``$GG>1FT4dfOdt17D+B!om z>|PcO^|S|&YhNK(XH!Qvv8O)gUoe+d)K*ti738mOZs$^^A&kGfEvF-xv#+f)2NLGQ zX(y*WFDEZ2S0l~_ZM>NgZco79JuScn(36=#CrZgQO7xNE(oxx&M%4@&GBfx=FME;e z(@0q#=>8ougSWQyJe~I~;2m#fgyGp1A7T{rWX_>OhPK8NQa*n8e5ipBHSqr<4M^y- zsNZ7Y>4~C~b(jO32Tyb!m|e#i`-F)g@oXsR>xgdbZOp`eNv0a;#Ks_+k&T(#>o?^T zWvamth6?`nuFk;5%>992X33=q8~njwprf&Uzl!jk!Ht={J)IW^oAv}c{K1@#wx*u0 zU{^~h2OZ7D{$R)Iy?L2xhaWq-fnaEd*hLhPU7Db(8$vz3!BAyqOV_{1tRRzuAs}`~ zdugj#fI##FuI)t>fo3ln@V53qYapom#rszDAs~%;sseih*mS1%#!P>(vU6|OHG!VY zHF}^8Yu=aRhBfiAZ&(ve1clvzgm+{2w6U$7cEbOuj;4{5wuAs1FoI~uu#iNJinKT< zhjzCs-Pp;d9rd=(W+I^-;25pwK@K^ErFce+@j_{AW+a;(2{#YoO=F!S=L`rj)Jv$ z1x1a;{+zYV#gL<=u{ozGkl&o+&o3;@&Cg%kQe5EwUn57+1?4F8=eOh+1qyQ37Bm*; z6c!fdn{t}h6*m|93;pW?1x5dhPqQEnhFr!c>uIH!1R zV`ENHL33`)y5`(w|9UP74pZ@G!@r+3dAS#qq$rTvvfiJUpVQdVSb)3<6y+eN*5(uz zwKT8I_2;ei7xTOkl5AKLS1NhcSTn7#qbXUVwCJ2EOpd1>KXNp?i%gBJAC)Z-J^FOzkBTN(|3>G9l4twQ;w;}a*w%=d5<+5 z>pm7fHgatA*zsdy$4(y`KNdO0?&$-+Q^f7V=l^02tb%L?E+1|`(xZrdsikp!x$qEg zK|hF{2SJbh9T$xa{v1yf=UxD}fhFJ*HX8ppKXMBHRR!W{r59-nar9~~6@ zTGw8f-+NJiec$YEoxu!S@H@Tn{rG9|;fCe;(h#zv{FNHTEEZH?Vs?t;;pYmd>u6Mmj>**2(NN zujJ2p`WIQUH0|;Cu*}1tNT8FQz7R7lSv3k!maUi{w&MIQUcH^PM2YjMSX_jUIp#x% zgkHS6Lp>DuG9EZ#AMqu)(fK-m)?8@Nl}JWp3gfUUPC zeU8iO&F65DfMv;Bz~N#6E0VX6!xszKDS6j&_!0rDl6M`4HwZXeD#vMb{39fh@{QI+ z(nzkfwXZzb!!8wIp;Q-WEf2C1Yr+!v77^$UGM4}^Ca@yNN(H!qz)e9`CcsMx+#F=( z0(22r7i4Y$mPr*N;tCOyTXOg0vQ0uZ4}d(jSpZ%D`OG7LT>uJLr2rZLtYcdQum`|; zc9{UWrCNU<yw9edt`73sFZ@mj zzi6cr0k0FDV>3MUu-6OkQzn*BR#Q{O%>53k@CjwR>noUfXzmsQc2cc1-!hMykOa4Y zh8NPmJi$j(aQVQGwqhHK;>yijmkcWsEQ~E7`Lf|KQ43?D#>6xmv2Yi&c+V5^ z6@%(V0P~+gyTP|LFTbc1hsX@io3r-;Emd{xW4|z`yZ~Q(^S-Th5BsHAc?yusRte%? znXQ$e%pmgHVNxj7Rsr9m!w!}{8-c#9!#-yIF5DZrK4nvLS8pRW^<>4wy8{h0{~9Eh zCSXJD{Wid?x6G5Q5Z;1U&QiQgGhd{Jry&qC{|T>XUgJ|adYlH6ZxiKz-a2$ECZDgd z1+I&HyS8ri)s^n3@Rin9losS;M7G$P`c3q)ynRCj*xA+7%rZr*!=yT1L^y7Vz!{`^ ze=A31SraJnCaD(pN_zGNn)BFFfig>ctG1?_ZdwzObVlPwqR7=JMu>lCn8!1=68zzqT}VBG@l7H}cER={BauVp;~9+5P_vTI_&4OtE^N;0ir~6gpVUip8{49Ea+AdXE7Hof<8Pj9Iz%+OOZZ=l6s|1 zk<2V{O@l=_O$2W$p=CS_PKlE z7BvbZhT1?A)u}|gLL$oXaYq>#>~`xN@HNvb>yIh(6LFfLn*Q(N*_2!_0l2-jm%S>0 zX+qRiY_6=UuPu!q$0=u0(kRr@zmp(Kx5Fu80C-e zt5RtXZc_F5d-iWfi{tG=*Myp67BtxyF}1faOX?gFBA1y-ev2lX!J2C2uvbUOsp$dG zncaA;*-}&Ht0~)3QC{z>uBi7xnH7A5SzA-(+f-G$xsEMG(J-t@OWlx!A;X2pE2>M& zs_>uME=aVsbeFHJwA#J1(p~Rih6~cV>&m^p`qItJbV0HmrB#(~O;{@mNafbj%@scU zUsIo_q7=9NnCmYK(r(4)tE2!f__ek*vDX*aX_QKcrpESe_E!NL2<~QY2*^ZG53XDO zO~4lJ>+jjq+{4}!C>f}ZHXP5Ob1iQPTms?zeF8TraCYE=LH2h6B@@)m-WHGos43Xn z!TurORKOTNy(6GB?#td4&}=~MEq)T}J%Moo)3vv=i%ki59$;K8#L;j&rFa2(2RhoC znY556IZH!euE7ifwM+!bXU2v0FCt7fU_^qWJj}Gv{(b0a14}1$ktc6vi~|0K4%?XJ z9Gx4?3$0XQEZ*~Z&HX*Xn#o_!u1%Fy6?%T9H7ra!;Xw9m^*8Nl>kKfzkd$fDsG1h- z;8c(`3LkXMxMhjT8bH0mah9fqeA;G`w3<@iRky#Rv8%n_Pot7%;VZ}3anB$N2oJkd zhv{xjOAS9MTf~?L?v%)3bIz=k*cd9J}rhl3$167SUsKY()v=L zyArd``kLC^O#a-$w7CkBsvWq}Cyt*NlA!5;BdjXSStP zx<1E`ElhhOh3k__|Ccpw8hTL$?p4f1+d9*96mn~WFA8`fFBB=$}j+6OaNZP zqX13{px*Ez7(60?U55Pt9u>fq1{cU4TeyI-rh%nXF)*cSRm>5sI5RR616RY37OKlY zXkL#H?~~`4o{7`2FU{dtiF#&i7_@wxuX_+0;$5YEJN{RIJtT>rHIM6SOm z0Fmpz5kQ)u0SOvk$mbSLp2NQtJ|c%-5`f6z-wAO<4!=gJaOhNMMlH-H9B22KoyaJ-QvFVa@8aN0AVwPKD%bE$1LNi$kEWl;u|7H3q7 zY3vOti{^iZ1XzTZE@zB_8Pr9KDRSMbzN*ewURqUER$6`;Gi+Nt?*({fewR4>7O$K) z@e;FH8cB)Stoa{6E};%5Asx6ks7@w$>ubEes)`*IRdH)}Xkan;WOB+J;*(HyL88>9 z#Lhe)HLpD6Z!O2jwX(jfw620#O*FQ#-JVSMp^PyP-`4F_^_BG=%oE)ev_`*X2j+~` z+qd$uP=aKz%)`p5aYwzcVym})w{TW(ud2e>2gpiPQEnG9BiXfu7{HKS#LQ%u?`9UV z(TYO`a+P5e%VdtLtn-%EmwT9vpo-esnp&2?NoXM?kzA0avb4IM*$LQQeOYzQ&T5uK zfV-j`ooy9MCZIBpDVze16yeBcslrjnW^s}tmL?EIES)33cDBI4HHTb$ZNo_}sG|;g zVRH$f^^kews4Lx6QCeGDx|_`>uw1wokb8SwMXkGH6P7dFY#|}4yp+yG!nu>&8RXVh zV6(`LSq104lz{Czw2UC?RqHFaRxlSqWmPq0tdv~fQ&GB=l?iuEEe3zAJmyj1*2cHY zty9EM6@(&II?X0Rly732xm{ItQI4r7F}g3g#;iZnQ{=kgZJualnD@; zU@9lvU0bnYkuh0-pCPdlYMXE<;7l++zR}y=Mk7FbpSc8N z6@P$_s0{W)%D1U(`+U8fv18B89213cS_~!K7k4hY8QWW%h>N}7+=cKfhzZu*&i}>_;v-d0uafqOW20o9Eim11I>rJ2vfLNqNraF-ZedNl^YAT5vKO=i;s& zj%RCU*;#h-(S$?5Ir;hPuhl1xTT2VlNK zX%R=Hry%a1!Q@i#zBZqqNlTKS0z!b-F)53K>6E7TqJ&LExHS2%8ex+Ugv)fWd4H!b z)E?ye_t81~M$9Fdv@-MOXbr&^Q<7F3YS+)BORKmjbCKjGwwk+bMl~$9@Cdt?<)$3M z)l8ewsbS4G12o@^*yrLfcQ?z^{1rVEj`u+m&4_~)XdGqT51%ygHSsmALe0yhc|~RG zYHvpFb%&w{-=(!nSECWO`nFb9Z{CS!pspUh2U@hU?VEjDOY1#o3Yl~X=NIKd1+qO9 zY{nN$eAqi_g4W+WKLr$~5xjL?f?#i#PB6&{Jh~Q9uX@`tBMbWIyt}kfvQSa58JU(O zNBo_Er1Eqs1y9aL_eJ^19NOIkB|nwchF>L*6gW&()a&uvRu1hjzT!$H*o?hX6BSsN zr`?yZJ}wrPGsuSrS*G1(NGVq<`85G+s-#{@-n^1K=$k#ver*atJ{@hUqfV7xOy&0m zc=18*GJETSUQn6IZyC}}p`|rRi#Y*iIUOu%?d&fRpA5*wU(A8^^gxJ6QGSBVe*GMZ z>^UM*;V=BY>nB_baYzBLgHx`W2#^xU5DqKbR)waa2O zrkON`;p~k0SA*g?1o$aT{&fJr`3yLFHO`XmARl@@?aW+EUljo9{8e~O0QVxy{7V5O zAqQ+Qtnd)B!JQ(CibMtHTaH$Q%O3@P_BZj$02z(>XFm!cACA=oJO^Mi92GFEkc#20 zse%cvut8Ee51N}_0{nJRY=fC!0N^?}_QK4*48SMg7$jg9fbYQZRRWp-{2q>RnC+ba zmV;j!xXtbYU_d_6@d8#=y@q=59BC#3^en9iq|{{gAb5H8eRERpAUhCDqO;Z zk?puo%bw2*q?Buuwn_OAR?21euWFvux7eT50P2723$z@eW+icj25bWGOYm8Mnw(go zA^(6j@$Z5;I#Z1Yv+G$(O=jZnG}`Y2Sh$2sC*?8wgogePpzV_y@F@ahO-0m>1Vxp$!+mNmYHL;4A zeXfS4emb#C14#7eHJW^u*rB11fF=@?$=;*kucNS^(f}jErXzEy1lXon;yoIE3-Bv} z=lXnBLy|D1f>^3yc6>3!h2q9mf+1T+{d8RW667tn*3N<%f25EIr`|tnyEW?9V^eLU1F(r5p^m20F8S#$81~Ff|U0!>pPijv+^_;8*WwEE?<2`8QWbQD(~&-!S&AiKqE5@WiPr5Q5ww@@p@k+ zZN5-5%(F0ml;~y;r92Qq=0lIjjZKheyG+yO&i=-!j zJ)~(Yf5TZ)OFPSr1|1_Vo1Z7UOk&Q8pujzITi4F5)znVBTtZbrHM01u-57*W3qGxOlG z-Gp4x4x$;}_t2SP=Akna4xBZ&wY1=nnR(ZeFH_c@_k5W_oG*jLPbtuO55tU8Wq{8; zlh=O6pu?SlKw#RtH=;Dqt7@|iREEn2@6MJ^A zQn}~tjm!t*5$}0*5x=Zx-LhMwl2p> z__`dqqU&-5MAzjAh_1^KKFY!S|_Q^ZgegqpT4M+jP%s6a(qQEZe32S-qCIwCK&|i>vEh> zTbCnu+`1frv30pPD7r33xcGHB6ZJekG&@X6R9aA-lc^|Hz|fkVkD~Wg;jn_w$Ltpa z3!FO+mqa)@y1*7_X8HEtpiJA0x!O8|qRpu+m{XC@F$74Vh*+vVWnU{bX!kIvqozkX z`rja%g-?3%zL@}K^I-{5I}GQeRhl4E@eMFe(8EJfxQ%G|6FQNeAj>o$mL}B1-7pDl z7!v>3gT8_s1W8j@G)!K}D6FwuRW*$?T?pqd(>3YN@ceB}Pm?Y2ZXdd2$PLS|BVjk-|k*4r;*5it&g$EmPBYi)=m67T}>?XKj~zw7wR=c zCqtr3=wvQ~-Y(eK|KHKcB+Tq&xax0D?kDjt(8*Z!PKM}>=wy;mMyT!iu#@?)li}Un zl!Lm1=;jXrA4n&Yn1P~dHBmV<9a8G37@o6F15C6V;rlf42=puXUjf9$)NiI@Y#}B% zB75F_nj;ta&g;v!X>OiNYca8)SRJQXCe1Q}n2`;r<0NI2^WLVWcHG_9y$89s`3vBm zILBse)*5~D4}h=((V!!mfk?`<89iDzXub)EWW{E5X$VH2x}qMUpJsp`U=Q(2BaU&v z+z0^-@w;%6YQ7CJpzG2^GKyIRqmv^f**74W;RBS+k4e&PFf(sqo`9s1HhGfXck+a9 z?M=V2Bb|4uB#A`9icXcJ8B-;|=T4QRnNuZ6pDIDL_^FZVy^}P3suT+yqllX% zNzqA?F}i*)B}va9e`ab&I?6t&6`ivmaM4LeM!bs*O2#0@5Z$bmtmaSfa?>!Q-24xS zL*-^JPWYyNfaT^vh;GnetXsx=bQ0 zE__f}lLyCHaqjh-8W_9Zf$JSy4Y8s+y)etKA$VF;rno|X-Xfj;&xd4I(_4_wj6vC} zXyk1d3ZM_lE=V+E=6^xj*v$WeWYcHlUZ|5dkcGKSeuHS<_PM-^b4*)-O)^0fo0zbT*&kxm|e5 zmZ(ol2*0MJTJOicw{k? zI2$`N1(z?jQi9Lt%Q_Y>p|siQUymEb83{|C^91YBz-Pg===4U}9^wnMwNfLrIgVjco)Mk8M3n9?gu}cMdTthp3ShDtQt;eZ)J{LxW z=Rf!mm@h*kSi{$%5t22r7ELn!zupLZGrL#ApNdMXotQZHJi%AYViw*PRpAWM=)r>f zHOkQYP{vLeJfKl_Ym{^KC2$mj*kO)zWg{{#gQmYy_S&7_+py#=Rz zTzaIVw;*7G3-!lIp^w2a3X`xNua#6NAA;kXgrUjXCB*j>9FM^y<3rzkG2qYW8rXd7 zPPX?1T18CPNTd#Y^_vqw>HLw7K91NHi0#~K(kK_P)3Y!pCh3()mq}6@dbY%X#tU$6&65EQZ)oBz>R})=Hc{K)n~)P6LfK5X<@j z4m3(3&I*_ZVg8MQ#lJj^`1eK-S}U68oCS55oOsDV(Q&icF(XbjT~Qg9q0C0}lnJ!(MiQj{YN_ zGL$OHs-wuN4{{wW31iN`A)97?5#=r5;`T4JS%vN6q=xsMTAZ^l^Di%xnK%47@?lf3hd3Koa*T@Ly)F1G12bO45m^$>k#x84 zL>O0bp4lvc7U!99&D{GSTcZ8}SmRmAK}ilkLi5%1x*OhhW+IWTghiJ;{adrfz#PKg zO2ltaT9TtDuM9YOMcif<8R@7Ch1St6j%i|Dd=bIlgZVa$!gVhtDWtVu1Mw4>l+S6+ zW*6dl7se>nO4uEFTtmA#3On?D+q5nSrze7-+HHVdu|aRTXU<^>j%?FCPVUGx-81(v zVlb8A#l8STwdjkuANN7F!*n;3Zf$-W1~vLTH_tKo`z(a98TEe!rnkw2B@zGY0~WCw z*G`YX{8@-N^T?=dzLSeLGNa3Q8mDAPymukqMIT_7@eV}GM_V`ZOGzt$w?Lzvy-mKo zeqTFXvotstlGawqxauvwY!dbQ7VuWBvC1L95)G6wk7_oSAozz(j7wJ0(8l_{ZJBlE zGKnR&$86lS6Up52oSSj(=ZQb)t6!{UJ+s>C-7(rYdi_fRE0(h-lX0HH%zpkOlEeJ=XZ89+4D2y*B5q zrcAKZRbF1Mx;z`v1T-#~k0*imkX>h+DRGmF3vD-BeSH1Jt;@z;eGayBWi3BOPGZ zFB*Pxc2W>ZX2w#w#LADB@bm585_mZduYU~w!P!Za{fZHXbwc%oU7h^e;)&VG&EV}cVj_-n{|}3Bs!?b3U4h6l*3)OxzbBw<=6K%(e1Eo;a>3!f z0L9{ak;DWdb5c3}KA^e0YDX6grr!)!FkUvsT@0pF5JJBgOt67qeleIJ6G7U=V1g~& zH+nIcP%=>Q7lR3xK)ASz!GyB|CoTpPluQu67)+1?NWU0Na4KMNF_@qr|a^oWFji6lY-LpSP{|!Mek_Q)2@mj3ih~*_I%u&%C ztiwGU`gW6czdQTDqFXUOHCEGoj~f=*9{_)5+}ajwVuu#l=vyYZTP6OXsvgHpi+CBf z8;N~vZKz+MQMAPkdwi}&TQxc?eA4240(ylBvLnLR8S|~eNwZG=(WfB0S@VnYl43&Ir(Za7oB?+Y9yqO!H)S_8$Pkt2y z7uxt#^^H%W$NfSJecR!~jZf0R|FavP$w++stv7N{t7J~ z0;Fk`Z3PDxAgDI2vaRG86~V={%61V)WSL{rD%&c~Gn-lXw92-If9(Y8akbm4>1LwO zTUW8&U4yh%)s*YUee#lMw0A+GifT8`1?B66u}fwJbEzqvFK;+XiS{=)(*muu(MIhf zZmoy|rqZPx#(&__Z*GYHw~Xc<4V149-xKle&0|uDF$6C2?VJBb%!2zn@cE}1oGJw; zGtESCzhVmq@!6IOFwV!qp7A7SytU2_#{3H#h^|`W&0$d0XuP$5D~+$#U6A`;1leYs z2aW|h(9>i~Ur}Bn_P9Cb!~guH|8C8s2ede7BJG2E=sYl!zG|ZpjcmrUB}O7X8sRhP zYY8+IQOx*^ySR?Xq_5kagC3n`+*jMfq~mj`4^demMJIj37({GoxLbsMM111mTd6WW zR)IwxZ9bGh!la=)kA8{bK|2*coAH=Nv0&Q2?n%s>PnnjYbwm0HDB-e&w*%b;-ZGsB zmPtsNDCJ4KqV(dw?j#f}Apg6FdOi^zK}W}fumwIu=dFkp9qGPgN?nS+xD0Pi)J+3A?N%$VXS(m_-sV_vF<-wYXI2vpT$vl1W!4{Z93~nYm>Wh$CZ5ck6 zs`4)Ur*$TMndic~3*2RTMUwDuC|$&cFV(`9j;>F`S?qndwE)} zhoW^xvXVy`^zMRLNa2PxZiY+2>Tiq_rvcq&H%XOOlTZh(82REQ|DUPlUc!*L@5CH)n^ufUE@ zBPPjUWk(xlf=T?O_L<`(EHZ$P&3LL-ODL9k5D{BS(qA-RL+XwN@S*2t(&iL!B1O>g z#Y>1SDPl7m6$FqXw!u*Yvn-yKX(lVq<YAzs5~1-^@Ie0c|o$jqf1XGA@@^U6fu1ot)Bpj_!Dpp|4;Vb1h9(g-XEX2 zv)nD*BqV{bC+sT3h-_746P3j!ENZZ5KnP1^i6kH{m8htww2juS6(x1Wr53H$tyBy*B~G_v`z2l9@Z_obNf`@A+7j_|V8B+RkaR=(QAP^sc3Oh5eMpCnBcco|qVLwHtpWqaPy@{LO;0)!lma8rg;sFyCm);GE+QAicQ`Z6C2IS@BP8K9I$ z;${TSdnbeZZ2Qkr|WL^~#!zv|dl#Gqm|S$vA8&aP3r@ zP>-^Bn145|10dNhS0Is3bB@5-_i6+v>vXYV@dRQ2b7A=yk)EL3BE7aT1g{(idnLvw zvk!8Y$cNFR%pPoQO4z#@WeySdVs3ntc_;%#Y}y-^VO^&&W|tHr(6w2_mD$Fa-E|mU z9n~QktAN&yXy961Uod+USJ7(YFtfTp@34|uvvIgt!nWja`lg~)#u?_|AxIlqge4QO zIHl2Kia9REpq0mJ2yz0;cozGZk^+qG(X-&X$HsFq3N0KvKq+>wQtYq|X=peL@4R8u z-?(Dc>a(HEh;{E{6l9g~vwzxS;w6fUSrWp@+kr$iuEMC^Qh}{rQ zwTMQ@q(U69%=n{djSfJch+QJ%J=q;P0&75@q2UDyV%012A+uerJAXQAz{A{34LDFx z^iV%`Ku(2VXW}eB-FT$8m@K+-+xmV>jYmcA=o?7+3eJAZjK>7(A0hBVoa0-2NHeUH z1sfZ?0Sc`2`f5Mzaw(Ah4zO?HOg^CCsWJ_KjbREOZmioAD*iykr(aY7Pff>qYML}u z+BN{Tivnhe0*0%2c9N1aRe=4g7X{Ev3-v*}6id_^$v+3m|D!AeZ$xMuY3y1(k&N=t z?@~`4=r=&DF@Yadao?SWMzKGmImguV)u$;wn41s8chkn4KJ54W2{q@tW&_I6b8j-f zp56|q*p>Ck2`!h6A0B%o&sEV!A^HjtjYl8b6%j`A@<6Ve{an|p=q|{$UFHI{ ztaA$(jBU9^rP#HTPs%x+|0Grf+MkaV>tPNPacakNERo}Q22=!IdkQ{Q{D1L{#qcC^ zD*Qw-#h!djJl0ZA6l3CH+)brSNW>uXLk#sik%1A0dYl+jj}t>r6Vr>i(BpAf-2ltP z8fLOP-{Y_!z@>-}+n&aa!;4|_JrTFLB?zASCgPITHr0E@(>yFWfLC(7-85r&lsK?< z@oEVk<*D9uHqh+}Y|JjS1%6E&=H^q8&01{q9!7dnczEREEXL;T0`B*SjO&l~OLV!b z7c9g0Os~`syEUQJfIVg&=4K0gGm5HNwZ15@5~n4&S2Tj$8;$S?#x212zY{h9YAQlg zM9c`IXgXs~MQAS0($&q&F%sxf%t(CF>EczWVlpXq<;1S|u2>KXA`t|@l{jeuuc2$Y zKOYIEz`}7jTVQE1y=aWcm&M50Xe&U);}r)*DxpgVD9?+0=(@Y~85 z?Yxh~?CeKkcFqT2wtN7FAMXK}o%QSs;pm&gcJ{NcG(YF>$yYKmFM(}FnlEN_4J-@h zFXjJZr1*=m>XrO|XCs#%Eti$YO8$(u%Nn5BSjnH|=U&NwECwvOSMp~8`B(Dqjc1ls zn8iu|0!5dH*YAHGIRoqW^YbHwz4iMU4zAzNaB%&8hJ)+(Gh7u|zn|gg`u!v~uzo*- zf%W@eM=-E{KZAkw`xy+Z-_KxR{eA`~`s?>I7+k-fn7sA-Nt?HRKLg(S{S0{P_cP$F z-_L-zem?_Edi{O|y!HDTXw~cYGvKY?&p?}Azn=kb{eA}8_4@q`cPyYzLnd$Ni=F)r;7& z5WMqiKPBF@PI!-s=>QV?QSpy~K?Fnu*5SXM5s~+_`-B$D=LeR0v3!1o;xCrZZ)Ork zg|}G#T7-)U{uItGn*bV@;a7FI*yu(>|E&%;VDTLNEw~--RQR0mAp%dXZSTo-dF}=6 z#b+>T>ju4`J+MDtw7(y`uX3^cduTy>O02y|F9RVKw5QP8O`{^mg7yP3 z3p`8qg z1??Hy#gJIgo}t|iLSjLChTt0z6bsrjSR#UAL3;+PL{Kbf&tR3)(Y0Uxvkk_6#@4uvpNZ;Z_+I3)(Y`1?`0u&}#`RzykMbL3_HZ?*4-I)KLWe z1??G8bptLXvWPTVOi@G+BjGJ*kM-<1quq_m6%W$@86y!{&mPO!vuBV9ZjK?BvwuI` zuK_vJ%pUAGc#F|vHT&C;Ci((c%>F3c;}NOc{>ER-p5!Hhh`sz+%YG3O)4Wu6{A$TA z6whTEuET@XSRruzu|`3ltdBJc!ulU;6a))@tdZv1r`1P;|99givz^?D7g~GODecax z#S1Rb>U15%;`(Plr6zOSYcj(yY>XB7JhxImr6znFPpQ9$!F~)65Y^|oyp?M}@Q!Oh zh+nJ$!C$TcA%3w21b?{(1b^ik5WJIXK!`YR4G4zR8V~|RtO3D0&?47nWx!hlf&p(0 z2nM(Ygn-~05b_3ZIm#QX0UXA#ddx5WLrGK=9sM1A+m64G4z(H6R$0Ye4W$uK^+N)fy0fg1_Ly z6b<1=9mS~78W4=&8W7@Ft^vW@=o%17<_xR>!Lav~ngRWkS^%o2)VvQorDo87N*xG! zPpKIfd`gWq9hx{N*svJObK;R%*KY7a1N0y`y5!|OeP4#&C#{`o^f%C39MJ67We~eT zn1@V^tE56#W1>WidNK@QvA#SD0X|@|vy(lZGdF*X5#12^CN7_eipf*+f#Hna1m}DX z&JsRa#Y#epmN%|8zLz5LzeV(`Ou}mS$Ywm0VCkb^_dRfyV2%}$^i0mOm z-ib4HY+pIbwm|hSaPl?Yu@+Vkt2KtMRcX6ryjb5a_47c6BGAMPBV~rt_f=Xy9dD$H z`uXJ_uA)`>sX>9XlY?o87^!iAv}TodxI!~arCp-qjnXA5>KnQkBXw?|ga?#Bs$M}hK>II}nSoQR1B z{iTM@2k21f*nnYt&GxgJmn-93&%S?7+#_M@w_owaC(E?;FymPUykUk7efB=JwEfRN z4`h6J)Dij=*$$05$bq;XSG>!B|Me$JDweN(9CiF0Z0=C9A=dT35E(lf>yDj)^-_8; zWW*+m;3YDMj>IE~jf>S`WWGyd4x<7Sqv0`vSB(HfV2t2@1l_YxpF+Of8n@pEN&I58 z7hai67s{YJAq9c5Iw1vN{Z2?huy7}&xM9|uWASO=v^mqTzP2uO7bFgzqqx`1xK$#qi9f_wjd;w9tAYmLdXwZEqBoV`F z8Vm7C$+1}Kty%2oGi*@TKcmEw*iqOr?`-+b!SF#{rXj8>Ci;mh=_qAFjZ7E_@$+?> zgJp0i(B+^;?8H_pDH;}=&4u8E9v>p3YM@!U>TL`?a!@&mjfpWo_mDKE3>xq~#27Ks zElD|QP!U%nNW{>IU9*~N=E?Y@WqeWWgtM^R_mVkFxk#LG%%IF&qLwURcH@c#P1u^V z(U>ZuD?uHW6BO@TOdC{s1?z4k$n|(#E)wM;&c=vA1Ab1XQqAJI;Ed^m;`vKKY9H3q z&X&C4K34S`CgAn+ETu5q$E*KAoE)+DIt>?xHi|tnLk_0C>5Vn_D>y;_(bVSZg@4IFM&#o#H0LSv4oKyISd)Vw4}955zr^}dQs|-UM#eH z&hlo&%asO`N1DCoBl0ASS{;G1uiwEaAB0Jw<&7=jsx7IlqL(rb>w) znx!m~56i`(?BXKUyb_C?2fvv;XBYtMs-+OQNEHur^G0-Fl1ry7Up`gzZH#mJ2<1lC z>mxL^Nwr|fxf!zPYluCIoicW9xUrvcUNL!?L3{iG;;SA}#W%>(jgLWB3X*CvE*ne% zoeRJjrgHR zueb{rce5r2lo|b*uU*B&?naDxNxZ>>9i=cf5Z3LZLez~e$Eg4%pGA!By;70!5};6Z z>Li{*FEq_(QF=E~`9`6+1H0kL`I<&!MTR`%5F1axN00O^Wi=jzV>f$j;!J<52vG!Z>TM8A%x|G=5~PgOA0 zZXt>c*UcRe6iBTKP=~{C(OTefxnG3?S%q4K>8qjwtimZ&B9eOGAXedH(DN6ZNn!K{ z9zvtinTN2;IMv8p8K~NLnHJEYE)S~Y z9JNW%KMkU;=sw?0i%ulp&74ow`{2RRYus@&DeTYHHZ*XE&T|A}J z>kkw;6l~IJouP&uYJs12MO7EPJFq{gIu`?mZ{wV=3>7V?IEu632Y|*yw67+RjIx=v9A6oY6C@*{p{4q`Rvq@nuZ_m z*{PHD>=fbXvr{Mg*=fH-GB8YflLYBUGyJGMsmDw&FeNl*a`dB_r2HVzYAZb#InwM| zC&R-iR5WisUK|*aK0#xX!I2Mc)Y#`in4z{jDMy z3T_q2aMo6ljLP0Bl5yEvMKaFcDv}|8t4M}|TSYSLZxzXqzf~kd;jJPW6Wl72;lNgr ztZ`_oNTz3P70IaJR*|G2M7iX}s|tT@%EKm5W*kvH2AR$!kK$S9gqZDicNrZTG$4?lr38bJ}?<1F$ z5qm)LySftQ=5C#W{ly-d=$>-eAFvKBxxYQ2WZiKKzO-sJzCk;qakbv>7P|$~aAM|h z%T{KmVe>$yS%StB7K>Lcu!o?aRK@wjh(%%nChRK6WbA>9YMrq7#Nb9#0suP=5}?SO zBtPjmVX+u)i*ND_>^#WC61ByoK!^60LPS;KWdt#IIcYiOQ&(U?cLRG8 z61d95B2A5cG5xe^G8eW2ZWdbs>zvs8kjZ#$gEELDV>d)5k1(-3|DhvPCOHno-iWLi z-tZ9Y7Dx^3k;q8A=OH5HgUn_FyCpJu9JV;c{wK57tT3=;B4hAUho;ED#)-s*7de(M z&;BkE`zSK)XjLvg{9Sm4dc10ITScTz4W?nKdTxQtO%{<<=aZw?<~O+IB9iI@Nh%Zf zUqs4$Jf-Kp;&PS+`!JH;rQY7Iv(_${v~m%v*=%56MkX#7o2O4%wp#4Gel~Y#EQ7@q z*r5>{G}5NDi;5c42YsrpgfXQHKp9rw!A*dv%DsJ~gY6s3F-k!_1KT%}TtjH8de)5X z8|m_LZQn?1&a-_Zc5kdj*=a6Fp(_#Cy%C!?5_Prh;G5hHxa%JMCYO|S4}X&@h|_*d zPsI7(y+a|T&9!LXygNR=WibOiR%X>5AK%`D zx~Iv>{Yb+?}&IDid-bYcQioKRV-w)O`J)Z(1*3b~<-K$BMNpV9*b- zy!JtI5b-^hhy(j1;gLr1GUK74#Jdi|)E1oacJTj^Bo|gnU4q+3EBGMm3Zz_$vxh7n zJ8Ud89_zgb#q!0-JD87)(R{xLwOIi*!>z4unRU`6 z{yw7Z`5aB2!ONF<*@#Pmp!X}njSB!;Z2E8(;XXoEX155RMvdY)(QW%5eC6_UmDAKW zQ<#L~`HYY*QaP=~$oXx_GMg+DtU3UILzt7S8iN~td?;8o4>zaaB&#sb8vNe!I#zt=K&gqN z34+7iT#jM8V8b^A8-&<3l+6XgZb;^>-!4^}C^J&OWuT*xgi$>xgmr>2P@ zmxbVNLy()oryhkY&o6l&Wju}GlQ>01HO52*DtbZwiZ0L<9R#>YMR%gO7jcS;zKI)7 z(BSag10H19(xjWq#GZB&zmbD3E)!3!-&K=kLh5B0tep zn&?z6qW^~C{)$r&odTZ|IC114I`BR2T*|3!fK;MZk%5#yfv2&>O~%~8tw7Zq1$kQa zMbEg5dBUuO4e1ixAEStdvyeNljMHknt)T(Vh(O*;Z!#Cq{?ai2{8*( z!tMArG#`Mc;S@Hs95+iDpu4#oHyd%17a>iZe70z;4kHhCtBICt35UbnOtUR+k`M#v z^>08KU&kp#I?fmA5kjPoBjquiLR-fRZG9fWXBb6ooglRJKM{Nzr{J2aDinJj2#KZIO@k8@Lq*@KggM@~rh2pEP zXU!g8fMNOZD^73VqbYnpif=^Y-H-(f@!7h-+ZMU71hmNeqKfs*maSY&8gR-7(r zxz8N*B58RAmyD!EB`HEuvNV#0RV@T<519Q?mZhunpxN~Rr3=)VA8N2c#K^Ij4kN8O1)h z$MJ~3^S|bnMax#nm1tKsc*{lDMP@PC@ic(sb{699B?d{oy`81S&cbb)DY3^8Of$Kx zK~k*>Zo*EmEsGmgHOWt7oswSvAoxyzm;2bBli0FV)ZCnaJH=`+2XgJ>(Xh8#oQPY+ z@8pc>uOjvY#7q;hlU6SguYjDg9fdDN)af`Y9#m@oQ^0n6K?OD-;D~QT9r4wrW6m{e z9V|~NHu5x{R;IZSCX(8Zrr8SLwG`(rMb>N(&Z9lQX{I|c&BT5&&BR`qX0o7Z+FG}> zOw)_cVVYjr9-C%SF4IirGfg|&H0^yd%`RD{naORM#bMLLJ1!lYrbRolXn+;kPkN-)W^1pxxk6j0 znXaKv_zDd1Qk>noFTmc(T`F!Mfmha7aw|(SBmC~oNN&g3qstK4OwmnTMLXm}b)#p6 zil)i;I!Fby8Lt5pmznj=xP?665`%1E-|n@4TiCPFWmIvH&)=JLJ9uu|Qz-RC}Rj_zxAPtDSOAv4`$6YwXkb~Q46QgKht;rcHoY}>K(&zZd1Id0XaM_2QTy{m1)*=e=NbDy%BPe?q|5wsoqeAE}?#g zJ0Q(S3{w)tVsS+G;2wV^W!W#H1U3=SFP3EOhMaSme|H^9FS!U8`&FVTxX-dzu=hF$ zH%}HH93CM_;YFYM|7kg8!6M%7Fz1n+vAe(+(>yI zo_79wsn`EsFZIf8EQ24>eLj0!VkjZ}^#UxLg!Of}aZp)FGwdF#q$p=yCgYtlv+8Q7 zsdNbCx-;UUGeQ^fAd~naz5PR6Dh#(T3P~{5WrLRB%lh52Mm5a$qIsAApIc7ILUD!vB+q(gs?2%axNn%43JPpQE$F&V83%_gla!+$8 zVGX{jXu?bXSUt@LFatSrB*%;laV7g$2C(F8iz02BBidly>NuiK;a4GJ!B-&zOTO(`m?Hs<*bJsak(ymPV z7&rDk(0^Opi3{VgqBpJ%E!bh1m^+h08N6x1y_VtA@EuN%;)4K&ugF#F=)3{YG#7m1 zPP1G;vJoHMRj|N10NR2YIn=?>Y1wLg)*b&^H(lj zwqy+!rvwSBSDhuiu#xQ7<0asDfH>%&Q5=V7^7}CjsW6K7Fq8cSQRUdpCs?0i(I#X! zK$xosT?>sWlF$p!n<{WJYOPU2+D9T-!zd01$1&zOgpOg%lvO7$TfXQ>yd7m6#mX;6 zlR7s!T#5<3HfwPWTzrTAbRUm)r+Gqe8t*dH7)yBJpDujN=C#`<(`T&g3E9#j$c}DvIQR%h4V;EeFc5Ng8Gpl@`Dwssxh)_ zj<*}a?2ydpKUhd^K!r&LG4H_cCWI)tQ{C+{Q}Aq17l5$_gTp0Ll0!lS8phB*<{@RX z%!enZOUJBBbC3{&Ly`lc7$#Ies~rh7|( zc*W3$ILBAV)7AF0GO2Qe#n+U0YtE}O`0H!H2+9oaaFE&X+aA3qb`MZHN@^dT%Bn&H zx2qi%!-`F;JVy{UMkia)cI=vr|mB#bRJ2PMkVR=-~Tn4tt3@&#B3xOf=ZxzS8h zlMWvYLdQv+M3i5HBPt9QhQ$qegZG8X%rw}gAe3MxLRyi?Nve3mm@Jv>7kZ@NRyqwk zl=etMr=VmO3%g_RD8OXKXTcl|!DJ*1X*xz3k(X&|P?0C}pyo~sbN^BkhR^b+dpabf zLLHjnfr5r1Jv`83y?7C)7YQWYvXKMCIzzXuW5u6oCx# z5-GF7kwHweRpo?ZqQjfx=?uZ@({r7Z5qn}9ntx(<*6}3L!JCtVr3TBaFN2F=-RFkc zL2~elXLiLIX_(sK#(eK7oiG&14tvjlGtO-x(kV-=F7@1U$e1a`q@qLu!V+aA&J&_c z`QX(kLkR(fpRM>sQir?bQooG$rNy+_lI)sGr74w7Ojj>e$S%mxGPV&)^yL9HsL;(z z2ketov4f42GZKn^Shd4A^1_uKES{U83BTI3^`x}*RIVzg5g9SDqOge>X1KgqPzj}l zS-u(=rhkw3XR`Tkc}k{qUUQCG<%5&%J;38jU$pCFkrmcLsg&TLYTz6xMpt@r70rev z9%%XSqN?ggp!X|#7%A8~Iv?iY)t8v;L}*R(qF*o=jh=#R(7O1fRSyI>D9Z%&qu5Ut zxk_YEx$)tnRN%HXE<6* zipBQ|Cxu(0-pU^eFU1=72}4Ua*S7{vN|t#ZXy}*i$y8&#&sq_K(Ny=LU-8vK_z=Nx z+Y_;)t=|>BFuH)a&w8>Q8?>{d%UDYYoOL+bHUwMNo46@k@87cWg2m`uxf(JD(&n#Cc3$(|iFQFmEAEiaW_5t7_h z-tM{8hFRK?jcc=uX>MB5U|oMWfIh$1@pZBVqWk|s6~Smjq-jFGRne>=Qf{Jw}pvcv>)OT(Fxc9rY2xsG!>zpGJ$_HO|}7|{ua(_vbFx&0KBHoLdlQ}?2JNrUel7%%scBzps4R-e-lL*puMXk6{9VgFpdV}LSbVKcH5Gtl!6LgnbN2jy;L24_cW!z8ssLJBHf#89Q# zOg}(3HaToK&|~(sFsx3xi>*tM+U9q`1HJ29ULY`}L))wS*;@6BbQ=<9_pavz1II70c2^m}aR|W;G#3Bhv#s*;0yGsUYvlyo*^wjxg@!l*2LbbHr|9spRh8J1Sn!Sl2QG_q)HzL53gN# zb+}1Q>)EpYUOf6CUhIIN!tV=kPc>xqcIGjOfWB}RE$$2d)m8?GA$Oa zsg@Co_PJl}>i&OVNXjmKXy7V!AfVakopNH%3W!bgHZjBOJ6zet^wpZv8DfMe3>Kq? zAphhfBwTCQRH*BI9-y< z-DMG?WoNNG(AkEPhqSw!ZjzPLC34x}tJL(noWSt=ds)-a(gXGMP*av_BGeyo2JBJw z?Ks@@nTNh>R7v{EZX1?O=B#Ix;Flw3#~16*mpca->K!;0mL6m!LRxwU)gy(Fc^VP@dT6E7vB3B5l?s2fQggBaHAwzKP1uO z${r)h_Ecqn{%Yr3EfiX5jvkl_R&wTC%sPun|Fj&@6h+0*h5VNt>5QIr)ZW?iXC=Z6 z6;DZTsg#;_$g1>G2;=bJPHTRMdR`<%}5P3l}S z2ZvHo*05itSW~1~qwU&bjeNWmU`?@Pjo$?gwL+y*5M6U|sLX2(LKazwaX}?kTF{M3 zidN0nZVo*{GfWDyhi?`=wFG)~Ab|+$_f&HWNI%(+SMPQl|`lH zOGWun-%u(-9EO-wi$l40*NsSSBPwJ-G!Z-x^6gcQ31Q>^Cy#`U>f#gaZ=iOjX?~10 z5I-13@SRlL^mC@-em>4iaq^v=XK}{NezD?;|G}NfwM$G3z%hWf?DAvdBJVo&mdE!~natX4h|0mFLEFkRE_ zZar)K*>V0-hK<|$S|7Y@m`<|Xwj9%X=E3zK{3h45O(%`_YEA3ub4N3u$0%YPQC*@x448kp9 z;;!|D3!PE~9CwS85Win{swG_9o$EM1fGY=fx86ywmA8ukJKjkP*vC|!pNU`d=dU|m zth?6l06kXv&rT1(#N4&>oIbee#bS`MM&30e<%qebpr$)eX{#L7s&IM(&T`*&dWqlX z)$fnW1ch!3(#~=wBdyDH+#cb$0_@^4ryFmkqc({lWvHHsyQ`dxYbF+>;@@143`9

EL~$Mltskks;<@>-h|@)hmq*2*xxSLKMonJHsp?@!Z*1WV!>P3z^*c71Mi#s|UWgoyTS;)IsI(r&UJ3J}FPK4-&gBcN3cMgX9OoRI!Uu?@ zUd*!*G%sS@6}()}%eQ#Bn-^idZ54|0azVJ0Ld_EQ3Yo^;gT-&^PA733m~bXYI@L{# zaI7UlWlO2ObIXO!QkF;+*Xg|0^U@-;wl{9AVM5#xzjY0YS>srZPFHK)g*8sC$n&~$ zkoYxaxD7B?F?8K36UCdiprnOP8CVmCRhw?P6EBJ39ZGW+ctYMx&&M146V$aEULQXK zXFX2AANL~MnO|k_T3&A99*9$v7Mp=P^CVt0J^6Fq z1+b^Qod3y8f8j-lqqUn7M+TfKLq*GC_zIyD^c;hU=mwmUo=b3NUdc;Mhr06?!2W@A z0NzcNx-%Yk<}tkR<<;0Jye#IWi5I@=s&q#adkH>orJ7etVOf=J2sD#=$11JIFHB^c z2Hpz8CGZk>$70;U3EHr07%d`~iW1`RQS^DH)di-#^mWIwFvJ!~7Ia5Bl6Yc6nQ+=E z8s%K%Hk||917-4bU_GrK=4Z9gMlE=Tq}8%m5mVb;vAIIhLQY%V%ue$9$Kb$ws*#?0|CAz6{0|w-yNZR`lmG zm{}vQEc&8BW2m%&oXHzst*0jC+9>E_4}tlb1j8!rcjC2Bu+RNnT2M>BCD6 zFJpKS20O7*Y0{6``+*Kx;};8UnuLHgVVqOM4#5xBgWcAIx1iTT&n4&IcDk_1W8fzD z7szGxqVtD}mz9;vW*j!)u9CNtoD|!;_eIwLDu2RUXH1Ke9_Lh}fSCIg359ONwSY3m zp_q%5#au%xX_@Yn(_zn0U63W>_YgselNj&R@NSXQgFn-q#9DcG5^|g(S^<{{aLDd; zB6!ernd1oOpp*3-Dqmc`hROsAtTXQ^L)%^E44B~bpX*f2LEJmS;H%gy%)o7_)9(mz zOP+`pe=!W1O%3{kjfpCB2_%Cu6J6VdXJCf`J+GSS=)^sDKAQ4g)+6TYPVo^=uN$2rS$D9z0y(#{5MU}giIVG;O43$C{hKVrPb%c|e;1n-JZI6|G!n8XY z{VnziQ8@a;^qBXHdN^i@W1+L$eVnyy9DeFuR33$ILkm30`Y!q}f;v$0b!V{K-6^$_ z`_lD>*=+S$C&M4RV zy8$LyH?E%^rs^R<)jgUjldOfbMMu_p`+OM&8{A7|ToZ2Z6}^FO==+nxQ=}FAP^OO) z1tielv;KgFwJ(Dg0?Mk`0dZLU+SoN*lxPF2cb+J1s?vo;BMntN!aZBqvK)Z1H=%kd zo$6)H0ZGeAmT39Ejyv-vUN}}}BXnZkM(6{8VGM7K!YOhm>u_hD#>;ZXweZr)%jLY> zz{^%%?&C$YHF{4^>jBl@n#&O;M~XwnL3roXIAbQ)&<|SflTiKP80vQy!>73WnCMRx zxwi=qEc)731zpu+BElT+6vNe9+c3~It>(ly>o-O{hfCI->uZ=5uGjjhQNvd3-t}!v z=>B@nqHT;NIefR-$G3(-VXTFZh9GUX{cXe^e@`g3$Xy{Q3Fn`Hf;bxUODtu~qwDM6 zM(NMcO0DC>{RrMJ#w~ixDai7x==D<~{CqiQ58mR=q+AeqGEO0p^r^Trm+*2X_x#$(cwv0-XyN4((WUw>eQ_J?@k;eufOW zYvI}vU1Y6+z=5`8I)N}xBhiY6wkH}|YuQcibhpJ_D!bv9yVmK-L446MLUoF3$}q-j zHZe$!V|s;yw^WTY@DL|;3|Jr-fck$?Op&DBV?kf#^THb8V4MFex+g$>;GZROC;pDp zmqoB0*dXf9p`c||f)VgRmbCyb*0p+pWNSL;#UPwaau>Iew^l#;w^M`hqD81e^B_x2 zyO^WkWW!+5dbBuQ-iJnx6Cz??rORB1PNZd=^sN|y_E?Q-d|PBsyIa`6#@%kHMR(GZ zsHwk)qmM?@ZCTvO&hb#J5<3y6^e#(qXP(JR$79N80QM^{r;U$xOs=eoDx<$NU#);@ zC0TnAHv&83b!JSt0!3VmQ_^z}3*64j6xHRPk=M3*V+n+jIKPNfAONnQZ3HlxsE*!0zXk$OU9iB8)$IMgWbWR zsEfpG9tnU;JJJ!oVH(*ocH5_sv4T*VliPycm^GaGR#J15Ykhw`=6s?wBlA^)Ue0R) zyqx4!W7u2@^5`fq)8ciEpPGmQ(e>k;e%5r_P-0?! z9-?D$C=7ChI}pqkPc-|!*tv!MR{id@O#Iz_qWekp#O%&%=i>-5} zdn#1q&PItPHSTg&pS6Eq^sqc#DY7oXEEzh+=NFI>sk#__FNo!z=cD#1*SY{fbBp^+ zU1h;p^pt~oSY%xz%Kl@avMK-TW!Zl?KOp}$ycUb34|S1Q)$eY#nnD9wq1+v+z$XTD zU?k}8Q|^r8*wmcsUZzP`;(A$Ql0CB`>uy2(PtFH4tS+y(ekh55;`|n0E$%QOF19xq z$f-u~I8^2r8bwxR`iZViqFYdnrw3gD+cfKHvfSz|MtLh*D%gIbd<Ge2*tjP^CK3|{<2$!B`nQqUJk}3HkOykyiDgsP_QeT0ve55>{t_= z!W=Af)&ou;iJur9aRNPlw7d0U4)2N%sk;v-pU3%Uq88M3!P0$ZZ(a_`IaQd>We#b zGB1l6=Zr^7u9xQH=u*uNCs6z;s`wiG=IranUP2LXvluaM>4G-^%|5(Hsq0#yREKS? z7;m>=tRy7es!Gq_+Mkc2uEqHTPJto*GZy{_UOr}=g=e?15?*@n(w`TBS}&$#Wn^m) z5kuk92ZM!zlWw9qmPVa^t7teaUkz=3zkV&wCvg6Z<+G+K8_(g*N?wNH5*x|OBwnWT zG6xr{fp<%JS;>pkLd_A?3Asp+Wj*H3B~^ky_B{|en`iMP6BEr$se$AVj>OVq9KlY% zHY4#gOT<1#m2Ig~HZ@w+GQS*O1c`5vOd-djo~#`&$oTK${}cz{mW)qvpr^jBswkdl zS2AY2IMh>jE&Am;TE+hekFj`6&XjyDHaS!IRcmsl>MQo-%+O8Fq)hE4?xf7vi{q0r z6E`F#Wu{(~oRVobW6!5DQzt#0nK>#M!B52$xhexs8Z<|Qivm8y;E467PQdf6i8fU}e7rc0#g*~;vDmpPK1A>Q5V>asLdT@1_%&fx(#7(;CtIq# zeD&Z1rm2`C(a(s;10F&AZD!qdsp}KpaATLGe)h&seT0+K0$(ou9EdX7S+066LXXWO zSZ*D{#80?(1$R1V=K;8jDX$IIq)gRC_LNLh?A27J3PP)d&`O|{i76D^Je&m{ zkdJTF!&czZQTyvF${qW1 z3blSZlQ=GYs=Aw;K1tn8%P)s1C}SudE9-fwFNsn`xtEZ?7n8pm>`9rS7dcZhb+MB( zLxH6VJgx+fOJMn^3=YbZ<~_eH2h3Y zYq+{1t;UP zw;vLE73EuFD$2KG$P#jKE#Uny5%rWFOBv@WP5MMpY)m?0<{gThQ=pg(?z_+WeqPBy4bklD<40zq+Wgm}+ zw)1@XSijxKm%SQV9(|0>it3}l^Y6>Q76<&jcD;RggPZqqlPC~3(aa=xC)C1=GgUE)J-r|6Ch&p><=B>t~k0~vmiE9R%8e3e0*DU)~v<_%~;TJ zDQKLEg>SL9(ekF%jm?d#*ETLPno*Eg?l8MXO$viCXW5EI=uRVa1>3eZ9X|)6=LSzl zE?uyC!NQit)ytY&mMv^HntTOPI|3`w7|V1~{_?zH1WT}A|I^I#&wM~3xn`` zQ4X^ockl}ALk=u!P%wU$tz5W#4OSG*pLB3j^P)4b!ej`0K5BJwC|pwP-JG>-<;s?t zr3Uu*!X974vGD0~gkXS;0Kpwf1jwSs#kfBm{;;Ka5$>?35jF_M4VIW*N&^6w7BnqG z#KKi82qpt(alf`^#_|Tgz|y!HyD-(y&sdl~ZvRg6KM&tLId~l3N1a7O z0Ot?UhViQ!WF1#MW|On;tP7MBxZOwcT9!9AuW8zM;_^FS!$aZSbmTUD4bS#{`&ip` zE8#yNjeW0gprpXGuor?>g!1L?5MLY2)%Hj2Q$a`=uSuMw1=xB(+V=jcXRI8os(w zvu(c+TRa%5sD$=#{I%Jd-Xo0lz-qlZq)3oSGDjFrveei2sz!}W3dcb)AZNG5S06&~bxmZ!!HLF=2Y#9F;v^^}3vm{Hf2aH!kH?Y~aUTdKGa>MG+qw*dmQFSl$ zzg2Oy<=*E}b03wcx*yz|x_3B<8W3)wO>;%XKlA3hb9T@HU4ly;z~nWG4*4T|RYOBy zOWpm$3gN@D@nnbh!H0=@2v&K!Jnow^3xW$YF%evm2;Cjc)6dlN+uE^pqPyZ(GPu#! zeiT@N`gej{Jpn5udxsalYl?=L+|F7eCj#H@nuAo7dYn1397Ibw3fmcg0_gGyH1& zXK}L*`*PY<2U>|*(ym_nGVJknAh#}m6$lC-7E||gmL>?bFSH)EfcmcZ4wlT)?8^~l zHC1jAk-TBfb`?nw)4tNVz)e||t@0hKE%tNnyTLGvmO$n_k!H>lMWgV$oF}n>h|Xz0 ziGs`qz`Teb1F{lJb168|`lR!QW3{Z`V!z?MNx8g<3?eMD%n_9UuG>&7sv(LyRiZpq zrWuGt&J*oF5!Hzj)rqXq&F;6!T|t?>A#rWON_@J-zBX}VLUZD+_y=(j`9b`jWY3W( zGN?=vgMIoEpuW+(nF7Aq#L@t>>}}>F3_W5#C70Ggjg~YazUeF!Qwkmii?NMzB$ZeA z`pB4>GG?X{6k_USOnpFSs}>^X!plvO)xO;PCXs*Byg^1N4gfjeW-7RuTO`~}4W}>= zm~iz9u3o{_YdGK)`cW6eNk-OPZpKFViGBeRe&PA%Z2SC;_#S%Q79$1$+jS?WtT(=> zmFMJ*ra4nffiNa$C%gBrowQxB9au+=#4#*(qyRoi6YZ^F=ddZTG@2 zn!iN2cBW4MrTHGh2`~H}N={jeb=Y_crtFhqf6cxIwhHc;_y|QG_KnV8@%fc~mwOjJ z6UNVfy9m9WxGRaDCzGuy{M?;-fJGIkqv=B)|T{X_D1I&7kqxlZH-&aEnDo?I4GQr+MA&Xu(XmsX!f1c$?sBapZZ1i-CtXo_c+cbqK>I1t$v<0UNE@v( zL+U2oEVPPz&cqo5`>AZnRzc+-Q58w0xD!P{Fv^A%Y5(3@XH(ph728Pwi{tcd)sz?}-17O=0k`=RZb&^O*Tln&D5)O_uaS zo2=_B#9wFKuOjZZp0YqU4tfxA*iW0U(M7&yJ{W^remu6x!Vk0H=YH!+wn|Sj+lk;6 z4|~a_Ch54;eAt9l5eL0D5`G!`OAHI82_T~kh|5j`vL=LmD+bua8AzIOtnXzJXADN% z;IXmQhCOz?pJE$h;V(su=YRW{3++DR_N2c0rSOv5jJ2 zE53-#y2!+rsI%;g%}bPfyTrVg@%NhFQ4!xUpJT*x<_;CH!+cyZ(JPTR_PkYK)gQ1v z9ey^)9^lW5u{ZhiPV58z{3CWbx!Gpj#GhNq;yUPqIN081pIG916*+y0d8^>~cg*jL z-yPWihlg2OaMSEdPkzD#{W?K%3X0PC<#wqQX}Ya36K^KI<8! zo6lIkV8k!1U#o~;TmQ|7|F&MWr8>WA|I$XpFYR|!#5?x;jCkMvyNdX`eW`&&5B>^tM&%}jj1 z08%!wb&_>%ciy5IzUAEMN;8B8wY#@qY$ekla<)6@tUc+xf*-2algbqYmt1iTiBE+-Lus-A**-ZT5Y(hvp-z71`_y5G&-0yR9~*$})FauUlSa ztsmgte#+X(DA4m162)*%5Ja@?+KQfxNl*7=>@6D7Td{WO3k9V85W&E<*eh&i$u_hr z9^2T)NVeIp;6B2%*cRd^w~(rrianY+bB9V>YTYIS23{aC6Wk08g5tfk}mJ41xg+nhY8yGeOW`kDG#0@R59| zCbm(8GO*dxY=a;6W>=DOtUMJYpV|;cPzeN;^MGI;69Sd2L?tV~2$H_Y1XNNUHg->( zYge9zwQEmf!d#u8(*OPQzr_K5AEw1_|1h@Q60=%{n8Cta&}**!Cg!f-Au!J*CYOw5 z!5p{S57_ogc3a$jH@+)n*k5zL?ufyuAqSHjc#6TJ7;R#x{~CaHxxaJ8V3`BBOA?rJ z+=cd~J#l+NjN}aaUX0(xxXmaFBHM+Ir@h;5b&OYo(aB1?>L856&>OcOhD$?Hu{&bu z8f}l+JK&QI(Hl~?ub}5|zZbg^%|^R*hh^W1R>0nYHULom?Jnyb%l=QaB$$Y7!_e=4 z{M%jZ<^CtyGK~5+ItJ+RZrhzZ9Q#hRq2SglNZRJ#zJfV6`#tAIaB`dbkZV7R-iQ4L zn1g1=yG5lw_oHUMRi&@KI)Ir1nAQ&HX#&iy4q&bZOnV2o?gC6(2Qb?K1E*H7?r#8Q zdk5wG1u(50z$8(prVe2G0fu#_U63@xI0T`$L=5$;W;wo2Ty&Q4p%+7#!x1u2vdje- z@zIJcV*Fg#>%@z}=XC3qwMZTFaZN`#yE~xpbinK?08@jKQLs3uSe7{m&=XXQ{Ha-l zPeD}-YnjVS)STYjtTPGwG6(9Q_gk~hF9)1#h z;^68CmU-D=!?;C+gO{rn43<9y%r!(AIc`=kSmX*Y$Dw*EA^>^6isBdAmRXCdlyv~a zcv8WzS+mR$!6fhg6$O(KFkJti-*ktMUnv-RTMKLSgi~ecT?KL5{8VZIG%4Jq(l}Z#7q!A}G14*D3KqHCM%u6w#I`tknllcjRhQC%F18z)PgU{fK>2lXYlWP^+XYsJ-Ds%VIvFS%M|}vzYP; z0n)G1n@YcW0cuFg3?KBX^rq6UPROCH*iQ;D^rq6U9uqD=h3Hqwu|j^8K9inO`pn+I zrPs;ui=;oK7nJ_+T|XgkM;&Vi&GJoyL~*hGVyjhxROv-=lXXyD4**8WD-%Toc*<*M0eNXz zyZ~4!i@=wu3g4c{qREp*7O@CwS=8ZP$|7om%tcuYJ5t^ z?kS5_ggTPN`JOBe19X%o@|jQcC7*Lo%#hEl6n}Erh34}+NSA!}Ke9!XI2!QfJU{W3 zI**=k4v9u(L5$%;+eK$&F&|l_EW%|lr2XM0+=E4^SClu}A8tT8Q}eY=l2CS5O;PYjLN6WMgxG3^MzHZNCN{K`d%3{eVZC}>`Aj%)g;*Xvz z^4r%=SXDjL(SV$K4?YTn0Rn&$;c3z}Ew2 zn~()yMD9Bf(*%y-AJWOylUcW@VS!=10ageYqoDyY=b%UA#jv0!P);qlDtkLox!(eq zuq^h(mYa|pWP`#IT*HU9#hoX7X!-Zg= zQUgyp0%!*tr>C& z`-c^PiGtB*?nX{j4K&x{n%iei_3U&63L)0;!9K|tWGz8-uCWZE=~p*HjMA_Ecenr* zqF<#A;s@m%loN)2m8)ngM4-U5eN7Y=M_hh>eYYp})rw5g zzGxlMgEHNDM8|&BM0c;FeoGZ-mGY_rqA1~Pl=kBTs2BWT(O>969Ow4q>L9vaMs7Nm~oRkTlVrV);=y*1H>= zqUDDV+Va7k+*gDXRfu*vu@iECz?1ut$VpCx58B`XfRS>4F`TGEw87n-ko!fR+|^nW zfztH1jMBbxx2I9v;K&dR4IF!7g9UX%wJEJA8`Xoolbc{f;Lz>ht%#HDVE!@w1Aw8W z7wXe?ov7u0G*Cu;Cgr}_lRMTl&vDR)--%QD@GAfjZU>o#x-s9=jatOy_Te9Ty72^H zqIyW(_^YQIkF)5=LEWeV41NmwXRcZ-{c}Aa!}Mssah<0>{u&?}p{E-llZ@${e~$WI zJ+3UI8^lRFtv^!B>lVaB`Am6z3+maCe{S<+QH63yefXe%eh~HQ$Uol?n2yFEbp>Rh z`An}P+d=tRv0gfbRP70$TRSm+_xT)^1@V#3A0Mgt%>I0CKEK=vKC=%%Z(*5LxaQ{b zpE|+k(vz@nP3Z8!p7}{Ao*cH!XuSzd&;Jk43Z_K(Oc+|h zwgOf_81~HDflGS+U5E+yK(t5t2pFVC3NNO^GI(&-tsQPw=yOhLFtP#6Ho!`|V6K}H zvrFglJew?sbw3s`s6^n{6J7Oi^gzY!Crl?C*sSt%q+R8f*d#dlzB;Fb6&4 zvUyq$V+ch@fzrZFR6!oZV^4Ghg3c3MRV&Rb?g}^nAEZFAOi}` zI;cMrQHb=SKgvp#LF&)0PUuf7;H3W4AtO2EA6kEkK(iXz`3ov3Fzusu3r!%O{rviF zPvpKGnWT>j)1u3wyv}IQ^124m)PV3odA(Mm& zA$MM*2W|OIPk;C|Y4o5ivnPX}ochBYYzz2~nY88nqkuV}N7^!`$JAn5L5zGtwH<}9 zEy!idgxyVngHpdO_yjS#5b4Jh;kFi4_WMW&Am-f=%s9ks55desOdTXBb7|iq>0#Zk z0`-GXhJWmdKJP*{AV4`&{Q}gT)@Rm>)w9f@Q5f|m58vmLx>^gEXxl?wHJh}qmcRgy zij+lNy%^mGsjH_%6%0A3tM8$oAa(V;oG{eYR;19%^UWx-Z$r-{`!;;9I(kr_CxY|R z*OAZEr0_vqeG~*sUpEL`h#u6{rcUT8_fL_!`UVO?hQOiy;ZjiH>8e`WOoM6Nm=ETV zkX*VN)eTB5eCQGDL=+-*Bb=^7lxgX?TBg?`npzS*DAV6yGb1U}{O!&*PhM3hAj(F{ z;#CN%qju*v0FbiC|J0158x#lrkazS zAr0X}OQ)?9~h(Uv#{x!LZvIy04o}Lrf?(=I_@I=#bkkBE9!^vt zTIEhp%JdQlWF3@p5jvYv%K4v-o(nUPQqJGI*jYfzM9bEJ%#jusrAJ%bH#|*XuBK4s zwZ%1c!s7N!rcvGyJ1uU;dD`NBg_saI1Q9L%VV*2lujoNp&;+E1tU@5S#hvcSB7aY> zXNi`@qftbNq4(opSD-9lad^>Rc{XoRy-;}@P*ut2+!jaR>j2X(WC0kF`*y_a4#hl% zm^OG4zZHH1F(s&}AH%ulx=@UTal_6~Oc`QI;Mx3Ke0JLI#YA=E_h3PI^t&haUI!6@ ztlVB*jsAvt_8yhH?p1PZE$w|dN`s@xI;dkq@oJ;+24)lL{6H3j)UhvlI`;LP%F32{ zDGCAeLG$;CGICH4t8jMIQhyIQWlQ~fqzp#TZ)^so(r-+KRkOtK!Jg+TPzrSgJ#)f| zD#X_O$DTgFofC%oTw6e&nTfuo*7Ge@;5fP9A6hrCn;`Uu^o;Nm)!k>N8|vNfb`Mts zm9clYs-guUhWwddfIr%=zU|q2c&SMis`;~LG)GlT_hg#DFFQ8QhkRWVu0TD3Z& zb^gS;q#LbF)g03-ca{(j4mS818v04|W@;e#?g z2(pkeWlt!2(2os-Afz8VISPOn`Z2zNQ^=3eNA>Ng<$fV@g-87?nEq!O5J|az%BaXe zxoRpS5l*?SyW8 zzZ1IgYfO~MHtsnPObrMh)QyFZm(-05^XkUAo^A{e7obAajdq+J=|;P!8#f_mZrxal zMo{X;-*V!jZtU)aZfxy@ZcIQ~0p0M|Q3Yld;I6Q;|C56|+HXi0>c$l0+`oRKr4zcb zqZ7Ju+c&gs+zu|}_8V`**Gb*rw}a7xeq*br8%IY05JTPI3{^+EF&?;Nd+{~o%B>p< z(EpLT!Fj{zLEWfAR{TH~2SouGPlt+LY)5`$9tx4V!D3b+NBEe9n6?7Cu}bWc*KBz0 zh1cTCT%?fmA7REuJxO?ugfw)f#n-J&tEVljcKFb}qrw`@-(3V8KSt@f}Dymh}49tFauQ;sR?zR&;;&t+R^Cv98VL%i|uM| zejR1B7tjR4eG4$VQ4ania;Lx0oI7;-6GHLV-lydFpn{ZU^pcBTii0maK6NPgYe z1sJ9ldIRU{aOSd=DFSpP{)?VT?6cX*hQa8Sg)?DgF z{$6EkCv<~*+IFNH-vquu3*s%DtZTR(Wo#>;8(QuXhJ3C;*04OZ+_&$m+|_d#_TKRi zT)v3?AvoR)+na=)qRzzr9ulOvrIi zf97{We=hg*X9G&1wuKMs&v3{~>d!yJi7G_jvaJ*P!#$3r{)|P=tX_foB6SDK@>`jo zMU3YK#O&&X{zw?gls*%z4jfv4cJ8bGs2P|xPd7Nv5I%I9!gmj-#fAJv>FruKSW8qg z>!9CQ+fVDpm-6aH5^5|*E=^e_$RKs2trNPDfsc|skl!OCB^N$8yYe)|$XZ)wG@a1Y zp93+1milv2PMWDdyE>siyFLAxkCLE=K-@^_Z!>7_z zHRO^pqqc*lP|V1&Kp2V{eHzqC#VG7k_X>M?1Us!Dglpu)2==8uc4a%SBbT(D#S6}8 zM0Enk(v=HVFv_pR;+CarR-S=zrH@P1qE6Q$hqScqcwEf|)0s9`@_9r%Xc9FQUw?p< zz@cOj<$O>&s_rzde0A4t%I8?Gk$e+X)+&L+fDT~BRBGKYs{@>ow~>17knUG8h0(w2IyEqjFhtqAt^2=>Yd_Q4VC^Y;q-yAkYLBiO4V z*hfdOFWoEb??te0i(nrb!9K;uu5>;!!oDej zy*7e5dr4j7ABG`Wv!M=U3u-_BG-W0+9ZUp-q5$rqm3j4MQ_H_~L zyCc~D9>KnIudwr5Jp3E}Sf(|CouknZ%;=ckyHI}qjlIIoF@C7zQ5z%JIdlubj86I3 zRr|iFK>M!yHhycR`!-cRE>(+Nx)!K$_VHPdW!3?Ks8@l$jZd@g+XQGCW`?z(UD zIo4}rLdz?EzhzXL=6rsbG2hp^VfN1!g*V^p)oYJ>7o4>YY1F8MrbqW=Mz%(DzC2=a z?`mz?Bkc1c*h?bVH%71z^RX+rf3JYtwa)vs&^jNesnYq~x)z^<&M)eO&igcLoe$8g z>i$B3x@(>P9P2fbb9zFf^6T@cN-gF5Fk|Lx-6){*UcL56>qhF5wT6%SNZYB78QG+3 zp<_n#5rL?e_q7GT{mVCVqP5O1M{8XGm(n@|?^ICX3cZ2+S&bs=I-zww&06aMG%Kz9 zYk|6Jt@|A7HFBMnSALBeg@(N&%^WjU>qf5i{j%k?M_QNAC2NfuwJV}^^|}@sX7sPY zXQg!tdqQi=9$_zvV1GA)eSQS{`#yFhcMDd~k-emD7voUA z;9-H@g-^5A`2fwT?!ybzUF-bkSg(;wwY&=G{BAAf{4irmv~HNyS(5OdCVTbTBdz1R z!b*GfOpc~UYxu}oT?-vE`hH*Ql(tlAZP_F2zl>nt9>G2~g8iuo_Nu+YzAJ)#M+E!C z2=*5v*oW>F_O~L~cSf*JjbQ(=k6r2f;RSSFw{gA%wY@*=<5Ci=)wKZ5?Blbx_n|=0 zk-hsgYkLpStmm(arfwwwJnd@ zs_D@&Bdc^Rbj;|RBU*P_0nTf!^UKj%7r>>oZsO;tb$FqyL#^{^)>;>!S!vz!0(I9~ z_c_*Uv$J1ttBiPsN754KY*yl&EzY)Qnh+wDRfO67{s^`?5 zvG;Wm?DY}sJ0sY4!})|czj3dyw?welMX>LPV1L8Mu3Ffic&$wSw|)F_bnha7OX*LW zt_2yHbws$D3r4-|`P4aU~=>& zRyVI+s7l3WHSjH1Ie8&hPHtDZ{=dquE<}#33OD+)2GJ;pf}(L%HX?@XW)p+@kiSmS z>r67qOtQatr@H!1PwiA!HC5H~6Lfc;G!h?zz9hH{VFg_f-H0eE`w&Dn@kK`TL1e|C ztSs)!3a+fm62EiL{i#zu-O*-$roTFM?m6e4zk92?3PRx10sEmqmT7bwr%Y1;adXPZ zWgyFf<~bm)e`XqbN*{gb8za92a#4)+TOc&$XQaF*r}kQ+D{ z&YA`CypZRMKz0cv2SOhbi#b09WKnQ_76@Of-31z0ETyMUyJr{kSucXd)eA;`1w`8L zk3eo?be37g{C1>Gb47zV)92ryc@=*KEq37U(M9;rojXp#dx6l6sR8*MA^0G~ET1z5 z*;S)i0YW|)&iX14sl`vbT9Y&K>-Zvoj2f}rWU-~}y1&rmq#97Y)Sr_uW2;`RF za}&r===CxXw;RuMu>+}nueSzi_$0eKY`f!Nl= zzXjy?0{K3Wp^*6&kn2)rAnrOWbN)M!LtetDn->+v;JYK7AHEm2ij$qg=${7?Mpp{& zmr!&!em%Zs=mv9vL_qi+Gsigv;_icGd7c5{dOt>f2;{QR;@3cS3Om0{G+qlD^)(lM&YYU8m~oDT+hPj3PY@%2y8xc-^X zdONfXoI%`r50IbYV6es~fb7PRfSducC9I)=&?nG54P+A;n@2~zNT|YI7ruH4G>d}I zw}Hr9_ah*C#hlW!92P~^`V){jLGu<6*YmTcAHep*mmnd_Qzrc^N--CL&&NPBCy;$W zPWrP*!-s%e@miEsk;Q{y>!djA3D8KZt^je@cUYdQK(;Vh!8hpH02jr)zXaqO#tc^d z2asJt)A!+rAlC$+PXcjwV(?gx0l6VK_knDQS+0QG7M#Bcgwjl?mEQs4R*}s4B_P*? z?ymqDiadV@$fg*52Y&JVb)na1fMD?2STjJ})np#)2_T^^gSho1kiDL>=}F*YTYh#F z6=j=|h@SbZ;Vicgz{ph~7i(w1SJB%@Km0Ceo)?<_1jr^BgxUE85IOIE0pfNKOfL}= z=iomi)tjJsQ}B5=rF|rzVENrZWZw8J5U6fx)DlHIW*JC`_miNxC^$a`&^480t5KTt<{-sDSGqVEWxZ4vSo~G=7DcrA^LTk!H5#_~q1qqc zQ|P5(RqRm;Z`Vs!X*6?OVTG`AS0WHsy0sjYDvqlhVwzv?)|mD-GPBZ3vZPYfadjiG z9Yk5w*S%=CjTo#)p7!*5JoHbR9p~)yO{%midqrNUrM!q?#HI+65c2#lbmb_YMAsQW z_9Ia_aVV&zs*U0JaZdP60d3niCiraU)QN{x=hXbd;h7nAtbOF%2{n6o;bi;l*)dwx zPxG$nXQNcpq>SJqO+%P=ZaXv@qqPZg4DaRcy?yjl^N3y8ObNP105zi3$CC}kdW_b?(1#`4_`-z?ZfK5V zrSQ&FRp>r~RTrub_VgIs%kBKB9)hSuum*&}YMZ${x^Vien(53hpjD#SN)YuIbdOH8 z5l5_QUx{dJ&g`lm$svVM_KZRgv6NIWIv5P1Vuju^P$hY$){3Nxx_Hg~AX=Yi48jg| zvhUylRgAJK8E7bt%n{MxYe)+;EZze<<`!qqom%M3w$TG-F^ikHQed-u= z`ae!k(2`@kh>}vf*Uhxb>RhRdS@=&I{^MxyxX{{z=38oeKeE(#1~KWSR`do>&7L8W zBlM{qkIR-jtSA@bm|8pVAd5r{qF&E4kS7}JjL{c*kRuN}rtTEAFf;EHX#K4cpQcgq zY6*3oGC%ThNKoo{lJ(}=cCK3T>yeF9RCJtSPUy$`ZXK zSNset})G_l@_FwLH^E0%UZb0et4E zWf(859o%=u4QWERZ5?Y4sR0c}YkCs0iH!8~Vn9*$qMqGIa^HuIshrW#>ZFhmr9*8u z=S|JVJSh-Nc0}hJEb!0^jG01!=cR~jDpwp`6O%GJR4f9$DeR22GvuMM*q^q#FbNY& z0A)6)f+l8<&3|>xKrKwfE*fpH6 zS&5t<()B%bdejm-hX|Rcb9lj9nAhV3FKc?5u9@ zW;6@vLG?PQBC1VE-c?JZjB0p;7iI^032wIHTDVHfPW3mgHa-MGf$-}hN|RwHg6(WC zEli)FMs(F!%gkEaVQ^Nfb;T2d*R7wN3phVEj)bvkw~eK>mv8+9PFljyeK|@77x{X} z*NL&DFujCKInfAd_7U%9L+a+8iqL0ZdYMM5Ym|FM(Hdgc9F2J}Gw!t3v(eL<%vP&H z#EY-Zfv`Pu_)*oFojZ+d;m0~>+Z4}_`hlm`3-nN8Rq4Ao6V>(Rjf1fAY>@_iBS-0v zB&v5I_0F;}igy6FgXEG1N<{;r$U}6kV-H|*Ip40FdM~u)hvIgEps+D#ONKFuTS5vip#>hr<@tBIAeTEX%Q#%Lr>n}EfP*H&M37t?&6m)4GqTixpm3G>4p? vbefqJ2Dy7rX4Kzi9phEt{Z3b|uwP~_Tf$;y!(zOZpX6DMisgK(*)jhY@r{*) literal 0 HcmV?d00001 diff --git a/src/epd/sfont.h b/src/epd/sfont.h index 5effc04..f4562d9 100644 --- a/src/epd/sfont.h +++ b/src/epd/sfont.h @@ -1,314 +1,591 @@ #ifndef __sfont__ #define __sfont__ -#define sfont_size 4893 +#define sfont_size 6983 + static unsigned char sfont[] __attribute__((aligned(4))) = { - 0xbc, 0x00, 0x20, 0x00, 0xf2, 0x02, 0x21, 0x00, 0xf8, 0x02, 0x22, 0x00, 0x08, 0x03, 0x23, 0x00, - 0x10, 0x03, 0x24, 0x00, 0x20, 0x03, 0x25, 0x00, 0x30, 0x03, 0x26, 0x00, 0x3e, 0x03, 0x27, 0x00, - 0x4c, 0x03, 0x28, 0x00, 0x54, 0x03, 0x29, 0x00, 0x65, 0x03, 0x2a, 0x00, 0x76, 0x03, 0x2b, 0x00, - 0x82, 0x03, 0x2c, 0x00, 0x8e, 0x03, 0x2d, 0x00, 0x97, 0x03, 0x2e, 0x00, 0x9d, 0x03, 0x2f, 0x00, - 0xa4, 0x03, 0x30, 0x00, 0xb5, 0x03, 0x31, 0x00, 0xc3, 0x03, 0x32, 0x00, 0xd1, 0x03, 0x33, 0x00, - 0xdf, 0x03, 0x34, 0x00, 0xed, 0x03, 0x35, 0x00, 0xfb, 0x03, 0x36, 0x00, 0x09, 0x04, 0x37, 0x00, - 0x17, 0x04, 0x38, 0x00, 0x25, 0x04, 0x39, 0x00, 0x33, 0x04, 0x3a, 0x00, 0x41, 0x04, 0x3b, 0x00, - 0x4d, 0x04, 0x3c, 0x00, 0x5b, 0x04, 0x3d, 0x00, 0x6b, 0x04, 0x3e, 0x00, 0x74, 0x04, 0x3f, 0x00, - 0x84, 0x04, 0x40, 0x00, 0x93, 0x04, 0x41, 0x00, 0xac, 0x04, 0x42, 0x00, 0xba, 0x04, 0x43, 0x00, - 0xc8, 0x04, 0x44, 0x00, 0xd6, 0x04, 0x45, 0x00, 0xe4, 0x04, 0x46, 0x00, 0xf2, 0x04, 0x47, 0x00, - 0x00, 0x05, 0x48, 0x00, 0x0e, 0x05, 0x49, 0x00, 0x1c, 0x05, 0x4a, 0x00, 0x2a, 0x05, 0x4b, 0x00, - 0x3b, 0x05, 0x4c, 0x00, 0x49, 0x05, 0x4d, 0x00, 0x57, 0x05, 0x4e, 0x00, 0x65, 0x05, 0x4f, 0x00, - 0x73, 0x05, 0x50, 0x00, 0x81, 0x05, 0x51, 0x00, 0x8f, 0x05, 0x52, 0x00, 0x9e, 0x05, 0x53, 0x00, - 0xac, 0x05, 0x54, 0x00, 0xba, 0x05, 0x55, 0x00, 0xc8, 0x05, 0x56, 0x00, 0xd6, 0x05, 0x57, 0x00, - 0xe4, 0x05, 0x58, 0x00, 0xfb, 0x05, 0x59, 0x00, 0x09, 0x06, 0x5a, 0x00, 0x17, 0x06, 0x5b, 0x00, - 0x25, 0x06, 0x5c, 0x00, 0x36, 0x06, 0x5d, 0x00, 0x45, 0x06, 0x5e, 0x00, 0x56, 0x06, 0x5f, 0x00, - 0x5e, 0x06, 0x60, 0x00, 0x64, 0x06, 0x61, 0x00, 0x6c, 0x06, 0x62, 0x00, 0x78, 0x06, 0x63, 0x00, - 0x87, 0x06, 0x64, 0x00, 0x93, 0x06, 0x65, 0x00, 0xa2, 0x06, 0x66, 0x00, 0xae, 0x06, 0x67, 0x00, - 0xbd, 0x06, 0x68, 0x00, 0xcc, 0x06, 0x69, 0x00, 0xdb, 0x06, 0x6a, 0x00, 0xe9, 0x06, 0x6b, 0x00, - 0xfa, 0x06, 0x6c, 0x00, 0x09, 0x07, 0x6d, 0x00, 0x18, 0x07, 0x6e, 0x00, 0x2b, 0x07, 0x6f, 0x00, - 0x37, 0x07, 0x70, 0x00, 0x43, 0x07, 0x71, 0x00, 0x52, 0x07, 0x72, 0x00, 0x61, 0x07, 0x73, 0x00, - 0x6d, 0x07, 0x74, 0x00, 0x79, 0x07, 0x75, 0x00, 0x87, 0x07, 0x76, 0x00, 0x93, 0x07, 0x77, 0x00, - 0x9f, 0x07, 0x78, 0x00, 0xb2, 0x07, 0x79, 0x00, 0xbe, 0x07, 0x7a, 0x00, 0xcd, 0x07, 0x7b, 0x00, - 0xd9, 0x07, 0x7c, 0x00, 0xeb, 0x07, 0x7d, 0x00, 0xfc, 0x07, 0x7e, 0x00, 0x0e, 0x08, 0x00, 0x4e, - 0x16, 0x08, 0x03, 0x4e, 0x1d, 0x08, 0x07, 0x4e, 0x3c, 0x08, 0x09, 0x4e, 0x59, 0x08, 0x2d, 0x4e, - 0x76, 0x08, 0x5d, 0x4e, 0x97, 0x08, 0x8c, 0x4e, 0xb6, 0x08, 0x94, 0x4e, 0xcd, 0x08, 0xb2, 0x4e, - 0xea, 0x08, 0xba, 0x4e, 0x09, 0x09, 0x3f, 0x51, 0x28, 0x09, 0x43, 0x51, 0x47, 0x09, 0x49, 0x51, - 0x64, 0x09, 0x6b, 0x51, 0x83, 0x09, 0x6d, 0x51, 0xa2, 0x09, 0xac, 0x51, 0xc1, 0x09, 0x06, 0x52, - 0xe0, 0x09, 0x1d, 0x52, 0xff, 0x09, 0xa8, 0x52, 0x1e, 0x0a, 0xb3, 0x52, 0x3d, 0x0a, 0x41, 0x53, - 0x5c, 0x0a, 0x48, 0x53, 0x7b, 0x0a, 0x58, 0x54, 0x9a, 0x0a, 0xdb, 0x56, 0xb9, 0x0a, 0xfd, 0x56, - 0xd6, 0x0a, 0x23, 0x57, 0xf5, 0x0a, 0x04, 0x59, 0x14, 0x0b, 0x0f, 0x59, 0x33, 0x0b, 0x15, 0x59, - 0x50, 0x0b, 0x1c, 0x59, 0x6f, 0x0b, 0x27, 0x59, 0x8e, 0x0b, 0x34, 0x59, 0xad, 0x0b, 0x73, 0x59, - 0xcc, 0x0b, 0x87, 0x59, 0xeb, 0x0b, 0x89, 0x5b, 0x0a, 0x0c, 0xb5, 0x5b, 0x29, 0x0c, 0xd2, 0x5b, - 0x48, 0x0c, 0x0f, 0x5c, 0x67, 0x0c, 0x08, 0x5e, 0x86, 0x0c, 0x73, 0x5e, 0xa5, 0x0c, 0x74, 0x5e, - 0xc2, 0x0c, 0x86, 0x5e, 0xe1, 0x0c, 0x8f, 0x5e, 0x00, 0x0d, 0xff, 0x5e, 0x1f, 0x0d, 0xc5, 0x60, - 0x3e, 0x0d, 0xca, 0x60, 0x5d, 0x0d, 0x1a, 0x61, 0x7c, 0x0d, 0xac, 0x62, 0x99, 0x0d, 0x59, 0x65, - 0xb8, 0x0d, 0xe5, 0x65, 0xd7, 0x0d, 0xe6, 0x65, 0xf4, 0x0d, 0xf6, 0x65, 0x11, 0x0e, 0x0e, 0x66, - 0x30, 0x0e, 0x1f, 0x66, 0x4f, 0x0e, 0x25, 0x66, 0x6e, 0x0e, 0x91, 0x66, 0x8d, 0x0e, 0x08, 0x67, - 0xac, 0x0e, 0x1f, 0x67, 0xcb, 0x0e, 0x11, 0x68, 0xea, 0x0e, 0xcd, 0x68, 0x09, 0x0f, 0x0d, 0x69, - 0x28, 0x0f, 0x63, 0x6b, 0x47, 0x0f, 0xcd, 0x6b, 0x64, 0x0f, 0x34, 0x6c, 0x81, 0x0f, 0x05, 0x6e, - 0xa0, 0x0f, 0xe1, 0x6e, 0xbf, 0x0f, 0x36, 0x72, 0xde, 0x0f, 0x7d, 0x76, 0xfd, 0x0f, 0xcb, 0x79, - 0x1c, 0x10, 0xcd, 0x79, 0x3b, 0x10, 0xd2, 0x79, 0x5a, 0x10, 0x0b, 0x7a, 0x79, 0x10, 0xcb, 0x7a, - 0x98, 0x10, 0xe5, 0x7a, 0xb7, 0x10, 0xef, 0x7a, 0xd6, 0x10, 0x4a, 0x81, 0xf5, 0x10, 0xf3, 0x81, - 0x14, 0x11, 0x82, 0x82, 0x31, 0x11, 0x92, 0x82, 0x50, 0x11, 0xf0, 0x86, 0x6f, 0x11, 0xde, 0x8b, - 0x8e, 0x11, 0x37, 0x8c, 0xad, 0x11, 0xcd, 0x91, 0xcc, 0x11, 0xf0, 0x95, 0xeb, 0x11, 0x33, 0x96, - 0x0a, 0x12, 0x4d, 0x96, 0x27, 0x12, 0x64, 0x96, 0x46, 0x12, 0xe8, 0x96, 0x65, 0x12, 0xea, 0x96, - 0x82, 0x12, 0x1c, 0x97, 0xa1, 0x12, 0x32, 0x97, 0xc0, 0x12, 0x52, 0x97, 0xdf, 0x12, 0x99, 0x9f, - 0xfe, 0x12, 0x04, 0x01, 0x01, 0x00, 0x0c, 0x00, 0x07, 0x01, 0x0b, 0x03, 0x03, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x06, 0x04, 0x03, 0x01, 0x02, 0x90, 0x90, 0x90, - 0x07, 0x06, 0x0b, 0x00, 0x02, 0x48, 0x48, 0x48, 0xfc, 0x48, 0x48, 0x48, 0xfc, 0x48, 0x48, 0x48, - 0x07, 0x05, 0x0b, 0x01, 0x02, 0x20, 0x70, 0xa8, 0xa0, 0x60, 0x30, 0x28, 0x28, 0xa8, 0x70, 0x20, - 0x08, 0x07, 0x09, 0x00, 0x03, 0x42, 0xa4, 0xa8, 0x48, 0x10, 0x24, 0x2a, 0x4a, 0x84, 0x08, 0x07, - 0x09, 0x00, 0x03, 0x30, 0x48, 0x48, 0x50, 0x20, 0x54, 0x88, 0x8c, 0x72, 0x05, 0x01, 0x03, 0x02, - 0x02, 0x80, 0x80, 0x80, 0x07, 0x03, 0x0c, 0x02, 0x02, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x40, 0x40, 0x20, 0x07, 0x03, 0x0c, 0x02, 0x02, 0x80, 0x40, 0x40, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, 0x08, 0x07, 0x07, 0x00, 0x04, 0x10, 0x54, 0x38, 0xfe, 0x38, - 0x54, 0x10, 0x07, 0x07, 0x07, 0x00, 0x04, 0x10, 0x10, 0x10, 0xfe, 0x10, 0x10, 0x10, 0x05, 0x02, - 0x04, 0x01, 0x0a, 0xc0, 0xc0, 0x40, 0x80, 0x07, 0x06, 0x01, 0x00, 0x07, 0xfc, 0x05, 0x02, 0x02, - 0x01, 0x0a, 0xc0, 0xc0, 0x07, 0x06, 0x0c, 0x00, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, - 0x20, 0x40, 0x40, 0x80, 0x80, 0x07, 0x06, 0x09, 0x00, 0x03, 0x78, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x78, 0x06, 0x05, 0x09, 0x00, 0x03, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0xf8, 0x07, 0x06, 0x09, 0x00, 0x03, 0x78, 0x84, 0x84, 0x08, 0x10, 0x20, 0x40, 0x80, 0xfc, 0x07, - 0x06, 0x09, 0x00, 0x03, 0x78, 0x84, 0x04, 0x04, 0x38, 0x04, 0x04, 0x84, 0x78, 0x07, 0x06, 0x09, - 0x00, 0x03, 0x18, 0x28, 0x48, 0x48, 0x88, 0x88, 0xfc, 0x08, 0x08, 0x07, 0x06, 0x09, 0x00, 0x03, - 0xfc, 0x80, 0x80, 0xf8, 0x04, 0x04, 0x04, 0x84, 0x78, 0x07, 0x06, 0x09, 0x00, 0x03, 0x78, 0x84, - 0x80, 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x78, 0x07, 0x06, 0x09, 0x00, 0x03, 0xfc, 0x08, 0x08, 0x10, - 0x10, 0x10, 0x20, 0x20, 0x20, 0x07, 0x06, 0x09, 0x00, 0x03, 0x78, 0x84, 0x84, 0x84, 0x78, 0x84, - 0x84, 0x84, 0x78, 0x07, 0x06, 0x09, 0x00, 0x03, 0x78, 0x84, 0x84, 0x84, 0x7c, 0x04, 0x04, 0x84, - 0x78, 0x06, 0x02, 0x07, 0x02, 0x04, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x06, 0x02, 0x09, - 0x02, 0x04, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x40, 0x80, 0x07, 0x06, 0x0b, 0x00, 0x03, - 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x07, 0x06, 0x04, 0x00, 0x06, - 0xfc, 0x00, 0x00, 0xfc, 0x07, 0x06, 0x0b, 0x00, 0x03, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x08, - 0x10, 0x20, 0x40, 0x80, 0x07, 0x06, 0x0a, 0x00, 0x03, 0x78, 0x84, 0x84, 0x04, 0x18, 0x10, 0x10, - 0x00, 0x10, 0x10, 0x0a, 0x09, 0x0a, 0x00, 0x02, 0x3e, 0x00, 0x41, 0x00, 0x9c, 0x80, 0xa2, 0x80, - 0x9e, 0x80, 0xa2, 0x80, 0xa2, 0x80, 0x9e, 0x80, 0x41, 0x00, 0x3e, 0x00, 0x09, 0x08, 0x09, 0x00, - 0x03, 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x7e, 0x81, 0x81, 0x07, 0x06, 0x09, 0x00, 0x03, 0xf8, - 0x84, 0x84, 0x84, 0xf8, 0x84, 0x84, 0x84, 0xf8, 0x07, 0x06, 0x09, 0x00, 0x03, 0x3c, 0x40, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x40, 0x3c, 0x08, 0x07, 0x09, 0x00, 0x03, 0xf8, 0x84, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x84, 0xf8, 0x07, 0x06, 0x09, 0x00, 0x03, 0xfc, 0x80, 0x80, 0x80, 0xf8, 0x80, 0x80, - 0x80, 0xfc, 0x07, 0x06, 0x09, 0x00, 0x03, 0xfc, 0x80, 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x80, - 0x08, 0x07, 0x09, 0x00, 0x03, 0x3c, 0x42, 0x80, 0x80, 0x8e, 0x82, 0x82, 0x42, 0x3e, 0x08, 0x07, - 0x09, 0x00, 0x03, 0x82, 0x82, 0x82, 0x82, 0xfe, 0x82, 0x82, 0x82, 0x82, 0x04, 0x03, 0x09, 0x00, - 0x03, 0xe0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xe0, 0x04, 0x03, 0x0c, 0x00, 0x03, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x07, 0x06, 0x09, 0x00, 0x03, - 0x84, 0x88, 0x90, 0xa0, 0xc0, 0xa0, 0x90, 0x88, 0x84, 0x07, 0x06, 0x09, 0x00, 0x03, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfc, 0x09, 0x08, 0x09, 0x00, 0x03, 0xc3, 0xc3, 0xa5, 0xa5, - 0x99, 0x99, 0x81, 0x81, 0x81, 0x08, 0x07, 0x09, 0x00, 0x03, 0xc2, 0xc2, 0xa2, 0xa2, 0x92, 0x92, - 0x8a, 0x8a, 0x86, 0x08, 0x07, 0x09, 0x00, 0x03, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, - 0x38, 0x07, 0x06, 0x09, 0x00, 0x03, 0xf8, 0x84, 0x84, 0x84, 0x84, 0xf8, 0x80, 0x80, 0x80, 0x08, - 0x07, 0x0a, 0x00, 0x03, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x06, 0x07, 0x06, - 0x09, 0x00, 0x03, 0xf8, 0x84, 0x84, 0x84, 0xf8, 0x90, 0x88, 0x88, 0x84, 0x07, 0x06, 0x09, 0x00, - 0x03, 0x78, 0x84, 0x80, 0x80, 0x78, 0x04, 0x04, 0x84, 0x78, 0x08, 0x07, 0x09, 0x00, 0x03, 0xfe, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x09, 0x00, 0x03, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x08, 0x07, 0x09, 0x00, 0x03, 0x82, 0x82, 0x82, 0x44, 0x44, - 0x28, 0x28, 0x10, 0x10, 0x0c, 0x0b, 0x09, 0x00, 0x03, 0x84, 0x20, 0x84, 0x20, 0x8a, 0x20, 0x4a, - 0x40, 0x51, 0x40, 0x51, 0x40, 0x51, 0x40, 0x20, 0x80, 0x20, 0x80, 0x08, 0x07, 0x09, 0x00, 0x03, - 0x82, 0x82, 0x44, 0x28, 0x10, 0x28, 0x44, 0x82, 0x82, 0x08, 0x07, 0x09, 0x00, 0x03, 0x82, 0x44, - 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x09, 0x00, 0x03, 0xfe, 0x02, 0x04, 0x08, - 0x10, 0x20, 0x40, 0x80, 0xfe, 0x07, 0x03, 0x0c, 0x02, 0x01, 0xe0, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0xe0, 0x07, 0x05, 0x0a, 0x01, 0x02, 0x80, 0x80, 0x40, 0x40, 0x20, - 0x20, 0x10, 0x10, 0x08, 0x08, 0x07, 0x03, 0x0c, 0x02, 0x01, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x07, 0x05, 0x03, 0x01, 0x02, 0x20, 0x50, 0x88, 0x07, 0x06, - 0x01, 0x00, 0x0c, 0xfc, 0x07, 0x03, 0x03, 0x02, 0x03, 0xc0, 0x40, 0x20, 0x07, 0x06, 0x07, 0x00, - 0x05, 0x78, 0x04, 0x7c, 0x84, 0x84, 0x84, 0x7c, 0x07, 0x06, 0x0a, 0x00, 0x02, 0x80, 0x80, 0x80, - 0xb8, 0xc4, 0x84, 0x84, 0x84, 0xc4, 0xb8, 0x06, 0x05, 0x07, 0x00, 0x05, 0x78, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x78, 0x07, 0x06, 0x0a, 0x00, 0x02, 0x04, 0x04, 0x04, 0x74, 0x8c, 0x84, 0x84, 0x84, - 0x8c, 0x74, 0x07, 0x06, 0x07, 0x00, 0x05, 0x78, 0x84, 0x84, 0xfc, 0x80, 0x84, 0x78, 0x06, 0x05, - 0x0a, 0x00, 0x02, 0x38, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x07, 0x06, 0x0a, - 0x00, 0x05, 0x7c, 0x84, 0x84, 0x84, 0x84, 0x8c, 0x74, 0x04, 0x04, 0x78, 0x07, 0x06, 0x0a, 0x00, - 0x02, 0x80, 0x80, 0x80, 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0x02, 0x01, 0x09, 0x00, 0x03, - 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0x02, 0x0c, 0x00, 0x03, 0x40, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x06, 0x05, 0x0a, 0x00, 0x02, 0x80, - 0x80, 0x80, 0x88, 0x90, 0xa0, 0xc0, 0xa0, 0x90, 0x88, 0x03, 0x01, 0x0a, 0x01, 0x02, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x0a, 0x09, 0x07, 0x00, 0x05, 0xb3, 0x00, 0xcc, - 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x07, 0x06, 0x07, 0x00, 0x05, - 0xb8, 0xc4, 0x84, 0x84, 0x84, 0x84, 0x84, 0x08, 0x07, 0x07, 0x00, 0x05, 0x38, 0x44, 0x82, 0x82, - 0x82, 0x44, 0x38, 0x07, 0x06, 0x0a, 0x00, 0x05, 0xb8, 0xc4, 0x84, 0x84, 0x84, 0xc4, 0xb8, 0x80, - 0x80, 0x80, 0x07, 0x06, 0x0a, 0x00, 0x05, 0x74, 0x8c, 0x84, 0x84, 0x84, 0x8c, 0x74, 0x04, 0x04, - 0x04, 0x05, 0x04, 0x07, 0x00, 0x05, 0xb0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x06, 0x05, 0x07, - 0x00, 0x05, 0x70, 0x88, 0x80, 0x70, 0x08, 0x88, 0x70, 0x05, 0x04, 0x09, 0x00, 0x03, 0x40, 0x40, - 0xf0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x30, 0x07, 0x06, 0x07, 0x00, 0x05, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x8c, 0x74, 0x08, 0x07, 0x07, 0x00, 0x05, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x0a, - 0x09, 0x07, 0x00, 0x05, 0x88, 0x80, 0x88, 0x80, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x22, 0x00, - 0x22, 0x00, 0x06, 0x05, 0x07, 0x00, 0x05, 0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0x88, 0x08, 0x07, - 0x0a, 0x00, 0x05, 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x20, 0x20, 0x06, 0x05, 0x07, - 0x00, 0x05, 0xf8, 0x08, 0x10, 0x20, 0x40, 0x80, 0xf8, 0x07, 0x03, 0x0d, 0x02, 0x01, 0x20, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x07, 0x01, 0x0c, 0x03, 0x01, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x07, 0x03, 0x0d, 0x02, - 0x01, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x07, 0x05, - 0x03, 0x01, 0x06, 0x40, 0xa8, 0x10, 0x0e, 0x0d, 0x01, 0x00, 0x06, 0xff, 0xf8, 0x0e, 0x0d, 0x0d, - 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x78, 0x0f, 0x80, 0xf4, 0x00, - 0x04, 0x00, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x03, 0xf8, 0x0e, 0x0d, 0x0c, 0x00, - 0x01, 0xff, 0xf8, 0x08, 0x00, 0x08, 0x00, 0x0f, 0xe0, 0x08, 0x20, 0x08, 0x20, 0x08, 0x20, 0x10, - 0x20, 0x10, 0x20, 0x20, 0x20, 0x43, 0x40, 0x80, 0x80, 0x0e, 0x0d, 0x0c, 0x00, 0x01, 0x7f, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x0e, 0x0b, 0x0e, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, - 0x00, 0xff, 0xe0, 0x84, 0x20, 0x84, 0x20, 0x84, 0x20, 0xff, 0xe0, 0x84, 0x20, 0x04, 0x00, 0x04, - 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, - 0x08, 0x40, 0xff, 0xe0, 0x08, 0x40, 0x08, 0x40, 0x08, 0x40, 0x08, 0x40, 0x10, 0x40, 0x10, 0x40, - 0x10, 0x48, 0x20, 0x48, 0xc0, 0x38, 0x0e, 0x0d, 0x09, 0x00, 0x02, 0x3f, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x0e, 0x0d, 0x0c, - 0x00, 0x01, 0x3f, 0xe0, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x3f, 0xc0, 0x04, 0x40, - 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x08, 0x40, 0xff, 0xf8, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x04, - 0x00, 0x02, 0x00, 0x7f, 0xf0, 0x10, 0x80, 0x09, 0x00, 0xff, 0xf8, 0x02, 0x00, 0x7f, 0xf0, 0x02, - 0x00, 0x12, 0x40, 0x22, 0x20, 0x42, 0x10, 0x0e, 0x00, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x04, 0x00, - 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x11, 0x00, - 0x10, 0x80, 0x20, 0x40, 0x40, 0x38, 0x80, 0x10, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x08, 0x80, 0x08, - 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x10, - 0x80, 0x10, 0x88, 0x20, 0x88, 0xc0, 0x78, 0x0e, 0x0d, 0x0c, 0x00, 0x01, 0x3f, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x10, 0x80, 0x10, 0x88, - 0x20, 0x88, 0xc0, 0x78, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x02, 0x00, 0x22, 0x20, 0x12, 0x20, 0x12, - 0x40, 0x02, 0x80, 0xff, 0xf8, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x11, 0x08, 0x21, - 0x08, 0xc0, 0xf8, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x00, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, - 0x08, 0x80, 0x08, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x20, 0x20, 0x20, 0x20, 0x40, 0x10, - 0x80, 0x08, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, - 0xf8, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, 0x40, 0x10, 0x20, 0x10, 0x20, 0x20, 0x10, 0x40, - 0x10, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x08, 0x00, 0x0f, 0xc0, 0x10, 0x80, 0x29, 0x00, 0x46, 0x00, - 0x05, 0x00, 0x18, 0xc0, 0xe0, 0x38, 0x06, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x08, 0x80, 0x10, 0x80, 0x10, 0x40, 0x20, - 0x20, 0x5f, 0xd0, 0x84, 0x48, 0x04, 0x40, 0x08, 0x40, 0x08, 0x40, 0x11, 0x40, 0x60, 0x80, 0x0e, - 0x0d, 0x0d, 0x00, 0x00, 0x40, 0x00, 0x23, 0xf8, 0xf8, 0x88, 0x10, 0x88, 0x20, 0x88, 0x28, 0x88, - 0x70, 0x88, 0xa8, 0x88, 0x21, 0x08, 0x21, 0x08, 0x22, 0x08, 0x24, 0x50, 0x28, 0x20, 0x0e, 0x0c, - 0x0d, 0x00, 0x00, 0x00, 0x80, 0x78, 0x80, 0x00, 0x80, 0x03, 0xf0, 0xf8, 0x90, 0x20, 0x90, 0x20, - 0x90, 0x48, 0x90, 0x45, 0x10, 0xfd, 0x10, 0x02, 0x10, 0x04, 0x50, 0x08, 0x20, 0x0e, 0x0d, 0x0d, - 0x00, 0x00, 0x08, 0x80, 0xff, 0xf8, 0x08, 0x80, 0x00, 0x00, 0x7f, 0xf8, 0x40, 0x08, 0x84, 0x10, - 0x7f, 0xe0, 0x04, 0x20, 0x08, 0x20, 0x08, 0x20, 0x10, 0xa0, 0x60, 0x40, 0x0e, 0x0d, 0x0d, 0x00, - 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xff, 0xf8, 0x02, 0x00, 0x02, - 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x0d, 0x0d, 0x00, 0x00, - 0x10, 0x00, 0x10, 0x00, 0x1f, 0xf0, 0x22, 0x00, 0x42, 0x00, 0x02, 0x00, 0xff, 0xf8, 0x02, 0x00, - 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x0b, 0x0d, 0x01, 0x00, 0x3f, - 0x80, 0x20, 0x80, 0x3f, 0x80, 0x00, 0x00, 0x7f, 0xc0, 0x40, 0x40, 0x44, 0x40, 0x44, 0x40, 0x44, - 0x40, 0x4a, 0x40, 0x11, 0x00, 0x20, 0x80, 0xc0, 0x60, 0x0e, 0x0b, 0x0c, 0x01, 0x01, 0xff, 0xe0, - 0x92, 0x20, 0x92, 0x20, 0x92, 0x20, 0x92, 0x20, 0xa2, 0x20, 0xc1, 0xe0, 0x80, 0x20, 0x80, 0x20, - 0x80, 0x20, 0xff, 0xe0, 0x80, 0x20, 0x0e, 0x0b, 0x0d, 0x01, 0x00, 0xff, 0xe0, 0x80, 0x20, 0xbf, - 0xa0, 0x84, 0x20, 0x84, 0x20, 0xbf, 0xa0, 0x84, 0x20, 0x85, 0x20, 0x84, 0xa0, 0xff, 0xe0, 0x80, - 0x20, 0xff, 0xe0, 0x80, 0x20, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x3f, 0xe0, 0x10, 0x40, 0x08, 0x80, - 0x05, 0x00, 0x07, 0x00, 0x18, 0xc0, 0xe2, 0x38, 0x02, 0x00, 0x3f, 0xe0, 0x02, 0x00, 0x02, 0x00, - 0x02, 0x00, 0xff, 0xf8, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x1e, - 0x40, 0x22, 0x60, 0x22, 0x50, 0x54, 0x48, 0x94, 0x48, 0x08, 0x40, 0x14, 0x40, 0x22, 0x40, 0x41, - 0x00, 0x80, 0xf8, 0x0e, 0x0d, 0x0c, 0x00, 0x01, 0xff, 0xf8, 0x04, 0x00, 0x3f, 0xe0, 0x20, 0x20, - 0x3f, 0xe0, 0x20, 0x20, 0x3f, 0xe0, 0x10, 0x00, 0x3f, 0xc0, 0x48, 0x80, 0x07, 0x00, 0xf8, 0xf8, - 0x0e, 0x0c, 0x0d, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x07, 0xf0, 0x08, 0x20, 0x18, 0x20, 0x24, - 0x40, 0x42, 0x40, 0x02, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x18, 0x00, 0xe0, 0x00, 0x0e, - 0x0d, 0x0d, 0x00, 0x00, 0x02, 0x00, 0xff, 0xf8, 0x11, 0x00, 0x11, 0x00, 0x21, 0xf0, 0x22, 0x20, - 0x64, 0xa0, 0xaa, 0x40, 0x21, 0x40, 0x20, 0x80, 0x21, 0x40, 0x22, 0x20, 0x3c, 0x18, 0x0e, 0x0d, - 0x0d, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xff, 0xf8, 0x02, 0x00, 0x02, 0x00, 0x05, - 0x00, 0x05, 0x00, 0x08, 0x80, 0x08, 0x80, 0x10, 0x40, 0x20, 0x20, 0xc0, 0x18, 0x0e, 0x0d, 0x0d, - 0x00, 0x00, 0x02, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x22, 0x00, 0x12, 0x00, 0x02, 0x00, 0xff, 0xf8, - 0x02, 0x00, 0x04, 0x80, 0x08, 0x40, 0x10, 0x20, 0x20, 0x10, 0xc0, 0x10, 0x0e, 0x0d, 0x0d, 0x00, - 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0xff, 0xf8, 0x08, 0x80, 0x08, 0x80, 0x11, 0x00, 0x31, - 0x00, 0x0a, 0x00, 0x06, 0x00, 0x09, 0x00, 0x10, 0xc0, 0xe0, 0x30, 0x0e, 0x0d, 0x0d, 0x00, 0x00, - 0x20, 0x00, 0x23, 0xf8, 0x20, 0x08, 0xfc, 0x08, 0x28, 0x08, 0x28, 0x08, 0x49, 0xf8, 0x48, 0x08, - 0x30, 0x08, 0x10, 0x08, 0x28, 0x08, 0x47, 0xf8, 0x80, 0x08, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x04, - 0x00, 0x02, 0x00, 0x7f, 0xf8, 0x40, 0x10, 0x84, 0x00, 0x04, 0x00, 0xff, 0xf8, 0x08, 0x80, 0x10, - 0x80, 0x0d, 0x00, 0x03, 0x00, 0x0c, 0xc0, 0x70, 0x30, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x02, 0x00, - 0x7f, 0xf8, 0x40, 0x08, 0x92, 0x20, 0x0a, 0x40, 0x3f, 0xe0, 0x20, 0x20, 0x3f, 0xe0, 0x20, 0x20, - 0x3f, 0xe0, 0x20, 0x20, 0x20, 0xa0, 0x20, 0x40, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x02, 0x00, 0xff, - 0xf8, 0x88, 0x88, 0x3f, 0xe0, 0x08, 0x80, 0x3f, 0xe0, 0x08, 0x80, 0xff, 0xf8, 0x10, 0x40, 0x26, - 0x20, 0xc1, 0x98, 0x06, 0x00, 0x01, 0x80, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, - 0x02, 0x00, 0x02, 0x00, 0x22, 0x40, 0x22, 0x20, 0x22, 0x10, 0x42, 0x08, 0x82, 0x08, 0x02, 0x00, - 0x02, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x10, 0x00, 0x1f, 0xf8, 0x50, - 0x80, 0x50, 0x80, 0x57, 0xf0, 0x54, 0x90, 0x54, 0x90, 0x54, 0x90, 0x54, 0x90, 0x14, 0x90, 0x24, - 0xb0, 0x40, 0x80, 0x80, 0x80, 0x0e, 0x0d, 0x0c, 0x00, 0x01, 0x7f, 0xf0, 0x02, 0x00, 0x22, 0x20, - 0x12, 0x40, 0x02, 0x00, 0xff, 0xf8, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, - 0x02, 0x00, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1f, 0xf8, 0x21, 0x00, 0x41, - 0x00, 0x9f, 0xe0, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0xff, 0xf8, 0x01, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x01, 0x00, 0x3f, 0xf8, 0x20, 0x00, 0x21, 0x00, 0x21, 0x00, - 0x3f, 0xf8, 0x21, 0x00, 0x22, 0x80, 0x22, 0x80, 0x24, 0x40, 0x48, 0x20, 0x50, 0x10, 0xa0, 0x08, - 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x01, 0x00, 0x3f, 0xf8, 0x20, 0x00, 0x27, 0xe0, 0x21, 0x40, 0x20, - 0x80, 0x3f, 0xf8, 0x20, 0x88, 0x20, 0x90, 0x20, 0x80, 0x40, 0x80, 0x42, 0x80, 0x81, 0x00, 0x0e, - 0x0d, 0x0d, 0x00, 0x00, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0xff, 0xf8, 0x10, 0x40, - 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x1f, 0xc0, 0x10, 0x40, 0x0e, 0x0d, - 0x0d, 0x00, 0x00, 0x20, 0x80, 0x27, 0xf8, 0xa0, 0x80, 0xb3, 0xf0, 0xa8, 0x80, 0xaf, 0xf8, 0x22, - 0x10, 0x23, 0xf0, 0x22, 0x10, 0x23, 0xf0, 0x22, 0x10, 0x22, 0x10, 0x22, 0x30, 0x0e, 0x0d, 0x0d, - 0x00, 0x00, 0x21, 0x00, 0x20, 0x80, 0xa7, 0xf8, 0xb0, 0x00, 0xab, 0xf0, 0xa2, 0x10, 0x23, 0xf0, - 0x20, 0x40, 0x24, 0x50, 0x24, 0x48, 0x28, 0x48, 0x21, 0x40, 0x20, 0x80, 0x0e, 0x0d, 0x0c, 0x00, - 0x01, 0x1f, 0xc0, 0x12, 0x40, 0x1f, 0xc0, 0x12, 0x40, 0x7f, 0xf0, 0x42, 0x50, 0x5f, 0xd0, 0x40, - 0x30, 0x12, 0x10, 0x51, 0x48, 0x90, 0x40, 0x0f, 0xc0, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x20, 0x80, - 0x20, 0x80, 0xf9, 0x00, 0x22, 0x10, 0x27, 0xf8, 0x28, 0x08, 0x33, 0xf0, 0xe2, 0x10, 0x22, 0x10, - 0x22, 0x10, 0x22, 0x10, 0xa3, 0xf0, 0x42, 0x10, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x20, 0x80, 0x24, - 0x80, 0xfc, 0x80, 0x28, 0xf8, 0xfd, 0x20, 0x11, 0x20, 0x22, 0xa0, 0x78, 0xa0, 0x88, 0x40, 0x1c, - 0x40, 0xf0, 0xa0, 0x11, 0x10, 0x32, 0x08, 0x0e, 0x09, 0x0c, 0x02, 0x01, 0xff, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0xff, 0x80, 0x80, 0x80, 0x0e, 0x0d, 0x0c, 0x00, 0x01, 0x1f, 0xc0, 0x10, 0x40, 0x10, 0x40, 0x10, - 0x40, 0x1f, 0xc0, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xf8, 0x0e, 0x0c, 0x0d, 0x01, 0x00, 0x00, 0x40, 0xf0, 0x40, 0x90, 0x40, 0x9f, 0xf0, 0x90, 0x40, - 0xf4, 0x40, 0x92, 0x40, 0x92, 0x40, 0x90, 0x40, 0xf0, 0x40, 0x90, 0x40, 0x01, 0x40, 0x00, 0x80, - 0x0e, 0x0c, 0x0d, 0x01, 0x00, 0x03, 0xf0, 0xfa, 0x10, 0x8a, 0x10, 0x8a, 0x10, 0xfb, 0xf0, 0x8a, - 0x10, 0x8a, 0x10, 0x8b, 0xf0, 0xfa, 0x10, 0x8a, 0x10, 0x04, 0x10, 0x04, 0x50, 0x08, 0x20, 0x0e, - 0x0d, 0x0d, 0x00, 0x00, 0x3f, 0xe0, 0x20, 0x20, 0x3f, 0xe0, 0x20, 0x20, 0x3f, 0xe0, 0x02, 0x00, - 0x22, 0x00, 0x3f, 0xf0, 0x42, 0x00, 0x3f, 0xe0, 0x02, 0x00, 0x02, 0x00, 0xff, 0xf8, 0x0e, 0x0d, - 0x0d, 0x00, 0x00, 0x02, 0x00, 0x7f, 0xf0, 0x02, 0x00, 0x3f, 0xf0, 0x04, 0x00, 0xff, 0xf8, 0x10, - 0x40, 0x3f, 0xe0, 0xd0, 0x58, 0x1f, 0xc0, 0x10, 0x40, 0x10, 0x40, 0x1f, 0xc0, 0x0e, 0x0d, 0x0d, - 0x00, 0x00, 0x3f, 0xe0, 0x20, 0x20, 0x3f, 0xe0, 0x20, 0x20, 0x3f, 0xe0, 0x04, 0x20, 0x3f, 0xc0, - 0x04, 0x80, 0xff, 0xf8, 0x10, 0x40, 0x3f, 0xc0, 0xd0, 0x40, 0x1f, 0xc0, 0x0e, 0x09, 0x0d, 0x02, - 0x00, 0x3f, 0x80, 0x20, 0x80, 0x20, 0x80, 0x3f, 0x80, 0x20, 0x80, 0x20, 0x80, 0x3f, 0x80, 0x20, - 0x80, 0x20, 0x80, 0x20, 0x80, 0x40, 0x80, 0x42, 0x80, 0x81, 0x00, 0x0e, 0x0d, 0x0d, 0x00, 0x00, - 0x44, 0x00, 0x44, 0xf8, 0xfe, 0x88, 0x44, 0x88, 0x7c, 0xf8, 0x44, 0x88, 0x7c, 0x88, 0x44, 0xf8, - 0xff, 0x88, 0x00, 0x88, 0x44, 0x88, 0x43, 0x28, 0x82, 0x10, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x20, - 0x10, 0x20, 0x10, 0x27, 0x10, 0xf9, 0xf8, 0x25, 0x10, 0x75, 0x10, 0x6a, 0x90, 0xa2, 0x50, 0xa5, - 0x10, 0x29, 0x10, 0x30, 0x10, 0x20, 0x50, 0x20, 0x20, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x20, 0x00, - 0x27, 0xf0, 0x24, 0x10, 0xff, 0xf0, 0x24, 0x10, 0x77, 0xf0, 0x6c, 0x40, 0xa4, 0x48, 0xa7, 0x50, - 0x24, 0x60, 0x25, 0x48, 0x26, 0x48, 0x24, 0x38, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x20, 0x80, 0x20, - 0x80, 0x27, 0xf8, 0xf8, 0x80, 0x23, 0xf0, 0x72, 0x10, 0x6b, 0xf0, 0xa2, 0x10, 0xa3, 0xf0, 0x22, - 0x10, 0x23, 0xf0, 0x22, 0x10, 0x27, 0xf8, 0x0e, 0x0d, 0x0c, 0x00, 0x01, 0xff, 0xf8, 0x02, 0x00, - 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x23, 0xf0, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, - 0x22, 0x00, 0xff, 0xf8, 0x0e, 0x0d, 0x0c, 0x00, 0x01, 0x1f, 0xe0, 0x12, 0x20, 0x11, 0x20, 0x10, - 0x20, 0xff, 0xf8, 0x22, 0x20, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3f, 0xf8, 0x00, 0x20, 0x00, - 0xc0, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x20, 0x7a, 0x40, 0x0a, 0x80, - 0x0b, 0x00, 0x13, 0x00, 0x12, 0x80, 0x22, 0x40, 0x42, 0x38, 0x82, 0x10, 0x0a, 0x00, 0x04, 0x00, - 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x40, 0x80, 0x2f, 0xf8, 0x00, 0x80, 0x87, 0xf0, 0x40, 0x80, 0x1f, - 0xf8, 0x24, 0x10, 0x27, 0xf0, 0xc4, 0x10, 0x47, 0xf0, 0x44, 0x10, 0x44, 0x50, 0x44, 0x20, 0x0e, - 0x0d, 0x0d, 0x00, 0x00, 0x42, 0x40, 0x2f, 0xf0, 0x02, 0x40, 0x9f, 0xf8, 0x42, 0x40, 0x1f, 0xf0, - 0x2a, 0x50, 0x2a, 0x50, 0xcb, 0x50, 0x4c, 0xb0, 0x49, 0x10, 0x48, 0x50, 0x48, 0x20, 0x0e, 0x0d, - 0x0d, 0x00, 0x00, 0x10, 0x40, 0x10, 0x20, 0x20, 0x10, 0x50, 0x48, 0x90, 0x48, 0x08, 0x80, 0x08, - 0x80, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x08, 0x80, 0x10, 0x40, 0xe0, 0x38, 0x0e, 0x0a, 0x0d, - 0x02, 0x00, 0x10, 0x00, 0x20, 0x00, 0xff, 0xc0, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0xff, 0xc0, - 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0xff, 0xc0, 0x80, 0x40, 0x0e, 0x0d, 0x0d, 0x00, - 0x00, 0x0c, 0x40, 0x70, 0x40, 0x10, 0x40, 0x11, 0x48, 0xfd, 0x48, 0x12, 0x50, 0x38, 0x40, 0x34, - 0x40, 0x50, 0xa0, 0x50, 0xa0, 0x91, 0x10, 0x12, 0x10, 0x14, 0x08, 0x0e, 0x0d, 0x0d, 0x00, 0x00, - 0x0c, 0x40, 0x70, 0x40, 0x10, 0x40, 0x13, 0xf8, 0xfe, 0x48, 0x12, 0x48, 0x32, 0x48, 0x5b, 0xf8, - 0x94, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x18, - 0x80, 0xe0, 0x80, 0x20, 0x80, 0x22, 0xa0, 0xfa, 0x90, 0x24, 0x88, 0x70, 0x80, 0x68, 0x90, 0xa0, - 0x90, 0xa0, 0x20, 0x20, 0x40, 0x20, 0x80, 0x27, 0x00, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x18, 0x00, - 0xe3, 0xf0, 0x22, 0x10, 0x22, 0x10, 0xfb, 0xf0, 0x20, 0x00, 0x77, 0xf0, 0x68, 0x80, 0xa0, 0x80, - 0xa3, 0xf0, 0x20, 0x80, 0x20, 0x80, 0x27, 0xf8, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x04, 0x00, 0x02, - 0x00, 0x02, 0x00, 0x7f, 0xf0, 0x00, 0x40, 0x10, 0x40, 0x10, 0x40, 0x08, 0x80, 0x08, 0x80, 0x08, - 0x80, 0x01, 0x00, 0x01, 0x00, 0xff, 0xf8, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x02, 0x00, 0x7f, 0xf0, - 0x10, 0x40, 0x08, 0x80, 0xff, 0xf8, 0x12, 0x40, 0x1f, 0xc0, 0x12, 0x40, 0x1f, 0xc0, 0x02, 0x00, - 0x3f, 0xe0, 0x02, 0x00, 0xff, 0xf8, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x40, 0x40, 0x22, 0x48, 0xfa, - 0x48, 0x03, 0xf8, 0x88, 0x00, 0x4b, 0xf8, 0x50, 0x80, 0x13, 0xf8, 0x22, 0xa8, 0x1a, 0xa8, 0xe2, - 0xa8, 0x02, 0xa8, 0x02, 0x18, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x01, 0x20, 0x79, 0x20, 0x4f, 0xf8, - 0x49, 0x20, 0x7f, 0xf8, 0x48, 0x00, 0x4b, 0xf0, 0x7a, 0x10, 0x4b, 0xf0, 0x4a, 0x10, 0x4a, 0x10, - 0xab, 0xf0, 0x92, 0x10, 0x0e, 0x0d, 0x0c, 0x00, 0x01, 0xff, 0xf8, 0x04, 0x00, 0x08, 0x00, 0x10, - 0x40, 0x3f, 0xe0, 0x02, 0x20, 0x02, 0x00, 0x3f, 0xe0, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xff, - 0xf8, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x08, 0x80, 0xff, 0xf8, 0x08, 0x80, 0x00, 0x00, 0x7f, 0xf0, - 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x50, 0x02, 0x20, 0x02, 0x00, 0x02, 0x00, - 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x10, 0x80, 0xff, 0xf8, 0x10, 0x80, 0x10, 0x80, 0x04, 0x00, 0x02, - 0x00, 0xff, 0xf8, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1f, 0xe0, 0x0e, - 0x0d, 0x0d, 0x00, 0x00, 0x10, 0x80, 0x10, 0x80, 0xfb, 0xe0, 0x10, 0xa0, 0xfa, 0xa0, 0x11, 0x28, - 0x52, 0x98, 0x24, 0x08, 0x3f, 0xe0, 0x22, 0x20, 0x3f, 0xe0, 0x02, 0x10, 0xff, 0xf8, 0x0e, 0x0d, - 0x0d, 0x00, 0x00, 0x40, 0x18, 0x2e, 0xe0, 0x22, 0x20, 0x04, 0x20, 0xe8, 0xb8, 0x2e, 0xa0, 0x22, - 0xa0, 0x22, 0xa0, 0x2a, 0xa0, 0x24, 0xf8, 0x36, 0x00, 0x29, 0x00, 0x10, 0xf8, 0x0e, 0x0d, 0x0d, - 0x00, 0x00, 0x08, 0x80, 0x10, 0x40, 0x22, 0x20, 0x45, 0x00, 0x08, 0x80, 0x10, 0x40, 0x20, 0x20, - 0xdf, 0xd8, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x1f, 0xc0, 0x10, 0x40, 0x0e, 0x0d, 0x0d, 0x00, - 0x00, 0x01, 0xf0, 0x7e, 0x00, 0x02, 0x00, 0xff, 0xf8, 0x22, 0x20, 0x3f, 0xe0, 0x22, 0x20, 0x3f, - 0xe0, 0x02, 0x00, 0x7f, 0xf0, 0x02, 0x00, 0x02, 0x00, 0xff, 0xf8, 0x0e, 0x0c, 0x0d, 0x01, 0x00, - 0x9f, 0xf0, 0x40, 0x10, 0x80, 0x10, 0xbf, 0xd0, 0x84, 0x10, 0x84, 0x10, 0x9f, 0x90, 0x84, 0x10, - 0x84, 0x10, 0xbf, 0xd0, 0x80, 0x10, 0x80, 0x50, 0x80, 0x20, 0x0e, 0x0b, 0x0c, 0x01, 0x01, 0xf7, - 0xe0, 0x94, 0x20, 0xa4, 0x20, 0xc4, 0x20, 0xa4, 0x20, 0x97, 0xe0, 0x94, 0x20, 0xd4, 0x20, 0xa4, - 0x20, 0x84, 0x20, 0x87, 0xe0, 0x84, 0x20, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x02, 0x00, 0xf3, 0xf0, - 0x95, 0x40, 0xa8, 0x80, 0xc1, 0x40, 0xae, 0xb8, 0x90, 0x80, 0x97, 0xf0, 0xd0, 0x80, 0xa4, 0x80, - 0x87, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x80, 0x91, - 0x40, 0xa2, 0x20, 0xc7, 0xf0, 0xa8, 0x88, 0x90, 0x80, 0x97, 0xf0, 0xd0, 0x80, 0xa4, 0x90, 0x84, - 0x88, 0x88, 0x88, 0x81, 0x80, 0x0e, 0x0d, 0x0c, 0x00, 0x01, 0xff, 0xf8, 0x02, 0x00, 0x02, 0x00, - 0x7f, 0xf0, 0x42, 0x10, 0x52, 0x90, 0x4a, 0x50, 0x52, 0x90, 0x4a, 0x50, 0x42, 0x10, 0x42, 0x50, - 0x42, 0x20, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x7f, 0xf0, 0x02, 0x00, 0x7f, 0xf8, 0x52, 0x48, 0x8a, - 0x90, 0x12, 0x40, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x20, 0x3f, 0xe0, 0x00, 0x20, 0x3f, 0xe0, 0x00, - 0x20, 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x7f, 0xf0, 0x02, 0x00, 0xff, 0xf8, 0x92, 0x48, 0x22, 0x20, - 0x10, 0x00, 0xff, 0xf0, 0x11, 0x10, 0x39, 0xf0, 0x55, 0x10, 0x93, 0xf0, 0x11, 0x10, 0x11, 0xf0, - 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0x7f, 0xf0, 0x02, 0x00, 0xff, 0xf8, 0x92, 0x48, 0x22, 0x20, 0x79, - 0xf0, 0x4b, 0x10, 0x78, 0xe0, 0x13, 0x18, 0x5d, 0xf0, 0x51, 0x10, 0x5d, 0x10, 0xe1, 0xf0, 0x0e, - 0x0d, 0x0d, 0x00, 0x00, 0x02, 0x00, 0x7f, 0xf0, 0x02, 0x00, 0x3f, 0xe0, 0x02, 0x00, 0xff, 0xf8, - 0x20, 0x20, 0x3f, 0xe0, 0x20, 0x20, 0x3f, 0xe0, 0x20, 0x20, 0x20, 0xa0, 0x20, 0x40, 0x0e, 0x0d, - 0x0d, 0x00, 0x00, 0x04, 0x00, 0x04, 0x80, 0x04, 0x40, 0xff, 0xf8, 0x04, 0x00, 0x05, 0x00, 0x05, - 0x20, 0x09, 0x20, 0x09, 0x40, 0x11, 0x80, 0x23, 0x08, 0x45, 0x08, 0x88, 0xf8, + 0xE1,0x00,0x20,0x00,0x86,0x03,0x21,0x00,0x99,0x03,0x22,0x00, + 0xAC,0x03,0x23,0x00,0xBF,0x03,0x24,0x00,0xD2,0x03,0x25,0x00, + 0xE5,0x03,0x26,0x00,0xF8,0x03,0x27,0x00,0x0B,0x04,0x28,0x00, + 0x1E,0x04,0x29,0x00,0x31,0x04,0x2A,0x00,0x44,0x04,0x2B,0x00, + 0x57,0x04,0x2C,0x00,0x6A,0x04,0x2D,0x00,0x7D,0x04,0x2E,0x00, + 0x90,0x04,0x2F,0x00,0xA3,0x04,0x30,0x00,0xB6,0x04,0x31,0x00, + 0xC9,0x04,0x32,0x00,0xDC,0x04,0x33,0x00,0xEF,0x04,0x34,0x00, + 0x02,0x05,0x35,0x00,0x15,0x05,0x36,0x00,0x28,0x05,0x37,0x00, + 0x3B,0x05,0x38,0x00,0x4E,0x05,0x39,0x00,0x61,0x05,0x3A,0x00, + 0x74,0x05,0x3B,0x00,0x87,0x05,0x3C,0x00,0x9A,0x05,0x3D,0x00, + 0xAD,0x05,0x3E,0x00,0xC0,0x05,0x3F,0x00,0xD3,0x05,0x40,0x00, + 0xE6,0x05,0x41,0x00,0xF9,0x05,0x42,0x00,0x0C,0x06,0x43,0x00, + 0x1F,0x06,0x44,0x00,0x32,0x06,0x45,0x00,0x45,0x06,0x46,0x00, + 0x58,0x06,0x47,0x00,0x6B,0x06,0x48,0x00,0x7E,0x06,0x49,0x00, + 0x91,0x06,0x4A,0x00,0xA4,0x06,0x4B,0x00,0xB7,0x06,0x4C,0x00, + 0xCA,0x06,0x4D,0x00,0xDD,0x06,0x4E,0x00,0xF0,0x06,0x4F,0x00, + 0x03,0x07,0x50,0x00,0x16,0x07,0x51,0x00,0x29,0x07,0x52,0x00, + 0x3C,0x07,0x53,0x00,0x4F,0x07,0x54,0x00,0x62,0x07,0x55,0x00, + 0x75,0x07,0x56,0x00,0x88,0x07,0x57,0x00,0x9B,0x07,0x58,0x00, + 0xAE,0x07,0x59,0x00,0xC1,0x07,0x5A,0x00,0xD4,0x07,0x5B,0x00, + 0xE7,0x07,0x5C,0x00,0xFA,0x07,0x5D,0x00,0x0D,0x08,0x5E,0x00, + 0x20,0x08,0x5F,0x00,0x33,0x08,0x60,0x00,0x46,0x08,0x61,0x00, + 0x59,0x08,0x62,0x00,0x6C,0x08,0x63,0x00,0x7F,0x08,0x64,0x00, + 0x92,0x08,0x65,0x00,0xA5,0x08,0x66,0x00,0xB8,0x08,0x67,0x00, + 0xCB,0x08,0x68,0x00,0xDE,0x08,0x69,0x00,0xF1,0x08,0x6A,0x00, + 0x04,0x09,0x6B,0x00,0x17,0x09,0x6C,0x00,0x2A,0x09,0x6D,0x00, + 0x3D,0x09,0x6E,0x00,0x50,0x09,0x6F,0x00,0x63,0x09,0x70,0x00, + 0x76,0x09,0x71,0x00,0x89,0x09,0x72,0x00,0x9C,0x09,0x73,0x00, + 0xAF,0x09,0x74,0x00,0xC2,0x09,0x75,0x00,0xD5,0x09,0x76,0x00, + 0xE8,0x09,0x77,0x00,0xFB,0x09,0x78,0x00,0x0E,0x0A,0x79,0x00, + 0x21,0x0A,0x7A,0x00,0x34,0x0A,0x7B,0x00,0x47,0x0A,0x7C,0x00, + 0x5A,0x0A,0x7D,0x00,0x6D,0x0A,0x7E,0x00,0x80,0x0A,0x00,0x4E, + 0x93,0x0A,0x03,0x4E,0xB4,0x0A,0x07,0x4E,0xD5,0x0A,0x09,0x4E, + 0xF6,0x0A,0x2D,0x4E,0x17,0x0B,0x5D,0x4E,0x38,0x0B,0x8C,0x4E, + 0x59,0x0B,0x94,0x4E,0x7A,0x0B,0xB2,0x4E,0x9B,0x0B,0xBA,0x4E, + 0xBC,0x0B,0x3F,0x51,0xDD,0x0B,0x43,0x51,0xFE,0x0B,0x49,0x51, + 0x1F,0x0C,0x6B,0x51,0x40,0x0C,0x6D,0x51,0x61,0x0C,0xAC,0x51, + 0x82,0x0C,0x06,0x52,0xA3,0x0C,0x1D,0x52,0xC4,0x0C,0xA8,0x52, + 0xE5,0x0C,0xB3,0x52,0x06,0x0D,0x41,0x53,0x27,0x0D,0x48,0x53, + 0x48,0x0D,0x58,0x54,0x69,0x0D,0xDB,0x56,0x8A,0x0D,0xFD,0x56, + 0xAB,0x0D,0x23,0x57,0xCC,0x0D,0x04,0x59,0xED,0x0D,0x0F,0x59, + 0x0E,0x0E,0x15,0x59,0x2F,0x0E,0x1C,0x59,0x50,0x0E,0x27,0x59, + 0x71,0x0E,0x34,0x59,0x92,0x0E,0x73,0x59,0xB3,0x0E,0x87,0x59, + 0xD4,0x0E,0x89,0x5B,0xF5,0x0E,0xB5,0x5B,0x16,0x0F,0xD2,0x5B, + 0x37,0x0F,0x0F,0x5C,0x58,0x0F,0x08,0x5E,0x79,0x0F,0x73,0x5E, + 0x9A,0x0F,0x74,0x5E,0xBB,0x0F,0x86,0x5E,0xDC,0x0F,0x20,0x00, + 0xFD,0x0F,0x8F,0x5E,0x10,0x10,0xFF,0x5E,0x31,0x10,0xC5,0x60, + 0x52,0x10,0xCA,0x60,0x73,0x10,0x1A,0x61,0x94,0x10,0xAC,0x62, + 0xB5,0x10,0x59,0x65,0xD6,0x10,0xE5,0x65,0xF7,0x10,0xE6,0x65, + 0x18,0x11,0xF6,0x65,0x39,0x11,0x0E,0x66,0x5A,0x11,0x1F,0x66, + 0x7B,0x11,0x25,0x66,0x9C,0x11,0x91,0x66,0xBD,0x11,0x08,0x67, + 0xDE,0x11,0x1F,0x67,0xFF,0x11,0x11,0x68,0x20,0x12,0xCD,0x68, + 0x41,0x12,0x0D,0x69,0x62,0x12,0x63,0x6B,0x83,0x12,0xCD,0x6B, + 0xA4,0x12,0x34,0x6C,0xC5,0x12,0x05,0x6E,0xE6,0x12,0xE1,0x6E, + 0x07,0x13,0x36,0x72,0x28,0x13,0x7D,0x76,0x49,0x13,0xCB,0x79, + 0x6A,0x13,0xCD,0x79,0x8B,0x13,0xD2,0x79,0xAC,0x13,0x0B,0x7A, + 0xCD,0x13,0xCB,0x7A,0xEE,0x13,0xE5,0x7A,0x0F,0x14,0xEF,0x7A, + 0x30,0x14,0x4A,0x81,0x51,0x14,0xF3,0x81,0x72,0x14,0x82,0x82, + 0x93,0x14,0x92,0x82,0xB4,0x14,0xF0,0x86,0xD5,0x14,0xDE,0x8B, + 0xF6,0x14,0x37,0x8C,0x17,0x15,0xCD,0x91,0x38,0x15,0xF0,0x95, + 0x59,0x15,0x33,0x96,0x7A,0x15,0x4D,0x96,0x9B,0x15,0x64,0x96, + 0xBC,0x15,0xE8,0x96,0xDD,0x15,0xEA,0x96,0xFE,0x15,0x1C,0x97, + 0x1F,0x16,0x32,0x97,0x40,0x16,0x52,0x97,0x61,0x16,0x99,0x9F, + 0x82,0x16,0xDF,0x98,0xA3,0x16,0x0B,0x4E,0xC4,0x16,0x7F,0x6E, + 0xE5,0x16,0x30,0x57,0x06,0x17,0x43,0x67,0x27,0x17,0xCA,0x76, + 0x48,0x17,0xFB,0x8B,0x69,0x17,0x66,0x4E,0x8A,0x17,0x05,0x96, + 0xAB,0x17,0x2A,0x82,0xCC,0x17,0x29,0x59,0xED,0x17,0xA4,0x62, + 0x0E,0x18,0xEB,0x58,0x2F,0x18,0xAF,0x73,0x50,0x18,0x83,0x58, + 0x71,0x18,0x57,0x90,0x92,0x18,0xA7,0x4E,0xB3,0x18,0x5A,0x51, + 0xD4,0x18,0xFA,0x5E,0xF5,0x18,0x9B,0x51,0x16,0x19,0x97,0x62, + 0x37,0x19,0x18,0x62,0x58,0x19,0x68,0x51,0x79,0x19,0xC8,0x70, + 0x9A,0x19,0x88,0x6D,0xBB,0x19,0x32,0x96,0xDC,0x19,0xB0,0x8B, + 0xFD,0x19,0x05,0x80,0x1E,0x1A,0xAA,0x5B,0x3F,0x1A,0xD5,0x6C, + 0x60,0x1A,0xD7,0x5F,0x81,0x1A,0x3F,0x61,0xA2,0x1A,0x6C,0x51, + 0xC3,0x1A,0x6D,0x79,0xE4,0x1A,0x1F,0x61,0x05,0x1B,0x69,0x60, + 0x26,0x1B,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x0E, + 0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, + 0x30,0x30,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x14,0x28, + 0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07, + 0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x28,0x28,0xFC,0x28,0x48, + 0x50,0xFC,0x50,0x50,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00, + 0x00,0x10,0x38,0x54,0x54,0x30,0x18,0x14,0x54,0x54,0x38,0x10, + 0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x44,0xA8,0xA8, + 0xB0,0x54,0x1A,0x2A,0x2A,0x44,0x00,0x00,0x07,0x07,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x20,0x50,0x50,0x60,0xAC,0xA8,0x98,0x92, + 0x7C,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x60,0x60,0x20, + 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07, + 0x0E,0x00,0x00,0x00,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10, + 0x10,0x08,0x08,0x04,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x40, + 0x20,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x00, + 0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38, + 0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x07,0x07,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x00,0x00, + 0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x20,0xC0,0x07,0x07,0x0E, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x07, + 0x07,0x0E,0x00,0x00,0x00,0x02,0x04,0x04,0x04,0x08,0x08,0x10, + 0x10,0x20,0x20,0x20,0x40,0x00,0x07,0x07,0x0E,0x00,0x00,0x00, + 0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x84,0x84,0x48,0x30,0x00, + 0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x10,0x70,0x10, + 0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,0x07,0x07,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x38,0x44,0x44,0x04,0x08,0x10,0x20,0x44, + 0x7C,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x38, + 0x44,0x44,0x18,0x04,0x04,0x44,0x44,0x38,0x00,0x00,0x07,0x07, + 0x0E,0x00,0x00,0x00,0x00,0x08,0x08,0x18,0x28,0x48,0x48,0x88, + 0x7C,0x08,0x1C,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x7C,0x40,0x40,0x78,0x44,0x04,0x44,0x44,0x38,0x00,0x00, + 0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x3C,0x44,0x80,0xB8, + 0xC4,0x84,0x84,0x84,0x78,0x00,0x00,0x07,0x07,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x7C,0x44,0x48,0x08,0x10,0x10,0x10,0x10,0x10, + 0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x78,0x84, + 0x84,0x48,0x78,0x84,0x84,0x84,0x78,0x00,0x00,0x07,0x07,0x0E, + 0x00,0x00,0x00,0x00,0x00,0x78,0x84,0x84,0x84,0x8C,0x74,0x04, + 0x88,0xF0,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x07, + 0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x00,0x10,0x10,0x20,0x07,0x07,0x0E,0x00,0x00,0x00, + 0x00,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x00,0x00, + 0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC, + 0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x0E,0x00, + 0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x40, + 0x00,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x78,0x84, + 0x84,0x84,0x08,0x10,0x10,0x00,0x30,0x30,0x00,0x00,0x07,0x07, + 0x0E,0x00,0x00,0x00,0x00,0x00,0x38,0x44,0x9A,0xAA,0xAA,0xAA, + 0xB4,0x42,0x3C,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x10,0x10,0x28,0x28,0x28,0x38,0x44,0x44,0xEE,0x00,0x00, + 0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0xF8,0x44,0x44,0x78, + 0x44,0x44,0x44,0x44,0xF8,0x00,0x00,0x07,0x07,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x3C,0x44,0x84,0x80,0x80,0x80,0x80,0x44,0x38, + 0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0xF0,0x48, + 0x44,0x44,0x44,0x44,0x44,0x48,0xF0,0x00,0x00,0x07,0x07,0x0E, + 0x00,0x00,0x00,0x00,0x00,0xFC,0x44,0x40,0x48,0x78,0x48,0x40, + 0x44,0xFC,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00, + 0xFC,0x42,0x40,0x48,0x78,0x48,0x40,0x40,0xE0,0x00,0x00,0x07, + 0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x3C,0x44,0x84,0x80,0x80, + 0x8E,0x84,0x44,0x38,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00, + 0x00,0x00,0xEE,0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0xEE,0x00, + 0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0x10, + 0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,0x07,0x07,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x10,0x90,0xE0,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0xEE, + 0x44,0x48,0x50,0x70,0x48,0x48,0x44,0xEE,0x00,0x00,0x07,0x07, + 0x0E,0x00,0x00,0x00,0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40, + 0x40,0x44,0xFC,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00, + 0x00,0xEE,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0xD6,0x00,0x00, + 0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0xEE,0x64,0x64,0x54, + 0x54,0x54,0x4C,0x4C,0xE4,0x00,0x00,0x07,0x07,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x84,0x84,0x48,0x30, + 0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0xF8,0x44, + 0x44,0x44,0x78,0x40,0x40,0x40,0xE0,0x00,0x00,0x07,0x07,0x0E, + 0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x84,0xB4, + 0x48,0x38,0x0C,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00, + 0xF8,0x44,0x44,0x78,0x50,0x48,0x48,0x44,0xE6,0x00,0x00,0x07, + 0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x3C,0x44,0x40,0x20,0x18, + 0x04,0x04,0x44,0x78,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00, + 0x00,0x00,0xFE,0x92,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00, + 0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0xEE,0x44,0x44, + 0x44,0x44,0x44,0x44,0x44,0x38,0x00,0x00,0x07,0x07,0x0E,0x00, + 0x00,0x00,0x00,0x00,0xEE,0x44,0x44,0x48,0x28,0x28,0x28,0x10, + 0x10,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0xD6, + 0x54,0x54,0x54,0x54,0x6C,0x28,0x28,0x28,0x00,0x00,0x07,0x07, + 0x0E,0x00,0x00,0x00,0x00,0x00,0xEE,0x44,0x28,0x28,0x10,0x28, + 0x28,0x44,0xEE,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00, + 0x00,0xEE,0x44,0x28,0x28,0x10,0x10,0x10,0x10,0x38,0x00,0x00, + 0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x7C,0x88,0x08,0x10, + 0x20,0x20,0x40,0x44,0xFC,0x00,0x00,0x07,0x07,0x0E,0x00,0x00, + 0x00,0x1C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x1C,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x40,0x40,0x20, + 0x20,0x10,0x10,0x10,0x08,0x08,0x04,0x04,0x00,0x07,0x07,0x0E, + 0x00,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x10,0x10,0x70,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x10,0x28, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07, + 0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xFE,0x07,0x07,0x0E,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x38,0x44,0x1C,0x24,0x44,0x3E,0x00,0x00,0x07,0x07,0x0E,0x00, + 0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x78,0x44,0x44,0x44,0x44, + 0x78,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x3C,0x44,0x40,0x40,0x44,0x38,0x00,0x00,0x07,0x07, + 0x0E,0x00,0x00,0x00,0x00,0x00,0x0C,0x04,0x04,0x3C,0x44,0x44, + 0x44,0x44,0x3E,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x38,0x44,0x7C,0x40,0x44,0x38,0x00,0x00, + 0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x1C,0x24,0x20,0xF8, + 0x20,0x20,0x20,0x20,0x78,0x00,0x00,0x07,0x07,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x48,0x48,0x30,0x40,0x78, + 0x44,0x38,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0xC0,0x40, + 0x40,0x58,0x64,0x44,0x44,0x44,0xEE,0x00,0x00,0x07,0x07,0x0E, + 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x70,0x10,0x10,0x10, + 0x10,0x7C,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x38,0x08,0x08,0x08,0x08,0x08,0x08,0x70,0x07, + 0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x5C,0x48, + 0x50,0x70,0x48,0xEC,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00, + 0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00, + 0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xF8,0x54,0x54,0x54,0x54,0xD6,0x00,0x00,0x07,0x07,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x64,0x44,0x44,0x44, + 0xEE,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x38,0x44,0x44,0x44,0x44,0x38,0x00,0x00,0x07,0x07, + 0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x44,0x44, + 0x44,0x44,0x78,0x40,0xE0,0x07,0x07,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x3C,0x44,0x44,0x44,0x44,0x3C,0x04,0x0E, + 0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC, + 0x30,0x20,0x20,0x20,0xF8,0x00,0x00,0x07,0x07,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x44,0x30,0x08,0x44,0x78, + 0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x10, + 0x10,0x7C,0x10,0x10,0x10,0x10,0x0C,0x00,0x00,0x07,0x07,0x0E, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0x44,0x44,0x44, + 0x44,0x3E,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xEE,0x44,0x48,0x28,0x28,0x10,0x00,0x00,0x07, + 0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD6,0x54, + 0x54,0x54,0x28,0x28,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xDC,0x48,0x30,0x30,0x48,0xEC,0x00, + 0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xEE,0x44,0x28,0x28,0x10,0x10,0x20,0xE0,0x07,0x07,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x48,0x10,0x10,0x24, + 0x7C,0x00,0x00,0x07,0x07,0x0E,0x00,0x00,0x00,0x0C,0x08,0x08, + 0x08,0x08,0x10,0x08,0x08,0x08,0x08,0x08,0x0C,0x00,0x07,0x07, + 0x0E,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x10,0x10,0x10,0x10,0x10,0x07,0x07,0x0E,0x00,0x00,0x00,0x60, + 0x20,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x20,0x60,0x00, + 0x07,0x07,0x0E,0x00,0x00,0x30,0x48,0x06,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x08, + 0x00,0x08,0x00,0x08,0x00,0x08,0x18,0x7F,0xE0,0x08,0x00,0x08, + 0x00,0x08,0x00,0x08,0x00,0x08,0x08,0x08,0x08,0x08,0x10,0x07, + 0xE0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0, + 0x08,0x00,0x08,0x00,0x0F,0xF0,0x08,0x10,0x08,0x10,0x10,0x10, + 0x10,0x10,0x10,0x10,0x20,0x10,0x22,0x20,0x41,0xC0,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x7F,0xF8,0x00,0x00,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x3F,0xF0,0x22,0x10,0x22,0x10, + 0x22,0x10,0x22,0x10,0x22,0x10,0x3F,0xF0,0x02,0x00,0x02,0x00, + 0x02,0x00,0x00,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x04, + 0x00,0x04,0x00,0x04,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x08, + 0x40,0x08,0x40,0x08,0x40,0x10,0x48,0x10,0x48,0x20,0x48,0x40, + 0x30,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x04,0x00,0x04, + 0x00,0x04,0x00,0x3F,0xE0,0x04,0x20,0x04,0x20,0x08,0x20,0x08, + 0x20,0x08,0x20,0x08,0x20,0x7F,0xF8,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x02,0x00,0x02,0x00,0x7F,0xF0,0x08,0x40,0x08,0x40, + 0xFF,0xF8,0x02,0x00,0x02,0x00,0x3F,0xE0,0x0A,0x40,0x12,0x20, + 0x62,0x10,0x0E,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x02, + 0x80,0x04,0x80,0x04,0x40,0x08,0x20,0x10,0x20,0x20,0x10,0x40, + 0x08,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x08,0x80,0x08,0x80, + 0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80, + 0x08,0x80,0x08,0x80,0x10,0x88,0x20,0x88,0x40,0x70,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00, + 0x00,0x7F,0xF8,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08, + 0x80,0x10,0x88,0x20,0x88,0xC0,0x78,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x00,0x22,0x10,0x12,0x20,0x12,0x20,0x0A,0x40, + 0x7F,0xF8,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x10,0x88, + 0x20,0x88,0x40,0xF0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x80,0x08,0x80,0x08,0x80,0x08,0x40,0x10,0x40,0x10, + 0x40,0x10,0x20,0x20,0x20,0x20,0x10,0x40,0x10,0x40,0x08,0x80, + 0x08,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00, + 0x01,0x00,0x01,0x00,0x7F,0xF8,0x08,0x80,0x08,0x40,0x08,0x20, + 0x10,0x20,0x10,0x10,0x20,0x10,0x20,0x08,0x40,0x08,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x08,0x00,0x0F,0xE0,0x18,0x20,0x64, + 0x40,0x02,0x80,0x01,0x00,0x0E,0xC0,0x78,0x38,0x07,0x00,0x00, + 0x00,0x0C,0x00,0x03,0x80,0x00,0x60,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x04,0x80,0x08,0x40,0x08,0x40,0x10,0x20,0x20,0x10, + 0x5F,0xE8,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x20,0x10,0x20, + 0x30,0x20,0x41,0xC0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x20, + 0x00,0x13,0xF8,0x00,0x88,0x38,0x88,0x08,0x88,0x12,0x88,0x14, + 0x88,0x7C,0x88,0x13,0x08,0x11,0x08,0x11,0x08,0x12,0x08,0x14, + 0x70,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40, + 0x1C,0x40,0x00,0xF8,0x00,0x48,0x7E,0x48,0x10,0x48,0x14,0x48, + 0x24,0x88,0x24,0x88,0x22,0x88,0x7F,0x08,0x01,0x30,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x08,0x40,0x7F,0xF8,0x08,0x40,0x08, + 0x40,0x77,0xB8,0x40,0x08,0x44,0x08,0x3F,0xE0,0x04,0x20,0x08, + 0x20,0x08,0x20,0x10,0x20,0x60,0xC0,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00, + 0x7F,0xFC,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00, + 0x02,0x00,0x00,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x10, + 0x00,0x10,0x00,0x2F,0xF0,0x21,0x00,0x41,0x00,0x01,0x00,0x01, + 0x00,0x3F,0xF0,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, + 0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x1F,0xE0,0x20,0x20, + 0x20,0x20,0x3F,0xE0,0x00,0x00,0x3F,0xF0,0x22,0x10,0x22,0x10, + 0x22,0x10,0x24,0x10,0x04,0x90,0x18,0x70,0x60,0x08,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF8,0x44,0x88,0x44, + 0x88,0x44,0x88,0x44,0x88,0x44,0x88,0x48,0x88,0x58,0xF8,0x60, + 0x08,0x40,0x08,0x40,0x08,0x3F,0xF0,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x3F,0xF0,0x40,0x08,0x5F,0xE8,0x42,0x08,0x42,0x08, + 0x42,0x08,0x5F,0xE8,0x42,0x88,0x42,0x48,0x42,0x48,0x7F,0xE8, + 0x40,0x08,0x3F,0xF0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x3F, + 0xC0,0x10,0x20,0x08,0x40,0x04,0x40,0x03,0x80,0x03,0x00,0x1C, + 0xE0,0x60,0x18,0x02,0x00,0x1F,0xE0,0x02,0x00,0x02,0x00,0x7F, + 0xF8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x10,0x40,0x20,0x40, + 0x3C,0x40,0x22,0x40,0x22,0x60,0x52,0x50,0x52,0x48,0x14,0x40, + 0x14,0x40,0x08,0x40,0x14,0x40,0x23,0x00,0x40,0xFC,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x7F,0xF8,0x02,0x00,0x3D,0xF0,0x3F, + 0xF0,0x20,0x10,0x3F,0xF0,0x20,0x10,0x1F,0xE0,0x0F,0xE0,0x38, + 0x20,0xC4,0x40,0x03,0x80,0x7C,0x7C,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x04,0x00,0x07,0xF8,0x08,0x08,0x10,0x08,0x10,0x08, + 0x70,0x08,0x0C,0x10,0x03,0x10,0x00,0x90,0x00,0x20,0x00,0x40, + 0x01,0x80,0x7E,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x02, + 0x00,0x7F,0xF8,0x11,0x00,0x11,0xF0,0x12,0x10,0x25,0x90,0x24, + 0x90,0x6C,0x50,0xA2,0x20,0x21,0x40,0x20,0xC0,0x21,0x20,0x0E, + 0x18,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00, + 0x02,0x00,0x7F,0xFC,0x02,0x00,0x03,0x00,0x03,0x00,0x04,0x80, + 0x04,0x80,0x08,0x40,0x10,0x20,0x20,0x10,0x40,0x08,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x01,0x00,0x09,0x00,0x05,0x00,0x21, + 0x00,0x11,0x00,0x01,0x00,0x7F,0xFC,0x02,0x80,0x02,0x40,0x04, + 0x20,0x04,0x20,0x18,0x10,0x60,0x08,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xF8,0x08,0x20, + 0x10,0x40,0x10,0x40,0x10,0x40,0x0C,0x80,0x03,0x00,0x03,0xC0, + 0x0C,0x30,0x70,0x08,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x20, + 0x00,0x23,0xF8,0x78,0x08,0x24,0x08,0x44,0x08,0x48,0x08,0x4B, + 0xF8,0x48,0x08,0x28,0x08,0x10,0x08,0x18,0x08,0x27,0xF8,0x40, + 0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x3F,0xF0, + 0x40,0x08,0x42,0x08,0x44,0x00,0x04,0x00,0x7B,0xF0,0x10,0x40, + 0x10,0x40,0x0C,0x80,0x03,0x00,0x06,0xE0,0xF8,0x18,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xF8,0x52,0x28,0x4A, + 0x28,0x0A,0x40,0x3F,0xF0,0x20,0x10,0x3F,0xF0,0x20,0x10,0x20, + 0x10,0x3F,0xF0,0x20,0x10,0x20,0xF0,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x02,0x00,0x7F,0xF8,0x48,0x88,0x7F,0xF8,0x08,0x80, + 0x3F,0xF0,0x08,0x80,0x3F,0x70,0x12,0x20,0x21,0x10,0xC0,0x0C, + 0x06,0x00,0x01,0x80,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00, + 0x00,0x02,0x00,0x02,0x00,0x12,0x20,0x22,0x10,0x22,0x10,0x22, + 0x10,0x22,0x10,0x42,0x08,0x42,0x08,0x82,0x00,0x02,0x00,0x0E, + 0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x07,0xF8,0x10,0x40, + 0x50,0x40,0x53,0xF8,0x54,0x48,0x54,0x48,0x54,0x48,0x14,0x48, + 0x14,0x48,0x14,0x48,0x24,0x68,0x60,0x50,0x00,0x40,0x0E,0x0E, + 0x0E,0x00,0x00,0x00,0x00,0x7F,0xF8,0x02,0x00,0x22,0x10,0x22, + 0x10,0x12,0x20,0x0A,0x40,0x0A,0x80,0x7F,0xF8,0x02,0x00,0x02, + 0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x0E,0x0E,0x0E,0x00,0x00, + 0x00,0x00,0x08,0x00,0x1F,0xF8,0x11,0x00,0x21,0x00,0x41,0x00, + 0x1F,0xF8,0x11,0x00,0x11,0x00,0x11,0x00,0x2F,0xF0,0x01,0x00, + 0x01,0x00,0x01,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x01, + 0x00,0x3F,0xF8,0x41,0x00,0x41,0x00,0x41,0x00,0x5F,0xF8,0x41, + 0x80,0x42,0x80,0x42,0x40,0x44,0x40,0x44,0x20,0x48,0x10,0x30, + 0x08,0x07,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x01,0x00,0x3F,0xF8,0x40,0x00,0x4F,0xF0,0x44, + 0x10,0x42,0x60,0x41,0x80,0x5F,0xF8,0x41,0x08,0x41,0x08,0x41, + 0x10,0x41,0x00,0x07,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x7F,0xF8,0x10,0x20, + 0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20, + 0x1F,0xE0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x20,0x00,0x23, + 0xF0,0x60,0x80,0x73,0xF0,0xAF,0xFC,0xA8,0x00,0xA7,0xF8,0xA4, + 0x08,0x27,0xF8,0x24,0x08,0x27,0xF8,0x24,0x08,0x24,0x70,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x20,0x80,0x20,0x80,0x63,0x78, + 0x73,0xF0,0x6C,0x10,0xAC,0x10,0xA4,0x10,0xA3,0xE0,0x22,0x90, + 0x22,0x90,0x24,0x88,0x28,0x88,0x23,0x80,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x3F,0xE0,0x22,0x10,0x3F,0xF0,0x3F,0xF0,0x02, + 0x00,0x7F,0xF0,0x42,0x50,0x5F,0xB0,0x40,0x70,0x22,0x00,0x32, + 0x10,0x52,0x48,0x0F,0xC8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x01,0x00,0x21,0x20,0x22,0x10,0x72,0x10,0x24,0x38,0x23,0xC8, + 0x28,0x00,0x33,0xF0,0x64,0x10,0x24,0x10,0x24,0x10,0x24,0x10, + 0x63,0xF0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x7C, + 0x80,0x12,0xF0,0x14,0x90,0x7F,0x90,0x09,0x90,0x3D,0x90,0x28, + 0x60,0xCA,0x60,0x1C,0x60,0x64,0x90,0x05,0x10,0x1A,0x08,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x20,0x10, + 0x20,0x10,0x20,0x10,0x20,0x10,0x3F,0xF0,0x20,0x10,0x20,0x10, + 0x20,0x10,0x20,0x10,0x3F,0xF0,0x00,0x00,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x1F,0xE0,0x20,0x10,0x20,0x10,0x20,0x10,0x20, + 0x10,0x3F,0xF0,0x20,0x10,0x20,0x10,0x20,0x10,0x3F,0xF0,0x00, + 0x00,0x7F,0xF8,0x00,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x00,0x78,0x20,0x48,0x20,0x4F,0xF0,0x48,0x20,0x4A,0x20, + 0x79,0x20,0x48,0xA0,0x48,0x60,0x48,0x20,0x48,0x20,0x49,0x20, + 0x30,0xE0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x38,0xF8,0x45, + 0x08,0x45,0x08,0x45,0x08,0x45,0xF8,0x7D,0x08,0x45,0x08,0x45, + 0x08,0x45,0xF8,0x7D,0x08,0x02,0x08,0x04,0x08,0x08,0x38,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x1F,0xE0,0x20,0x10,0x20,0x10, + 0x3F,0xF0,0x20,0x10,0x1F,0xE0,0x12,0x00,0x3F,0xF0,0x42,0x00, + 0x1F,0xF0,0x02,0x00,0x02,0x00,0x7F,0xF8,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x02,0x00,0x3F,0xE0,0x02,0x00,0x1D,0xE0,0x04, + 0x00,0x3F,0xF0,0x08,0x40,0x1F,0xF0,0xF0,0x2C,0x10,0x20,0x1F, + 0xE0,0x10,0x20,0x1F,0xE0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x1F,0xE0,0x20,0x10,0x3F,0xF0,0x3F,0xF0,0x02,0x08,0x3F,0xF0, + 0x02,0x60,0x7F,0xF8,0x06,0x00,0x79,0xF0,0x1F,0xF0,0x10,0x10, + 0x1F,0xF0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x1F,0xE0,0x20, + 0x10,0x20,0x10,0x20,0x10,0x3F,0xF0,0x20,0x10,0x20,0x10,0x1F, + 0xF0,0x20,0x10,0x20,0x10,0x20,0x10,0x40,0x10,0x40,0xE0,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x24,0x00,0x24,0xF8,0x3C,0x88, + 0x24,0x88,0x3C,0xF8,0x24,0x88,0x3C,0x88,0x24,0xF8,0x24,0x88, + 0x1B,0x88,0x24,0x88,0x25,0x08,0x43,0x38,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x20,0x00,0x20,0x10,0x27,0x78,0x20,0x90,0x35, + 0x50,0x35,0x50,0x63,0x50,0x63,0x30,0xA3,0x30,0x23,0x10,0x24, + 0x90,0x28,0x10,0x20,0x30,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x03,0xF0,0x24,0x08,0x24,0x08,0x7F,0xF8,0x34,0x08,0x57,0xF8, + 0x6C,0x48,0x64,0x50,0xA6,0x60,0x24,0x40,0x24,0x44,0x25,0xC8, + 0x06,0x78,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x20, + 0x80,0x23,0xF0,0x78,0x80,0x33,0x70,0x34,0x10,0x6F,0xF0,0x64, + 0x10,0xA7,0xF0,0x24,0x10,0x27,0xF0,0x24,0x10,0x07,0xF8,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x01,0x00, + 0x01,0x00,0x11,0x00,0x11,0x00,0x11,0xF8,0x11,0x00,0x11,0x00, + 0x11,0x00,0x11,0x00,0x11,0x00,0x7F,0xF8,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x1F,0xF0,0x20,0x10,0x22,0x10,0x21,0x10,0x21, + 0x10,0x7F,0xF8,0x22,0x10,0x22,0x10,0x21,0x10,0x21,0x10,0x3F, + 0xF8,0x00,0x10,0x00,0xF0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x01,0x00,0x01,0x00,0x01,0x08,0x7D,0x10,0x05,0x20,0x05,0xC0, + 0x05,0x80,0x09,0x40,0x11,0x20,0x21,0x10,0x41,0x08,0x01,0x00, + 0x0E,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x40,0x80,0x2F, + 0xF8,0x10,0x80,0x0F,0xF0,0x40,0x80,0x27,0x78,0x07,0xF0,0x14, + 0x10,0x17,0xF0,0x24,0x10,0x27,0xF0,0x44,0x10,0x44,0x30,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x40,0x20,0x2F,0xF8,0x10,0x20, + 0x00,0x00,0xC7,0xF0,0x22,0x20,0x0F,0xF8,0x0A,0x48,0x2B,0x28, + 0x2D,0x68,0x4C,0x98,0x48,0x08,0x48,0x38,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x04,0x80,0x08,0x40,0x10,0x20,0x30,0x10,0x50, + 0x28,0x08,0x40,0x08,0x40,0x04,0x80,0x02,0x80,0x01,0x00,0x06, + 0x80,0x18,0x60,0x60,0x18,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x02,0x00,0x02,0x00,0x3D,0xF8,0x40,0x08,0x40,0x08,0x40,0x08, + 0x40,0x08,0x7F,0xF8,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08, + 0x3F,0xF0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x0C,0x40,0x71, + 0x48,0x11,0x48,0x11,0x48,0x7E,0x48,0x12,0x50,0x3A,0x50,0x34, + 0xC0,0x54,0xA0,0x91,0x20,0x11,0x10,0x12,0x08,0x14,0x00,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x08,0x40,0x30,0x40,0x20,0x40, + 0x23,0xF8,0xFA,0x48,0x32,0x48,0x2A,0x48,0x6A,0x48,0x63,0xF8, + 0x20,0x40,0x20,0x40,0x20,0x40,0x00,0x40,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x40,0x78,0x40,0x20,0x50,0x22,0x50,0x3E, + 0x48,0x32,0x48,0x34,0x48,0x6C,0x50,0x60,0x50,0xA0,0x10,0x20, + 0x20,0x20,0x40,0x07,0x80,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x09,0xF0,0x72,0x08,0x14,0x08,0x12,0x08,0x79,0xF0,0x10,0x00, + 0x3F,0xF0,0x50,0x40,0x50,0x40,0x11,0xF0,0x10,0x40,0x10,0x40, + 0x17,0xF8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x02, + 0x00,0x01,0x00,0x3E,0xF0,0x00,0x20,0x10,0x20,0x10,0x20,0x10, + 0x20,0x10,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x7F,0xF8,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xF8,0x08,0x40, + 0x08,0x80,0x77,0x70,0x3F,0xF0,0x22,0x10,0x3F,0xF0,0x22,0x10, + 0x1F,0xF0,0x3F,0xF0,0x02,0x00,0x7F,0xF8,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x22,0x48,0x22,0x48,0x7E,0x48,0x01,0xB0,0x4B, + 0xF8,0x48,0x40,0x49,0xF8,0x4A,0xA8,0x4A,0xA8,0x4A,0xA8,0x52, + 0xA8,0x3E,0xA8,0x02,0xB8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x39,0x10,0x49,0x10,0x4F,0xF0,0x49,0x10,0x39,0x10,0x4F,0xF8, + 0x48,0x00,0x3B,0xF8,0x4A,0x08,0x4B,0xF8,0x4A,0x08,0x4A,0x08, + 0x19,0xF0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x3F, + 0xF0,0x08,0x40,0x08,0x40,0x10,0x20,0x3F,0xD0,0x02,0x08,0x02, + 0x00,0x3F,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x7F,0xF8,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x40,0x7F,0xF8,0x10,0x40, + 0x00,0x40,0x00,0x00,0x3F,0xF0,0x02,0x10,0x02,0x10,0x02,0x10, + 0x02,0x10,0x02,0x90,0x02,0x60,0x02,0x00,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x20,0x7F,0xF8,0x10,0x20,0x10,0x20,0x02, + 0x00,0x01,0x00,0x3E,0xF0,0x10,0x00,0x10,0x00,0x10,0x00,0x10, + 0x00,0x10,0x00,0x0F,0xF8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x10,0x80,0x7D,0xE0,0x12,0x90,0x15,0x90,0x78,0x94,0x11,0x58, + 0x72,0x28,0x1F,0xE0,0x62,0x10,0x42,0x10,0x3F,0xF0,0x02,0x30, + 0x7D,0xC8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x08,0x2E, + 0xF0,0x22,0x20,0x04,0xA0,0x64,0xA0,0x27,0xB8,0x21,0xA0,0x29, + 0xA0,0x26,0xA0,0x22,0xA0,0x2B,0x50,0x34,0x80,0x08,0x78,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x04,0x40,0x18,0x20,0x60,0x10, + 0x03,0x00,0x04,0xC0,0x18,0x20,0x60,0x18,0x1F,0xE0,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x1F,0xE0,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x30,0x1F,0xC0,0x02,0x00,0x3F,0xF0,0x3F, + 0xF0,0x42,0x10,0x42,0x10,0x7F,0xF0,0x42,0x10,0x3F,0xE0,0x3F, + 0xF0,0x02,0x00,0x7F,0xF8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x20,0x00,0x2F,0xF8,0x10,0x08,0x20,0x08,0x2F,0xC8,0x21,0x08, + 0x21,0x08,0x2F,0xC8,0x21,0x08,0x21,0x08,0x2E,0xC8,0x20,0x08, + 0x00,0x38,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x39,0xF0,0x46, + 0x08,0x4A,0x08,0x4A,0x08,0x4A,0x08,0x4A,0x08,0x4B,0xF8,0x46, + 0x08,0x46,0x08,0x7A,0x08,0x42,0x08,0x42,0x08,0x41,0xF0,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x21,0xE0,0x5A,0x10,0x55,0x20, + 0x50,0xC0,0x60,0xC0,0x53,0x78,0x4C,0x40,0x4B,0xF8,0x4A,0x40, + 0x74,0x40,0x43,0xF8,0x40,0x40,0x40,0x40,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x20,0xC0,0x51,0x20,0x52,0x10,0x54,0x08,0x6F, + 0xF0,0x50,0x80,0x50,0x80,0x4F,0xF8,0x4A,0x80,0x74,0x90,0x48, + 0x88,0x40,0x88,0x43,0x80,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x00,0x3F,0xF0,0x02,0x00,0x7F,0xF0,0x62,0x88,0x52,0x48, + 0x4A,0x28,0x42,0x08,0x72,0x88,0x4A,0x48,0x4A,0x28,0x42,0x08, + 0x40,0x70,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x3F,0xF0,0x02, + 0x00,0x3F,0xF8,0x42,0x08,0x5E,0xF8,0x42,0x10,0x0A,0x60,0x3F, + 0xF0,0x00,0x10,0x00,0x10,0x1F,0xF0,0x00,0x10,0x3F,0xF0,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x3F,0xF0,0x02,0x00,0x7F,0xF8, + 0xBE,0xF8,0x02,0x08,0x1E,0x70,0x11,0xF0,0x7E,0x10,0x19,0xF0, + 0x36,0x10,0x55,0xF0,0x12,0x10,0x11,0xF0,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x3F,0xF0,0x3F,0xF0,0xC2,0x08,0x1E,0x78,0x3E, + 0xF0,0x38,0x80,0x45,0xF0,0x46,0xA0,0x38,0xE0,0x51,0x18,0x59, + 0xF0,0x55,0x10,0x6B,0xF0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x02,0x00,0x3F,0xE0,0x02,0x00,0x1F,0xE0,0x7F,0xF8,0x00,0x00, + 0x3F,0xF0,0x20,0x10,0x3F,0xF0,0x20,0x10,0x3F,0xF0,0x20,0x10, + 0x20,0xE0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x80,0x04, + 0x60,0x04,0x00,0x3F,0xF0,0x05,0x00,0x05,0x10,0x05,0x20,0x09, + 0x40,0x09,0x40,0x11,0x80,0x23,0x08,0x4D,0x08,0x01,0xF0,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x03,0x00,0x04,0x80,0x1A,0x60, + 0x62,0x18,0x3F,0xE0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x3F,0xD0, + 0x22,0x20,0x21,0xC0,0x22,0x20,0x1C,0x10,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x7F,0xF8,0x02,0x00,0x02,0x00,0x02,0x00,0x03, + 0x80,0x02,0x40,0x02,0x20,0x02,0x10,0x02,0x00,0x02,0x00,0x02, + 0x00,0x02,0x00,0x02,0x00,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x47,0xF0,0x28,0x10,0x18,0x10,0x0F,0xF0,0x48,0x10,0x27,0xF0, + 0x02,0x40,0x0A,0x48,0x2A,0x50,0x26,0x50,0x46,0x60,0x42,0x40, + 0x5F,0xF8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x20,0x80,0x20, + 0x80,0x24,0x80,0x74,0xF8,0x2F,0x88,0x24,0x88,0x24,0x88,0x24, + 0x88,0x24,0xB0,0x2C,0x80,0x34,0x08,0x44,0x08,0x03,0xF0,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x10,0x00,0x17,0xF0,0x12,0x08, + 0x32,0x10,0x32,0x10,0x39,0x10,0x51,0x20,0x50,0xA0,0x90,0x40, + 0x10,0xC0,0x11,0x20,0x12,0x10,0x1C,0x0C,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x10,0x20,0x08,0x40,0x7F,0xF8,0x00,0x80,0x08, + 0x60,0x30,0x10,0x40,0x08,0x3F,0xF0,0x44,0x90,0x44,0x90,0x44, + 0x90,0x44,0x90,0x7F,0xFC,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x80,0x27,0xF0,0x10,0x80,0x0F,0xF8,0x00,0x08,0x61,0x08, + 0x24,0xC0,0x23,0x40,0x20,0x40,0x23,0xF0,0x28,0xA0,0x11,0x10, + 0x06,0x08,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x40,0x04, + 0x30,0x1F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x3F,0xB0,0x04, + 0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x00,0xE0,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x27,0xF8,0x20,0x08,0x58,0x88, + 0x44,0x88,0x4F,0xC8,0x50,0x48,0x50,0x48,0x4F,0xC8,0x45,0x08, + 0x45,0x08,0x49,0x38,0x70,0xC8,0x40,0x38,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x10,0x40,0x38,0x40,0x67,0xB0,0x54,0x00,0x55, + 0xE0,0x45,0x20,0x45,0x20,0x7D,0x20,0x55,0x20,0x55,0x20,0x55, + 0x28,0x56,0x28,0x1E,0x18,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x00,0x1F,0xE0,0x02,0x00,0x02,0x00,0x02,0x00,0x7F,0xF8, + 0x01,0x00,0x03,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x10, + 0x60,0x08,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x80,0x20, + 0x40,0x21,0xF0,0x7E,0x08,0x24,0x08,0x24,0x08,0x2F,0xF0,0x34, + 0x00,0x64,0x00,0x24,0x00,0x24,0x00,0x28,0x00,0x68,0x00,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00, + 0x02,0x00,0x7F,0xF8,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00, + 0x02,0x00,0x02,0x00,0x02,0x00,0x7F,0xF8,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7F,0xF8,0x20,0x80,0x20,0x80,0x20, + 0x80,0x21,0xA0,0x22,0xA0,0x24,0x90,0x28,0x88,0x30,0x80,0x30, + 0x80,0x40,0x80,0x00,0x80,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x20,0x80,0x27,0xF8,0x22,0x20,0xF9,0x20,0x26,0xD0,0x27,0xF8, + 0x24,0x08,0x27,0xF8,0x27,0xF8,0x39,0x40,0x61,0x44,0x82,0x44, + 0x0C,0x38,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x40,0x80,0x27, + 0xF0,0x28,0x90,0x07,0xE0,0x0F,0xF8,0x67,0xF0,0x24,0x90,0x24, + 0x90,0x24,0x90,0x25,0x50,0x12,0x30,0x2C,0x10,0x47,0xF8,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x3F,0xF8,0x08,0x20, + 0x08,0x40,0x04,0x40,0x3F,0xF8,0x20,0x00,0x20,0x00,0x40,0x00, + 0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x10,0x20,0x0A,0x20,0x7F,0xF8,0x40,0x08,0x5F, + 0xE8,0x10,0x20,0x10,0x20,0x10,0x20,0x0F,0xC0,0x04,0x80,0x08, + 0x88,0x10,0x88,0x60,0xF8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x80,0x37,0xF0,0x10,0x90,0x2F,0xF8,0x40,0x90,0x70,0x90, + 0x1F,0xE0,0x57,0xF0,0x50,0x80,0x3F,0xF8,0x30,0x80,0x48,0x80, + 0x47,0xFC,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x3F,0xF0,0x40, + 0x08,0x44,0x08,0x7F,0xF8,0x0A,0x00,0x12,0x00,0x12,0x00,0x1F, + 0xF0,0x02,0x00,0x02,0x00,0x7F,0xF0,0x02,0x00,0x00,0x00,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x80,0x27,0xF8, + 0x78,0x00,0x20,0x00,0x23,0xE0,0x2A,0x20,0x12,0x20,0xE2,0x20, + 0x22,0x24,0x22,0x24,0x24,0x28,0x68,0x18,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x10,0x20,0x10,0x90,0x1E,0x88,0x13,0xF8,0x10, + 0x80,0x7C,0x80,0x44,0x90,0x44,0x60,0x44,0x60,0x44,0x40,0x44, + 0xA8,0x39,0x28,0x02,0x18,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x03,0x00,0x04,0x80,0x08,0x40,0x10,0x20,0x60,0x18,0x1F,0xE0, + 0x02,0x00,0x02,0x00,0x3F,0xF0,0x02,0x00,0x02,0x00,0x02,0x00, + 0x7F,0xF8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x7F,0x48,0x10, + 0x48,0x1E,0x48,0x21,0x48,0x22,0x48,0x52,0x48,0x0C,0x48,0x08, + 0x08,0x30,0x78,0x24,0x90,0x24,0x88,0x44,0x88,0x40,0x40,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x80,0x24,0x90,0x12,0xA0, + 0x00,0x80,0x4F,0x78,0x28,0x08,0x07,0xF8,0x18,0x08,0x18,0x08, + 0x27,0xF8,0x28,0x08,0x48,0x08,0x40,0x30,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x30,0x80,0x48,0x80,0x57,0xF8,0x51,0x00,0x51, + 0x00,0x51,0xF0,0x49,0x10,0x4A,0x10,0x6A,0x10,0x52,0x10,0x44, + 0x10,0x48,0x10,0x40,0x60,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x27,0xF0,0x10,0x08,0x00,0x08,0x00,0x08,0x60,0x08,0x23,0xF0, + 0x24,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x2C,0x08,0x14,0x08, + 0x13,0xF8,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x02, + 0x10,0x1F,0xE0,0x02,0x40,0x7F,0xFC,0x02,0x00,0x0C,0x00,0x33, + 0xF0,0xD0,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,0x0F,0xE0,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x3F,0xF0,0x42,0x08, + 0x52,0x08,0x1F,0xE0,0x22,0x00,0x22,0x00,0x7F,0xF8,0x08,0x80, + 0x08,0x88,0x08,0x88,0x10,0x88,0x60,0xF0,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x00,0x80,0x20,0x80,0x1F,0xF8,0x00,0x80,0x40, + 0x80,0x20,0x80,0x1F,0x70,0x11,0x00,0x12,0x20,0x22,0x20,0x24, + 0x10,0x48,0xF8,0x47,0x08,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x00,0x02,0x00,0x3F,0xF0,0x02,0x00,0x02,0x00,0x7F,0xF0, + 0x02,0x00,0x2A,0x10,0x2A,0x10,0x49,0x30,0x49,0x48,0x48,0x48, + 0x0F,0xC0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x3F,0xF8,0x41, + 0x00,0x5E,0xF0,0x5F,0xF0,0x50,0x10,0x4F,0xF0,0x49,0x20,0x49, + 0x10,0x57,0x08,0x55,0x10,0x55,0x28,0x94,0xA8,0x07,0xC0,0x0E, + 0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x80,0x08,0x40, + 0x10,0x20,0x20,0x20,0x42,0x10,0x84,0x08,0x04,0x40,0x08,0x20, + 0x10,0x20,0x10,0x10,0x3F,0xF0,0x00,0x08,0x0E,0x0E,0x0E,0x00, + 0x00,0x00,0x00,0x11,0x00,0x2F,0xF0,0x32,0x90,0x4A,0xA0,0x24, + 0x40,0x18,0x20,0x37,0xD8,0xC0,0x00,0x3F,0xF0,0x0A,0x40,0x12, + 0x20,0x22,0x10,0x4E,0x08,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00, + 0x00,0x90,0x3F,0xF0,0x40,0x88,0x4F,0x90,0x4E,0x60,0x51,0x60, + 0x51,0x24,0x51,0x58,0x0E,0x88,0x2A,0x10,0x29,0x28,0x49,0x28, + 0x4F,0xC0,0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x3F,0xF0,0x42, + 0x10,0x5F,0xF0,0x43,0x10,0x44,0x90,0x58,0x50,0x40,0x10,0x3F, + 0xE0,0x2A,0x10,0x49,0x30,0x48,0xA8,0x48,0x20,0x0F,0xC0, }; -#endif +#endif // __sfont__ diff --git a/src/user_custs1_impl.c b/src/user_custs1_impl.c index 938506d..55a8890 100644 --- a/src/user_custs1_impl.c +++ b/src/user_custs1_impl.c @@ -36,30 +36,36 @@ **************************************************************************************** */ -#include "gpio.h" -#include "app_api.h" -#include "app.h" -#include "prf_utils.h" -#include "custs1.h" -#include "custs1_task.h" -#include "user_custs1_def.h" -#include "user_custs1_impl.h" -#include "user_peripheral.h" -#include "user_periph_setup.h" -#include "adc.h" +#include "gpio.h" // GPIO控制相关头文件 +#include "app_api.h" // 应用程序API +#include "app.h" // 应用程序核心功能 +#include "prf_utils.h" // BLE配置文件工具 +#include "custs1.h" // 自定义服务1 +#include "custs1_task.h" // 自定义服务1任务 +#include "user_custs1_def.h" // 自定义服务1定义 +#include "user_custs1_impl.h" // 自定义服务1实现 +#include "user_peripheral.h" // 用户外设相关 +#include "user_periph_setup.h" // 用户外设设置 +#include "adc.h" // ADC(模数转换)相关 -#include "epd.h" +#include "epd.h" // 电子墨水屏驱动 /* - * GLOBAL VARIABLE DEFINITIONS + * 全局变量定义 + * 这些变量使用__SECTION_ZERO("retention_mem_area0")属性放置在掉电保持内存区域 **************************************************************************************** */ +// 定时器ID,用于系统定时任务 ke_msg_id_t timer_used __SECTION_ZERO("retention_mem_area0"); //@RETENTION MEMORY +// 指示计数器,用于BLE通知计数 uint16_t indication_counter __SECTION_ZERO("retention_mem_area0"); //@RETENTION MEMORY +// 非数据库值计数器 uint16_t non_db_val_counter __SECTION_ZERO("retention_mem_area0"); //@RETENTION MEMORY +// ADC采样值,用于电池电量检测 int adcval; +static uint8_t h24_format = 1; // 24小时制标志 static void get_holiday(void); @@ -68,58 +74,134 @@ static void get_holiday(void); **************************************************************************************** */ + +/** + * @brief 更新ADC采样值并通过BLE发送电池电压数据 + * + * 该函数执行以下操作: + * 1. 校准ADC偏移量 + * 2. 获取电池电压采样值 + * 3. 将采样值转换为实际电压值 + * 4. 通过BLE发送电压值给连接的设备 + * + * @return 返回计算后的电压值 + */ int adc1_update(void) { - adc_offset_calibrate(ADC_INPUT_MODE_SINGLE_ENDED); - adcval = adc_get_vbat_sample(false); - int volt = (adcval*225)>>7; + // 校准ADC偏移,使用单端输入模式 + adc_offset_calibrate(ADC_INPUT_MODE_SINGLE_ENDED); + // 获取电池电压采样值 + adcval = adc_get_vbat_sample(false); + // 将ADC值转换为实际电压值 (单位: mV) + int volt = (adcval*225)>>7; - struct custs1_val_set_req *req = KE_MSG_ALLOC_DYN(CUSTS1_VAL_SET_REQ, prf_get_task_from_id(TASK_ID_CUSTS1), TASK_APP, custs1_val_set_req, DEF_SVC1_ADC_VAL_1_CHAR_LEN); - req->conidx = app_env->conidx; - req->handle = SVC1_IDX_ADC_VAL_1_VAL; - req->length = DEF_SVC1_ADC_VAL_1_CHAR_LEN; - req->value[0] = volt&0xff; - req->value[1] = volt>>8; - KE_MSG_SEND(req); - - return volt; + // 分配内存并构造BLE消息 + struct custs1_val_set_req *req = KE_MSG_ALLOC_DYN(CUSTS1_VAL_SET_REQ, + prf_get_task_from_id(TASK_ID_CUSTS1), + TASK_APP, + custs1_val_set_req, + DEF_SVC1_ADC_VAL_1_CHAR_LEN); + // 设置连接索引 + req->conidx = app_env->conidx; + // 设置特征值句柄 + req->handle = SVC1_IDX_ADC_VAL_1_VAL; + // 设置数据长度 + req->length = DEF_SVC1_ADC_VAL_1_CHAR_LEN; + // 设置电压值(16位,低字节在前) + req->value[0] = volt&0xff; + req->value[1] = volt>>8; + // 发送BLE消息 + KE_MSG_SEND(req); + + return volt; } /****************************************************************************************/ +/** + * 农历年份数据表(2020-2051年) + * 每个16位数据包含以下信息: + * - 高4位(bit 15-12): 闰月月份,0表示当年无闰月 + * - 低12位(bit 11-0): 每个月的大小月标记,1表示大月(30天),0表示小月(29天) + * 例如:0x07954 + * - 0: 无闰月 + * - 7954: 从正月到十二月的大小月情况 + */ static const uint16_t lunar_year_info[32] = { - 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, //2020-2029 - 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x0d0b6, 0x0d250, 0x0d520, 0x0dd45, //2030-2039 - 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x0b255, 0x06d20, 0x0ada0, //2040-2049 - 0x04b63, 0x09370, //2050-2051 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, //2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x0d0b6, 0x0d250, 0x0d520, 0x0dd45, //2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x0b255, 0x06d20, 0x0ada0, //2040-2049 + 0x04b63, 0x09370, //2050-2051 }; + +// 额外的农历年份信息,用于标记特殊年份的闰月情况 static const uint32_t lunar_year_info2 = 0x48010000; -// 每个节气相对于"小寒"的秒数 +/** + * 24节气时间数据表 + * 存储了一年中24个节气相对于"小寒"的时间间隔(以秒为单位) + * + * 节气顺序: + * 1-6月:小寒、大寒、立春、雨水、惊蛰、春分 + * 7-12月:清明、谷雨、立夏、小满、芒种、夏至 + * 13-18月:小暑、大暑、立秋、处暑、白露、秋分 + * 19-24月:寒露、霜降、立冬、小雪、大雪、冬至 + */ static int jieqi_info[] = { - 0, 1272283, 2547462, 3828568, 5117483, 6416376, - 7726093, 9047327, 10379235, 11721860, 13072410, 14428379, - 15787551, 17145937, 18501082, 19850188, 21190911, 22520708, - 23839844, 25146961, 26443845, 27730671, 29010666, 30284551, + 0, 1272283, 2547462, 3828568, 5117483, 6416376, // 小寒到春分 + 7726093, 9047327, 10379235, 11721860, 13072410, 14428379, // 清明到夏至 + 15787551, 17145937, 18501082, 19850188, 21190911, 22520708, // 小暑到秋分 + 23839844, 25146961, 26443845, 27730671, 29010666, 30284551, // 寒露到冬至 }; -// 已知2020年"小寒"相对于1月1日的秒数 +/** + * 2020年"小寒"节气的基准时间 + * 相对于2020年1月1日的秒数 + * 用于计算其他年份的节气时间 + */ #define xiaohan_2020 451804 +/** + * 全局时间变量定义 + * 公历日期相关变量: + * year: 年份,如2025 + * month: 月份,0-11表示1-12月 + * date: 日期,0-30表示1-31日 + * wday: 星期,0-6表示星期日到星期六 + * + * 农历日期相关变量: + * l_year: 农历年在lunar_year_info数组中的索引,如4表示2024年 + * l_month: 农历月份,0-11表示正月到腊月,最高位1表示闰月 + * l_date: 农历日期,0-29表示初一到三十 + * + * 时间相关变量: + * hour: 小时,0-23 + * minute: 分钟,0-59 + * second: 秒,0-59 + */ int year=2025, month=0, date=0, wday=3; int l_year=4, l_month=11, l_date=1; int hour=0, minute=0, second=0; +/** + * 获取农历月份的天数 + * + * @param mon 月份编号,最高位为1表示闰月 + * @param yinfo_out 输出参数,用于返回年份信息 + * @return 返回该月的天数(29或30) + */ static int get_lunar_mdays(int mon, int *yinfo_out) { - int lflag = mon&0x80; - mon &= 0x7f; + // 获取闰月标志(最高位) + int lflag = mon&0x80; + // 获取实际月份(去除闰月标志) + mon &= 0x7f; // 取得当年的信息 int yinfo = lunar_year_info[l_year]; @@ -327,44 +409,71 @@ static int epd_wait_state; static timer_hnd epd_wait_hnd; typedef struct { - char *name; - uint8_t mon; - uint8_t day; + char *name; + uint8_t mon; + uint8_t day; }HOLIDAY_INFO; HOLIDAY_INFO hday_info[] = { - {"除夕", 0xc0|12, 30}, - {"春节", 0x80| 1, 1}, - {"元宵节", 0x80| 1, 15}, - {"龙抬头", 0x80| 2, 2}, - {"端午节", 0x80| 5, 5}, - {"七夕节", 0x80| 7, 7}, - {"中秋节", 0x80| 8, 15}, - {"重阳节", 0x80| 9, 9}, - {"腊八节", 0x80|12, 8}, + // 农历传统节日(0x80 表示农历日期,0xc0 表示月末) + {"腊八", 0x80|12, 8}, // 农历腊月初八 + {"小年", 0x80|12, 23}, // 农历腊月廿三 + {"除夕", 0xc0|12, 30}, // 农历腊月最后一天 + {"春节", 0x80| 1, 1}, // 农历正月初一 + {"元宵节", 0x80| 1, 15}, // 农历正月十五 + {"龙抬头", 0x80| 2, 2}, // 农历二月初二 + {"寒食节", 0x80| 3, 3}, // 农历三月初三 + {"端午节", 0x80| 5, 5}, // 农历五月初五 + {"七夕节", 0x80| 7, 7}, // 农历七月初七 + {"中元节", 0x80| 7, 15}, // 农历七月十五 + {"中秋节", 0x80| 8, 15}, // 农历八月十五 + {"重阳节", 0x80| 9, 9}, // 农历九月初九 + {"下元节", 0x80|10, 15}, // 农历十月十五 - {"元旦节", 1, 1}, - {"情人节", 2, 14}, - {"妇女节", 3, 8}, - {"植树节", 3, 12}, - {"愚人节", 4, 1}, - {"劳动节", 5, 1}, - {"青年节", 5, 4}, - {"母亲节", 5, 0x97}, // 5月第二个周日 - {"儿童节", 6, 1}, - {"父亲节", 6, 0xa7}, // 6月第三个周日 - {"教师节", 9, 10}, - {"国庆节", 10, 1}, - {"程序员节", 10, 24}, - {"万圣节", 11, 1}, - {"光棍节", 11, 11}, - {"平安夜", 12, 24}, + // 阳历法定节假日和纪念日 + {"元旦", 1, 1}, + {"湿地日", 2, 2}, + {"情人节", 2, 14}, + {"妇女节", 3, 8}, + {"植树节", 3, 12}, + {"权益日", 3, 15}, + {"愚人节", 4, 1}, + {"读书日", 4, 23}, + {"阅读日", 4, 23}, + {"航天日", 4, 24}, + {"劳动节", 5, 1}, + {"青年节", 5, 4}, + {"护士节", 5, 12}, + {"儿童节", 6, 1}, + {"环境日", 6, 5}, + {"遗产日", 6, 8}, + {"建党节", 7, 1}, + {"建军节", 8, 1}, + {"抗战日", 9, 3}, + {"教师节", 9, 10}, + {"安全日", 9, 15}, + {"烈士日", 9, 30}, + {"国庆节", 10, 1}, + {"万圣节", 10, 31}, + {"消防日", 11, 9}, + {"记者节", 11, 8}, + {"宪法日", 12, 4}, + {"志愿日", 12, 5}, + {"公祭日", 12, 13}, {"圣诞节", 12, 25}, - {"", 0, 0}, + + + // 特殊周期性节日 + {"母亲节", 5, 0x97}, // 5月第二个周日 + {"父亲节", 6, 0xa7}, // 6月第三个周日 + {"感恩节", 11, 0xa4}, // 11月第四个周四 + + {"", 0, 0} // 结束标记 }; + static char *jieqi_str = "小寒"; -static char *holiday_str = "元旦节"; +static char *holiday_str = "元旦"; static void ldate_str(char *buf) { @@ -470,49 +579,113 @@ static uint8_t batt_cal(uint16_t adc_sample) return batt_lvl; } +/** + * 绘制电池电量图标 + * + * @param x 图标左上角的x坐标 + * @param y 图标中心的y坐标 + * + * 图标说明: + * - 外框大小:16x8像素 + * - 电量显示:根据实际电量百分比填充内部 + * - 电池正极:2x2像素 + */ static void draw_batt(int x, int y) { - int p = batt_cal(adcval); - p /= 10; + // 获取电池电量百分比并转换为显示段数(0-10) + int p = batt_cal(adcval); + p /= 10; - draw_rect(x, y-4, x+14, y+4, BLACK); - draw_box(x-2, y-1, x-1, y+1, BLACK); + // 绘制电池外框 + draw_rect(x, y-4, x+14, y+4, BLACK); + // 绘制电池正极 + draw_box(x-2, y-1, x-1, y+1, BLACK); - draw_box(x+12-p, y-2, x+12, y+2, BLACK); + // 绘制电量填充部分 + draw_box(x+12-p, y-2, x+12, y+2, BLACK); } +/** + * 绘制蓝牙图标 + * + * @param x 图标中心的x坐标 + * @param y 图标中心的y坐标 + * + * 图标说明: + * - 总体大小:7x9像素 + * - 由一条垂直线和两个对称的三角形组成 + */ static void draw_bt(int x, int y) { - int i; + int i; - draw_vline(x, y-4, y+4, BLACK); - - for(i=0; i<5; i++){ - draw_pixel(x-2+i, y-2+i, BLACK); - draw_pixel(x-2+i, y+2-i, BLACK); - } - draw_pixel(x+1, y-3, BLACK); - draw_pixel(x+1, y+3, BLACK); + // 绘制中心竖线 + draw_vline(x, y-4, y+4, BLACK); + + // 绘制两个对称的三角形 + for(i=0; i<5; i++){ + // 绘制上三角形的边 + draw_pixel(x-2+i, y-2+i, BLACK); + // 绘制下三角形的边 + draw_pixel(x-2+i, y+2-i, BLACK); + } + // 绘制三角形的补充点 + draw_pixel(x+1, y-3, BLACK); + draw_pixel(x+1, y+3, BLACK); } +/** + * 电子墨水屏更新等待定时器 + * + * 功能说明: + * - 检查电子墨水屏是否处于忙状态 + * - 如果忙,则40ms后再次检查 + * - 如果空闲,则完成更新流程并进入省电模式 + * + * 电子墨水屏更新完成后的处理: + * 1. 发送深度睡眠命令(0x10, 0x01) + * 2. 关闭电源 + * 3. 关闭硬件接口 + * 4. 设置系统进入扩展睡眠模式 + */ static void epd_wait_timer(void) { - if(epd_busy()){ - epd_wait_hnd = app_easy_timer(40, epd_wait_timer); - }else{ - epd_wait_hnd = EASY_TIMER_INVALID_TIMER; - epd_cmd1(0x10, 0x01); - epd_power(0); - epd_hw_close(); - arch_set_sleep_mode(ARCH_EXT_SLEEP_ON); - } + if(epd_busy()){ + // 屏幕仍在忙,40ms后再次检查 + epd_wait_hnd = app_easy_timer(40, epd_wait_timer); + }else{ + // 屏幕更新完成 + epd_wait_hnd = EASY_TIMER_INVALID_TIMER; + // 发送深度睡眠命令 + epd_cmd1(0x10, 0x01); + // 关闭电源 + epd_power(0); + // 关闭硬件接口 + epd_hw_close(); + // 设置系统进入扩展睡眠模式 + arch_set_sleep_mode(ARCH_EXT_SLEEP_ON); + } } - +/** + * 绘制时钟界面 + * + * @param flags 显示控制标志 + * bit0-1: 更新模式(快速/正常) + * bit2: 是否显示蓝牙图标 + * + * 显示内容包括: + * - 电池电量图标 + * - 蓝牙连接状态图标(可选) + * - 大字号时间显示 + * - 公历日期和星期 + * - 农历日期 + * - 节气和节日信息 + */ void clock_draw(int flags) { - char tbuf[64]; + char tbuf[64]; if(ota_state){ return; @@ -533,12 +706,38 @@ void clock_draw(int flags) } // 使用大字显示时间 - select_font(1); - sprintf(tbuf, "%02d:%02d", hour, minute); - draw_text(12, 25, tbuf, BLACK); + + if(h24_format){ + // 24小时制 + select_font(0); + sprintf(tbuf, "%02d:%02d", hour, minute); + draw_text(5, 25, " ", BLACK); + draw_text(5, 38, " ", BLACK); + select_font(1); + draw_text(12, 25, tbuf, BLACK); + }else{ + // 12小时制 + int h = hour; + char *ampm = "A"; + if(h>=12){ + if(h>12) h -= 12; + ampm = "P"; + }else if(h==0){ + h = 12; // 0点显示为12点 + } + sprintf(tbuf, "%02d:%02d", h, minute); + select_font(1); + draw_text(12, 25, tbuf, BLACK); + select_font(0); + // 显示AM/PM + draw_text(5, 25, ampm, BLACK); + draw_text(5, 38, "M", BLACK); + } + + // 显示公历日期 - sprintf(tbuf, "%4d年%2d月%2d日 星期%s", year, month+1, date+1, wday_str[wday]); + sprintf(tbuf, "%4d年%2d月%2d日 星期%s", year, month+1, date+1, wday_str[wday]); select_font(0); draw_text(15, 8, tbuf, BLACK); @@ -567,33 +766,94 @@ void clock_draw(int flags) /****************************************************************************************/ -void user_svc1_ctrl_wr_ind_handler(ke_msg_id_t const msgid, struct custs1_val_write_ind const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) +/** + * 控制点写入指示处理函数 + * + * @param msgid 消息ID + * @param param 写入参数 + * @param dest_id 目标任务ID + * @param src_id 源任务ID + * + * 处理通过BLE接收到的控制命令 + */ +void user_svc1_ctrl_wr_ind_handler(ke_msg_id_t const msgid, + struct custs1_val_write_ind const *param, + ke_task_id_t const dest_id, + ke_task_id_t const src_id) { - printk("Control Point: %02x\n", param->value[0]); - + // 打印接收到的控制命令 + printk("Control Point: %02x\n", param->value[0]); } -void user_svc1_long_val_wr_ind_handler(ke_msg_id_t const msgid, struct custs1_val_write_ind const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) +/** + * 长值特征写入指示处理函数 + * + * @param msgid 消息ID + * @param param 写入参数 + * @param dest_id 目标任务ID + * @param src_id 源任务ID + * + * 处理命令: + * - 0x91: 时钟设置命令 + * - 0xA0及以上: OTA升级相关命令 + */ +void user_svc1_long_val_wr_ind_handler(ke_msg_id_t const msgid, + struct custs1_val_write_ind const *param, + ke_task_id_t const dest_id, + ke_task_id_t const src_id) { - //printk("Long value: %d\n", param->length); - if(param->value[0]==0x91){ - clock_set((uint8_t*)param->value); + if(param->value[0]==0x91){ + // 设置时钟 + clock_set((uint8_t*)param->value); + // 更新显示(带蓝牙图标,快速更新模式) + clock_draw(DRAW_BT|UPDATE_FAST); + // 打印当前时间信息 + clock_print(); + } + else if(param->value[0]==0x90) + { + //修改24-12小时制 + h24_format = !h24_format; clock_draw(DRAW_BT|UPDATE_FAST); - clock_print(); - }else if(param->value[0]>=0xa0){ - ota_handle((u8*)param->value); } + else if(param->value[0]>=0xa0) + { + // 处理OTA升级命令 + ota_handle((u8*)param->value); + } + } - -void user_svc1_long_val_att_info_req_handler(ke_msg_id_t const msgid, struct custs1_att_info_req const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) +/** + * 长值特征属性信息请求处理函数 + * + * @param msgid 消息ID + * @param param 请求参数 + * @param dest_id 目标任务ID + * @param src_id 源任务ID + * + * 响应BLE客户端的属性信息请求 + */ +void user_svc1_long_val_att_info_req_handler(ke_msg_id_t const msgid, + struct custs1_att_info_req const *param, + ke_task_id_t const dest_id, + ke_task_id_t const src_id) { - struct custs1_att_info_rsp *rsp = KE_MSG_ALLOC(CUSTS1_ATT_INFO_RSP, src_id, dest_id, custs1_att_info_rsp); + // 分配响应消息内存 + struct custs1_att_info_rsp *rsp = KE_MSG_ALLOC(CUSTS1_ATT_INFO_RSP, + src_id, + dest_id, + custs1_att_info_rsp); + // 设置连接索引 rsp->conidx = app_env[param->conidx].conidx; + // 设置属性索引 rsp->att_idx = param->att_idx; + // 设置长度为0 rsp->length = 0; + // 设置状态为无错误 rsp->status = ATT_ERR_NO_ERROR; + // 发送响应消息 KE_MSG_SEND(rsp); } diff --git a/weble/log.js b/weble/log.js deleted file mode 100644 index 658e7f6..0000000 --- a/weble/log.js +++ /dev/null @@ -1,64 +0,0 @@ -// 创建日志容器与清除按钮 -const logDiv = document.createElement("div"); -logDiv.id = "fixed-log-window"; -document.body.appendChild(logDiv); - -// 添加清除按钮 -const clearBtn = document.createElement("button"); -clearBtn.textContent = "清空日志"; -clearBtn.className = "clear-log-btn"; -logDiv.appendChild(clearBtn); - -// 按钮点击事件 -clearBtn.onclick = () => { - logDiv.querySelectorAll(".log-entry").forEach(entry => entry.remove()); -}; - -// 覆盖 console.log(保持原有功能) -const originalLog = console.log; -console.log = function(...args) { - originalLog(...args); - const logLine = document.createElement("div"); - logLine.className = "log-entry"; - logLine.textContent = args.join(" "); - logDiv.appendChild(logLine); - logDiv.scrollTop = logDiv.scrollHeight; // 自动滚动 -}; - -// 样式增强 -const style = document.createElement("style"); -style.textContent = ` -#fixed-log-window { - /* 原有样式保持不变 */ - position: fixed; - bottom: 0; - left: 0; - right: 0; - height: 200px; - background: rgba(0, 0, 0, 0.85); - color: #fff; - overflow-y: auto; - padding: 40px 10px 10px; /* 顶部留出按钮空间 */ - font-family: monospace; -} -.clear-log-btn { - position: fixed; - right: 20px; - bottom: 215px; - padding: 4px 12px; - background: #ff4444; - border: none; - color: white; - cursor: pointer; - border-radius: 3px; -} -.clear-log-btn:hover { - background: #cc0000; -} -.log-entry { - padding: 4px 0; - border-bottom: 1px solid rgba(255,255,255,0.1); -} -`; -document.head.appendChild(style); - diff --git a/weble/webApp.html b/weble/webApp.html new file mode 100644 index 0000000..14b9e70 --- /dev/null +++ b/weble/webApp.html @@ -0,0 +1,609 @@ + + + + + + HM CLOCK + + + + + + + + + + + + + +

+ +
+

HM CLOCK 控制中心

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

设备名称

+

未连接

+
+
+ +
+
+ +
+
+

当前电压

+

--.- V

+
+
+ +
+
+ +
+
+

设备时间

+

--:--:--

+
+
+ +
+
+ +
+
+

系统时间

+

加载中...

+
+
+
+ + + + + +
+
+

+ 设备日志 +

+ +
+ +
+
终端已启动,等待设备连接...
+
+
+
+ + +
+

HM CLOCK蓝牙控制工具 © https://github.com/tpunix/HMCLOCK

+
+
+ + + + + + \ No newline at end of file diff --git a/weble/weble.html b/weble/weble.html deleted file mode 100644 index 377ae75..0000000 --- a/weble/weble.html +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - Web Bluetooth Example - - - - - -
-
-
-
-
- - - - - - - - -