Compare commits

...

146 Commits

Author SHA1 Message Date
Gabriel Wang
aa7446344c chore(cmsis-pack): create cmsis-pack for v9.2.0 2024-08-27 00:01:11 +02:00
Gabriel Wang
d4d46793fa feat(arm-2d): treat XRGB888 as ARGB8888 which alpha is always 0xFF 2024-08-27 00:01:11 +02:00
Gabriel Wang
03871ad18d feat(arm-2d): upgrade to v1.1.6 and slightly improve the performance 2024-08-27 00:01:11 +02:00
Gabriel Wang
f292ddde34 chore(cmsis-pack): update pdsc 2024-08-27 00:01:11 +02:00
Gabriel Wang
d01c6a4892 fix(porting): add buffer alignment attribute 2024-08-27 00:01:11 +02:00
Gabor Kiss-Vamosi
d39fc17595 chore: increase the version numbers to v9.2 2024-08-26 21:39:11 +02:00
Gabor Kiss-Vamosi
963f88d898 chore: minor docs and other updates 2024-08-26 21:39:11 +02:00
Gabor Kiss-Vamosi
45c485ecae docs(hover): remove 'not supported yet' notes 2024-08-26 21:39:11 +02:00
Gabor Kiss-Vamosi
9d781406c6 docs: add CHANGELOG for v9.2 2024-08-26 21:39:11 +02:00
nicusorcitu
2b33f8b0a7 perf(nxp): v9.1.0 upstream vglite optimization (#6646)
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>
Signed-off-by: Ana Grad <ana.grad@nxp.com>
Signed-off-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
Co-authored-by: Ana Grad <ana.grad@nxp.com>
Co-authored-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
2024-08-26 20:11:26 +02:00
Liam
0bd8cbcc9e fix(freertos): notifiy-based sync can be initialized from any task (#6692) 2024-08-26 16:17:12 +02:00
Victor Wheeler
c46f6b0a41 Fix/Doxygen warning stragglers caused by recent merges (#6736) 2024-08-26 13:38:37 +02:00
Gabor Kiss-Vamosi
f4ea1ec82c chore: add LV_USE_PRIVATE_API (#6737) 2024-08-26 13:29:26 +02:00
NicGrimpe
8b659fc9a2 fix(env_support/cmake): If LV_CONF_PATH is set, install the indicated config instead of the default one. (#6675) 2024-08-26 12:31:12 +02:00
Gabor Kiss-Vamosi
3147fc2f52 fix(i1): fix compiler and runtime issues with I1 rendering (#6714)
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2024-08-26 12:30:40 +02:00
VIFEX
6b8d420170 fix(vg_lite): fix rounded rectangle path error (#6726)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-08-26 17:43:56 +08:00
VIFEX
9c4d4ba595 fix(vg_lite): fix rendering aliasing caused by global matrix transformation (#6730)
Signed-off-by: FASTSHIFT <vifextech@foxmail.com>
2024-08-26 17:43:46 +08:00
Victor Wheeler
fe2331489b docs(label): fix unintentional definition list in parts and styles section (#6735) 2024-08-26 16:54:24 +08:00
Gabor Kiss-Vamosi
51f06c097d feat(sdl_render): support all draw task types (#6437) 2024-08-26 10:46:40 +02:00
yushuailong
d028a970a0 fix(indev): fix LV_EVENT_SCROLL_THROW_BEGIN not send to scroll_obj (#6693)
Signed-off-by: yushuailong1 <yushuailong1@xiaomi.com>
Co-authored-by: yushuailong1 <yushuailong1@xiaomi.com>
2024-08-26 09:54:54 +02:00
Visa Harvey
016b397642 fix(tiny_ttf): Fix formatting specifier macro in lv_tiny_ttf_set_size (#6731) 2024-08-26 09:54:00 +02:00
Neo Xu
5a004a4db3 fix(nuttx): fix build break (#6732)
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-26 10:13:40 +08:00
Neo Xu
03c3d552f0 chore(api): add api map for v9.1 (#6733)
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-26 10:13:05 +08:00
Carlos Diaz
d59938d7f7 feat(scale): add custom labels example (#6699)
Co-authored-by: Liu Yi <lhdjply@126.com>
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-08-25 07:48:13 +02:00
VIFEX
4349dfc593 fix(chart): fix memory leak (#6727)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-08-24 11:23:42 +02:00
Gabor Kiss-Vamosi
e28caac406 docs(arm): add overview docs for Arm (#6712) 2024-08-24 08:45:38 +02:00
Tobias Jakobi
a3e9208a88 fix(draw/neon): fix build break (#6682)
Co-authored-by: Tobias Jakobi <tobias.jakobi@compleo-cs.com>
2024-08-23 22:58:48 +02:00
Martin Vladić
14e6949a1e fix(spinbox): add missing update value (#6719) 2024-08-23 16:12:04 -04:00
Liam
7560fcb193 fix(roller): do not move when there is only one option (#6717)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-08-23 22:05:39 +02:00
Erik Tagirov
e186b4c8b6 feat(driver): import Wayland driver from v8 (#6549) 2024-08-23 22:03:55 +02:00
becseya
aebb4d3ad3 feat(scripts): add default config generator (#6522)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2024-08-23 21:38:25 +02:00
Gabor Kiss-Vamosi
ccb7bf29cc feat(draw_sw): extend lv_draw_sw_rotate with L8 support (#6520) 2024-08-23 09:47:04 +02:00
zipeartnes
f2303758bf feat(anim_timeline): add repeat and more (#6127)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-08-23 09:15:42 +02:00
Victor Wheeler
69e91cc560 fix(docbuild): Fix @file commands and guard macros. (#6689) 2024-08-23 08:45:45 +02:00
VIFEX
ed4cb19926 perf(draw): skip empty draw tasks (#6720)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-08-23 08:28:47 +02:00
Mike Trzaska
8d8b279638 feat(indev): add scroll_time and scroll_throw setter (#6723) 2024-08-23 14:25:43 +08:00
Liam
69d440335f fix(fs): remove Arduino SD initialization (#6725) 2024-08-23 08:16:52 +02:00
Gabor Kiss-Vamosi
f874ab3e9a fix(benchmark): use assets only from its own folder (#6666) 2024-08-23 06:19:04 +02:00
Gabor Kiss-Vamosi
a7853fbe56 docs(obj): fix typo of LV_OBJ_FLAG_IGNORE_LAYOUT (#6713) 2024-08-23 08:43:46 +08:00
Victor Wheeler
77892ee0ad fix(Kconfig): remove leading spaces on line 1692 (#6695) 2024-08-23 08:43:13 +08:00
VIFEX
afd82d0666 feat(draw): add physical clipping area to solve the scaling accuracy problem (#6703)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-08-22 02:18:40 +02:00
Gabor Kiss-Vamosi
3313664b70 chore: move the astyle repo to the lvgl organization (#6614) 2024-08-22 02:16:47 +02:00
Liu Yi
bac9b29b77 fix(roller): fix roller error in ubuntu24.04 uefi (#6683)
Signed-off-by: lhdjply <lhdjply@126.com>
2024-08-21 11:47:55 +02:00
becseya
a476098fcc feat(fs): default drive letter + ESP FS docs (#6367)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-08-21 11:47:29 +02:00
Koen De Vleeschauwer
5f7a5605cd fix(rtthread): display driver hang (#6667) 2024-08-21 11:47:12 +02:00
Gabor Kiss-Vamosi
f8e0932316 feat(freertos): add functions to better measure the CPU usage (#6619) 2024-08-21 11:46:51 +02:00
Fabian Blatz
b78a4de898 chore(docs): update Zephyr documentation (#6581) 2024-08-21 11:46:40 +02:00
Neo Xu
afcf722e6f fix(objid): free old id before assign new one (#6697)
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-21 10:20:37 +02:00
Neo Xu
78d29d2853 fix(demo): fill image->data_size field (#6710) 2024-08-21 08:31:05 +08:00
yushuailong
c52aa10128 chore(display): prevent disp_refr from becoming a wild pointer (#6618)
Signed-off-by: yushuailong1 <yushuailong1@xiaomi.com>
Co-authored-by: yushuailong1 <yushuailong1@xiaomi.com>
2024-08-17 18:27:04 +02:00
Fabian Blatz
d7b82c7966 feat(core): Add lv_group_get_obj_by_index method (#6589) 2024-08-15 09:41:22 +02:00
Tomas Rezucha
58c7bb110a docs(espressif): Update Espressif's documentation with esp_lvgl_port (#6658) 2024-08-15 09:40:41 +02:00
Neo Xu
c37ad55160 feat(draw_buf): make draw buf API more OOP style (#6427)
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-15 09:40:05 +02:00
Liam
44eb318d54 feat(opengles): multiple windows and embed user opengl textures (#6600)
Co-authored-by: Dany Liu <dany.yang.liu@email.com>
2024-08-15 11:06:59 +08:00
yushuailong
d2545c3ecf fix(indev): fix indev not send gesture event (#6676)
Signed-off-by: yushuailong1 <yushuailong1@xiaomi.com>
Co-authored-by: yushuailong1 <yushuailong1@xiaomi.com>
2024-08-14 10:13:00 +08:00
VIFEX
491b899c14 fix(indev): swap the order of sending indev events and obj events (#6636)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-08-14 10:12:38 +08:00
Liam
cda2d609bb feat(obj): add lv_obj_null_on_delete (#6599) 2024-08-13 23:58:03 +08:00
Makoto Schoppert
2d2a18b346 chore(demos/README.md): fix typo LV_MEME_SIZE (#6669) 2024-08-13 11:06:09 +02:00
Liu Yi
51649d5e82 fix(scripts): fix update_version error (#6662)
Signed-off-by: lhdjply <lhdjply@126.com>
2024-08-13 11:05:46 +02:00
Lemon
0e60911f8a fix(refr): reshape using draw_buf stride (#6567)
Signed-off-by: liujp <liujp@xiaomi.com>
Co-authored-by: liujp <liujp@xiaomi.com>
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-08-13 10:08:05 +02:00
Antoine Villeret
90cfb6c61b feat(indev): add long press time setter (#6664) 2024-08-13 10:20:15 +08:00
Pavi92
83582f6a3a fix(arc): add missing private include (#6648)
Co-authored-by: liamHowatt <liamjmh0@gmail.com>
2024-08-12 14:54:42 +02:00
Carlos Diaz
5cc4aec82a docs(scale): Add note about major tick label calculation when no custom labels are set (#6585) 2024-08-12 14:52:12 +02:00
Benign X
cd9ff84788 chore(tiny_ttf): fix docstring on each API (#6514)
Co-authored-by: PGNetHun <gabor.p1983@gmail.com>
2024-08-12 14:49:12 +02:00
Victor Wheeler
75bcfc6bec fix(docbuild): Doxygen warnings from format errors (part 2 of 2) (#6653) 2024-08-12 14:21:53 +02:00
Victor Wheeler
14461f1d9d fix(docbuild): Doxygen warnings from format errors (part 1 of 2) (#6652)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-08-12 14:20:15 +02:00
Tomas Rezucha
8699a7e86e feat(cmake): Make LVGL version available for all CMake environments (#6654) 2024-08-09 12:29:22 +08:00
Liu Yi
6264265715 fix(API): keep ime struct lv_pinyin_dict_t public (#6645)
Signed-off-by: lhdjply <lhdjply@126.com>
2024-08-08 11:00:47 +01:00
Benign X
c4ce53c28b chore(text): update ISO8859-1 text functions' docstring (#6590) 2024-08-08 16:57:50 +08:00
Gabor Kiss-Vamosi
1c4d84e07d fix(draw_sw): fix swapped 90/270 rotation in case of RGB888 (#6642) 2024-08-07 08:44:21 +02:00
Victor Wheeler
c98fb29dea fix(docs): fix Doxygen warnings caused by format errors (#6584) 2024-08-07 08:40:10 +02:00
VIFEX
7e3be59dda fix(freetype): fix outline font being cropped (#6639)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-08-06 16:23:43 +08:00
razor5k
bd7ef59034 docs: Added docs for BDF fonts (#6398)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-08-06 10:37:46 +08:00
dependabot[bot]
c8c3bf08bd chore(deps): bump carlosperate/arm-none-eabi-gcc-action from 1.8.2 to 1.9.0 (#6620)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 14:40:32 +02:00
dependabot[bot]
c2effc312c chore(deps): bump JamesIves/github-pages-deploy-action from 4.6.1 to 4.6.3 (#6621)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-05 14:40:06 +02:00
Liu Yi
2bb3d62435 chore(api_map_v8): API for adapting imagebutton for version V8 (#6641)
Signed-off-by: lhdjply <lhdjply@126.com>
2024-08-05 14:33:27 +02:00
pengyiqiang
1d647adaef fix(refr): NOT draw if scale is 0
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-08-05 13:35:08 +02:00
Neo Xu
d6495b576b fix(image): image inner align name should not conflict with obj's align
If the name conflicts with base class property name, the property is overridden. This is the property's feature.
The image inner align name is update to 'inner_align'.

Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-05 13:34:21 +02:00
Neo Xu
c191ecbfb6 fix(property): support user added property index
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-05 11:03:08 +02:00
Neo Xu
7c1a8a523d feat(dropdown): add properties
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-05 11:03:08 +02:00
Neo Xu
a793178bbf feat(roller): add properties
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-05 11:03:08 +02:00
Neo Xu
357d5b7ff9 feat(textarea): add properties
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-05 11:03:08 +02:00
Neo Xu
cd48c3c8d6 feat(keyboard): add properties
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-05 11:03:08 +02:00
Neo Xu
6dc75d4995 feat(property): add boolean type support
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-05 11:03:08 +02:00
elahav
6de668fe4a docs(qnx): reflect on the changed build directory (#6583)
Co-authored-by: Elad Lahav <elahav@qnx.com>
2024-08-05 11:02:22 +02:00
VIFEX
5ea31d7327 perf(vg_lite): use DST_IN blending mode to improve rounded corner cropping performance (#6623)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-08-04 12:07:11 +08:00
Liu Yi
6fa2e0dd51 docs(example): complete the examples not cited in the docs (#6608)
Signed-off-by: lhdjply <lhdjply@126.com>
2024-08-03 08:34:45 +02:00
Liam
39345de1cd fix(API): keep font struct lv_font_fmt_txt_kern_pair_t public (#6625) 2024-08-03 08:33:59 +02:00
Liam
1d14386b99 refactor(API): don't expose private symbols in lvgl.h. phase-out "_lv*" names (#6068)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-08-02 07:46:42 +02:00
Gabor Kiss-Vamosi
a8c8275b56 feat(os): use recursive mutex by default (#6573) 2024-08-02 12:22:53 +08:00
Liam
a246b47e5a docs(msgbox): update to reflect latest (#6603) 2024-08-02 12:21:26 +08:00
cristian-stoica
89f2ff6701 fix(nxp/vglite): fix stride calculation (#6613)
Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>
Signed-off-by: Neo Xu
Signed-off-by: Cristian Stoica
Signed-off-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
Co-authored-by: Nicușor Cîțu <nicusor.citu@nxp.com>
Co-authored-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
2024-08-02 12:17:42 +08:00
Zhang Ji Peng
d7b93dd3f1 fix(vector): fix vector graphic draw test case for amd64 (#6616)
Signed-off-by: zhangjipeng <zhangjipeng@xiaomi.com>
Co-authored-by: zhangjipeng <zhangjipeng@xiaomi.com>
2024-08-01 15:30:34 +02:00
Liam
93e0189309 fix(osal): initialize Windows thread sync correctly (#6604) 2024-08-01 13:06:26 +02:00
Visa Harvey
a623a5ca3d fix(tiny_ttf): fix no cache and formatting cleanup (#6568) 2024-08-01 11:09:55 +02:00
elahav
7791740de6 feat(env/qnx): generate lv_conf.h at build time (#6596)
Co-authored-by: Elad Lahav <elahav@qnx.com>
2024-08-01 09:33:39 +02:00
Neo Xu
7380149b07 feat(label): add property (#6575)
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-08-01 09:10:49 +02:00
VIFEX
49ef8de5d7 fix(vg_lite): remove pattern_color from label drawing (#6605)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-08-01 09:09:54 +02:00
VIFEX
f7b616b59d chore(tests): remove vg_lite L8 render reference images (#6606)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-08-01 09:22:34 +08:00
Lorenzo Arena
a798963ee8 fix(display): delete previous screen instead of current (#6494) 2024-07-31 22:46:28 +08:00
Liu Yi
228bf2007e feat(unity): update unity to version 2.6.0 (#6453)
Signed-off-by: lhdjply <lhdjply@126.com>
2024-07-31 14:14:54 +08:00
Liu Yi
1e36521018 feat(libpng): add parsing variable to libpng (#6553)
Signed-off-by: lhdjply <lhdjply@126.com>
2024-07-29 21:55:15 +02:00
Vic
210e4ba069 fix(docbuild): @file command arg mismatches (#6582) 2024-07-29 09:43:44 +02:00
VIFEX
22f1e03afb feat(nuttx): malloc second FB if driver only has one (#6580)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-07-26 18:00:16 +08:00
Zhang Ji Peng
34742a8db6 perf(array): optimize array remove / erase function performance (#6544)
Signed-off-by: zhangjipeng <zhangjipeng@xiaomi.com>
Co-authored-by: zhangjipeng <zhangjipeng@xiaomi.com>
2024-07-26 11:58:21 +02:00
Fabian Blatz
a2fb2808ba fix(kconfig): Do not set LV_CONF_SKIP by default (#6562) 2024-07-26 09:53:43 +02:00
Neo Xu
d19fb8fdc7 fix(property): fix style property (#6552)
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-07-26 14:30:18 +08:00
Gabor Kiss-Vamosi
6828a9b257 fix(draw_buf): handle negative coordinates on the area to clear (#6510) 2024-07-26 14:23:50 +08:00
VIFEX
966d952bb7 docs: add VG-Lite related documents (#6557)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-07-26 12:20:38 +08:00
Gabor Kiss-Vamosi
56d1538ade docs(qnx): add to index.rst (#6572) 2024-07-25 17:14:56 +02:00
VIFEX
0980518441 feat(draw): add global matrix drawing modes (#4883)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Signed-off-by: wangxuedong <wangxuedong@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: wangxuedong <wangxuedong@xiaomi.com>
2024-07-25 21:24:59 +08:00
elahav
91cd8ecf90 feat(drivers): initial implementation of a QNX screen driver (#6507)
Co-authored-by: Elad Lahav <elahav@qnx.com>
2024-07-25 14:26:09 +02:00
cristian-stoica
91c64fc029 fix(draw_sw): do not recalculate target buffer stride (#6530)
Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
2024-07-25 10:50:13 +08:00
Gabor Kiss-Vamosi
d5d75d6b25 fix(theme): make the text styles work on the INDICATOR's DEFAULT state (#6521) 2024-07-24 23:32:19 +02:00
Fabian Blatz
03e8d808fa feat(nxp/pxp): add Zephyr Support (#6298) 2024-07-24 22:58:54 +02:00
VIFEX
42eec5fb42 perf(vg_lite): add stroke path cache to improve drawing performance (#6502)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-07-24 22:40:00 +02:00
zylalx1
efbb983c16 fix(examples): fix typo in lv_port_indev_template.c (#6555) 2024-07-24 22:37:46 +02:00
Neo Xu
e72fa89822 feat(obj): add more obj properties (#6537)
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-07-24 22:31:56 +02:00
SPeak
9e3ea81dde fix(obj): avoid to init NULL obj
See #6541

Signed-off-by: Sunrisepeak <speakshen@163.com>
2024-07-24 22:31:30 +02:00
Benign X
daa7fefb3a feat(image_decoder): refactor image decoder to reduce file operation on get_info 2024-07-22 23:25:11 +08:00
Benign X
001b4835ba refactor(image_decoder): refactor get_info so that it can pass params via dsc 2024-07-22 23:25:11 +08:00
Liam
b066ff72a0 fix(ci): fix micropython CI (#6546) 2024-07-22 19:17:26 +08:00
VIFEX
4e16f0c644 fix(vg_lite): fix draw pattern recolor error (#6525)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-07-22 11:51:43 +02:00
Neo Xu
f36890102f fix(sdl): make sure minimal alignment is sizeof(void*) for aligned alloc (#6526) 2024-07-21 16:34:36 +08:00
Robin Vos
70c562de16 fix(pxp): use floorf instead of floor (#6516) 2024-07-20 18:22:45 +08:00
Benign X
6609457824 feat(anim): add lv_anim_speed_to_time back (#6531) 2024-07-20 13:00:08 +08:00
之心
a02e40b283 fix(anim): fix deleted_cb not called in lv_anim_delete_all (#6513) 2024-07-20 12:59:53 +08:00
Liu Yi
80b8c33f21 ci(sdl): add sdl build to ci test (#6505)
Signed-off-by: lhdjply <lhdjply@126.com>
Signed-off-by: Liu Yi <lhdjply@126.com>
2024-07-19 18:10:58 +08:00
Fabian Blatz
790aa5a529 feat(draw/sw): add support for LV_COLOR_FORMAT_I1 (#6345)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-07-19 12:10:28 +02:00
Gabor Kiss-Vamosi
e3f8d167cd fix(thorvg): support rendering in draw events (#6406)
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-07-19 18:04:32 +08:00
Clyde Stubbs
aa3320db53 docs: fix flush_cb typo (#6523) 2024-07-19 18:03:43 +08:00
之心
0a1e411038 fix(obj_tree): fix incorrect return value of function lv_obj_get_sibling_by_type() (#6503) 2024-07-16 13:23:29 +02:00
Lorenzo Arena
622346575e fix(test): fix filter option dot escape by setting regexp string (#6509) 2024-07-15 18:53:01 +02:00
Christian Eggers
0952087285 docs: update the drivers description (#6423) 2024-07-15 18:41:09 +02:00
Gabor Kiss-Vamosi
759d8aef87 fix(dave2d): fix rendering to canvas with dave2d (#6498) 2024-07-15 23:58:17 +08:00
Niklas Fiekas
bac697ff9c fix(label): do not break last line for LV_LABEL_LONG_DOT (#5606) (#6362) 2024-07-15 22:13:31 +08:00
Neo Xu
bf1e6ab39c chore: make lv_utils as public and align function prototype with stdlib (#6473)
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-07-15 22:11:44 +08:00
terry.rong
48ce05d71e fix(ime): fix buffer-overflow error in pingyin IME (#6501)
Signed-off-by: rongyichang <rongyichang@xiaomi.com>
2024-07-13 01:14:07 +08:00
Zhang Ji Peng
3d32aa9791 perf(array): optimize array push back function performance (#6431) 2024-07-11 09:54:41 +02:00
Visa Harvey
730a3bd76f refactor(tiny_fft): refactor tiny_ttf cache with updated improvements (#6441)
Co-authored-by: Benign X <1341398182@qq.com>
Co-authored-by: Visa Harvey <visa.harvey@semel.fi>
2024-07-11 08:23:20 +02:00
Matthew Kendall
3ac0a96cca fix(refr): eliminate side effect in assert (#6499) 2024-07-11 08:23:11 +02:00
Neo Xu
7e315a1a53 fix(gif): add correct image header (#6472)
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-07-10 15:33:20 +02:00
VIFEX
ca70164c6b feat(barcode): add none tiled mode (#6462)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-07-10 01:49:36 +08:00
VIFEX
ba7630ff53 fix(vg_lite_tvg): fix path structure is not fully initialized (#6493)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-07-10 01:41:36 +08:00
VIFEX
3e64984ddf perf(qrcode): improve drawing speed (#6475)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-07-10 01:40:45 +08:00
VIFEX
d12f88fd95 chore(sdl): fix warning (#6483) 2024-07-09 23:16:01 +08:00
1125 changed files with 28546 additions and 10518 deletions

View File

@@ -597,6 +597,9 @@
/*File system interfaces for common APIs */
/*Setting a default driver letter allows skipping the driver prefix in filepaths*/
#define LV_FS_DEFAULT_DRIVE_LETTER '\0'
/*API for fopen, fread, etc*/
#define LV_USE_FS_STDIO 1
#if LV_USE_FS_STDIO
@@ -687,6 +690,11 @@
#if LV_USE_TINY_TTF
/* Enable loading TTF data from files */
#define LV_TINY_TTF_FILE_SUPPORT 0
/*Cache count of the glyphs in Tiny TTF. It means the number of glyphs that can be cached.
*The higher the value, the more memory will be used
*Minor performance benefit should be evident with cnt > 3
*For best performance count should be greater than count of glyphs in use */
#define LV_TINY_TTF_CACHE_GLYPH_CNT 256
#endif
/*Rlottie library*/

View File

@@ -1,5 +1,3 @@
### Description of the feature or fix
A clear and concise description of what the bug or new feature is.
### Notes
@@ -7,7 +5,7 @@ A clear and concise description of what the bug or new feature is.
- Add [Examples](https://github.com/lvgl/lvgl/tree/master/examples) if relevant.
- Add [Tests](https://github.com/lvgl/lvgl/blob/master/tests/README.md) if applicable.
- If you added new options to `lv_conf_template.h` run [lv_conf_internal_gen.py](https://github.com/lvgl/lvgl/blob/master/scripts/lv_conf_internal_gen.py) and update [Kconfig](https://github.com/lvgl/lvgl/blob/master/Kconfig).
- Run `scripts/code-format.py` ([astyle](http://astyle.sourceforge.net/install.html) version [v3.4.12](https://github.com/szepeviktor/astyle/releases/tag/v3.4.12) needs to be installed) and follow the [Code Conventions](https://docs.lvgl.io/master/CODING_STYLE.html).
- Run `scripts/code-format.py` (`astyle v3.4.12` needs to installed by running `cd scripts; ./install_astyle.sh`) and follow the [Code Conventions](https://docs.lvgl.io/master/CODING_STYLE.html).
- Mark the Pull request as [Draft](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request) while you are working on the first version, and mark is as _Ready_ when it's ready for review.
- When changes were requested, [re-request review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review) to notify the maintainers.
- Help us to review this Pull Request! Anyone can [approve or request changes](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews).

View File

@@ -19,7 +19,8 @@ jobs:
run: |
sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu `lsb_release -sc` main universe restricted multiverse"
sudo apt-get update -y -qq
sudo apt-get install libsdl2-dev parallel libfreetype-dev librlottie-dev libavformat-dev libavcodec-dev libswscale-dev libavutil-dev
sudo apt-get install libsdl2-dev parallel libfreetype-dev librlottie-dev libavformat-dev libavcodec-dev libswscale-dev libavutil-dev doxygen
python3 -m pip install pycparser
- name: Clone lv_micropython
run: |
git clone https://github.com/lvgl/lv_micropython.git .
@@ -52,7 +53,7 @@ jobs:
# STM32 & RPi Pico port
- name: arm-none-eabi-gcc
if: matrix.port == 'stm32' || matrix.port == 'rp2'
uses: carlosperate/arm-none-eabi-gcc-action@v1.8.2
uses: carlosperate/arm-none-eabi-gcc-action@v1.9.0
with:
release: '9-2019-q4' # The arm-none-eabi-gcc release to use.
- name: Build STM32 port

View File

@@ -17,7 +17,8 @@ jobs:
build_option: ['OPTIONS_16BIT',
'OPTIONS_24BIT',
'OPTIONS_FULL_32BIT',
"OPTIONS_VG_LITE"]
'OPTIONS_VG_LITE',
'OPTIONS_SDL']
name: Build ${{ matrix.build_option }}
steps:
- uses: actions/checkout@v4

View File

@@ -16,7 +16,7 @@ jobs:
- name: Checkout astyle
uses: actions/checkout@v4
with:
repository: szepeviktor/astyle
repository: lvgl/astyle
path: astyle
ref: v3.4.12
- name: Install astyle

View File

@@ -65,7 +65,7 @@ jobs:
echo "::set-output name=VERSION_NAME::$(scripts/find_version.sh)"
id: version
- name: Deploy to subfolder
uses: JamesIves/github-pages-deploy-action@v4.6.1
uses: JamesIves/github-pages-deploy-action@v4.6.3
with:
token: ${{ secrets.LVGL_BOT_TOKEN }}
repository-name: lvgl/docs
@@ -77,7 +77,7 @@ jobs:
single-commit: true
- name: Deploy to master
if: github.ref == 'refs/heads/master'
uses: JamesIves/github-pages-deploy-action@v4.6.1
uses: JamesIves/github-pages-deploy-action@v4.6.3
with:
token: ${{ secrets.LVGL_BOT_TOKEN }}
repository-name: lvgl/docs

1
.gitignore vendored
View File

@@ -24,6 +24,7 @@ test_screenshot_error.h
build/
tests/build_*/
tests/report/
tests/wayland_protocols/
.DS_Store
.vscode
.idea

View File

@@ -4,6 +4,7 @@ extend-exclude = [
"docs/_static/css/fontawesome.min.css",
"docs/README_*",
"src/libs/",
"docs/CHANGELOG.rst"
]
ignore-hidden = false
@@ -12,6 +13,7 @@ extend-ignore-re = [
"\\bser[^a-z]",
"\\bfle[^a-z]",
'"Lorem ipsum .*"',
'ACI',
"Nam consectetur",
"U\\+[0-9A-F]{4}",
'\{ "[a-z]+", "[^ -~]+" \},',

116
Kconfig
View File

@@ -1,4 +1,4 @@
# Kconfig file for LVGL v9.1.0
# Kconfig file for LVGL v9.2.0
menu "LVGL configuration"
@@ -177,6 +177,13 @@ menu "LVGL configuration"
help
Align the start address of draw_buf addresses to this bytes.
config LV_DRAW_TRANSFORM_USE_MATRIX
bool "Using matrix for transformations"
default n
depends on LV_USE_MATRIX
help
Requirements: The rendering engine needs to support 3x3 matrix transformations.
config LV_DRAW_LAYER_SIMPLE_BUF_SIZE
int "Optimal size to buffer the widget with opacity"
default 24576
@@ -238,7 +245,12 @@ menu "LVGL configuration"
bool "Enable support for A8 color format"
default y
depends on LV_USE_DRAW_SW
config LV_DRAW_SW_SUPPORT_I1
bool "Enable support for I1 color format"
default y
depends on LV_USE_DRAW_SW
config LV_DRAW_SW_DRAW_UNIT_CNT
int "Number of draw units"
default 1
@@ -334,26 +346,36 @@ menu "LVGL configuration"
depends on LV_USE_DRAW_VGLITE
default n
config LV_USE_VGLITE_DRAW_ASYNC
bool "Enable VGLite draw async"
config LV_USE_VGLITE_DRAW_THREAD
bool "Use additional draw thread for VG-Lite processing"
depends on LV_USE_DRAW_VGLITE && LV_USE_OS > 0
default y
config LV_USE_VGLITE_DRAW_ASYNC
bool "Enable VGLite draw async"
depends on LV_USE_VGLITE_DRAW_THREAD
default y
help
Queue multiple tasks and flash them once to the GPU.
Queue multiple tasks and flash them once to the GPU. The task ready state will be send asynchronous to dispatcher.
config LV_USE_VGLITE_ASSERT
bool "Enable VGLite asserts"
default n
depends on LV_USE_DRAW_VGLITE
default n
config LV_USE_DRAW_PXP
bool "Use NXP's PXP on iMX RTxxx platforms"
default n
config LV_USE_PXP_DRAW_THREAD
bool "Use additional draw thread for PXP processing"
depends on LV_USE_DRAW_PXP && LV_USE_OS > 0
default y
config LV_USE_PXP_ASSERT
bool "Enable PXP asserts"
default n
depends on LV_USE_DRAW_PXP
default n
config LV_USE_DRAW_DAVE2D
bool "Use Renesas Dave2D on RA platforms"
@@ -367,6 +389,8 @@ menu "LVGL configuration"
config LV_USE_DRAW_VG_LITE
bool "Use VG-Lite GPU"
default n
select LV_USE_MATRIX
config LV_VG_LITE_USE_GPU_INIT
bool "Enable VG-Lite custom external 'gpu_init()' function"
@@ -402,9 +426,15 @@ menu "LVGL configuration"
linear: 4K bytes.
radial: radius * 4K bytes.
config LV_VG_LITE_STROKE_CACHE_CNT
int "VG-Lite stroke maximum cache number."
default 32
depends on LV_USE_DRAW_VG_LITE
config LV_USE_VECTOR_GRAPHIC
bool "Use Vector Graphic APIs"
default n
select LV_USE_MATRIX
help
Enable drawing support vector graphic APIs.
endmenu
@@ -686,6 +716,15 @@ menu "LVGL configuration"
config LV_USE_FLOAT
bool "Use float as lv_value_precise_t"
default n
config LV_USE_MATRIX
bool "Enable matrix support"
default n
select LV_USE_FLOAT
config LV_USE_PRIVATE_API
bool "Include `lvgl_private.h` in `lvgl.h` to access internal data and functions by default"
default n
endmenu
menu "Font Usage"
@@ -1099,10 +1138,16 @@ menu "LVGL configuration"
endmenu
menu "3rd Party Libraries"
config LV_FS_DEFAULT_DRIVE_LETTER
int "Default drive letter (e.g. 65 for 'A')"
default 0
help
Setting a default drive letter allows skipping the driver prefix in filepaths
config LV_USE_FS_STDIO
bool "File system on top of stdio API"
config LV_FS_STDIO_LETTER
int "Set an upper cased letter on which the drive will accessible (e.g. 'A' i.e. 65 )"
int "Set an upper cased letter on which the drive will accessible (e.g. 65 for 'A')"
default 0
depends on LV_USE_FS_STDIO
config LV_FS_STDIO_PATH
@@ -1116,7 +1161,7 @@ menu "LVGL configuration"
config LV_USE_FS_POSIX
bool "File system on top of posix API"
config LV_FS_POSIX_LETTER
int "Set an upper cased letter on which the drive will accessible (e.g. 'A' i.e. 65)"
int "Set an upper cased letter on which the drive will accessible (e.g. 65 for 'A')"
default 0
depends on LV_USE_FS_POSIX
config LV_FS_POSIX_PATH
@@ -1130,7 +1175,7 @@ menu "LVGL configuration"
config LV_USE_FS_WIN32
bool "File system on top of Win32 API"
config LV_FS_WIN32_LETTER
int "Set an upper cased letter on which the drive will accessible (e.g. 'A' i.e. 65)"
int "Set an upper cased letter on which the drive will accessible (e.g. 65 for 'A')"
default 0
depends on LV_USE_FS_WIN32
config LV_FS_WIN32_PATH
@@ -1144,7 +1189,7 @@ menu "LVGL configuration"
config LV_USE_FS_FATFS
bool "File system on top of FatFS"
config LV_FS_FATFS_LETTER
int "Set an upper cased letter on which the drive will accessible (e.g. 'A' i.e. 65)"
int "Set an upper cased letter on which the drive will accessible (e.g. 65 for 'A')"
default 0
depends on LV_USE_FS_FATFS
config LV_FS_FATFS_CACHE_SIZE
@@ -1155,38 +1200,30 @@ menu "LVGL configuration"
config LV_USE_FS_MEMFS
bool "File system on top of memory-mapped API"
config LV_FS_MEMFS_LETTER
int "Set an upper cased letter on which the drive will accessible (e.g. 'A' i.e. 65)"
int "Set an upper cased letter on which the drive will accessible (e.g. 65 for 'A')"
default 0
depends on LV_USE_FS_MEMFS
config LV_USE_FS_LITTLEFS
bool "File system on top of littlefs API"
config LV_FS_LITTLEFS_LETTER
int "Set an upper cased letter on which the drive will accessible (e.g. 'A' i.e. 65)"
int "Set an upper cased letter on which the drive will accessible (e.g. 65 for 'A')"
default 0
depends on LV_USE_FS_LITTLEFS
config LV_USE_FS_ARDUINO_ESP_LITTLEFS
bool "File system on top of Arduino ESP littlefs API"
config LV_FS_ARDUINO_ESP_LITTLEFS_LETTER
int "Set an upper cased letter on which the drive will accessible (e.g. 'A' i.e. 65)"
int "Set an upper cased letter on which the drive will accessible (e.g. 65 for 'A')"
default 0
depends on LV_USE_FS_ARDUINO_ESP_LITTLEFS
config LV_USE_FS_ARDUINO_SD
bool "File system on top of Arduino SD API"
config LV_FS_ARDUINO_SD_LETTER
int "Set an upper cased letter on which the drive will accessible (e.g. 'A' i.e. 65)"
int "Set an upper cased letter on which the drive will accessible (e.g. 65 for 'A')"
default 0
depends on LV_USE_FS_ARDUINO_SD
config LV_FS_ARDUINO_SD_CS_PIN
int "Set the pin connected to the chip select line of the SD card"
default 0
depends on LV_USE_FS_ARDUINO_SD
config LV_FS_ARDUINO_SD_FREQUENCY
int "Set the frequency used by the chip of the SD CARD"
default 40000000
depends on LV_USE_FS_ARDUINO_SD
config LV_USE_LODEPNG
bool "PNG decoder library"
@@ -1241,6 +1278,10 @@ menu "LVGL configuration"
bool "Enable loading Tiny TTF data from files"
default n
depends on LV_USE_TINY_TTF
config LV_TINY_TTF_CACHE_GLYPH_CNT
bool "Tiny ttf cache entries count"
default 256
depends on LV_USE_TINY_TTF
config LV_USE_RLOTTIE
bool "Lottie library"
@@ -1475,10 +1516,16 @@ menu "LVGL configuration"
default 1 if LV_SDL_SINGLE_BUFFER
default 2 if LV_SDL_DOUBLE_BUFFER
config LV_SDL_ACCELERATED
bool "Use hardware acceleration"
depends on LV_USE_SDL
default y
config LV_SDL_FULLSCREEN
bool "SDL fullscreen"
depends on LV_USE_SDL
default n
config LV_SDL_DIRECT_EXIT
bool "Exit the application when all SDL windows are closed"
depends on LV_USE_SDL
@@ -1535,6 +1582,18 @@ menu "LVGL configuration"
With 2 buffers in flush_cb only and address change is required.
endchoice
config LV_USE_WAYLAND
bool "Use the wayland client to open a window and handle inputs on Linux or BSD"
default n
config LV_WAYLAND_WINDOW_DECORATIONS
bool "Draw client side window decorations, only necessary on Mutter (GNOME)"
depends on LV_USE_WAYLAND
default n
config LV_WAYLAND_WL_SHELL
bool "Support the legacy wl_shell instead of the default XDG Shell protocol"
depends on LV_USE_WAYLAND
default n
config LV_USE_LINUX_FBDEV
bool "Use Linux framebuffer device"
default n
@@ -1660,7 +1719,7 @@ menu "LVGL configuration"
default n
config LV_USE_LIBINPUT
bool "Use libinput input driver"
bool "Use libinput input driver"
default n
config LV_LIBINPUT_BSD
@@ -1710,6 +1769,15 @@ menu "LVGL configuration"
bool "Enable debug mode for OpenGL"
depends on LV_USE_OPENGLES
default n
config LV_USE_QNX
bool "Use a QNX Screen window as a display"
default n
config LV_QNX_BUF_COUNT
int
depends on LV_USE_QNX
default 1
endmenu
menu "Examples"

View File

@@ -122,7 +122,7 @@ See in [widgets](https://github.com/lvgl/lvgl/tree/master/demos/widgets) folder.
For running this demo properly, please make sure **LV_MEM_SIZE** is at least **38KB** (and **48KB** is recommended):
```c
#define LV_MEME_SIZE (38ul * 1024ul)
#define LV_MEM_SIZE (38ul * 1024ul)
```

View File

@@ -0,0 +1,123 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#if LV_USE_DEMO_BENCHMARK
#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif
#ifndef LV_ATTRIBUTE_IMAGE_IMG_BENCHMARK_AVATAR
#define LV_ATTRIBUTE_IMAGE_IMG_BENCHMARK_AVATAR
#endif
static const
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMAGE_IMG_BENCHMARK_AVATAR
uint8_t img_benchmark_avatar_map[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x65, 0x72, 0x0a, 0x6b, 0x63, 0x71, 0x28, 0x6e, 0x65, 0x6f, 0x40, 0x72, 0x66, 0x6f, 0x5d, 0x6c, 0x64, 0x6b, 0x87, 0x6b, 0x64, 0x70, 0xb2, 0x63, 0x60, 0x72, 0xd1, 0x62, 0x61, 0x75, 0xe6, 0x80, 0x7a, 0x8a, 0xf3, 0x9b, 0x8d, 0x95, 0xfc, 0xae, 0x9e, 0x9a, 0xfc, 0xb9, 0xa9, 0x9c, 0xf3, 0xbe, 0xae, 0x9c, 0xe6, 0xc0, 0xb3, 0xa1, 0xd1, 0xbf, 0xb4, 0x9e, 0xb2, 0xba, 0xb0, 0x9a, 0x87, 0xb6, 0xb0, 0x99, 0x5d, 0xb6, 0xb2, 0x9c, 0x40, 0xbf, 0xb6, 0xa1, 0x28, 0xc2, 0xbb, 0xa3, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x62, 0x83, 0x03, 0x5b, 0x61, 0x84, 0x0a, 0x5c, 0x61, 0x84, 0x4a, 0x60, 0x61, 0x84, 0xa8, 0x60, 0x61, 0x7f, 0xe1, 0x61, 0x60, 0x79, 0xee, 0x64, 0x61, 0x75, 0xfa, 0x66, 0x61, 0x72, 0xff, 0x67, 0x65, 0x75, 0xff, 0x5f, 0x5e, 0x72, 0xff, 0x5f, 0x5f, 0x76, 0xff, 0x60, 0x61, 0x78, 0xff, 0x7b, 0x78, 0x88, 0xff, 0x9c, 0x91, 0x98, 0xff, 0xb0, 0x9f, 0x9d, 0xff, 0xbd, 0xaa, 0xa0, 0xff, 0xc6, 0xb3, 0xa1, 0xff, 0xc6, 0xb5, 0xa2, 0xff, 0xc0, 0xb5, 0xa2, 0xff, 0xbd, 0xb3, 0xa0, 0xff, 0xba, 0xb2, 0x9f, 0xff, 0xb7, 0xb1, 0x9d, 0xfa, 0xba, 0xb4, 0xa1, 0xee, 0xbd, 0xb7, 0xa4, 0xe1, 0xbc, 0xb6, 0xa3, 0xa8, 0xbc, 0xb8, 0xa3, 0x4a, 0xbb, 0xb6, 0xa3, 0x0a, 0xbe, 0xb9, 0xa4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x54, 0x6b, 0x07, 0x57, 0x5b, 0x79, 0x50, 0x5b, 0x60, 0x80, 0xa0, 0x5d, 0x63, 0x86, 0xe8, 0x5c, 0x62, 0x88, 0xff, 0x5d, 0x63, 0x88, 0xff, 0x5b, 0x61, 0x84, 0xff, 0x5a, 0x5e, 0x7e, 0xff, 0x58, 0x5c, 0x7b, 0xff, 0x5f, 0x61, 0x7c, 0xff, 0x65, 0x68, 0x80, 0xff, 0x59, 0x5c, 0x76, 0xff, 0x5c, 0x5f, 0x7d, 0xff, 0x65, 0x69, 0x84, 0xff, 0x84, 0x84, 0x97, 0xff, 0x93, 0x8c, 0x94, 0xff, 0xad, 0xa1, 0x9f, 0xff, 0xba, 0xa9, 0xa0, 0xff, 0xc5, 0xb2, 0xa0, 0xff, 0xc6, 0xb6, 0xa0, 0xff, 0xc3, 0xb8, 0xa4, 0xff, 0xc2, 0xb7, 0xa4, 0xff, 0xc3, 0xb8, 0xa5, 0xff, 0xc2, 0xb6, 0xa3, 0xff, 0xbf, 0xb7, 0xa5, 0xff, 0xbc, 0xb6, 0xa4, 0xff, 0xba, 0xb6, 0xa5, 0xff, 0xb7, 0xb5, 0xa4, 0xff, 0xb9, 0xb5, 0xa3, 0xe8, 0xbe, 0xb9, 0xa5, 0xa0, 0xc2, 0xbc, 0xa5, 0x50, 0xc3, 0xbf, 0xa5, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x71, 0x6c, 0x13, 0x6a, 0x67, 0x71, 0x64, 0x62, 0x62, 0x73, 0xe4, 0x5d, 0x5f, 0x79, 0xfb, 0x5e, 0x61, 0x7e, 0xff, 0x5f, 0x64, 0x84, 0xff, 0x5f, 0x65, 0x88, 0xff, 0x60, 0x65, 0x89, 0xff, 0x5d, 0x63, 0x85, 0xff, 0x58, 0x5f, 0x7f, 0xff, 0x57, 0x5c, 0x7c, 0xff, 0x5c, 0x5f, 0x7f, 0xff, 0x67, 0x6b, 0x88, 0xff, 0x5d, 0x60, 0x7d, 0xff, 0x59, 0x5e, 0x7d, 0xff, 0x5d, 0x62, 0x80, 0xff, 0x79, 0x7c, 0x8f, 0xff, 0x9d, 0x99, 0xa0, 0xff, 0xab, 0xa5, 0xa4, 0xff, 0xb6, 0xac, 0xa3, 0xff, 0xc0, 0xb3, 0xa0, 0xff, 0xc6, 0xb9, 0xa3, 0xff, 0xc6, 0xbc, 0xa7, 0xff, 0xc8, 0xbb, 0xa4, 0xff, 0xc7, 0xbb, 0xa4, 0xff, 0xc9, 0xbe, 0xa9, 0xff, 0xc8, 0xbd, 0xab, 0xff, 0xc6, 0xbb, 0xaa, 0xff, 0xc3, 0xbb, 0xaa, 0xff, 0xbc, 0xb9, 0xa7, 0xff, 0xb6, 0xb5, 0xa4, 0xff, 0xbc, 0xb7, 0xa2, 0xff, 0xc1, 0xbb, 0xa3, 0xfb, 0xc5, 0xbd, 0xa6, 0xe4, 0xc5, 0xbd, 0xa7, 0x64, 0xc8, 0xc0, 0xa8, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa9, 0x97, 0x79, 0x0c, 0x9f, 0x8f, 0x79, 0x81, 0x89, 0x7c, 0x70, 0xdf, 0x7f, 0x77, 0x75, 0xff, 0x79, 0x72, 0x7a, 0xff, 0x6a, 0x69, 0x78, 0xff, 0x62, 0x66, 0x7c, 0xff, 0x5f, 0x65, 0x83, 0xff, 0x63, 0x66, 0x85, 0xff, 0x64, 0x67, 0x86, 0xff, 0x62, 0x66, 0x85, 0xff, 0x5d, 0x61, 0x7f, 0xff, 0x5e, 0x62, 0x80, 0xff, 0x5d, 0x5e, 0x81, 0xff, 0x61, 0x68, 0x87, 0xff, 0x69, 0x6e, 0x8d, 0xff, 0x70, 0x73, 0x92, 0xff, 0x68, 0x6d, 0x8b, 0xff, 0x73, 0x75, 0x8a, 0xff, 0x8f, 0x89, 0x95, 0xff, 0xaa, 0xa4, 0xa4, 0xff, 0xb6, 0xae, 0xa9, 0xff, 0xbf, 0xb3, 0xa7, 0xff, 0xca, 0xbc, 0xa9, 0xff, 0xca, 0xbd, 0xa9, 0xff, 0xcd, 0xbd, 0xaa, 0xff, 0xcb, 0xbc, 0xaa, 0xff, 0xcb, 0xc3, 0xae, 0xff, 0xc9, 0xbf, 0xa9, 0xff, 0xce, 0xc1, 0xae, 0xff, 0xcd, 0xc2, 0xaf, 0xff, 0xc8, 0xc0, 0xad, 0xff, 0xc5, 0xbd, 0xaa, 0xff, 0xc2, 0xbb, 0xa8, 0xff, 0xc3, 0xbb, 0xa8, 0xff, 0xc3, 0xba, 0xa9, 0xff, 0xc4, 0xbb, 0xa6, 0xff, 0xc6, 0xbe, 0xa8, 0xdf, 0xca, 0xc0, 0xae, 0x81, 0xc7, 0xc0, 0xb0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0xa8, 0x8a, 0x05, 0xca, 0xae, 0x8a, 0x52, 0xc1, 0xa8, 0x85, 0xdd, 0xb6, 0xa1, 0x7f, 0xff, 0xa5, 0x90, 0x75, 0xff, 0x9c, 0x89, 0x7a, 0xff, 0x95, 0x85, 0x7f, 0xff, 0x7e, 0x78, 0x81, 0xff, 0x6a, 0x6c, 0x7e, 0xff, 0x66, 0x69, 0x84, 0xff, 0x6a, 0x6e, 0x89, 0xff, 0x6a, 0x6d, 0x88, 0xff, 0x68, 0x6c, 0x83, 0xff, 0x64, 0x66, 0x7c, 0xff, 0x6e, 0x6f, 0x85, 0xff, 0x66, 0x67, 0x82, 0xff, 0x74, 0x7a, 0x96, 0xff, 0x5d, 0x62, 0x81, 0xff, 0x74, 0x78, 0x96, 0xff, 0x6d, 0x71, 0x8e, 0xff, 0x83, 0x85, 0x9b, 0xff, 0x90, 0x8d, 0x99, 0xff, 0xa7, 0xa1, 0xa7, 0xff, 0xb2, 0xab, 0xab, 0xff, 0xbe, 0xb3, 0xa8, 0xff, 0xc2, 0xb7, 0xa4, 0xff, 0xc9, 0xbc, 0xa8, 0xff, 0xc3, 0xbe, 0xb7, 0xff, 0xc8, 0xc3, 0xb7, 0xff, 0xd1, 0xc1, 0xa9, 0xff, 0xd7, 0xc2, 0xa4, 0xff, 0xcc, 0xc7, 0xa9, 0xff, 0xd0, 0xc5, 0xb0, 0xff, 0xd4, 0xc4, 0xb2, 0xff, 0xcf, 0xc4, 0xad, 0xff, 0xcd, 0xc1, 0xab, 0xff, 0xcc, 0xc1, 0xab, 0xff, 0xcb, 0xc0, 0xab, 0xff, 0xca, 0xbf, 0xa9, 0xff, 0xc9, 0xbe, 0xac, 0xff, 0xc8, 0xbd, 0xae, 0xff, 0xbf, 0xb6, 0xb5, 0xde, 0xb7, 0xae, 0xb6, 0x52, 0xb8, 0xb0, 0xb8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xae, 0x9d, 0x20, 0xc9, 0xb2, 0x97, 0xbf, 0xd2, 0xb6, 0x90, 0xfa, 0xcd, 0xb2, 0x8b, 0xff, 0xc3, 0xac, 0x83, 0xff, 0xb5, 0x9f, 0x7a, 0xff, 0xae, 0x99, 0x85, 0xff, 0xa8, 0x95, 0x8b, 0xff, 0x90, 0x88, 0x88, 0xff, 0x76, 0x72, 0x7e, 0xff, 0x6c, 0x6e, 0x83, 0xff, 0x70, 0x71, 0x8b, 0xff, 0x72, 0x76, 0x89, 0xff, 0x72, 0x74, 0x85, 0xff, 0x6f, 0x70, 0x7c, 0xff, 0x6c, 0x6c, 0x77, 0xff, 0x84, 0x86, 0x95, 0xff, 0x7c, 0x84, 0x97, 0xff, 0x86, 0x8e, 0xa7, 0xff, 0x72, 0x7a, 0x95, 0xff, 0x86, 0x8f, 0xab, 0xff, 0x99, 0xa3, 0xb8, 0xff, 0xc1, 0xc7, 0xd3, 0xff, 0xc6, 0xca, 0xd5, 0xff, 0xcd, 0xd1, 0xd9, 0xff, 0xc6, 0xc4, 0xc7, 0xff, 0xbf, 0xbb, 0xbb, 0xff, 0xbf, 0xb6, 0xac, 0xff, 0xbf, 0xbe, 0xb4, 0xff, 0xc2, 0xc6, 0xc4, 0xff, 0xb1, 0xb4, 0xb6, 0xff, 0xcf, 0xc2, 0xb4, 0xff, 0xd3, 0xc1, 0xa9, 0xff, 0xd9, 0xc4, 0xab, 0xff, 0xd5, 0xc5, 0xae, 0xff, 0xd3, 0xc5, 0xae, 0xff, 0xd2, 0xc4, 0xac, 0xff, 0xd1, 0xc2, 0xab, 0xff, 0xd0, 0xc1, 0xaa, 0xff, 0xcf, 0xc2, 0xab, 0xff, 0xcc, 0xc1, 0xb0, 0xff, 0xc9, 0xbb, 0xb4, 0xff, 0xbb, 0xb2, 0xb6, 0xff, 0xaf, 0xa8, 0xb8, 0xfa, 0xa0, 0x9c, 0xbd, 0xbf, 0x98, 0x95, 0xc1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb3, 0xa7, 0xaf, 0x02, 0xbe, 0xad, 0xa5, 0x62, 0xc6, 0xb0, 0x9e, 0xe8, 0xcd, 0xb7, 0x9a, 0xff, 0xd8, 0xbd, 0x96, 0xff, 0xd3, 0xb8, 0x91, 0xff, 0xc8, 0xb1, 0x8a, 0xff, 0xbb, 0xa6, 0x82, 0xff, 0xb5, 0xa1, 0x8b, 0xff, 0xad, 0x9c, 0x91, 0xff, 0x99, 0x91, 0x90, 0xff, 0x7e, 0x7b, 0x87, 0xff, 0x71, 0x75, 0x8a, 0xff, 0x74, 0x79, 0x91, 0xff, 0x79, 0x7d, 0x8e, 0xff, 0x7e, 0x7d, 0x88, 0xff, 0x7c, 0x78, 0x7d, 0xff, 0x76, 0x72, 0x77, 0xff, 0x78, 0x7d, 0x84, 0xff, 0xa1, 0xac, 0xbb, 0xff, 0xc1, 0xcb, 0xdf, 0xff, 0xdc, 0xe4, 0xef, 0xff, 0xdd, 0xe7, 0xf6, 0xff, 0xd8, 0xe5, 0xf8, 0xff, 0xe7, 0xef, 0xf9, 0xff, 0xda, 0xea, 0xf8, 0xff, 0xc6, 0xd5, 0xe3, 0xff, 0xca, 0xcf, 0xda, 0xff, 0xcd, 0xcf, 0xd7, 0xff, 0xbd, 0xc1, 0xc6, 0xff, 0xb9, 0xbc, 0xb8, 0xff, 0xb7, 0xbd, 0xbd, 0xff, 0x9b, 0xa8, 0xb5, 0xff, 0x87, 0x9b, 0xa8, 0xff, 0xc2, 0xba, 0xb2, 0xff, 0xd9, 0xc7, 0xac, 0xff, 0xd5, 0xc2, 0xa3, 0xff, 0xd4, 0xc3, 0xa9, 0xff, 0xcf, 0xc3, 0xa9, 0xff, 0xd0, 0xc3, 0xa9, 0xff, 0xd2, 0xc2, 0xaa, 0xff, 0xd2, 0xc3, 0xac, 0xff, 0xcf, 0xc2, 0xb3, 0xff, 0xc9, 0xbc, 0xb7, 0xff, 0xbe, 0xb6, 0xbb, 0xff, 0xb1, 0xa9, 0xbe, 0xff, 0x9e, 0x9a, 0xc1, 0xff, 0x90, 0x8c, 0xc6, 0xe8, 0x7a, 0x80, 0xc8, 0x62, 0x73, 0x78, 0xc2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x89, 0x9d, 0x0d, 0xa4, 0x9d, 0xa8, 0x93, 0xba, 0xab, 0xa7, 0xfb, 0xc2, 0xae, 0x9d, 0xff, 0xc8, 0xb2, 0x94, 0xff, 0xd2, 0xb9, 0x91, 0xff, 0xd4, 0xb9, 0x93, 0xff, 0xcd, 0xb3, 0x90, 0xff, 0xc1, 0xab, 0x88, 0xff, 0xba, 0xa5, 0x8d, 0xff, 0xac, 0x9e, 0x92, 0xff, 0x99, 0x93, 0x95, 0xff, 0x88, 0x86, 0x96, 0xff, 0x7c, 0x7f, 0x98, 0xff, 0x7e, 0x83, 0x9a, 0xff, 0x84, 0x85, 0x96, 0xff, 0x8a, 0x88, 0x91, 0xff, 0x8b, 0x8b, 0x90, 0xff, 0x96, 0x9c, 0xa3, 0xff, 0xc1, 0xcf, 0xdf, 0xff, 0xc2, 0xd5, 0xea, 0xff, 0xc6, 0xda, 0xf0, 0xff, 0xb3, 0xc6, 0xd7, 0xff, 0xb1, 0xca, 0xdc, 0xff, 0xa9, 0xc4, 0xda, 0xff, 0xae, 0xc7, 0xdc, 0xff, 0xa5, 0xc0, 0xd9, 0xff, 0xad, 0xc4, 0xda, 0xff, 0xb7, 0xc6, 0xd7, 0xff, 0xbf, 0xc9, 0xd7, 0xff, 0xc0, 0xca, 0xdd, 0xff, 0xb6, 0xbe, 0xcb, 0xff, 0xbb, 0xbc, 0xc3, 0xff, 0xb3, 0xb0, 0xae, 0xff, 0xb3, 0xb9, 0xb6, 0xff, 0x5e, 0x75, 0x8d, 0xff, 0x9d, 0xa4, 0xa8, 0xff, 0xd0, 0xc3, 0xb1, 0xff, 0xd1, 0xc0, 0xa5, 0xff, 0xd2, 0xc2, 0xa0, 0xff, 0xd0, 0xc0, 0xa3, 0xff, 0xd2, 0xc3, 0xa9, 0xff, 0xd4, 0xc4, 0xad, 0xff, 0xd1, 0xc1, 0xb2, 0xff, 0xc8, 0xbc, 0xb7, 0xff, 0xbd, 0xb5, 0xba, 0xff, 0xaf, 0xa6, 0xbd, 0xff, 0x9c, 0x9b, 0xbc, 0xff, 0x8d, 0x89, 0xc5, 0xff, 0x7b, 0x80, 0xc6, 0xfb, 0x7c, 0x80, 0xcb, 0x93, 0x7f, 0x83, 0xd2, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7e, 0x93, 0x16, 0x88, 0x87, 0x9c, 0xc0, 0x9c, 0x98, 0xa6, 0xff, 0xb2, 0xa7, 0xa5, 0xff, 0xbb, 0xa9, 0x9c, 0xff, 0xc2, 0xad, 0x91, 0xff, 0xc8, 0xb1, 0x8a, 0xff, 0xcb, 0xb3, 0x8b, 0xff, 0xc6, 0xaf, 0x88, 0xff, 0xbf, 0xa7, 0x85, 0xff, 0xb4, 0xa2, 0x8b, 0xff, 0xa4, 0x99, 0x90, 0xff, 0x92, 0x8d, 0x93, 0xff, 0x85, 0x84, 0x97, 0xff, 0x80, 0x81, 0x9c, 0xff, 0x84, 0x88, 0x9f, 0xff, 0x94, 0x97, 0xa9, 0xff, 0xa1, 0xa6, 0xb3, 0xff, 0xd6, 0xe1, 0xed, 0xff, 0xd9, 0xe9, 0xf6, 0xff, 0xdf, 0xee, 0xf8, 0xff, 0xd0, 0xe1, 0xf0, 0xff, 0xb7, 0xcb, 0xdd, 0xff, 0x9f, 0xb9, 0xd2, 0xff, 0x87, 0xa4, 0xc3, 0xff, 0x5d, 0x7b, 0x99, 0xff, 0x5e, 0x7e, 0x9c, 0xff, 0x7e, 0x9c, 0xbb, 0xff, 0x5e, 0x7a, 0x9a, 0xff, 0x69, 0x81, 0x9d, 0xff, 0x88, 0x9d, 0xb7, 0xff, 0xa6, 0xbc, 0xd2, 0xff, 0xac, 0xc1, 0xd6, 0xff, 0xae, 0xc2, 0xd4, 0xff, 0xa7, 0xb6, 0xc6, 0xff, 0xb6, 0xb4, 0xbb, 0xff, 0xae, 0xb3, 0xbe, 0xff, 0x5f, 0x6d, 0x82, 0xff, 0x6b, 0x77, 0x82, 0xff, 0xc1, 0xbc, 0xb0, 0xff, 0xd5, 0xc0, 0xa3, 0xff, 0xcd, 0xba, 0x9d, 0xff, 0xce, 0xc0, 0xa6, 0xff, 0xd1, 0xc1, 0xa8, 0xff, 0xd0, 0xc0, 0xae, 0xff, 0xc9, 0xbc, 0xb1, 0xff, 0xc0, 0xb3, 0xb6, 0xff, 0xae, 0xa5, 0xb8, 0xff, 0x98, 0x99, 0xb8, 0xff, 0x87, 0x87, 0xc0, 0xff, 0x7f, 0x82, 0xc3, 0xff, 0x80, 0x83, 0xcc, 0xff, 0x82, 0x84, 0xd2, 0xc0, 0x82, 0x85, 0xd3, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x76, 0x85, 0x28, 0x7b, 0x7a, 0x8d, 0xdb, 0x85, 0x84, 0x9a, 0xff, 0x96, 0x94, 0xa3, 0xff, 0xaa, 0xa0, 0xa2, 0xff, 0xb2, 0xa3, 0x9a, 0xff, 0xb7, 0xa4, 0x8c, 0xff, 0xbc, 0xa7, 0x81, 0xff, 0xbf, 0xab, 0x81, 0xff, 0xbe, 0xa6, 0x80, 0xff, 0xb8, 0x9f, 0x7d, 0xff, 0xab, 0x9a, 0x84, 0xff, 0x9c, 0x92, 0x8c, 0xff, 0x8f, 0x87, 0x92, 0xff, 0x83, 0x83, 0x98, 0xff, 0x84, 0x8f, 0xa7, 0xff, 0xa8, 0xb8, 0xcc, 0xff, 0xce, 0xda, 0xeb, 0xff, 0xd2, 0xdf, 0xee, 0xff, 0xbc, 0xce, 0xdf, 0xff, 0x84, 0x9a, 0xad, 0xff, 0x97, 0xa4, 0xb2, 0xff, 0xa4, 0xb4, 0xc2, 0xff, 0x92, 0xa8, 0xbe, 0xff, 0x7a, 0x91, 0xaa, 0xff, 0x4b, 0x5e, 0x76, 0xff, 0x56, 0x69, 0x7f, 0xff, 0x3a, 0x52, 0x6f, 0xff, 0x22, 0x33, 0x48, 0xff, 0x5a, 0x73, 0x8e, 0xff, 0x3b, 0x56, 0x73, 0xff, 0x2e, 0x42, 0x58, 0xff, 0x46, 0x63, 0x7b, 0xff, 0x70, 0x8d, 0xa5, 0xff, 0x92, 0xb0, 0xc9, 0xff, 0x8f, 0xae, 0xca, 0xff, 0x94, 0xab, 0xc8, 0xff, 0xc1, 0xc7, 0xcf, 0xff, 0x9b, 0xa6, 0xb5, 0xff, 0x4f, 0x68, 0x83, 0xff, 0x48, 0x5a, 0x6e, 0xff, 0xa8, 0xa6, 0xa7, 0xff, 0xca, 0xbb, 0xa6, 0xff, 0xc6, 0xb8, 0x9c, 0xff, 0xcb, 0xbc, 0xa2, 0xff, 0xcc, 0xbc, 0xa5, 0xff, 0xc7, 0xb8, 0xa9, 0xff, 0xc0, 0xb0, 0xac, 0xff, 0xaf, 0xa2, 0xaf, 0xff, 0x95, 0x94, 0xac, 0xff, 0x86, 0x86, 0xb6, 0xff, 0x7f, 0x81, 0xbe, 0xff, 0x83, 0x83, 0xca, 0xff, 0x85, 0x86, 0xd2, 0xff, 0x84, 0x89, 0xd5, 0xdb, 0x86, 0x8c, 0xda, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x83, 0x81, 0x25, 0x80, 0x7b, 0x83, 0xe2, 0x7c, 0x7b, 0x8b, 0xff, 0x80, 0x81, 0x98, 0xff, 0x8d, 0x90, 0xa1, 0xff, 0x9f, 0x9a, 0xa0, 0xff, 0xaa, 0x9d, 0x97, 0xff, 0xb0, 0x9f, 0x87, 0xff, 0xb2, 0x9f, 0x78, 0xff, 0xb2, 0x9e, 0x79, 0xff, 0xb0, 0x9b, 0x75, 0xff, 0xa9, 0x98, 0x76, 0xff, 0x9e, 0x91, 0x83, 0xff, 0x94, 0x8b, 0x85, 0xff, 0x88, 0x83, 0x89, 0xff, 0x86, 0x8d, 0xa1, 0xff, 0xae, 0xc1, 0xd8, 0xff, 0xbb, 0xcf, 0xe3, 0xff, 0xc1, 0xcf, 0xe4, 0xff, 0x9e, 0xb0, 0xc6, 0xff, 0x95, 0xab, 0xc4, 0xff, 0x66, 0x7f, 0x9a, 0xff, 0x1c, 0x2d, 0x43, 0xff, 0x21, 0x32, 0x45, 0xff, 0x3b, 0x4d, 0x63, 0xff, 0x41, 0x58, 0x72, 0xff, 0x2d, 0x3e, 0x52, 0xff, 0x0e, 0x18, 0x24, 0xff, 0x21, 0x2d, 0x3e, 0xff, 0x27, 0x3c, 0x4c, 0xff, 0x0b, 0x17, 0x27, 0xff, 0x31, 0x40, 0x54, 0xff, 0x42, 0x5b, 0x74, 0xff, 0x24, 0x33, 0x46, 0xff, 0x15, 0x26, 0x38, 0xff, 0x62, 0x76, 0x8d, 0xff, 0x70, 0x89, 0xa4, 0xff, 0x89, 0xa5, 0xb8, 0xff, 0x7d, 0x9b, 0xb5, 0xff, 0x8d, 0xa9, 0xc1, 0xff, 0x75, 0x90, 0xa8, 0xff, 0x2b, 0x49, 0x6b, 0xff, 0x2a, 0x38, 0x4f, 0xff, 0x8b, 0x8f, 0x91, 0xff, 0xcf, 0xc6, 0xad, 0xff, 0xca, 0xb7, 0x9c, 0xff, 0xca, 0xb4, 0x9f, 0xff, 0xc4, 0xb1, 0xa1, 0xff, 0xbe, 0xac, 0xa0, 0xff, 0xad, 0x9f, 0xa0, 0xff, 0x9b, 0x8f, 0x9d, 0xff, 0x86, 0x84, 0xae, 0xff, 0x83, 0x82, 0xb8, 0xff, 0x85, 0x84, 0xc6, 0xff, 0x87, 0x86, 0xd0, 0xff, 0x87, 0x8a, 0xd4, 0xff, 0x8a, 0x8d, 0xda, 0xe2, 0x8a, 0x8c, 0xda, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x96, 0x7c, 0x28, 0x9f, 0x8d, 0x7e, 0xe1, 0x89, 0x80, 0x83, 0xff, 0x80, 0x7c, 0x8e, 0xff, 0x7a, 0x7f, 0x95, 0xff, 0x83, 0x8b, 0x9c, 0xff, 0x96, 0x98, 0x9d, 0xff, 0xa2, 0x99, 0x97, 0xff, 0xa9, 0x9a, 0x87, 0xff, 0xab, 0x9a, 0x75, 0xff, 0xa8, 0x96, 0x6f, 0xff, 0xa7, 0x93, 0x70, 0xff, 0xab, 0x90, 0x71, 0xff, 0xa1, 0x8a, 0x79, 0xff, 0x90, 0x89, 0x8c, 0xff, 0x9a, 0x9d, 0xab, 0xff, 0xb8, 0xc4, 0xd7, 0xff, 0xc9, 0xda, 0xee, 0xff, 0xd0, 0xdf, 0xed, 0xff, 0xa9, 0xbd, 0xd0, 0xff, 0xa6, 0xbc, 0xd2, 0xff, 0x74, 0x8b, 0xa6, 0xff, 0x30, 0x47, 0x62, 0xff, 0x28, 0x34, 0x46, 0xff, 0x17, 0x24, 0x35, 0xff, 0x16, 0x22, 0x34, 0xff, 0x31, 0x44, 0x5b, 0xff, 0x27, 0x34, 0x49, 0xff, 0x12, 0x18, 0x27, 0xff, 0x0a, 0x12, 0x1d, 0xff, 0x1b, 0x26, 0x36, 0xff, 0x23, 0x32, 0x3e, 0xff, 0x2f, 0x3a, 0x48, 0xff, 0x1b, 0x27, 0x3a, 0xff, 0x20, 0x29, 0x38, 0xff, 0x13, 0x1e, 0x2b, 0xff, 0x21, 0x31, 0x42, 0xff, 0x3d, 0x52, 0x69, 0xff, 0x63, 0x78, 0x8a, 0xff, 0x67, 0x80, 0x99, 0xff, 0x68, 0x82, 0x9b, 0xff, 0x6c, 0x87, 0xa0, 0xff, 0x3d, 0x56, 0x73, 0xff, 0x1c, 0x31, 0x4c, 0xff, 0x19, 0x29, 0x39, 0xff, 0x78, 0x7e, 0x7f, 0xff, 0xc2, 0xb7, 0xab, 0xff, 0xd8, 0xc0, 0xa5, 0xff, 0xc9, 0xb3, 0x99, 0xff, 0xc1, 0xad, 0x94, 0xff, 0xb0, 0x9d, 0x8c, 0xff, 0xa2, 0x8d, 0x88, 0xff, 0x89, 0x80, 0x9a, 0xff, 0x86, 0x81, 0xae, 0xff, 0x8a, 0x85, 0xbf, 0xff, 0x8b, 0x88, 0xcd, 0xff, 0x8b, 0x8b, 0xd5, 0xff, 0x8b, 0x8e, 0xdc, 0xff, 0x8b, 0x8c, 0xdc, 0xe1, 0x8b, 0x8c, 0xdc, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x9f, 0x96, 0x16, 0xa9, 0x96, 0x7e, 0xda, 0xa1, 0x8e, 0x7d, 0xff, 0x8f, 0x81, 0x82, 0xff, 0x80, 0x7b, 0x8d, 0xff, 0x7a, 0x80, 0x94, 0xff, 0x81, 0x8b, 0x99, 0xff, 0x8c, 0x92, 0x9a, 0xff, 0x98, 0x94, 0x94, 0xff, 0xa0, 0x95, 0x88, 0xff, 0xa6, 0x97, 0x79, 0xff, 0xa7, 0x97, 0x6e, 0xff, 0xa8, 0x97, 0x6f, 0xff, 0xab, 0x95, 0x70, 0xff, 0xa1, 0x95, 0x81, 0xff, 0x9f, 0xa9, 0xae, 0xff, 0xc4, 0xd5, 0xe7, 0xff, 0xc5, 0xd8, 0xea, 0xff, 0xbd, 0xd2, 0xe2, 0xff, 0xad, 0xc2, 0xd3, 0xff, 0x6e, 0x8a, 0x9f, 0xff, 0x2e, 0x46, 0x5a, 0xff, 0x2f, 0x40, 0x56, 0xff, 0x31, 0x40, 0x55, 0xff, 0x0f, 0x1c, 0x2c, 0xff, 0x1e, 0x29, 0x3a, 0xff, 0x14, 0x23, 0x37, 0xff, 0x25, 0x37, 0x4d, 0xff, 0x18, 0x27, 0x3d, 0xff, 0x1a, 0x26, 0x3a, 0xff, 0x12, 0x1d, 0x2d, 0xff, 0x19, 0x21, 0x30, 0xff, 0x17, 0x25, 0x34, 0xff, 0x30, 0x3d, 0x4a, 0xff, 0x0f, 0x10, 0x18, 0xff, 0x22, 0x27, 0x34, 0xff, 0x09, 0x0e, 0x18, 0xff, 0x1e, 0x25, 0x2f, 0xff, 0x43, 0x52, 0x61, 0xff, 0x28, 0x35, 0x43, 0xff, 0x37, 0x4d, 0x61, 0xff, 0x60, 0x79, 0x8e, 0xff, 0x44, 0x5d, 0x73, 0xff, 0x36, 0x4e, 0x69, 0xff, 0x17, 0x27, 0x3f, 0xff, 0x0f, 0x1b, 0x2c, 0xff, 0x2b, 0x3c, 0x55, 0xff, 0x5e, 0x64, 0x6e, 0xff, 0xb4, 0xa9, 0x97, 0xff, 0xd1, 0xbd, 0xa1, 0xff, 0xc5, 0xaf, 0x8f, 0xff, 0xb4, 0xa2, 0x83, 0xff, 0xa4, 0x8a, 0x75, 0xff, 0x90, 0x80, 0x8c, 0xff, 0x88, 0x81, 0xa5, 0xff, 0x8f, 0x87, 0xbc, 0xff, 0x90, 0x8a, 0xce, 0xff, 0x8e, 0x8d, 0xd7, 0xff, 0x8b, 0x8e, 0xdd, 0xff, 0x8c, 0x8d, 0xdd, 0xff, 0x8b, 0x8c, 0xdd, 0xda, 0x89, 0x8c, 0xdc, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xa7, 0xb8, 0x0d, 0xa4, 0xa3, 0xae, 0xc1, 0xa3, 0x9b, 0x9a, 0xff, 0x99, 0x8c, 0x87, 0xff, 0x8a, 0x7e, 0x7f, 0xff, 0x80, 0x7d, 0x8a, 0xff, 0x7e, 0x80, 0x92, 0xff, 0x82, 0x89, 0x99, 0xff, 0x92, 0x94, 0x9d, 0xff, 0x99, 0x97, 0x97, 0xff, 0x9c, 0x98, 0x87, 0xff, 0xa5, 0x98, 0x7e, 0xff, 0xa9, 0x9a, 0x76, 0xff, 0xaf, 0x99, 0x74, 0xff, 0xaa, 0x9e, 0x90, 0xff, 0xb3, 0xc0, 0xd0, 0xff, 0xd0, 0xe9, 0xf5, 0xff, 0xc5, 0xde, 0xef, 0xff, 0xc3, 0xdb, 0xf1, 0xff, 0xae, 0xcb, 0xe4, 0xff, 0x7d, 0x9f, 0xbd, 0xff, 0x64, 0x81, 0xa0, 0xff, 0x36, 0x4a, 0x62, 0xff, 0x05, 0x11, 0x1f, 0xff, 0x11, 0x19, 0x28, 0xff, 0x1e, 0x2a, 0x40, 0xff, 0x13, 0x1f, 0x32, 0xff, 0x16, 0x27, 0x41, 0xff, 0x12, 0x25, 0x3f, 0xff, 0x16, 0x29, 0x43, 0xff, 0x03, 0x13, 0x30, 0xff, 0x04, 0x15, 0x2a, 0xff, 0x0d, 0x1e, 0x30, 0xff, 0x0a, 0x15, 0x29, 0xff, 0x0b, 0x15, 0x24, 0xff, 0x27, 0x33, 0x38, 0xff, 0x18, 0x1d, 0x23, 0xff, 0x1e, 0x20, 0x26, 0xff, 0x30, 0x36, 0x3d, 0xff, 0x19, 0x1e, 0x28, 0xff, 0x15, 0x1c, 0x25, 0xff, 0x3f, 0x50, 0x62, 0xff, 0x38, 0x50, 0x64, 0xff, 0x20, 0x3b, 0x53, 0xff, 0x1d, 0x33, 0x4c, 0xff, 0x1b, 0x24, 0x35, 0xff, 0x0e, 0x12, 0x1d, 0xff, 0x1d, 0x24, 0x2e, 0xff, 0x2c, 0x3c, 0x4d, 0xff, 0x65, 0x71, 0x7f, 0xff, 0x9e, 0x8f, 0x82, 0xff, 0xc3, 0xaf, 0x96, 0xff, 0xb1, 0xa2, 0x85, 0xff, 0xaa, 0x92, 0x7c, 0xff, 0x9b, 0x89, 0x98, 0xff, 0x90, 0x8b, 0xac, 0xff, 0x92, 0x8c, 0xc0, 0xff, 0x90, 0x8d, 0xd3, 0xff, 0x8e, 0x8e, 0xdb, 0xff, 0x8d, 0x8e, 0xdf, 0xff, 0x8e, 0x8f, 0xe0, 0xff, 0x8d, 0x8e, 0xe0, 0xff, 0x89, 0x8c, 0xde, 0xc1, 0x87, 0x8a, 0xdb, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xbb, 0xfe, 0x03, 0x94, 0xb1, 0xda, 0x92, 0x94, 0xa3, 0xbd, 0xff, 0x99, 0x9e, 0xac, 0xff, 0x93, 0x8e, 0x9d, 0xff, 0x7f, 0x78, 0x7a, 0xff, 0x7b, 0x76, 0x80, 0xff, 0x7d, 0x7d, 0x8e, 0xff, 0x86, 0x88, 0x93, 0xff, 0x92, 0x93, 0x97, 0xff, 0x99, 0x96, 0x90, 0xff, 0xa1, 0x97, 0x85, 0xff, 0xa8, 0x98, 0x7e, 0xff, 0xad, 0x9a, 0x7b, 0xff, 0xaa, 0x97, 0x85, 0xff, 0xc1, 0xce, 0xd8, 0xff, 0xcf, 0xde, 0xe7, 0xff, 0x9a, 0xba, 0xd2, 0xff, 0x7a, 0x96, 0xb5, 0xff, 0x50, 0x70, 0x90, 0xff, 0x45, 0x62, 0x83, 0xff, 0x54, 0x70, 0x92, 0xff, 0x38, 0x55, 0x77, 0xff, 0x20, 0x2e, 0x4a, 0xff, 0x0c, 0x18, 0x31, 0xff, 0x23, 0x39, 0x54, 0xff, 0x48, 0x5f, 0x7c, 0xff, 0x61, 0x7b, 0xa7, 0xff, 0x5a, 0x79, 0xa5, 0xff, 0x61, 0x84, 0xb2, 0xff, 0x53, 0x78, 0xa9, 0xff, 0x5b, 0x7d, 0xae, 0xff, 0x4b, 0x69, 0x98, 0xff, 0x32, 0x52, 0x7b, 0xff, 0x4d, 0x6c, 0x93, 0xff, 0x29, 0x40, 0x5f, 0xff, 0x2c, 0x3e, 0x4f, 0xff, 0x15, 0x1d, 0x29, 0xff, 0x27, 0x28, 0x31, 0xff, 0x09, 0x0b, 0x10, 0xff, 0x20, 0x24, 0x2b, 0xff, 0x19, 0x1d, 0x21, 0xff, 0x4a, 0x55, 0x5c, 0xff, 0x09, 0x16, 0x25, 0xff, 0x18, 0x2a, 0x40, 0xff, 0x11, 0x21, 0x34, 0xff, 0x0b, 0x10, 0x1a, 0xff, 0x11, 0x12, 0x1b, 0xff, 0x05, 0x07, 0x10, 0xff, 0x06, 0x0b, 0x16, 0xff, 0x53, 0x5d, 0x6a, 0xff, 0x62, 0x6c, 0x7b, 0xff, 0x9f, 0x95, 0x93, 0xff, 0xc0, 0xab, 0x93, 0xff, 0xb0, 0x9b, 0x7d, 0xff, 0xa0, 0x8e, 0x9b, 0xff, 0x98, 0x90, 0xb1, 0xff, 0x98, 0x8f, 0xc5, 0xff, 0x94, 0x92, 0xd1, 0xff, 0x8f, 0x8e, 0xdd, 0xff, 0x8f, 0x90, 0xe0, 0xff, 0x8d, 0x8f, 0xe0, 0xff, 0x8c, 0x8f, 0xe0, 0xff, 0x8a, 0x8c, 0xde, 0xff, 0x88, 0x8c, 0xdd, 0x92, 0x87, 0x8a, 0xdb, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xbc, 0xf7, 0x62, 0x7d, 0xb6, 0xea, 0xfb, 0x85, 0xa8, 0xd0, 0xff, 0x85, 0x9a, 0xb8, 0xff, 0x86, 0x8e, 0xa8, 0xff, 0x73, 0x73, 0x7b, 0xff, 0x70, 0x6e, 0x79, 0xff, 0x78, 0x78, 0x84, 0xff, 0x81, 0x83, 0x8d, 0xff, 0x8c, 0x8d, 0x8f, 0xff, 0x94, 0x90, 0x8a, 0xff, 0x9b, 0x92, 0x83, 0xff, 0xa5, 0x97, 0x80, 0xff, 0xa8, 0x97, 0x7a, 0xff, 0xb9, 0xb8, 0xb8, 0xff, 0x57, 0x76, 0x8f, 0xff, 0x37, 0x41, 0x52, 0xff, 0x27, 0x36, 0x41, 0xff, 0x36, 0x48, 0x62, 0xff, 0x1f, 0x35, 0x4f, 0xff, 0x1d, 0x30, 0x4d, 0xff, 0x14, 0x27, 0x45, 0xff, 0x0f, 0x21, 0x40, 0xff, 0x11, 0x2d, 0x5a, 0xff, 0x40, 0x5b, 0x88, 0xff, 0x96, 0xaf, 0xce, 0xff, 0xc4, 0xe1, 0xf6, 0xff, 0xac, 0xd0, 0xfa, 0xff, 0xa3, 0xca, 0xf4, 0xff, 0x9d, 0xc1, 0xee, 0xff, 0x95, 0xb8, 0xee, 0xff, 0x99, 0xbe, 0xf4, 0xff, 0x87, 0xaf, 0xe8, 0xff, 0x85, 0xa8, 0xe0, 0xff, 0x54, 0x78, 0xb1, 0xff, 0x41, 0x63, 0x9b, 0xff, 0x33, 0x50, 0x83, 0xff, 0x22, 0x39, 0x59, 0xff, 0x36, 0x45, 0x61, 0xff, 0x30, 0x3a, 0x4f, 0xff, 0x0a, 0x13, 0x24, 0xff, 0x27, 0x30, 0x42, 0xff, 0x10, 0x16, 0x20, 0xff, 0x13, 0x1a, 0x22, 0xff, 0x09, 0x13, 0x21, 0xff, 0x14, 0x1e, 0x2f, 0xff, 0x0a, 0x10, 0x18, 0xff, 0x08, 0x0e, 0x15, 0xff, 0x0a, 0x0c, 0x10, 0xff, 0x09, 0x0b, 0x10, 0xff, 0x13, 0x18, 0x21, 0xff, 0x40, 0x4b, 0x5b, 0xff, 0x56, 0x65, 0x70, 0xff, 0xb2, 0xa1, 0x97, 0xff, 0xb7, 0x9d, 0x88, 0xff, 0xa2, 0x95, 0x99, 0xff, 0x9b, 0x92, 0xb5, 0xff, 0x9c, 0x92, 0xc7, 0xff, 0x96, 0x94, 0xd1, 0xff, 0x91, 0x90, 0xde, 0xff, 0x8f, 0x90, 0xe1, 0xff, 0x8f, 0x91, 0xe1, 0xff, 0x8d, 0x90, 0xe1, 0xff, 0x8c, 0x8f, 0xe0, 0xff, 0x8a, 0x8d, 0xde, 0xfb, 0x8a, 0x8c, 0xdd, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc3, 0xff, 0x20, 0x4d, 0xbd, 0xff, 0xe8, 0x59, 0xba, 0xf9, 0xff, 0x68, 0xaa, 0xe1, 0xff, 0x6a, 0x95, 0xc4, 0xff, 0x74, 0x8c, 0xb1, 0xff, 0x6e, 0x75, 0x7f, 0xff, 0x69, 0x68, 0x6f, 0xff, 0x71, 0x71, 0x78, 0xff, 0x7a, 0x7c, 0x82, 0xff, 0x85, 0x83, 0x84, 0xff, 0x8a, 0x86, 0x81, 0xff, 0x92, 0x8b, 0x7d, 0xff, 0x9a, 0x8e, 0x7a, 0xff, 0xa1, 0x95, 0x7f, 0xff, 0xae, 0xa4, 0x99, 0xff, 0x79, 0x8b, 0x96, 0xff, 0x50, 0x5f, 0x75, 0xff, 0x49, 0x64, 0x80, 0xff, 0x33, 0x46, 0x63, 0xff, 0x1b, 0x2b, 0x42, 0xff, 0x1f, 0x2d, 0x44, 0xff, 0x03, 0x11, 0x30, 0xff, 0x53, 0x68, 0x8d, 0xff, 0x89, 0xa5, 0xce, 0xff, 0xb8, 0xcf, 0xef, 0xff, 0xe9, 0xf4, 0xfe, 0xff, 0xeb, 0xf7, 0xfb, 0xff, 0xc7, 0xe1, 0xf4, 0xff, 0xcc, 0xe6, 0xfa, 0xff, 0xd3, 0xed, 0xfb, 0xff, 0xc3, 0xe3, 0xf7, 0xff, 0xc2, 0xe2, 0xfc, 0xff, 0xb0, 0xd0, 0xf5, 0xff, 0xa0, 0xc4, 0xf2, 0xff, 0x88, 0xaf, 0xe0, 0xff, 0x6d, 0x95, 0xc5, 0xff, 0x72, 0x97, 0xc5, 0xff, 0x5e, 0x81, 0xae, 0xff, 0x59, 0x74, 0x9f, 0xff, 0x29, 0x40, 0x68, 0xff, 0x1f, 0x37, 0x5c, 0xff, 0x24, 0x39, 0x5a, 0xff, 0x14, 0x24, 0x42, 0xff, 0x13, 0x1d, 0x2f, 0xff, 0x15, 0x20, 0x2f, 0xff, 0x15, 0x1e, 0x2b, 0xff, 0x07, 0x09, 0x10, 0xff, 0x05, 0x09, 0x0d, 0xff, 0x08, 0x08, 0x0a, 0xff, 0x06, 0x07, 0x0a, 0xff, 0x03, 0x04, 0x09, 0xff, 0x0c, 0x12, 0x1b, 0xff, 0x03, 0x0e, 0x16, 0xff, 0x6f, 0x69, 0x67, 0xff, 0xb7, 0xaa, 0x9f, 0xff, 0xa6, 0x96, 0x9a, 0xff, 0x9c, 0x93, 0xb3, 0xff, 0x9c, 0x93, 0xc6, 0xff, 0x95, 0x94, 0xd0, 0xff, 0x91, 0x91, 0xde, 0xff, 0x91, 0x91, 0xe2, 0xff, 0x90, 0x92, 0xe2, 0xff, 0x8e, 0x91, 0xe2, 0xff, 0x8c, 0x8f, 0xe0, 0xff, 0x8c, 0x8e, 0xdf, 0xff, 0x8d, 0x8f, 0xe0, 0xe8, 0x8c, 0x8d, 0xde, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xc4, 0xff, 0x05, 0x30, 0xc6, 0xff, 0xc0, 0x3a, 0xbe, 0xfe, 0xff, 0x43, 0xbd, 0xfe, 0xff, 0x53, 0xaf, 0xea, 0xff, 0x63, 0x9c, 0xd1, 0xff, 0x70, 0x8e, 0xb8, 0xff, 0x6e, 0x75, 0x7d, 0xff, 0x77, 0x72, 0x72, 0xff, 0x76, 0x76, 0x7a, 0xff, 0x76, 0x76, 0x7b, 0xff, 0x81, 0x7e, 0x7f, 0xff, 0x85, 0x80, 0x7b, 0xff, 0x89, 0x81, 0x76, 0xff, 0x8f, 0x87, 0x77, 0xff, 0x90, 0x89, 0x76, 0xff, 0x95, 0x85, 0x7a, 0xff, 0xa9, 0xb5, 0xbf, 0xff, 0xb8, 0xc4, 0xd7, 0xff, 0x5e, 0x79, 0x8d, 0xff, 0x18, 0x33, 0x53, 0xff, 0x1b, 0x2d, 0x44, 0xff, 0x10, 0x1c, 0x31, 0xff, 0x68, 0x81, 0xa7, 0xff, 0xa5, 0xc7, 0xf7, 0xff, 0xcc, 0xe0, 0xf5, 0xff, 0xfb, 0xfd, 0xfd, 0xff, 0xff, 0xfe, 0xf8, 0xff, 0xf0, 0xf5, 0xf7, 0xff, 0xd8, 0xed, 0xfa, 0xff, 0xd8, 0xee, 0xfc, 0xff, 0xcc, 0xe7, 0xf5, 0xff, 0xbc, 0xdf, 0xf5, 0xff, 0xb6, 0xd3, 0xf6, 0xff, 0xb1, 0xcb, 0xfb, 0xff, 0xa4, 0xc2, 0xf0, 0xff, 0x9e, 0xc0, 0xee, 0xff, 0x94, 0xb4, 0xe2, 0xff, 0x98, 0xb3, 0xdb, 0xff, 0x75, 0x98, 0xc4, 0xff, 0x77, 0x96, 0xc5, 0xff, 0x4d, 0x6a, 0x9c, 0xff, 0x3f, 0x5e, 0x90, 0xff, 0x32, 0x4f, 0x7c, 0xff, 0x2e, 0x46, 0x75, 0xff, 0x1d, 0x31, 0x56, 0xff, 0x10, 0x23, 0x38, 0xff, 0x0b, 0x15, 0x20, 0xff, 0x09, 0x0b, 0x10, 0xff, 0x08, 0x04, 0x06, 0xff, 0x04, 0x04, 0x0a, 0xff, 0x01, 0x03, 0x06, 0xff, 0x03, 0x04, 0x04, 0xff, 0x09, 0x09, 0x08, 0xff, 0x08, 0x08, 0x06, 0xff, 0x02, 0x05, 0x05, 0xff, 0x81, 0x81, 0x7e, 0xff, 0xb5, 0xa2, 0xad, 0xff, 0x9c, 0x95, 0xb4, 0xff, 0x9b, 0x93, 0xc5, 0xff, 0x94, 0x94, 0xd0, 0xff, 0x92, 0x92, 0xdd, 0xff, 0x92, 0x92, 0xe3, 0xff, 0x91, 0x93, 0xe3, 0xff, 0x8f, 0x92, 0xe4, 0xff, 0x8e, 0x91, 0xe2, 0xff, 0x8d, 0x90, 0xe1, 0xff, 0x8f, 0x90, 0xe1, 0xff, 0x8f, 0x90, 0xe1, 0xc0, 0x91, 0x91, 0xdf, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xc0, 0xfd, 0x53, 0x1e, 0xc5, 0xff, 0xfa, 0x35, 0xc5, 0xfc, 0xff, 0x3a, 0xc0, 0xff, 0xff, 0x52, 0xb6, 0xf5, 0xff, 0x64, 0xa3, 0xd6, 0xff, 0x6f, 0x91, 0xba, 0xff, 0x76, 0x7d, 0x81, 0xff, 0x89, 0x81, 0x7f, 0xff, 0x8b, 0x85, 0x83, 0xff, 0x83, 0x80, 0x7d, 0xff, 0x82, 0x80, 0x7c, 0xff, 0x8b, 0x85, 0x7f, 0xff, 0x88, 0x80, 0x76, 0xff, 0x8b, 0x82, 0x76, 0xff, 0x85, 0x7e, 0x72, 0xff, 0xa2, 0xa6, 0xa8, 0xff, 0xbe, 0xce, 0xdf, 0xff, 0x9b, 0xb7, 0xd3, 0xff, 0x59, 0x77, 0x98, 0xff, 0x1b, 0x32, 0x54, 0xff, 0x0e, 0x24, 0x41, 0xff, 0x86, 0xa4, 0xc5, 0xff, 0xcc, 0xe0, 0xfe, 0xff, 0xeb, 0xf4, 0xfb, 0xff, 0xfd, 0xfe, 0xfd, 0xff, 0xfe, 0xfd, 0xf9, 0xff, 0xfa, 0xfd, 0xfc, 0xff, 0xee, 0xf7, 0xf9, 0xff, 0xda, 0xea, 0xf6, 0xff, 0xd4, 0xe8, 0xf6, 0xff, 0xcb, 0xe2, 0xf5, 0xff, 0xb8, 0xd5, 0xf3, 0xff, 0xb2, 0xcf, 0xf7, 0xff, 0xad, 0xc7, 0xf4, 0xff, 0xaa, 0xc7, 0xf0, 0xff, 0x9d, 0xbc, 0xe8, 0xff, 0x97, 0xb5, 0xe2, 0xff, 0x9f, 0xb5, 0xdc, 0xff, 0xa0, 0xba, 0xe0, 0xff, 0x92, 0xae, 0xd5, 0xff, 0x7e, 0x9a, 0xc5, 0xff, 0x66, 0x83, 0xaf, 0xff, 0x51, 0x6e, 0x9c, 0xff, 0x41, 0x5d, 0x8f, 0xff, 0x2d, 0x45, 0x6f, 0xff, 0x14, 0x27, 0x42, 0xff, 0x09, 0x12, 0x20, 0xff, 0x12, 0x12, 0x19, 0xff, 0x07, 0x09, 0x0a, 0xff, 0x05, 0x08, 0x09, 0xff, 0x09, 0x0b, 0x0c, 0xff, 0x05, 0x07, 0x08, 0xff, 0x02, 0x04, 0x05, 0xff, 0x09, 0x08, 0x0d, 0xff, 0x0d, 0x0e, 0x13, 0xff, 0x24, 0x27, 0x2c, 0xff, 0x77, 0x77, 0x80, 0xff, 0xa9, 0xa3, 0xc0, 0xff, 0x9f, 0x9c, 0xc5, 0xff, 0x9c, 0x99, 0xd4, 0xff, 0x99, 0x96, 0xdc, 0xff, 0x95, 0x94, 0xe1, 0xff, 0x92, 0x92, 0xe6, 0xff, 0x8f, 0x91, 0xe5, 0xff, 0x8d, 0x91, 0xe4, 0xff, 0x8e, 0x92, 0xe4, 0xff, 0x90, 0x91, 0xe1, 0xff, 0x91, 0x91, 0xe0, 0xfa, 0x91, 0x90, 0xdf, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xfc, 0x0c, 0x00, 0xc1, 0xfe, 0xdd, 0x05, 0xc5, 0xfe, 0xff, 0x1d, 0xc6, 0xfc, 0xff, 0x2d, 0xc4, 0xff, 0xff, 0x4d, 0xb5, 0xf1, 0xff, 0x62, 0x9c, 0xcf, 0xff, 0x76, 0x94, 0xba, 0xff, 0x90, 0x95, 0x96, 0xff, 0x9a, 0x8f, 0x87, 0xff, 0x9d, 0x95, 0x8c, 0xff, 0x95, 0x91, 0x87, 0xff, 0x8d, 0x87, 0x7f, 0xff, 0x94, 0x8e, 0x87, 0xff, 0x8d, 0x8a, 0x7c, 0xff, 0x8a, 0x82, 0x71, 0xff, 0x9e, 0xa3, 0xac, 0xff, 0xd6, 0xe2, 0xf2, 0xff, 0xd9, 0xe9, 0xf9, 0xff, 0xad, 0xc8, 0xe2, 0xff, 0x6c, 0x8c, 0xad, 0xff, 0x36, 0x58, 0x7e, 0xff, 0xa8, 0xbb, 0xcd, 0xff, 0xec, 0xfd, 0xff, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xfd, 0xfd, 0xff, 0xff, 0xfc, 0xf9, 0xff, 0xfe, 0xfc, 0xfb, 0xff, 0xf7, 0xfc, 0xff, 0xff, 0xe0, 0xec, 0xf5, 0xff, 0xdc, 0xeb, 0xf6, 0xff, 0xd9, 0xea, 0xf6, 0xff, 0xcc, 0xe2, 0xf2, 0xff, 0xbd, 0xd7, 0xf4, 0xff, 0xb6, 0xd1, 0xf7, 0xff, 0xb3, 0xcb, 0xf5, 0xff, 0xac, 0xc8, 0xf5, 0xff, 0xa4, 0xc1, 0xee, 0xff, 0xa5, 0xbf, 0xea, 0xff, 0xae, 0xc6, 0xef, 0xff, 0xaf, 0xc8, 0xed, 0xff, 0x96, 0xb1, 0xd6, 0xff, 0x9b, 0xb4, 0xd9, 0xff, 0x8f, 0xa9, 0xce, 0xff, 0x75, 0x91, 0xb8, 0xff, 0x56, 0x72, 0x9a, 0xff, 0x3b, 0x53, 0x78, 0xff, 0x3d, 0x53, 0x6d, 0xff, 0x1e, 0x2c, 0x3a, 0xff, 0x06, 0x07, 0x0e, 0xff, 0x06, 0x03, 0x07, 0xff, 0x04, 0x06, 0x07, 0xff, 0x04, 0x06, 0x07, 0xff, 0x09, 0x0b, 0x0c, 0xff, 0x06, 0x08, 0x09, 0xff, 0x06, 0x07, 0x08, 0xff, 0x15, 0x16, 0x1a, 0xff, 0x19, 0x1b, 0x1f, 0xff, 0x00, 0x00, 0x00, 0xff, 0x86, 0x83, 0x96, 0xff, 0xb2, 0xab, 0xca, 0xff, 0xab, 0xa2, 0xd2, 0xff, 0xa5, 0xa0, 0xdb, 0xff, 0x9f, 0x9e, 0xe3, 0xff, 0x9b, 0x9a, 0xe3, 0xff, 0x96, 0x99, 0xe2, 0xff, 0x94, 0x96, 0xe2, 0xff, 0x92, 0x94, 0xe2, 0xff, 0x91, 0x92, 0xe0, 0xff, 0x91, 0x91, 0xdf, 0xff, 0x92, 0x92, 0xdc, 0xdd, 0x93, 0x93, 0xd9, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb9, 0xfe, 0x80, 0x00, 0xc1, 0xfe, 0xff, 0x01, 0xc6, 0xff, 0xff, 0x12, 0xc6, 0xfc, 0xff, 0x27, 0xc4, 0xff, 0xff, 0x52, 0xb7, 0xf2, 0xff, 0x6f, 0xa2, 0xd4, 0xff, 0x88, 0xa1, 0xc4, 0xff, 0xa1, 0xa1, 0x9c, 0xff, 0xaa, 0x9c, 0x8e, 0xff, 0xab, 0xa0, 0x8e, 0xff, 0xa6, 0xa0, 0x8f, 0xff, 0x9e, 0x94, 0x87, 0xff, 0xad, 0x9f, 0x93, 0xff, 0x9b, 0x97, 0x87, 0xff, 0x9d, 0xa3, 0xa5, 0xff, 0xc3, 0xd6, 0xea, 0xff, 0xc7, 0xdc, 0xf1, 0xff, 0xcf, 0xe2, 0xf3, 0xff, 0xba, 0xd3, 0xeb, 0xff, 0x82, 0xa5, 0xc4, 0xff, 0x83, 0xa6, 0xc7, 0xff, 0xf6, 0xfa, 0xfd, 0xff, 0xff, 0xfe, 0xf8, 0xff, 0xf6, 0xfc, 0xfe, 0xff, 0xfe, 0xfd, 0xf9, 0xff, 0xfe, 0xfc, 0xfb, 0xff, 0xfc, 0xfc, 0xfd, 0xff, 0xf8, 0xfb, 0xfd, 0xff, 0xef, 0xf8, 0xfb, 0xff, 0xeb, 0xf5, 0xf8, 0xff, 0xe0, 0xef, 0xf8, 0xff, 0xcf, 0xe8, 0xf7, 0xff, 0xbf, 0xde, 0xf6, 0xff, 0xb3, 0xd3, 0xf5, 0xff, 0xaf, 0xcd, 0xf2, 0xff, 0xa9, 0xc7, 0xf4, 0xff, 0xae, 0xc9, 0xf1, 0xff, 0xba, 0xd4, 0xf6, 0xff, 0xbf, 0xda, 0xfc, 0xff, 0xad, 0xc6, 0xf1, 0xff, 0x9b, 0xb4, 0xdb, 0xff, 0xa0, 0xba, 0xdd, 0xff, 0x9a, 0xb4, 0xd4, 0xff, 0x94, 0xaf, 0xd0, 0xff, 0x8c, 0xa9, 0xca, 0xff, 0x4f, 0x6a, 0x88, 0xff, 0x22, 0x35, 0x4f, 0xff, 0x15, 0x1e, 0x2d, 0xff, 0x09, 0x0b, 0x14, 0xff, 0x04, 0x06, 0x0a, 0xff, 0x02, 0x05, 0x07, 0xff, 0x01, 0x02, 0x03, 0xff, 0x01, 0x03, 0x04, 0xff, 0x06, 0x09, 0x09, 0xff, 0x08, 0x09, 0x0a, 0xff, 0x03, 0x05, 0x06, 0xff, 0x16, 0x18, 0x1b, 0xff, 0x05, 0x0a, 0x0e, 0xff, 0x8c, 0x8c, 0x91, 0xff, 0xc2, 0xb6, 0xca, 0xff, 0xb8, 0xac, 0xcf, 0xff, 0xb6, 0xaf, 0xda, 0xff, 0xb0, 0xab, 0xde, 0xff, 0xac, 0xa6, 0xe0, 0xff, 0xa8, 0xa5, 0xdf, 0xff, 0xa5, 0xa4, 0xde, 0xff, 0xa2, 0xa0, 0xdd, 0xff, 0x9e, 0x9d, 0xdb, 0xff, 0x99, 0x99, 0xd8, 0xff, 0x94, 0x97, 0xd6, 0xff, 0x93, 0x95, 0xd4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xb0, 0xfa, 0x13, 0x0d, 0xb6, 0xfc, 0xdf, 0x05, 0xc1, 0xfc, 0xff, 0x11, 0xc8, 0xff, 0xff, 0x23, 0xc7, 0xfe, 0xff, 0x37, 0xc2, 0xff, 0xff, 0x65, 0xbb, 0xf5, 0xff, 0x7d, 0xac, 0xdd, 0xff, 0x94, 0xab, 0xce, 0xff, 0xa5, 0xa5, 0x9e, 0xff, 0xb4, 0xa5, 0x92, 0xff, 0xb5, 0xa8, 0x94, 0xff, 0xb1, 0xa6, 0x94, 0xff, 0xaa, 0x9e, 0x8e, 0xff, 0xb7, 0xaa, 0x98, 0xff, 0xaf, 0xa3, 0x98, 0xff, 0xaf, 0xc6, 0xdb, 0xff, 0xad, 0xc7, 0xda, 0xff, 0xae, 0xc3, 0xe1, 0xff, 0xba, 0xd6, 0xe3, 0xff, 0xbc, 0xd2, 0xec, 0xff, 0x82, 0xaa, 0xcf, 0xff, 0xd6, 0xe5, 0xec, 0xff, 0xfc, 0xfd, 0xfe, 0xff, 0xfa, 0xfa, 0xfe, 0xff, 0xfe, 0xfc, 0xfa, 0xff, 0xfc, 0xfb, 0xfd, 0xff, 0xfd, 0xfa, 0xff, 0xff, 0xfd, 0xfb, 0xfd, 0xff, 0xfd, 0xfb, 0xfb, 0xff, 0xf8, 0xfc, 0xfa, 0xff, 0xed, 0xf7, 0xf7, 0xff, 0xd9, 0xeb, 0xf6, 0xff, 0xc6, 0xe3, 0xf5, 0xff, 0xb6, 0xdb, 0xf0, 0xff, 0xb0, 0xd4, 0xf2, 0xff, 0xab, 0xce, 0xf1, 0xff, 0xa8, 0xca, 0xf2, 0xff, 0xb4, 0xcf, 0xf5, 0xff, 0xbd, 0xd7, 0xf9, 0xff, 0xb5, 0xd2, 0xf4, 0xff, 0x9d, 0xb9, 0xe8, 0xff, 0x82, 0x9b, 0xc6, 0xff, 0x92, 0xac, 0xd0, 0xff, 0x9f, 0xbb, 0xdc, 0xff, 0x9e, 0xb8, 0xd7, 0xff, 0xa4, 0xbf, 0xd8, 0xff, 0x8c, 0xa6, 0xc1, 0xff, 0x38, 0x4c, 0x68, 0xff, 0x18, 0x21, 0x36, 0xff, 0x06, 0x08, 0x10, 0xff, 0x06, 0x0a, 0x0f, 0xff, 0x01, 0x03, 0x04, 0xff, 0x02, 0x04, 0x05, 0xff, 0x02, 0x03, 0x04, 0xff, 0x09, 0x0a, 0x0c, 0xff, 0x08, 0x08, 0x08, 0xff, 0x0e, 0x0f, 0x0f, 0xff, 0x08, 0x0a, 0x0c, 0xff, 0x12, 0x15, 0x18, 0xff, 0x58, 0x59, 0x5a, 0xff, 0xb9, 0xb1, 0xbb, 0xff, 0xc2, 0xb6, 0xcb, 0xff, 0xc1, 0xb6, 0xd4, 0xff, 0xbe, 0xb5, 0xdb, 0xff, 0xba, 0xb2, 0xde, 0xff, 0xba, 0xb1, 0xdc, 0xff, 0xb7, 0xb1, 0xda, 0xff, 0xb3, 0xae, 0xda, 0xff, 0xac, 0xaa, 0xd7, 0xff, 0xa5, 0xa4, 0xd3, 0xff, 0x9d, 0x9f, 0xd1, 0xff, 0x99, 0x9a, 0xd0, 0xdf, 0x97, 0x99, 0xd0, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x9d, 0xe2, 0x64, 0x19, 0xb2, 0xfd, 0xff, 0x07, 0xc0, 0xfd, 0xff, 0x11, 0xc8, 0xff, 0xff, 0x1d, 0xc8, 0xfd, 0xff, 0x31, 0xc4, 0xff, 0xff, 0x57, 0xbe, 0xf6, 0xff, 0x7a, 0xad, 0xdc, 0xff, 0x8d, 0xa5, 0xc9, 0xff, 0xa7, 0xa8, 0xa1, 0xff, 0xb6, 0xa7, 0x92, 0xff, 0xb8, 0xa9, 0x97, 0xff, 0xb5, 0xa8, 0x96, 0xff, 0xb3, 0xa7, 0x96, 0xff, 0xba, 0xae, 0x9f, 0xff, 0xb7, 0xb4, 0xad, 0xff, 0x99, 0xb6, 0xd4, 0xff, 0xa2, 0xb3, 0xc1, 0xff, 0xa5, 0xc0, 0xe3, 0xff, 0xc6, 0xe0, 0xf0, 0xff, 0x9e, 0xbf, 0xe2, 0xff, 0x96, 0xbb, 0xd8, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xfc, 0xfb, 0xff, 0xfd, 0xfc, 0xfc, 0xff, 0xfe, 0xfc, 0xfc, 0xff, 0xfa, 0xfc, 0xfd, 0xff, 0xfd, 0xfc, 0xfc, 0xff, 0xfa, 0xfc, 0xfb, 0xff, 0xfa, 0xfe, 0xfd, 0xff, 0xf1, 0xf4, 0xf7, 0xff, 0xe0, 0xee, 0xf1, 0xff, 0xd7, 0xea, 0xf4, 0xff, 0xc6, 0xe0, 0xf5, 0xff, 0xbd, 0xdb, 0xf5, 0xff, 0xbf, 0xdc, 0xf4, 0xff, 0xbe, 0xdc, 0xf5, 0xff, 0xc2, 0xdd, 0xf7, 0xff, 0xbc, 0xd8, 0xf5, 0xff, 0xb5, 0xd0, 0xf6, 0xff, 0xb2, 0xc8, 0xf5, 0xff, 0x94, 0xb1, 0xe0, 0xff, 0x6d, 0x84, 0xb2, 0xff, 0x75, 0x8d, 0xb8, 0xff, 0x6e, 0x8b, 0xb4, 0xff, 0x75, 0x8f, 0xb5, 0xff, 0x8a, 0x9f, 0xbd, 0xff, 0xa7, 0xc1, 0xdd, 0xff, 0x51, 0x6a, 0x88, 0xff, 0x21, 0x2e, 0x48, 0xff, 0x08, 0x0b, 0x15, 0xff, 0x04, 0x05, 0x0c, 0xff, 0x02, 0x04, 0x07, 0xff, 0x01, 0x03, 0x04, 0xff, 0x03, 0x03, 0x04, 0xff, 0x06, 0x05, 0x07, 0xff, 0x0a, 0x0a, 0x0a, 0xff, 0x08, 0x08, 0x08, 0xff, 0x17, 0x17, 0x17, 0xff, 0x36, 0x37, 0x37, 0xff, 0x33, 0x37, 0x37, 0xff, 0x57, 0x59, 0x59, 0xff, 0xc9, 0xbf, 0xc6, 0xff, 0xd1, 0xc1, 0xce, 0xff, 0xca, 0xbf, 0xd4, 0xff, 0xc3, 0xbc, 0xd7, 0xff, 0xc4, 0xbc, 0xd7, 0xff, 0xc4, 0xbb, 0xd5, 0xff, 0xbf, 0xb8, 0xd4, 0xff, 0xb7, 0xb3, 0xd0, 0xff, 0xae, 0xae, 0xcb, 0xff, 0xa9, 0xa8, 0xc9, 0xff, 0xa2, 0xa2, 0xc9, 0xff, 0x9b, 0x9d, 0xcb, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x7b, 0x96, 0x07, 0x44, 0x9c, 0xd6, 0xe3, 0x27, 0xb1, 0xf8, 0xff, 0x11, 0xbc, 0xfc, 0xff, 0x11, 0xc1, 0xff, 0xff, 0x1e, 0xc2, 0xfe, 0xff, 0x2d, 0xbf, 0xff, 0xff, 0x4c, 0xb5, 0xee, 0xff, 0x69, 0xa0, 0xca, 0xff, 0x83, 0x9d, 0xbe, 0xff, 0xa3, 0xa2, 0x9f, 0xff, 0xaf, 0x9b, 0x8c, 0xff, 0xaf, 0xa0, 0x90, 0xff, 0xb1, 0xa3, 0x94, 0xff, 0xb2, 0xa6, 0x97, 0xff, 0xbd, 0xad, 0xa2, 0xff, 0x9e, 0xb6, 0xbd, 0xff, 0x96, 0xac, 0xc0, 0xff, 0xb0, 0xb6, 0xcf, 0xff, 0xa8, 0xd0, 0xe4, 0xff, 0xb7, 0xca, 0xeb, 0xff, 0x6b, 0xa0, 0xc9, 0xff, 0xd7, 0xe3, 0xec, 0xff, 0xfe, 0xfe, 0xfd, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xfe, 0xf9, 0xff, 0xff, 0xfd, 0xfc, 0xff, 0xfa, 0xfd, 0xfe, 0xff, 0xe5, 0xf0, 0xf6, 0xff, 0xdb, 0xeb, 0xf8, 0xff, 0xe1, 0xf1, 0xfb, 0xff, 0xe2, 0xf6, 0xfe, 0xff, 0xdd, 0xf7, 0xfe, 0xff, 0xc5, 0xe0, 0xf5, 0xff, 0xb7, 0xd3, 0xe3, 0xff, 0xae, 0xce, 0xd3, 0xff, 0xae, 0xc9, 0xce, 0xff, 0xb0, 0xc9, 0xc9, 0xff, 0xb8, 0xd2, 0xdc, 0xff, 0xb6, 0xcc, 0xf0, 0xff, 0xa4, 0xbd, 0xe2, 0xff, 0x70, 0x89, 0xb6, 0xff, 0x56, 0x70, 0xa4, 0xff, 0x59, 0x74, 0xa9, 0xff, 0x54, 0x71, 0xa2, 0xff, 0x38, 0x55, 0x82, 0xff, 0x55, 0x70, 0x94, 0xff, 0x6b, 0x86, 0xaa, 0xff, 0x33, 0x43, 0x5f, 0xff, 0x10, 0x19, 0x28, 0xff, 0x06, 0x09, 0x15, 0xff, 0x07, 0x09, 0x10, 0xff, 0x01, 0x05, 0x09, 0xff, 0x02, 0x03, 0x06, 0xff, 0x01, 0x02, 0x03, 0xff, 0x05, 0x04, 0x05, 0xff, 0x0d, 0x0d, 0x0d, 0xff, 0x20, 0x20, 0x20, 0xff, 0x44, 0x45, 0x45, 0xff, 0x2b, 0x30, 0x2e, 0xff, 0x66, 0x69, 0x63, 0xff, 0xb5, 0xae, 0xac, 0xff, 0xd8, 0xca, 0xca, 0xff, 0xd7, 0xca, 0xc9, 0xff, 0xd3, 0xc8, 0xcd, 0xff, 0xce, 0xc7, 0xd2, 0xff, 0xcf, 0xc6, 0xcf, 0xff, 0xcc, 0xc3, 0xca, 0xff, 0xc3, 0xbd, 0xc5, 0xff, 0xba, 0xb9, 0xc1, 0xff, 0xb2, 0xb0, 0xbf, 0xff, 0xa9, 0xab, 0xbe, 0xff, 0x9e, 0xa3, 0xbe, 0xe3, 0x99, 0xa2, 0xbd, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x97, 0xb0, 0x50, 0x61, 0xa3, 0xce, 0xfb, 0x48, 0xaf, 0xea, 0xff, 0x3a, 0xb6, 0xf6, 0xff, 0x30, 0xba, 0xfe, 0xff, 0x33, 0xba, 0xf9, 0xff, 0x40, 0xb7, 0xfb, 0xff, 0x5d, 0xac, 0xe6, 0xff, 0x6e, 0x9d, 0xc6, 0xff, 0x80, 0x9a, 0xb9, 0xff, 0x89, 0x8b, 0x89, 0xff, 0x9b, 0x8c, 0x80, 0xff, 0x9b, 0x8f, 0x86, 0xff, 0x9b, 0x90, 0x88, 0xff, 0xaa, 0xa0, 0x98, 0xff, 0xa8, 0xa1, 0x9b, 0xff, 0x8e, 0xa7, 0xbf, 0xff, 0x9d, 0xa8, 0xb3, 0xff, 0xa9, 0xc3, 0xe1, 0xff, 0xb7, 0xd4, 0xed, 0xff, 0x88, 0xae, 0xd7, 0xff, 0x77, 0xa0, 0xbd, 0xff, 0xf1, 0xf8, 0xfb, 0xff, 0xfe, 0xfd, 0xfb, 0xff, 0xfd, 0xfc, 0xfc, 0xff, 0xfb, 0xfc, 0xfd, 0xff, 0xfa, 0xfd, 0xfc, 0xff, 0xee, 0xf5, 0xfb, 0xff, 0xf2, 0xf6, 0xfe, 0xff, 0xe6, 0xef, 0xf8, 0xff, 0xd3, 0xe4, 0xf2, 0xff, 0xdc, 0xeb, 0xf8, 0xff, 0xda, 0xe2, 0xe5, 0xff, 0xa3, 0xb0, 0xb9, 0xff, 0x69, 0x7a, 0x80, 0xff, 0x40, 0x4d, 0x50, 0xff, 0x1b, 0x2d, 0x2d, 0xff, 0x19, 0x2b, 0x29, 0xff, 0x00, 0x1a, 0x1a, 0xff, 0x7c, 0x6d, 0x56, 0xff, 0x96, 0x87, 0x70, 0xff, 0x2a, 0x3a, 0x43, 0xff, 0x96, 0xab, 0xbb, 0xff, 0x9b, 0xb3, 0xd5, 0xff, 0x69, 0x81, 0xb2, 0xff, 0x5e, 0x76, 0xa9, 0xff, 0x49, 0x66, 0x98, 0xff, 0x30, 0x4f, 0x85, 0xff, 0x1d, 0x38, 0x6c, 0xff, 0x27, 0x3d, 0x65, 0xff, 0x4e, 0x64, 0x83, 0xff, 0x13, 0x21, 0x39, 0xff, 0x0e, 0x15, 0x24, 0xff, 0x09, 0x0c, 0x15, 0xff, 0x06, 0x09, 0x10, 0xff, 0x07, 0x0a, 0x0c, 0xff, 0x05, 0x07, 0x07, 0xff, 0x05, 0x05, 0x05, 0xff, 0x0f, 0x0f, 0x0f, 0xff, 0x13, 0x13, 0x13, 0xff, 0x11, 0x10, 0x11, 0xff, 0x20, 0x1f, 0x1f, 0xff, 0x68, 0x6a, 0x64, 0xff, 0x9b, 0x9b, 0x94, 0xff, 0xbc, 0xb4, 0xaf, 0xff, 0xda, 0xcd, 0xc2, 0xff, 0xdd, 0xcc, 0xc1, 0xff, 0xdc, 0xce, 0xc7, 0xff, 0xda, 0xce, 0xc7, 0xff, 0xd5, 0xcb, 0xc3, 0xff, 0xcc, 0xc4, 0xbd, 0xff, 0xc2, 0xbe, 0xb8, 0xff, 0xb7, 0xb8, 0xb2, 0xff, 0xae, 0xb1, 0xb1, 0xff, 0xa4, 0xaa, 0xb3, 0xfb, 0x9c, 0xa5, 0xb3, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x8f, 0x9a, 0x94, 0x03, 0x87, 0x9b, 0xa2, 0xa1, 0x79, 0xa3, 0xbc, 0xff, 0x63, 0xaa, 0xd7, 0xff, 0x57, 0xae, 0xea, 0xff, 0x52, 0xb5, 0xf3, 0xff, 0x4e, 0xb4, 0xf3, 0xff, 0x57, 0xb1, 0xf2, 0xff, 0x68, 0xab, 0xdc, 0xff, 0x6e, 0x9f, 0xc2, 0xff, 0x71, 0x85, 0x99, 0xff, 0x6d, 0x6b, 0x67, 0xff, 0x79, 0x73, 0x6d, 0xff, 0x7b, 0x73, 0x70, 0xff, 0x83, 0x7d, 0x7c, 0xff, 0x91, 0x8a, 0x8a, 0xff, 0x95, 0x97, 0x9e, 0xff, 0x7e, 0x98, 0xb4, 0xff, 0x90, 0xad, 0xbd, 0xff, 0xa5, 0xc8, 0xe7, 0xff, 0xae, 0xca, 0xea, 0xff, 0x63, 0x93, 0xc0, 0xff, 0xb7, 0xcc, 0xdf, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfd, 0xfc, 0xf9, 0xff, 0xf6, 0xfa, 0xfe, 0xff, 0xfe, 0xfe, 0xfa, 0xff, 0xfa, 0xfd, 0xfa, 0xff, 0xe0, 0xe9, 0xf0, 0xff, 0xcb, 0xdc, 0xe6, 0xff, 0xa8, 0xc9, 0xe0, 0xff, 0xb3, 0xc8, 0xd6, 0xff, 0x8c, 0x93, 0x8a, 0xff, 0x62, 0x65, 0x5d, 0xff, 0x37, 0x3b, 0x34, 0xff, 0x2b, 0x2e, 0x2b, 0xff, 0x15, 0x12, 0x0f, 0xff, 0x07, 0x06, 0x04, 0xff, 0x03, 0x03, 0x02, 0xff, 0x0f, 0x0d, 0x07, 0xff, 0x9c, 0x7e, 0x62, 0xff, 0x75, 0x5e, 0x49, 0xff, 0x02, 0x00, 0x00, 0xff, 0x10, 0x17, 0x1b, 0xff, 0x7f, 0x9e, 0xb6, 0xff, 0x66, 0x84, 0xb3, 0xff, 0x62, 0x76, 0xa4, 0xff, 0x52, 0x6d, 0x9c, 0xff, 0x3e, 0x58, 0x89, 0xff, 0x2a, 0x48, 0x7d, 0xff, 0x19, 0x34, 0x66, 0xff, 0x23, 0x3a, 0x5f, 0xff, 0x1b, 0x2c, 0x46, 0xff, 0x11, 0x1f, 0x2f, 0xff, 0x0c, 0x10, 0x1b, 0xff, 0x08, 0x0a, 0x12, 0xff, 0x04, 0x07, 0x0b, 0xff, 0x06, 0x08, 0x0a, 0xff, 0x07, 0x08, 0x09, 0xff, 0x07, 0x06, 0x08, 0xff, 0x0b, 0x0a, 0x0a, 0xff, 0x16, 0x14, 0x15, 0xff, 0x2d, 0x2a, 0x29, 0xff, 0x42, 0x43, 0x3e, 0xff, 0x78, 0x77, 0x71, 0xff, 0xa7, 0xa3, 0x9e, 0xff, 0xc6, 0xb9, 0xb3, 0xff, 0xe0, 0xcf, 0xba, 0xff, 0xe1, 0xd0, 0xba, 0xff, 0xdd, 0xd0, 0xbd, 0xff, 0xdb, 0xcd, 0xbc, 0xff, 0xd1, 0xc8, 0xb8, 0xff, 0xc6, 0xc3, 0xb5, 0xff, 0xbd, 0xbb, 0xb2, 0xff, 0xb1, 0xb4, 0xad, 0xff, 0xa6, 0xaf, 0xab, 0xff, 0xa0, 0xaa, 0xaa, 0xa1, 0xa1, 0xaa, 0xab, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x9b, 0xa2, 0x95, 0x0a, 0x9c, 0xa4, 0x9a, 0xe8, 0x96, 0xa8, 0xab, 0xff, 0x81, 0xaa, 0xc3, 0xff, 0x77, 0xab, 0xd5, 0xff, 0x6c, 0xaa, 0xdb, 0xff, 0x69, 0xad, 0xe1, 0xff, 0x73, 0xae, 0xda, 0xff, 0x76, 0xa2, 0xbc, 0xff, 0x75, 0x93, 0xa1, 0xff, 0x6d, 0x75, 0x74, 0xff, 0x65, 0x61, 0x5a, 0xff, 0x5b, 0x5a, 0x5a, 0xff, 0x65, 0x63, 0x64, 0xff, 0x75, 0x74, 0x77, 0xff, 0x78, 0x79, 0x7e, 0xff, 0x81, 0x8a, 0x9a, 0xff, 0x7a, 0x99, 0xbb, 0xff, 0x8b, 0xaf, 0xda, 0xff, 0x99, 0xbe, 0xe4, 0xff, 0x85, 0xb0, 0xd9, 0xff, 0x7b, 0xa5, 0xca, 0xff, 0xee, 0xf7, 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf6, 0xfc, 0xfc, 0xff, 0xe0, 0xeb, 0xf3, 0xff, 0xde, 0xe7, 0xef, 0xff, 0xda, 0xec, 0xf7, 0xff, 0xd0, 0xe5, 0xf0, 0xff, 0x98, 0xbf, 0xef, 0xff, 0xb0, 0xc9, 0xdb, 0xff, 0xe6, 0xe2, 0xd5, 0xff, 0x8b, 0x8a, 0x72, 0xff, 0x58, 0x57, 0x43, 0xff, 0x26, 0x28, 0x1d, 0xff, 0x0c, 0x10, 0x0d, 0xff, 0x07, 0x09, 0x0a, 0xff, 0x09, 0x0c, 0x0c, 0xff, 0x07, 0x09, 0x08, 0xff, 0x03, 0x06, 0x0a, 0xff, 0x5c, 0x50, 0x42, 0xff, 0x22, 0x1e, 0x18, 0xff, 0x0a, 0x09, 0x09, 0xff, 0x02, 0x08, 0x07, 0xff, 0x97, 0x90, 0xa3, 0xff, 0x8f, 0x91, 0xbd, 0xff, 0x4e, 0x74, 0x9d, 0xff, 0x53, 0x6c, 0x9d, 0xff, 0x44, 0x5f, 0x90, 0xff, 0x36, 0x50, 0x85, 0xff, 0x27, 0x43, 0x7b, 0xff, 0x19, 0x33, 0x62, 0xff, 0x09, 0x1a, 0x38, 0xff, 0x0e, 0x16, 0x23, 0xff, 0x0f, 0x11, 0x1b, 0xff, 0x0a, 0x0c, 0x13, 0xff, 0x05, 0x08, 0x0c, 0xff, 0x06, 0x07, 0x0a, 0xff, 0x0a, 0x0c, 0x0d, 0xff, 0x07, 0x07, 0x09, 0xff, 0x09, 0x08, 0x09, 0xff, 0x21, 0x1f, 0x1f, 0xff, 0x21, 0x1f, 0x1d, 0xff, 0x3f, 0x3f, 0x3b, 0xff, 0x95, 0x90, 0x8a, 0xff, 0xbb, 0xb4, 0xad, 0xff, 0xbc, 0xb3, 0xad, 0xff, 0xd4, 0xc8, 0xb2, 0xff, 0xd7, 0xca, 0xb0, 0xff, 0xd8, 0xca, 0xb5, 0xff, 0xd8, 0xcb, 0xb5, 0xff, 0xd3, 0xc9, 0xb7, 0xff, 0xc5, 0xc4, 0xb4, 0xff, 0xbe, 0xbc, 0xb4, 0xff, 0xb1, 0xb7, 0xb0, 0xff, 0xa8, 0xb2, 0xac, 0xff, 0xa6, 0xaf, 0xab, 0xe8, 0xa8, 0xb1, 0xa9, 0x0a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xae, 0xae, 0x99, 0x4a, 0xae, 0xb1, 0xa2, 0xff, 0xa9, 0xaf, 0xa9, 0xff, 0x9b, 0xac, 0xaf, 0xff, 0x95, 0xaa, 0xbb, 0xff, 0x90, 0xa7, 0xbc, 0xff, 0x8e, 0xa7, 0xba, 0xff, 0x90, 0xa4, 0xaf, 0xff, 0x94, 0xa0, 0x9d, 0xff, 0x98, 0x9d, 0x91, 0xff, 0x89, 0x88, 0x79, 0xff, 0x73, 0x71, 0x65, 0xff, 0x5d, 0x5b, 0x59, 0xff, 0x60, 0x5f, 0x63, 0xff, 0x6b, 0x6f, 0x75, 0xff, 0x6f, 0x77, 0x81, 0xff, 0x7c, 0x92, 0xa2, 0xff, 0x76, 0xa2, 0xc3, 0xff, 0x8c, 0xb0, 0xd5, 0xff, 0xa4, 0xcc, 0xe4, 0xff, 0xaf, 0xce, 0xde, 0xff, 0xd9, 0xe5, 0xe4, 0xff, 0xdd, 0xdf, 0xce, 0xff, 0xbd, 0xc1, 0xbc, 0xff, 0x8b, 0xb0, 0xae, 0xff, 0x96, 0xb3, 0xea, 0xff, 0xbe, 0xe0, 0xf5, 0xff, 0xad, 0xbd, 0xd1, 0xff, 0x61, 0x85, 0xb9, 0xff, 0x9c, 0xbb, 0xdf, 0xff, 0xf4, 0xf0, 0xd3, 0xff, 0xf9, 0xf1, 0xdb, 0xff, 0xd3, 0xcd, 0xac, 0xff, 0xa5, 0xa0, 0x86, 0xff, 0x6c, 0x6c, 0x5d, 0xff, 0x07, 0x0a, 0x06, 0xff, 0x04, 0x07, 0x07, 0xff, 0x0a, 0x10, 0x0e, 0xff, 0x0a, 0x0e, 0x0f, 0xff, 0x2f, 0x23, 0x16, 0xff, 0x4e, 0x37, 0x24, 0xff, 0x00, 0x04, 0x05, 0xff, 0x08, 0x0d, 0x15, 0xff, 0x01, 0x01, 0x00, 0xff, 0x59, 0x65, 0x7c, 0xff, 0x3f, 0x54, 0x81, 0xff, 0x34, 0x53, 0x7e, 0xff, 0x57, 0x72, 0xa6, 0xff, 0x3f, 0x5d, 0x97, 0xff, 0x3f, 0x56, 0x91, 0xff, 0x34, 0x4d, 0x87, 0xff, 0x20, 0x3c, 0x74, 0xff, 0x0e, 0x20, 0x46, 0xff, 0x0d, 0x10, 0x1e, 0xff, 0x0b, 0x0b, 0x14, 0xff, 0x05, 0x07, 0x0f, 0xff, 0x07, 0x09, 0x0e, 0xff, 0x07, 0x08, 0x0b, 0xff, 0x05, 0x07, 0x0c, 0xff, 0x08, 0x09, 0x0d, 0xff, 0x15, 0x14, 0x16, 0xff, 0x13, 0x12, 0x13, 0xff, 0x38, 0x36, 0x34, 0xff, 0x35, 0x33, 0x33, 0xff, 0x64, 0x5d, 0x56, 0xff, 0xc2, 0xba, 0xac, 0xff, 0xb9, 0xb0, 0xa7, 0xff, 0xcd, 0xc2, 0xad, 0xff, 0xd5, 0xc6, 0xac, 0xff, 0xd3, 0xc3, 0xae, 0xff, 0xd1, 0xc4, 0xaf, 0xff, 0xcc, 0xc2, 0xb1, 0xff, 0xc1, 0xbf, 0xaf, 0xff, 0xb7, 0xb9, 0xb0, 0xff, 0xad, 0xb5, 0xae, 0xff, 0xa8, 0xb2, 0xac, 0xff, 0xa9, 0xb2, 0xaf, 0xff, 0xaa, 0xb2, 0xaf, 0x4a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xbc, 0xb7, 0xa2, 0xa8, 0xbb, 0xbb, 0xa8, 0xff, 0xb9, 0xb8, 0xa1, 0xff, 0xad, 0xae, 0x91, 0xff, 0xa9, 0xab, 0x94, 0xff, 0xa8, 0xaa, 0x95, 0xff, 0xa5, 0xaa, 0x96, 0xff, 0xa7, 0xac, 0x9e, 0xff, 0xab, 0xaf, 0xa0, 0xff, 0xa9, 0xad, 0x9d, 0xff, 0x94, 0x9a, 0x87, 0xff, 0x7b, 0x7e, 0x6d, 0xff, 0x69, 0x66, 0x59, 0xff, 0x69, 0x66, 0x67, 0xff, 0x73, 0x78, 0x7b, 0xff, 0x7c, 0x89, 0x93, 0xff, 0x83, 0x9b, 0xaf, 0xff, 0x85, 0xa5, 0xbb, 0xff, 0xdc, 0xe8, 0xe5, 0xff, 0xf5, 0xf8, 0xef, 0xff, 0xfe, 0xfe, 0xfa, 0xff, 0xfb, 0xf9, 0xe5, 0xff, 0x5c, 0x63, 0x4d, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3d, 0x34, 0x32, 0xff, 0x75, 0x89, 0x7d, 0xff, 0x92, 0xbb, 0xd5, 0xff, 0xb9, 0xc7, 0xeb, 0xff, 0xbe, 0xc8, 0xed, 0xff, 0x84, 0xa4, 0xc0, 0xff, 0xf7, 0xed, 0xda, 0xff, 0xc1, 0xbd, 0xab, 0xff, 0x96, 0x96, 0x78, 0xff, 0x86, 0x84, 0x6f, 0xff, 0x4c, 0x4c, 0x46, 0xff, 0x0e, 0x0e, 0x0f, 0xff, 0x07, 0x0c, 0x0b, 0xff, 0x1c, 0x26, 0x24, 0xff, 0x0e, 0x11, 0x12, 0xff, 0x2f, 0x26, 0x1d, 0xff, 0x32, 0x22, 0x18, 0xff, 0x01, 0x0a, 0x0e, 0xff, 0x05, 0x04, 0x04, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3e, 0x51, 0x69, 0xff, 0x32, 0x4e, 0x84, 0xff, 0x50, 0x6a, 0x9c, 0xff, 0x4d, 0x67, 0x9c, 0xff, 0x49, 0x6c, 0xad, 0xff, 0x47, 0x69, 0xa6, 0xff, 0x38, 0x56, 0x8e, 0xff, 0x2d, 0x4b, 0x82, 0xff, 0x1d, 0x37, 0x61, 0xff, 0x0a, 0x15, 0x28, 0xff, 0x0a, 0x0d, 0x16, 0xff, 0x05, 0x06, 0x0e, 0xff, 0x07, 0x09, 0x0e, 0xff, 0x08, 0x08, 0x0c, 0xff, 0x03, 0x06, 0x0b, 0xff, 0x05, 0x08, 0x0d, 0xff, 0x06, 0x08, 0x0a, 0xff, 0x0b, 0x0b, 0x0c, 0xff, 0x16, 0x15, 0x15, 0xff, 0x53, 0x4f, 0x52, 0xff, 0x66, 0x5e, 0x56, 0xff, 0xaf, 0xa2, 0x90, 0xff, 0xc6, 0xb5, 0xa9, 0xff, 0xcd, 0xbf, 0xad, 0xff, 0xdd, 0xc5, 0xac, 0xff, 0xd2, 0xc0, 0xab, 0xff, 0xca, 0xbe, 0xaa, 0xff, 0xc6, 0xbd, 0xab, 0xff, 0xbe, 0xbb, 0xac, 0xff, 0xb0, 0xb5, 0xac, 0xff, 0xa8, 0xb2, 0xaa, 0xff, 0xa6, 0xb1, 0xab, 0xff, 0xa9, 0xb1, 0xae, 0xff, 0xa6, 0xb4, 0xac, 0xa8, 0x00, 0x00, 0x00, 0x00,
0xbb, 0xb3, 0x98, 0x0b, 0xc0, 0xbc, 0xa5, 0xe1, 0xc3, 0xc0, 0xa9, 0xff, 0xc2, 0xbe, 0xa3, 0xff, 0xb8, 0xb6, 0x93, 0xff, 0xb6, 0xb2, 0x8e, 0xff, 0xb5, 0xb2, 0x94, 0xff, 0xb6, 0xb5, 0x9e, 0xff, 0xb8, 0xb9, 0xa9, 0xff, 0xb9, 0xbd, 0xad, 0xff, 0xb5, 0xba, 0xa7, 0xff, 0xa3, 0xa8, 0x93, 0xff, 0x8b, 0x8c, 0x79, 0xff, 0x74, 0x70, 0x63, 0xff, 0x72, 0x6e, 0x69, 0xff, 0x81, 0x83, 0x89, 0xff, 0x7f, 0x95, 0x9a, 0xff, 0xaf, 0xbb, 0xc4, 0xff, 0xec, 0xf4, 0xed, 0xff, 0xf6, 0xf2, 0xd6, 0xff, 0xfe, 0xf9, 0xea, 0xff, 0xfc, 0xf6, 0xeb, 0xff, 0xfa, 0xf6, 0xe1, 0xff, 0xae, 0xb2, 0x9c, 0xff, 0x4b, 0x4a, 0x39, 0xff, 0x0a, 0x0e, 0x06, 0xff, 0x2c, 0x36, 0x29, 0xff, 0x72, 0x91, 0xba, 0xff, 0xdb, 0xed, 0xf4, 0xff, 0xd0, 0xe2, 0xf6, 0xff, 0x85, 0xb0, 0xe1, 0xff, 0xef, 0xe9, 0xcd, 0xff, 0xcb, 0xcf, 0xb5, 0xff, 0x84, 0x88, 0x6f, 0xff, 0x17, 0x1b, 0x13, 0xff, 0x07, 0x0c, 0x0a, 0xff, 0x10, 0x10, 0x0d, 0xff, 0x0e, 0x0c, 0x0c, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x44, 0x38, 0x28, 0xff, 0x1b, 0x17, 0x10, 0xff, 0x03, 0x06, 0x07, 0xff, 0x03, 0x04, 0x04, 0xff, 0x00, 0x00, 0x00, 0xff, 0x42, 0x58, 0x6e, 0xff, 0x31, 0x49, 0x82, 0xff, 0x44, 0x64, 0x9a, 0xff, 0x55, 0x72, 0xa7, 0xff, 0x48, 0x66, 0x9c, 0xff, 0x4b, 0x6b, 0xa6, 0xff, 0x4b, 0x6a, 0xad, 0xff, 0x34, 0x55, 0x93, 0xff, 0x23, 0x3d, 0x71, 0xff, 0x11, 0x1b, 0x35, 0xff, 0x0c, 0x0f, 0x1a, 0xff, 0x03, 0x09, 0x0e, 0xff, 0x04, 0x0a, 0x0a, 0xff, 0x10, 0x07, 0x0e, 0xff, 0x07, 0x08, 0x0c, 0xff, 0x09, 0x0b, 0x0e, 0xff, 0x09, 0x09, 0x0e, 0xff, 0x0a, 0x0b, 0x0e, 0xff, 0x0e, 0x0e, 0x0e, 0xff, 0x16, 0x14, 0x13, 0xff, 0x59, 0x56, 0x55, 0xff, 0x3e, 0x3a, 0x34, 0xff, 0xb0, 0xa9, 0x9f, 0xff, 0xcd, 0xbb, 0xa6, 0xff, 0xdb, 0xc7, 0xaa, 0xff, 0xd1, 0xc1, 0xaa, 0xff, 0xcc, 0xbe, 0xa7, 0xff, 0xc4, 0xbb, 0xa9, 0xff, 0xbe, 0xb9, 0xaa, 0xff, 0xb1, 0xb5, 0xaa, 0xff, 0xaa, 0xb2, 0xa7, 0xff, 0xa8, 0xb2, 0xab, 0xff, 0xa5, 0xb1, 0xab, 0xff, 0xaa, 0xb3, 0xaa, 0xe1, 0xa9, 0xb1, 0xaa, 0x0b,
0xc0, 0xb7, 0x9c, 0x29, 0xc4, 0xbf, 0xa6, 0xef, 0xc7, 0xc3, 0xac, 0xff, 0xc5, 0xc0, 0xa8, 0xff, 0xbc, 0xb9, 0x99, 0xff, 0xb9, 0xb4, 0x93, 0xff, 0xbb, 0xb7, 0x9a, 0xff, 0xbf, 0xbd, 0xa7, 0xff, 0xc2, 0xc3, 0xb2, 0xff, 0xc1, 0xc4, 0xb3, 0xff, 0xbc, 0xc0, 0xac, 0xff, 0xad, 0xaf, 0x9a, 0xff, 0x97, 0x96, 0x83, 0xff, 0x7c, 0x79, 0x6a, 0xff, 0x74, 0x72, 0x76, 0xff, 0x84, 0x8d, 0x8d, 0xff, 0x90, 0x9b, 0xa8, 0xff, 0xef, 0xf2, 0xe0, 0xff, 0xf8, 0xf0, 0xd9, 0xff, 0xf9, 0xed, 0xdc, 0xff, 0xf7, 0xf2, 0xe1, 0xff, 0xf5, 0xee, 0xe0, 0xff, 0xf0, 0xe9, 0xd5, 0xff, 0xd6, 0xd2, 0xb3, 0xff, 0xbb, 0xb5, 0x99, 0xff, 0x86, 0x85, 0x72, 0xff, 0x20, 0x31, 0x30, 0xff, 0x6a, 0x8c, 0xaf, 0xff, 0xe8, 0xed, 0xef, 0xff, 0xd6, 0xed, 0xfb, 0xff, 0x84, 0xc0, 0xe3, 0xff, 0x6e, 0x76, 0x65, 0xff, 0xb8, 0xb6, 0x9f, 0xff, 0x50, 0x52, 0x45, 0xff, 0x0a, 0x0d, 0x0a, 0xff, 0x0f, 0x12, 0x10, 0xff, 0x0b, 0x0e, 0x09, 0xff, 0x0c, 0x0f, 0x0d, 0xff, 0x12, 0x16, 0x12, 0xff, 0x22, 0x24, 0x23, 0xff, 0x63, 0x5f, 0x4f, 0xff, 0x1a, 0x18, 0x12, 0xff, 0x0c, 0x0c, 0x10, 0xff, 0x03, 0x05, 0x09, 0xff, 0x0f, 0x0d, 0x0a, 0xff, 0x54, 0x6b, 0x85, 0xff, 0x35, 0x4b, 0x84, 0xff, 0x42, 0x5d, 0x94, 0xff, 0x52, 0x72, 0xa7, 0xff, 0x55, 0x73, 0xa8, 0xff, 0x49, 0x6b, 0xa4, 0xff, 0x3e, 0x5f, 0x9e, 0xff, 0x37, 0x5c, 0x96, 0xff, 0x36, 0x57, 0x92, 0xff, 0x17, 0x29, 0x57, 0xff, 0x06, 0x0c, 0x12, 0xff, 0x0e, 0x0a, 0x17, 0xff, 0x08, 0x05, 0x0f, 0xff, 0x02, 0x0b, 0x0b, 0xff, 0x09, 0x0a, 0x0e, 0xff, 0x0a, 0x0b, 0x0f, 0xff, 0x0a, 0x0b, 0x0f, 0xff, 0x08, 0x09, 0x0d, 0xff, 0x09, 0x0a, 0x0a, 0xff, 0x18, 0x18, 0x17, 0xff, 0x41, 0x40, 0x40, 0xff, 0x5d, 0x59, 0x55, 0xff, 0x70, 0x6e, 0x68, 0xff, 0xcf, 0xc0, 0xae, 0xff, 0xcf, 0xbb, 0xa0, 0xff, 0xcb, 0xbb, 0xa3, 0xff, 0xca, 0xbb, 0xa3, 0xff, 0xc5, 0xbc, 0xa7, 0xff, 0xc0, 0xb8, 0xa6, 0xff, 0xb5, 0xb5, 0xa7, 0xff, 0xb0, 0xb4, 0xa8, 0xff, 0xaa, 0xb3, 0xa9, 0xff, 0xa8, 0xb1, 0xa9, 0xff, 0xa8, 0xaf, 0xa8, 0xef, 0xa9, 0xb1, 0xa8, 0x29,
0xc3, 0xb8, 0x9c, 0x43, 0xc8, 0xc0, 0xa6, 0xfb, 0xca, 0xc5, 0xae, 0xff, 0xca, 0xc3, 0xab, 0xff, 0xbf, 0xbb, 0x9a, 0xff, 0xbb, 0xb6, 0x95, 0xff, 0xbf, 0xba, 0x9d, 0xff, 0xc4, 0xc0, 0xa9, 0xff, 0xc6, 0xc5, 0xb3, 0xff, 0xc6, 0xc8, 0xb5, 0xff, 0xc3, 0xc5, 0xb1, 0xff, 0xb3, 0xb5, 0xa0, 0xff, 0xa1, 0x9f, 0x8c, 0xff, 0x85, 0x7f, 0x70, 0xff, 0x7c, 0x77, 0x7b, 0xff, 0x83, 0x8e, 0x93, 0xff, 0xd5, 0xdc, 0xde, 0xff, 0xa0, 0x9f, 0x80, 0xff, 0x74, 0x76, 0x5d, 0xff, 0xf1, 0xeb, 0xdc, 0xff, 0xfe, 0xf5, 0xe6, 0xff, 0xf1, 0xea, 0xd2, 0xff, 0xc5, 0xc6, 0xad, 0xff, 0x7a, 0x8a, 0x78, 0xff, 0x79, 0x90, 0x8c, 0xff, 0x2c, 0x32, 0x2d, 0xff, 0x3f, 0x56, 0x58, 0xff, 0xa0, 0xbc, 0xde, 0xff, 0xfb, 0xfc, 0xfd, 0xff, 0xce, 0xe3, 0xfb, 0xff, 0x8a, 0xbc, 0xee, 0xff, 0x46, 0x68, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x08, 0x07, 0x07, 0xff, 0x08, 0x0a, 0x09, 0xff, 0x06, 0x07, 0x06, 0xff, 0x1d, 0x24, 0x23, 0xff, 0x44, 0x4e, 0x4c, 0xff, 0x32, 0x37, 0x33, 0xff, 0x39, 0x3d, 0x37, 0xff, 0x65, 0x68, 0x5e, 0xff, 0x08, 0x0b, 0x0d, 0xff, 0x0a, 0x09, 0x0b, 0xff, 0x04, 0x05, 0x0b, 0xff, 0x26, 0x2a, 0x34, 0xff, 0x7a, 0x93, 0xbe, 0xff, 0x65, 0x7b, 0xb5, 0xff, 0x5b, 0x75, 0xab, 0xff, 0x4f, 0x6b, 0xa2, 0xff, 0x4e, 0x6b, 0x9e, 0xff, 0x51, 0x6f, 0xa8, 0xff, 0x4f, 0x6d, 0xa8, 0xff, 0x3b, 0x5c, 0x94, 0xff, 0x25, 0x47, 0x82, 0xff, 0x2b, 0x3f, 0x6b, 0xff, 0x2f, 0x35, 0x61, 0xff, 0x15, 0x1c, 0x37, 0xff, 0x03, 0x03, 0x00, 0xff, 0x0d, 0x08, 0x0b, 0xff, 0x0a, 0x0a, 0x10, 0xff, 0x09, 0x09, 0x10, 0xff, 0x0c, 0x0c, 0x12, 0xff, 0x0b, 0x0c, 0x11, 0xff, 0x0b, 0x0e, 0x0e, 0xff, 0x0a, 0x0a, 0x0b, 0xff, 0x2d, 0x2d, 0x2d, 0xff, 0x70, 0x6d, 0x6a, 0xff, 0x55, 0x54, 0x55, 0xff, 0xb5, 0xab, 0x9f, 0xff, 0xd7, 0xc0, 0xa8, 0xff, 0xca, 0xb8, 0x9f, 0xff, 0xc8, 0xb9, 0x9f, 0xff, 0xc9, 0xbc, 0xa4, 0xff, 0xc3, 0xb9, 0xa1, 0xff, 0xb9, 0xb5, 0xa4, 0xff, 0xb4, 0xb3, 0xa3, 0xff, 0xb1, 0xb3, 0xa6, 0xff, 0xac, 0xb1, 0xa5, 0xff, 0xa7, 0xae, 0xa5, 0xfa, 0xa9, 0xaf, 0xa6, 0x43,
0xc5, 0xb8, 0x9a, 0x68, 0xcc, 0xc2, 0xa7, 0xff, 0xce, 0xc7, 0xaf, 0xff, 0xcd, 0xc5, 0xad, 0xff, 0xc4, 0xbd, 0x9d, 0xff, 0xc1, 0xba, 0x99, 0xff, 0xc2, 0xbd, 0x9f, 0xff, 0xc7, 0xc2, 0xab, 0xff, 0xcb, 0xca, 0xb6, 0xff, 0xcb, 0xcc, 0xb9, 0xff, 0xc6, 0xc8, 0xb5, 0xff, 0xba, 0xba, 0xa5, 0xff, 0xa6, 0xa4, 0x90, 0xff, 0x8c, 0x84, 0x78, 0xff, 0x86, 0x80, 0x77, 0xff, 0x8d, 0x98, 0xa7, 0xff, 0xc7, 0xd6, 0xc3, 0xff, 0x47, 0x40, 0x05, 0xff, 0x26, 0x25, 0x11, 0xff, 0xbd, 0xc8, 0xad, 0xff, 0x84, 0x9b, 0x81, 0xff, 0xe2, 0xe4, 0xd3, 0xff, 0xea, 0xe2, 0xce, 0xff, 0xae, 0xb4, 0x9f, 0xff, 0x1e, 0x27, 0x21, 0xff, 0x00, 0x00, 0x04, 0xff, 0x68, 0x80, 0x84, 0xff, 0xe7, 0xf7, 0xff, 0xff, 0xf7, 0xfb, 0xf6, 0xff, 0xb1, 0xc8, 0xf4, 0xff, 0x64, 0x7b, 0xcc, 0xff, 0x64, 0x83, 0xb3, 0xff, 0x11, 0x10, 0x10, 0xff, 0x0b, 0x09, 0x0d, 0xff, 0x04, 0x05, 0x07, 0xff, 0x07, 0x05, 0x05, 0xff, 0x1c, 0x23, 0x24, 0xff, 0x12, 0x1a, 0x1b, 0xff, 0x27, 0x25, 0x23, 0xff, 0x1f, 0x20, 0x1c, 0xff, 0x15, 0x14, 0x11, 0xff, 0x0d, 0x0e, 0x13, 0xff, 0x06, 0x04, 0x04, 0xff, 0x06, 0x0d, 0x0c, 0xff, 0x51, 0x5b, 0x70, 0xff, 0x8f, 0xab, 0xe1, 0xff, 0x5c, 0x76, 0xb0, 0xff, 0x60, 0x7a, 0xb1, 0xff, 0x64, 0x79, 0xb0, 0xff, 0x5c, 0x70, 0xa5, 0xff, 0x4a, 0x64, 0x9b, 0xff, 0x4a, 0x65, 0xa0, 0xff, 0x44, 0x62, 0x99, 0xff, 0x33, 0x51, 0x86, 0xff, 0x17, 0x28, 0x4b, 0xff, 0x0e, 0x11, 0x1f, 0xff, 0x30, 0x34, 0x63, 0xff, 0x26, 0x2e, 0x57, 0xff, 0x09, 0x0b, 0x16, 0xff, 0x08, 0x08, 0x0d, 0xff, 0x0a, 0x0a, 0x10, 0xff, 0x0f, 0x0f, 0x14, 0xff, 0x0b, 0x0b, 0x12, 0xff, 0x06, 0x09, 0x0d, 0xff, 0x08, 0x0a, 0x0c, 0xff, 0x03, 0x04, 0x04, 0xff, 0x4d, 0x4b, 0x4a, 0xff, 0x3e, 0x3f, 0x42, 0xff, 0x9c, 0x94, 0x8c, 0xff, 0xd9, 0xc2, 0xaa, 0xff, 0xd0, 0xbe, 0xa3, 0xff, 0xcb, 0xbb, 0xa2, 0xff, 0xce, 0xc0, 0xa5, 0xff, 0xc6, 0xb8, 0x9e, 0xff, 0xbd, 0xb6, 0xa2, 0xff, 0xb8, 0xb4, 0xa1, 0xff, 0xb5, 0xb4, 0xa5, 0xff, 0xad, 0xaf, 0xa1, 0xff, 0xa5, 0xaa, 0xa1, 0xff, 0xa7, 0xac, 0xa2, 0x68,
0xc5, 0xb9, 0x9b, 0x92, 0xcd, 0xc3, 0xa8, 0xff, 0xd0, 0xc8, 0xaf, 0xff, 0xcd, 0xc7, 0xad, 0xff, 0xc9, 0xc0, 0xa2, 0xff, 0xc6, 0xbc, 0x9a, 0xff, 0xc6, 0xbf, 0xa0, 0xff, 0xc9, 0xc3, 0xab, 0xff, 0xcc, 0xc8, 0xb5, 0xff, 0xcb, 0xcc, 0xb8, 0xff, 0xc8, 0xc9, 0xb7, 0xff, 0xbc, 0xbc, 0xa8, 0xff, 0xaa, 0xa7, 0x92, 0xff, 0x8f, 0x88, 0x76, 0xff, 0x7a, 0x74, 0x71, 0xff, 0xb7, 0xd1, 0xd5, 0xff, 0x58, 0x67, 0x60, 0xff, 0x41, 0x3c, 0x1b, 0xff, 0x19, 0x17, 0x0a, 0xff, 0x19, 0x2f, 0x20, 0xff, 0x03, 0x37, 0x2c, 0xff, 0x38, 0x4b, 0x3b, 0xff, 0x8c, 0x8c, 0x77, 0xff, 0x3f, 0x3d, 0x32, 0xff, 0x08, 0x08, 0x0a, 0xff, 0x00, 0x04, 0x02, 0xff, 0xac, 0xc7, 0xda, 0xff, 0xf5, 0xfe, 0xfe, 0xff, 0xe4, 0xef, 0xf7, 0xff, 0xb4, 0xc8, 0xf6, 0xff, 0x85, 0x9a, 0xd6, 0xff, 0x6d, 0x85, 0xb8, 0xff, 0x37, 0x49, 0x64, 0xff, 0x14, 0x13, 0x11, 0xff, 0x1c, 0x1a, 0x1a, 0xff, 0x04, 0x07, 0x0d, 0xff, 0x06, 0x05, 0x08, 0xff, 0x10, 0x10, 0x15, 0xff, 0x00, 0x01, 0x04, 0xff, 0x05, 0x03, 0x05, 0xff, 0x03, 0x02, 0x03, 0xff, 0x03, 0x02, 0x06, 0xff, 0x17, 0x1d, 0x26, 0xff, 0x13, 0x1e, 0x22, 0xff, 0x89, 0x9e, 0xbd, 0xff, 0x8e, 0xa2, 0xd1, 0xff, 0x7c, 0x91, 0xcd, 0xff, 0x54, 0x6f, 0xa8, 0xff, 0x51, 0x68, 0xa5, 0xff, 0x54, 0x6f, 0xa7, 0xff, 0x4f, 0x6d, 0xa4, 0xff, 0x48, 0x67, 0x9e, 0xff, 0x42, 0x5f, 0x94, 0xff, 0x2d, 0x4f, 0x84, 0xff, 0x13, 0x25, 0x46, 0xff, 0x08, 0x0a, 0x13, 0xff, 0x08, 0x08, 0x08, 0xff, 0x16, 0x19, 0x33, 0xff, 0x13, 0x17, 0x27, 0xff, 0x06, 0x09, 0x15, 0xff, 0x06, 0x07, 0x0b, 0xff, 0x0c, 0x10, 0x11, 0xff, 0x05, 0x0a, 0x0f, 0xff, 0x09, 0x06, 0x05, 0xff, 0x05, 0x03, 0x04, 0xff, 0x01, 0x01, 0x00, 0xff, 0x12, 0x14, 0x16, 0xff, 0x37, 0x33, 0x31, 0xff, 0x6a, 0x71, 0x78, 0xff, 0xcd, 0xba, 0xa4, 0xff, 0xcd, 0xbc, 0xa6, 0xff, 0xcc, 0xbf, 0xa5, 0xff, 0xdc, 0xc4, 0xa9, 0xff, 0xca, 0xba, 0x9d, 0xff, 0xb9, 0xb5, 0x9d, 0xff, 0xb3, 0xb2, 0x9d, 0xff, 0xb5, 0xb5, 0xa4, 0xff, 0xae, 0xab, 0x9e, 0xff, 0xa2, 0xa7, 0x9b, 0xff, 0xa6, 0xaa, 0x9e, 0x92,
0xc7, 0xbb, 0x9d, 0xb5, 0xd0, 0xc6, 0xab, 0xff, 0xd3, 0xcb, 0xb2, 0xff, 0xd0, 0xc9, 0xaf, 0xff, 0xc8, 0xbf, 0xa1, 0xff, 0xc7, 0xbe, 0x9c, 0xff, 0xc8, 0xc0, 0x9f, 0xff, 0xca, 0xc4, 0xa9, 0xff, 0xcd, 0xc8, 0xb3, 0xff, 0xcc, 0xcb, 0xb6, 0xff, 0xc9, 0xc8, 0xb4, 0xff, 0xbd, 0xbb, 0xa5, 0xff, 0xab, 0xa7, 0x90, 0xff, 0x92, 0x8a, 0x77, 0xff, 0x81, 0x76, 0x75, 0xff, 0x99, 0xae, 0xb7, 0xff, 0x64, 0x76, 0x79, 0xff, 0x24, 0x25, 0x13, 0xff, 0x15, 0x15, 0x10, 0xff, 0x15, 0x18, 0x13, 0xff, 0x19, 0x2c, 0x25, 0xff, 0x08, 0x1f, 0x22, 0xff, 0x06, 0x09, 0x0e, 0xff, 0x11, 0x13, 0x12, 0xff, 0x0c, 0x11, 0x14, 0xff, 0x33, 0x43, 0x4c, 0xff, 0xeb, 0xf2, 0xf3, 0xff, 0xf6, 0xfd, 0xfc, 0xff, 0xcf, 0xe2, 0xf8, 0xff, 0xb4, 0xc5, 0xeb, 0xff, 0x87, 0x9d, 0xd2, 0xff, 0x64, 0x7c, 0xb2, 0xff, 0x57, 0x6e, 0x99, 0xff, 0x2b, 0x36, 0x49, 0xff, 0x05, 0x0e, 0x04, 0xff, 0x3c, 0x41, 0x46, 0xff, 0x4f, 0x50, 0x53, 0xff, 0x0c, 0x11, 0x10, 0xff, 0x06, 0x0b, 0x0b, 0xff, 0x08, 0x0e, 0x10, 0xff, 0x09, 0x12, 0x1c, 0xff, 0x0b, 0x17, 0x18, 0xff, 0x05, 0x14, 0x1a, 0xff, 0x7d, 0x7d, 0x9b, 0xff, 0x8d, 0x9d, 0xc3, 0xff, 0x8e, 0x9f, 0xcd, 0xff, 0x7a, 0x8f, 0xc1, 0xff, 0x72, 0x89, 0xbb, 0xff, 0x56, 0x6e, 0xa8, 0xff, 0x53, 0x6d, 0xa5, 0xff, 0x4e, 0x6d, 0xa3, 0xff, 0x46, 0x65, 0x9f, 0xff, 0x46, 0x63, 0x9c, 0xff, 0x3b, 0x59, 0x93, 0xff, 0x21, 0x33, 0x5d, 0xff, 0x09, 0x12, 0x21, 0xff, 0x10, 0x11, 0x14, 0xff, 0x07, 0x0c, 0x13, 0xff, 0x03, 0x04, 0x06, 0xff, 0x04, 0x03, 0x0b, 0xff, 0x01, 0x00, 0x05, 0xff, 0x01, 0x02, 0x05, 0xff, 0x02, 0x03, 0x03, 0xff, 0x0e, 0x12, 0x22, 0xff, 0x2d, 0x3d, 0x5c, 0xff, 0x4b, 0x56, 0x78, 0xff, 0x48, 0x4f, 0x62, 0xff, 0x18, 0x14, 0x13, 0xff, 0x55, 0x56, 0x65, 0xff, 0xc3, 0xb2, 0x9d, 0xff, 0xc8, 0xb6, 0x9e, 0xff, 0xc6, 0xb9, 0x9e, 0xff, 0xd4, 0xbf, 0xa5, 0xff, 0xc9, 0xba, 0x9e, 0xff, 0xbe, 0xb5, 0x9a, 0xff, 0xb7, 0xb2, 0x9a, 0xff, 0xb8, 0xb6, 0xa2, 0xff, 0xae, 0xab, 0x99, 0xff, 0x9c, 0xa2, 0x94, 0xff, 0xa2, 0xa6, 0x99, 0xb5,
0xc8, 0xbb, 0x9c, 0xd1, 0xce, 0xc4, 0xa9, 0xff, 0xd2, 0xca, 0xb1, 0xff, 0xd1, 0xca, 0xb1, 0xff, 0xc8, 0xbf, 0xa2, 0xff, 0xc7, 0xbe, 0x9c, 0xff, 0xc9, 0xbf, 0x9d, 0xff, 0xcb, 0xc1, 0xa5, 0xff, 0xcd, 0xc7, 0xaf, 0xff, 0xce, 0xcb, 0xb2, 0xff, 0xc9, 0xc7, 0xb0, 0xff, 0xbd, 0xba, 0xa1, 0xff, 0xaa, 0xa4, 0x8b, 0xff, 0x92, 0x89, 0x73, 0xff, 0x84, 0x79, 0x76, 0xff, 0x8c, 0x98, 0xa0, 0xff, 0x6a, 0x78, 0x7b, 0xff, 0x27, 0x28, 0x1f, 0xff, 0x15, 0x1d, 0x1f, 0xff, 0x09, 0x07, 0x08, 0xff, 0x39, 0x49, 0x46, 0xff, 0x4c, 0x6c, 0x69, 0xff, 0x10, 0x17, 0x13, 0xff, 0x0b, 0x0e, 0x0a, 0xff, 0x04, 0x07, 0x06, 0xff, 0x96, 0x98, 0x9c, 0xff, 0xfc, 0xfd, 0xfe, 0xff, 0xd8, 0xe2, 0xf3, 0xff, 0xb1, 0xc7, 0xf7, 0xff, 0xa6, 0xb7, 0xea, 0xff, 0x81, 0x94, 0xcb, 0xff, 0x57, 0x6c, 0xa2, 0xff, 0x41, 0x58, 0x8d, 0xff, 0x29, 0x41, 0x69, 0xff, 0x44, 0x52, 0x62, 0xff, 0x29, 0x38, 0x43, 0xff, 0x22, 0x2e, 0x32, 0xff, 0x1a, 0x27, 0x2f, 0xff, 0x26, 0x36, 0x3d, 0xff, 0x3a, 0x47, 0x4d, 0xff, 0x42, 0x55, 0x63, 0xff, 0x68, 0x78, 0x89, 0xff, 0x89, 0x9b, 0xb4, 0xff, 0x9a, 0xa7, 0xce, 0xff, 0x8c, 0x9b, 0xc9, 0xff, 0x7c, 0x8d, 0xbc, 0xff, 0x71, 0x85, 0xb7, 0xff, 0x68, 0x7e, 0xb2, 0xff, 0x54, 0x6e, 0xa4, 0xff, 0x51, 0x6c, 0xa4, 0xff, 0x4d, 0x6a, 0xa1, 0xff, 0x45, 0x66, 0xa0, 0xff, 0x45, 0x64, 0x9c, 0xff, 0x40, 0x5f, 0x97, 0xff, 0x2b, 0x42, 0x6f, 0xff, 0x13, 0x20, 0x37, 0xff, 0x11, 0x12, 0x18, 0xff, 0x08, 0x0a, 0x0f, 0xff, 0x05, 0x06, 0x0b, 0xff, 0x03, 0x06, 0x08, 0xff, 0x08, 0x10, 0x22, 0xff, 0x12, 0x1c, 0x3f, 0xff, 0x22, 0x2a, 0x57, 0xff, 0x31, 0x4c, 0x82, 0xff, 0x41, 0x60, 0x9e, 0xff, 0x41, 0x5b, 0xa0, 0xff, 0x6d, 0x81, 0xc2, 0xff, 0x58, 0x60, 0x7c, 0xff, 0x40, 0x42, 0x40, 0xff, 0xce, 0xb9, 0x95, 0xff, 0xcf, 0xb6, 0x9b, 0xff, 0xc4, 0xb7, 0x9c, 0xff, 0xcc, 0xba, 0xa1, 0xff, 0xc6, 0xb6, 0x9c, 0xff, 0xc0, 0xb5, 0x9c, 0xff, 0xb7, 0xb3, 0x9c, 0xff, 0xb3, 0xb3, 0xa0, 0xff, 0xab, 0xab, 0x9b, 0xff, 0x9e, 0xa1, 0x91, 0xff, 0x9f, 0xa2, 0x93, 0xd1,
0xc7, 0xba, 0x9b, 0xe8, 0xce, 0xc4, 0xa9, 0xff, 0xd2, 0xc9, 0xb1, 0xff, 0xd0, 0xca, 0xb0, 0xff, 0xca, 0xc2, 0xa4, 0xff, 0xc7, 0xbc, 0x9a, 0xff, 0xc6, 0xbc, 0x99, 0xff, 0xca, 0xc0, 0xa2, 0xff, 0xcd, 0xc5, 0xac, 0xff, 0xce, 0xc8, 0xb0, 0xff, 0xca, 0xc6, 0xad, 0xff, 0xbb, 0xb7, 0x9b, 0xff, 0xa9, 0xa2, 0x87, 0xff, 0x93, 0x86, 0x70, 0xff, 0x84, 0x79, 0x73, 0xff, 0x93, 0x9a, 0x9c, 0xff, 0x6c, 0x75, 0x74, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0b, 0x15, 0x1b, 0xff, 0x16, 0x1f, 0x20, 0xff, 0x31, 0x4b, 0x4b, 0xff, 0x6a, 0x91, 0x8d, 0xff, 0x00, 0x00, 0x00, 0xff, 0x6e, 0x75, 0x60, 0xff, 0x1e, 0x16, 0x2f, 0xff, 0xf3, 0xf4, 0xf4, 0xff, 0xec, 0xf3, 0xfa, 0xff, 0xb2, 0xcc, 0xf5, 0xff, 0x7e, 0x95, 0xdb, 0xff, 0x64, 0x76, 0xbe, 0xff, 0x63, 0x74, 0xb1, 0xff, 0x7a, 0x8c, 0xc1, 0xff, 0x88, 0x9a, 0xce, 0xff, 0x67, 0x75, 0xa4, 0xff, 0x23, 0x35, 0x69, 0xff, 0x37, 0x52, 0x81, 0xff, 0x55, 0x74, 0x9f, 0xff, 0x68, 0x87, 0xb3, 0xff, 0x7b, 0x97, 0xc1, 0xff, 0x91, 0xac, 0xd0, 0xff, 0x95, 0xac, 0xd3, 0xff, 0x92, 0xa8, 0xd8, 0xff, 0x7e, 0x92, 0xca, 0xff, 0x72, 0x87, 0xbc, 0xff, 0x6e, 0x80, 0xb1, 0xff, 0x6a, 0x7d, 0xaf, 0xff, 0x5f, 0x72, 0xa9, 0xff, 0x5b, 0x6e, 0xa9, 0xff, 0x4d, 0x68, 0x9c, 0xff, 0x4b, 0x66, 0x9d, 0xff, 0x4a, 0x68, 0x9f, 0xff, 0x45, 0x65, 0xa1, 0xff, 0x42, 0x61, 0x98, 0xff, 0x43, 0x61, 0x95, 0xff, 0x35, 0x4f, 0x77, 0xff, 0x22, 0x2f, 0x49, 0xff, 0x07, 0x0a, 0x10, 0xff, 0x04, 0x07, 0x17, 0xff, 0x08, 0x15, 0x2d, 0xff, 0x15, 0x26, 0x50, 0xff, 0x22, 0x38, 0x6b, 0xff, 0x26, 0x41, 0x7a, 0xff, 0x26, 0x41, 0x79, 0xff, 0x38, 0x4f, 0x85, 0xff, 0x3d, 0x51, 0x87, 0xff, 0x2f, 0x3f, 0x7e, 0xff, 0x2b, 0x3c, 0x94, 0xff, 0x5a, 0x68, 0xb2, 0xff, 0x61, 0x6e, 0x76, 0xff, 0xd8, 0xba, 0x9c, 0xff, 0xd1, 0xb6, 0x9d, 0xff, 0xc6, 0xb8, 0x9c, 0xff, 0xc8, 0xb9, 0x9e, 0xff, 0xc2, 0xb2, 0x9a, 0xff, 0xba, 0xb0, 0x9c, 0xff, 0xb1, 0xae, 0x9c, 0xff, 0xaa, 0xac, 0x9d, 0xff, 0xa1, 0xa4, 0x97, 0xff, 0x98, 0x9c, 0x8c, 0xff, 0x9d, 0xa1, 0x90, 0xe7,
0xc6, 0xba, 0x99, 0xf5, 0xcd, 0xc4, 0xa8, 0xff, 0xd2, 0xc8, 0xb0, 0xff, 0xd0, 0xc9, 0xb0, 0xff, 0xc9, 0xc3, 0xa2, 0xff, 0xc7, 0xba, 0x93, 0xff, 0xc6, 0xb9, 0x95, 0xff, 0xc7, 0xbd, 0x9d, 0xff, 0xcd, 0xc4, 0xa6, 0xff, 0xcf, 0xc6, 0xad, 0xff, 0xc9, 0xc4, 0xa9, 0xff, 0xbd, 0xb7, 0x96, 0xff, 0xa9, 0x9f, 0x7f, 0xff, 0x93, 0x84, 0x6e, 0xff, 0x87, 0x78, 0x75, 0xff, 0x91, 0x94, 0x9d, 0xff, 0x84, 0x8f, 0x91, 0xff, 0x13, 0x1a, 0x08, 0xff, 0x34, 0x2e, 0x29, 0xff, 0x19, 0x17, 0x17, 0xff, 0x3e, 0x5e, 0x62, 0xff, 0x3a, 0x57, 0x62, 0xff, 0x59, 0x60, 0x4d, 0xff, 0xb7, 0xd1, 0x9d, 0xff, 0xab, 0xb3, 0xc5, 0xff, 0xdc, 0xed, 0xfa, 0xff, 0xa8, 0xc1, 0xf8, 0xff, 0x7c, 0x96, 0xd9, 0xff, 0x5a, 0x6a, 0xbb, 0xff, 0x55, 0x6d, 0xaf, 0xff, 0x4d, 0x65, 0xad, 0xff, 0x5f, 0x78, 0xb6, 0xff, 0x6d, 0x87, 0xba, 0xff, 0x6c, 0x86, 0xc2, 0xff, 0x4f, 0x63, 0x9c, 0xff, 0x20, 0x2f, 0x65, 0xff, 0x39, 0x4e, 0x83, 0xff, 0x5a, 0x75, 0xaa, 0xff, 0x79, 0x95, 0xc9, 0xff, 0x8e, 0xa6, 0xd2, 0xff, 0x8a, 0x9d, 0xd1, 0xff, 0x75, 0x8c, 0xc3, 0xff, 0x6a, 0x82, 0xbb, 0xff, 0x62, 0x75, 0xaf, 0xff, 0x53, 0x67, 0x9f, 0xff, 0x47, 0x5b, 0x92, 0xff, 0x44, 0x57, 0x8e, 0xff, 0x45, 0x59, 0x8f, 0xff, 0x44, 0x5b, 0x93, 0xff, 0x44, 0x60, 0x94, 0xff, 0x42, 0x5f, 0x96, 0xff, 0x3a, 0x58, 0x93, 0xff, 0x3b, 0x5b, 0x94, 0xff, 0x42, 0x5c, 0x8d, 0xff, 0x2c, 0x40, 0x63, 0xff, 0x22, 0x2c, 0x48, 0xff, 0x0a, 0x11, 0x1b, 0xff, 0x19, 0x28, 0x51, 0xff, 0x28, 0x40, 0x78, 0xff, 0x2c, 0x43, 0x77, 0xff, 0x30, 0x45, 0x7e, 0xff, 0x2b, 0x41, 0x7b, 0xff, 0x30, 0x47, 0x7b, 0xff, 0x3c, 0x49, 0x73, 0xff, 0x29, 0x3e, 0x76, 0xff, 0x1a, 0x2b, 0x68, 0xff, 0x21, 0x2f, 0x6f, 0xff, 0x2d, 0x39, 0x93, 0xff, 0x70, 0x7c, 0xa9, 0xff, 0xd1, 0xb8, 0x94, 0xff, 0xc9, 0xb7, 0x9d, 0xff, 0xc6, 0xb5, 0x9a, 0xff, 0xc5, 0xb7, 0x9e, 0xff, 0xba, 0xaf, 0x97, 0xff, 0xb3, 0xab, 0x99, 0xff, 0xab, 0xaa, 0x9a, 0xff, 0xa3, 0xa8, 0x9b, 0xff, 0x99, 0x9c, 0x92, 0xff, 0x93, 0x99, 0x8a, 0xff, 0x95, 0x99, 0x89, 0xf5,
0xc2, 0xb7, 0x95, 0xfc, 0xc9, 0xc1, 0xa4, 0xff, 0xcf, 0xc7, 0xad, 0xff, 0xd0, 0xc7, 0xac, 0xff, 0xc8, 0xc0, 0x9e, 0xff, 0xc4, 0xb7, 0x8f, 0xff, 0xc5, 0xb8, 0x90, 0xff, 0xc7, 0xbb, 0x98, 0xff, 0xcb, 0xc0, 0xa1, 0xff, 0xcd, 0xc4, 0xa8, 0xff, 0xca, 0xc1, 0xa4, 0xff, 0xbd, 0xb4, 0x90, 0xff, 0xa7, 0x9c, 0x7c, 0xff, 0x92, 0x83, 0x6d, 0xff, 0x85, 0x78, 0x73, 0xff, 0x8c, 0x8b, 0x91, 0xff, 0xae, 0xb7, 0xbc, 0xff, 0x34, 0x3d, 0x3c, 0xff, 0x35, 0x33, 0x21, 0xff, 0x19, 0x13, 0x0b, 0xff, 0x2c, 0x48, 0x46, 0xff, 0x32, 0x5b, 0x48, 0xff, 0x91, 0xa6, 0xa6, 0xff, 0x9f, 0xb5, 0xc5, 0xff, 0xc1, 0xd6, 0xdd, 0xff, 0xc5, 0xe1, 0xf3, 0xff, 0x7e, 0x94, 0xd8, 0xff, 0x7d, 0x8f, 0xd5, 0xff, 0x72, 0x81, 0xbf, 0xff, 0x75, 0x7e, 0xc8, 0xff, 0x71, 0x7f, 0xb6, 0xff, 0x75, 0x87, 0xc9, 0xff, 0x5f, 0x70, 0xc7, 0xff, 0x4d, 0x69, 0xae, 0xff, 0x4c, 0x61, 0xa2, 0xff, 0x23, 0x30, 0x6b, 0xff, 0x38, 0x49, 0x7e, 0xff, 0x36, 0x4c, 0x81, 0xff, 0x58, 0x70, 0xa7, 0xff, 0x85, 0x9d, 0xd3, 0xff, 0x96, 0xa9, 0xd7, 0xff, 0x9d, 0xb1, 0xde, 0xff, 0x83, 0x99, 0xca, 0xff, 0x59, 0x6e, 0xaa, 0xff, 0x4a, 0x61, 0x92, 0xff, 0x41, 0x58, 0x89, 0xff, 0x3e, 0x55, 0x86, 0xff, 0x35, 0x4c, 0x7d, 0xff, 0x35, 0x48, 0x7c, 0xff, 0x38, 0x4f, 0x80, 0xff, 0x3f, 0x58, 0x8b, 0xff, 0x38, 0x56, 0x8c, 0xff, 0x39, 0x59, 0x8e, 0xff, 0x36, 0x4f, 0x7d, 0xff, 0x28, 0x36, 0x5a, 0xff, 0x24, 0x32, 0x50, 0xff, 0x11, 0x20, 0x32, 0xff, 0x2b, 0x42, 0x75, 0xff, 0x26, 0x44, 0x7f, 0xff, 0x2f, 0x45, 0x7a, 0xff, 0x2f, 0x42, 0x7d, 0xff, 0x3d, 0x52, 0x8b, 0xff, 0x17, 0x27, 0x58, 0xff, 0x0d, 0x1c, 0x48, 0xff, 0x28, 0x40, 0x72, 0xff, 0x30, 0x4b, 0x80, 0xff, 0x11, 0x28, 0x69, 0xff, 0x17, 0x22, 0x6d, 0xff, 0x55, 0x5b, 0xb0, 0xff, 0xcb, 0xba, 0x9c, 0xff, 0xcb, 0xb3, 0x9c, 0xff, 0xc4, 0xb3, 0x99, 0xff, 0xc0, 0xb3, 0x9d, 0xff, 0xb6, 0xac, 0x99, 0xff, 0xb0, 0xa9, 0x9a, 0xff, 0xa9, 0xa9, 0x9d, 0xff, 0x9f, 0xa5, 0x9b, 0xff, 0x93, 0x98, 0x91, 0xff, 0x8a, 0x91, 0x84, 0xff, 0x8b, 0x90, 0x83, 0xfc,
0xc1, 0xb1, 0x8e, 0xfc, 0xc6, 0xb9, 0x9c, 0xff, 0xca, 0xc1, 0xa6, 0xff, 0xca, 0xc1, 0xa5, 0xff, 0xc1, 0xb9, 0x96, 0xff, 0xc2, 0xb5, 0x8b, 0xff, 0xc5, 0xb6, 0x8b, 0xff, 0xc8, 0xba, 0x92, 0xff, 0xc8, 0xbc, 0x99, 0xff, 0xca, 0xbf, 0xa0, 0xff, 0xc9, 0xbd, 0x9c, 0xff, 0xbd, 0xb2, 0x8b, 0xff, 0xa9, 0x9d, 0x7b, 0xff, 0x94, 0x84, 0x6d, 0xff, 0x85, 0x79, 0x72, 0xff, 0x8e, 0x8b, 0x8f, 0xff, 0xa0, 0xa9, 0xb0, 0xff, 0xa3, 0xaf, 0xb1, 0xff, 0x4c, 0x55, 0x54, 0xff, 0x39, 0x4b, 0x4e, 0xff, 0x83, 0x9d, 0xa0, 0xff, 0xad, 0xc7, 0xd4, 0xff, 0xb7, 0xd1, 0xde, 0xff, 0x9b, 0xbb, 0xcf, 0xff, 0xc1, 0xcb, 0xea, 0xff, 0xde, 0xe5, 0xf7, 0xff, 0x94, 0x9f, 0xd5, 0xff, 0x88, 0x99, 0xcf, 0xff, 0x76, 0x8a, 0xc5, 0xff, 0x1e, 0x21, 0x4e, 0xff, 0x1b, 0x1d, 0x43, 0xff, 0x1e, 0x23, 0x3d, 0xff, 0x63, 0x72, 0xad, 0xff, 0x63, 0x77, 0xb3, 0xff, 0x37, 0x44, 0x7a, 0xff, 0x1f, 0x26, 0x5c, 0xff, 0x29, 0x32, 0x63, 0xff, 0x33, 0x40, 0x73, 0xff, 0x27, 0x37, 0x6f, 0xff, 0x59, 0x6c, 0xa1, 0xff, 0x90, 0xa8, 0xd8, 0xff, 0xa0, 0xb4, 0xdc, 0xff, 0x8e, 0x9f, 0xc8, 0xff, 0x67, 0x77, 0xad, 0xff, 0x4e, 0x63, 0x92, 0xff, 0x44, 0x59, 0x87, 0xff, 0x3a, 0x50, 0x7e, 0xff, 0x37, 0x4b, 0x7a, 0xff, 0x2d, 0x3c, 0x6c, 0xff, 0x29, 0x3c, 0x6a, 0xff, 0x32, 0x46, 0x76, 0xff, 0x37, 0x4e, 0x80, 0xff, 0x38, 0x52, 0x83, 0xff, 0x2d, 0x45, 0x71, 0xff, 0x27, 0x39, 0x5b, 0xff, 0x23, 0x31, 0x4c, 0xff, 0x13, 0x23, 0x38, 0xff, 0x32, 0x4c, 0x80, 0xff, 0x30, 0x50, 0x7e, 0xff, 0x31, 0x48, 0x79, 0xff, 0x24, 0x39, 0x6e, 0xff, 0x2e, 0x44, 0x77, 0xff, 0x2c, 0x42, 0x71, 0xff, 0x2e, 0x46, 0x77, 0xff, 0x43, 0x5d, 0x8e, 0xff, 0x50, 0x6c, 0xa2, 0xff, 0x1e, 0x39, 0x75, 0xff, 0x17, 0x1d, 0x6c, 0xff, 0x37, 0x46, 0x97, 0xff, 0xc1, 0xaf, 0xa9, 0xff, 0xcb, 0xb2, 0x95, 0xff, 0xc2, 0xaf, 0x98, 0xff, 0xbb, 0xae, 0x9c, 0xff, 0xb2, 0xaa, 0x9b, 0xff, 0xaf, 0xaa, 0x9d, 0xff, 0xa8, 0xab, 0x9f, 0xff, 0x9d, 0xa5, 0x9d, 0xff, 0x93, 0x9a, 0x95, 0xff, 0x89, 0x8f, 0x86, 0xff, 0x85, 0x8b, 0x7f, 0xfc,
0xbc, 0xa9, 0x86, 0xf5, 0xc2, 0xb3, 0x94, 0xff, 0xc4, 0xba, 0x9b, 0xff, 0xc1, 0xb7, 0x97, 0xff, 0xbb, 0xb0, 0x8b, 0xff, 0xbd, 0xaf, 0x87, 0xff, 0xc1, 0xb0, 0x87, 0xff, 0xc2, 0xb3, 0x8b, 0xff, 0xc4, 0xb5, 0x8f, 0xff, 0xc6, 0xb9, 0x95, 0xff, 0xc2, 0xb7, 0x94, 0xff, 0xb9, 0xae, 0x86, 0xff, 0xaa, 0x9d, 0x7b, 0xff, 0x92, 0x83, 0x6b, 0xff, 0x86, 0x79, 0x72, 0xff, 0x8f, 0x8c, 0x8d, 0xff, 0x9d, 0xa3, 0xaa, 0xff, 0xa9, 0xb3, 0xb8, 0xff, 0xc0, 0xd1, 0xd3, 0xff, 0xc1, 0xd4, 0xe2, 0xff, 0xce, 0xda, 0xf1, 0xff, 0xb5, 0xc0, 0xe1, 0xff, 0x9b, 0xa8, 0xd5, 0xff, 0x87, 0x9b, 0xd4, 0xff, 0x93, 0xab, 0xd2, 0xff, 0x9d, 0xb0, 0xe8, 0xff, 0x84, 0x8e, 0xdc, 0xff, 0x99, 0xaa, 0xe1, 0xff, 0x75, 0x84, 0xc7, 0xff, 0x4d, 0x57, 0xa2, 0xff, 0x5a, 0x5b, 0xa3, 0xff, 0x30, 0x34, 0x6d, 0xff, 0x18, 0x23, 0x4e, 0xff, 0x16, 0x1e, 0x47, 0xff, 0x13, 0x19, 0x46, 0xff, 0x28, 0x2d, 0x5e, 0xff, 0x23, 0x29, 0x56, 0xff, 0x37, 0x43, 0x6d, 0xff, 0x7f, 0x90, 0xbf, 0xff, 0x38, 0x45, 0x6e, 0xff, 0x48, 0x5b, 0x86, 0xff, 0x80, 0x98, 0xc4, 0xff, 0x80, 0x95, 0xc0, 0xff, 0x6d, 0x7c, 0xab, 0xff, 0x5a, 0x6e, 0x9d, 0xff, 0x3f, 0x51, 0x7f, 0xff, 0x38, 0x48, 0x74, 0xff, 0x2f, 0x3e, 0x6a, 0xff, 0x2c, 0x3b, 0x69, 0xff, 0x2f, 0x40, 0x6e, 0xff, 0x2f, 0x42, 0x72, 0xff, 0x34, 0x4a, 0x7c, 0xff, 0x32, 0x4a, 0x7b, 0xff, 0x31, 0x46, 0x72, 0xff, 0x26, 0x37, 0x5c, 0xff, 0x25, 0x33, 0x54, 0xff, 0x1a, 0x24, 0x43, 0xff, 0x3b, 0x52, 0x86, 0xff, 0x41, 0x5b, 0x8a, 0xff, 0x58, 0x70, 0x9f, 0xff, 0x39, 0x51, 0x81, 0xff, 0x28, 0x3a, 0x65, 0xff, 0x16, 0x22, 0x45, 0xff, 0x47, 0x5d, 0x8d, 0xff, 0x4a, 0x65, 0x9a, 0xff, 0x55, 0x6d, 0xa5, 0xff, 0x2d, 0x47, 0x83, 0xff, 0x21, 0x24, 0x6d, 0xff, 0x22, 0x36, 0x86, 0xff, 0xb2, 0xa4, 0xa1, 0xff, 0xcc, 0xb4, 0x99, 0xff, 0xc0, 0xaf, 0x99, 0xff, 0xbb, 0xaf, 0x9e, 0xff, 0xb3, 0xad, 0x9e, 0xff, 0xae, 0xac, 0xa1, 0xff, 0xa7, 0xab, 0xa1, 0xff, 0x9e, 0xa6, 0xa0, 0xff, 0x97, 0x9d, 0x99, 0xff, 0x8c, 0x93, 0x8a, 0xff, 0x84, 0x8a, 0x7f, 0xf5,
0xaf, 0x9b, 0x77, 0xe8, 0xb7, 0xa7, 0x85, 0xff, 0xba, 0xad, 0x8c, 0xff, 0xba, 0xad, 0x8a, 0xff, 0xb8, 0xa8, 0x83, 0xff, 0xb8, 0xa6, 0x80, 0xff, 0xbb, 0xa8, 0x81, 0xff, 0xc0, 0xad, 0x87, 0xff, 0xc2, 0xb0, 0x8b, 0xff, 0xc5, 0xb4, 0x8e, 0xff, 0xbc, 0xb0, 0x8d, 0xff, 0xb4, 0xa7, 0x80, 0xff, 0xa7, 0x97, 0x76, 0xff, 0x90, 0x81, 0x6a, 0xff, 0x85, 0x78, 0x72, 0xff, 0x8e, 0x8c, 0x8c, 0xff, 0x9e, 0xa2, 0xa6, 0xff, 0xa8, 0xaf, 0xb2, 0xff, 0x9b, 0xa5, 0xa7, 0xff, 0xdb, 0xdf, 0xe8, 0xff, 0xe9, 0xed, 0xf8, 0xff, 0xeb, 0xed, 0xf7, 0xff, 0xc2, 0xce, 0xf1, 0xff, 0x6e, 0x8d, 0xd2, 0xff, 0x5a, 0x7c, 0xc1, 0xff, 0xbf, 0xd5, 0xef, 0xff, 0x99, 0xa4, 0xd0, 0xff, 0xa1, 0xb2, 0xd4, 0xff, 0x98, 0xa6, 0xd9, 0xff, 0x6a, 0x78, 0xb5, 0xff, 0x2d, 0x37, 0x62, 0xff, 0x0f, 0x17, 0x35, 0xff, 0x0e, 0x15, 0x33, 0xff, 0x16, 0x1c, 0x42, 0xff, 0x2b, 0x33, 0x58, 0xff, 0x32, 0x39, 0x60, 0xff, 0x33, 0x39, 0x63, 0xff, 0x1b, 0x23, 0x4f, 0xff, 0x56, 0x63, 0x8d, 0xff, 0x7b, 0x85, 0xb5, 0xff, 0x3b, 0x48, 0x70, 0xff, 0x41, 0x58, 0x84, 0xff, 0x57, 0x70, 0x9e, 0xff, 0x62, 0x7a, 0xa8, 0xff, 0x57, 0x6c, 0x9b, 0xff, 0x4a, 0x5d, 0x8a, 0xff, 0x34, 0x43, 0x6e, 0xff, 0x30, 0x3e, 0x67, 0xff, 0x2b, 0x3c, 0x66, 0xff, 0x28, 0x3a, 0x66, 0xff, 0x2b, 0x3f, 0x6d, 0xff, 0x2f, 0x47, 0x78, 0xff, 0x36, 0x4e, 0x80, 0xff, 0x30, 0x43, 0x6f, 0xff, 0x2c, 0x3a, 0x63, 0xff, 0x28, 0x38, 0x59, 0xff, 0x19, 0x25, 0x46, 0xff, 0x36, 0x4d, 0x7f, 0xff, 0x40, 0x5a, 0x8c, 0xff, 0x49, 0x62, 0x93, 0xff, 0x56, 0x73, 0xab, 0xff, 0x21, 0x36, 0x63, 0xff, 0x03, 0x02, 0x1d, 0xff, 0x03, 0x10, 0x39, 0xff, 0x30, 0x45, 0x79, 0xff, 0x4b, 0x62, 0x96, 0xff, 0x39, 0x53, 0x93, 0xff, 0x24, 0x28, 0x6f, 0xff, 0x38, 0x46, 0x98, 0xff, 0xb9, 0xad, 0xa6, 0xff, 0xcd, 0xb7, 0xa0, 0xff, 0xc5, 0xb5, 0xa0, 0xff, 0xc0, 0xb5, 0xa4, 0xff, 0xba, 0xb4, 0xa4, 0xff, 0xb4, 0xb2, 0xa8, 0xff, 0xab, 0xaf, 0xa4, 0xff, 0xa2, 0xab, 0xa3, 0xff, 0x9c, 0xa2, 0x9d, 0xff, 0x90, 0x97, 0x8f, 0xff, 0x84, 0x8c, 0x80, 0xe7,
0xa2, 0x8c, 0x71, 0xd1, 0xaa, 0x97, 0x7d, 0xff, 0xaf, 0xa0, 0x83, 0xff, 0xaf, 0xa0, 0x83, 0xff, 0xad, 0x9b, 0x7c, 0xff, 0xad, 0x99, 0x78, 0xff, 0xb0, 0x9c, 0x79, 0xff, 0xb6, 0xa2, 0x7e, 0xff, 0xba, 0xa7, 0x85, 0xff, 0xbd, 0xaa, 0x89, 0xff, 0xb6, 0xa6, 0x88, 0xff, 0xae, 0x9e, 0x7c, 0xff, 0x9e, 0x8c, 0x71, 0xff, 0x8a, 0x7a, 0x6a, 0xff, 0x80, 0x74, 0x72, 0xff, 0x89, 0x86, 0x89, 0xff, 0x99, 0x9c, 0xa0, 0xff, 0xa6, 0xa8, 0xad, 0xff, 0xa5, 0xac, 0xaf, 0xff, 0xf0, 0xf6, 0xf7, 0xff, 0xed, 0xf8, 0xfd, 0xff, 0xe4, 0xed, 0xfd, 0xff, 0x9d, 0xb3, 0xee, 0xff, 0x56, 0x79, 0xce, 0xff, 0x7e, 0x90, 0xc8, 0xff, 0xdf, 0xef, 0xfb, 0xff, 0xd6, 0xe1, 0xf7, 0xff, 0xa7, 0xb0, 0xd0, 0xff, 0x91, 0x9c, 0xc7, 0xff, 0x6e, 0x7b, 0xaa, 0xff, 0x35, 0x3f, 0x6b, 0xff, 0x27, 0x2c, 0x54, 0xff, 0x1f, 0x24, 0x48, 0xff, 0x2a, 0x34, 0x56, 0xff, 0x38, 0x42, 0x62, 0xff, 0x2e, 0x39, 0x58, 0xff, 0x37, 0x40, 0x60, 0xff, 0x2a, 0x31, 0x50, 0xff, 0x1b, 0x21, 0x43, 0xff, 0x34, 0x3a, 0x5c, 0xff, 0x4c, 0x59, 0x7b, 0xff, 0x46, 0x56, 0x7b, 0xff, 0x45, 0x5b, 0x84, 0xff, 0x44, 0x61, 0x8c, 0xff, 0x44, 0x59, 0x86, 0xff, 0x4e, 0x63, 0x8e, 0xff, 0x36, 0x46, 0x6e, 0xff, 0x2d, 0x3c, 0x62, 0xff, 0x29, 0x3a, 0x60, 0xff, 0x29, 0x3b, 0x64, 0xff, 0x26, 0x3a, 0x66, 0xff, 0x2d, 0x43, 0x70, 0xff, 0x36, 0x4d, 0x7b, 0xff, 0x33, 0x45, 0x70, 0xff, 0x24, 0x35, 0x5c, 0xff, 0x20, 0x31, 0x54, 0xff, 0x26, 0x31, 0x55, 0xff, 0x35, 0x4d, 0x82, 0xff, 0x36, 0x50, 0x86, 0xff, 0x4d, 0x64, 0x99, 0xff, 0x48, 0x61, 0x96, 0xff, 0x1a, 0x2b, 0x5b, 0xff, 0x0a, 0x10, 0x33, 0xff, 0x09, 0x10, 0x3d, 0xff, 0x10, 0x1e, 0x50, 0xff, 0x47, 0x59, 0x8d, 0xff, 0x34, 0x4c, 0x8e, 0xff, 0x3c, 0x45, 0x8b, 0xff, 0x55, 0x5e, 0xa0, 0xff, 0xcb, 0xb6, 0xab, 0xff, 0xcd, 0xba, 0xa1, 0xff, 0xc8, 0xb7, 0xa2, 0xff, 0xc2, 0xb7, 0xa5, 0xff, 0xbd, 0xb7, 0xa7, 0xff, 0xb6, 0xb4, 0xaa, 0xff, 0xaf, 0xb2, 0xa9, 0xff, 0xa6, 0xad, 0xa7, 0xff, 0x9f, 0xa5, 0xa0, 0xff, 0x95, 0x9c, 0x95, 0xff, 0x89, 0x92, 0x88, 0xd1,
0x8f, 0x7d, 0x69, 0xb5, 0x98, 0x88, 0x74, 0xff, 0x9d, 0x8f, 0x7c, 0xff, 0x9b, 0x8c, 0x79, 0xff, 0x9a, 0x88, 0x73, 0xff, 0x9a, 0x88, 0x6f, 0xff, 0x9e, 0x8b, 0x6f, 0xff, 0xa5, 0x93, 0x76, 0xff, 0xab, 0x9a, 0x7e, 0xff, 0xae, 0x9e, 0x84, 0xff, 0xa9, 0x99, 0x81, 0xff, 0x9d, 0x8e, 0x73, 0xff, 0x8e, 0x7f, 0x6d, 0xff, 0x81, 0x74, 0x70, 0xff, 0x7d, 0x72, 0x71, 0xff, 0x80, 0x7d, 0x82, 0xff, 0x91, 0x93, 0x98, 0xff, 0x9f, 0xa0, 0xa3, 0xff, 0xaa, 0xb0, 0xb7, 0xff, 0xdc, 0xf3, 0xfc, 0xff, 0xcb, 0xe2, 0xfc, 0xff, 0xaa, 0xc3, 0xf1, 0xff, 0x6d, 0x87, 0xd1, 0xff, 0x52, 0x67, 0xaf, 0xff, 0xc2, 0xd0, 0xeb, 0xff, 0xdd, 0xed, 0xfb, 0xff, 0xdc, 0xea, 0xfc, 0xff, 0xba, 0xc6, 0xed, 0xff, 0x78, 0x8a, 0xb5, 0xff, 0x6f, 0x7f, 0xab, 0xff, 0x56, 0x65, 0x94, 0xff, 0x43, 0x4b, 0x7a, 0xff, 0x30, 0x32, 0x5e, 0xff, 0x31, 0x39, 0x60, 0xff, 0x2c, 0x34, 0x5a, 0xff, 0x31, 0x3a, 0x5f, 0xff, 0x34, 0x3e, 0x60, 0xff, 0x2a, 0x32, 0x53, 0xff, 0x20, 0x23, 0x45, 0xff, 0x17, 0x1f, 0x3f, 0xff, 0x3c, 0x46, 0x68, 0xff, 0x48, 0x50, 0x75, 0xff, 0x2e, 0x3b, 0x5e, 0xff, 0x4e, 0x64, 0x87, 0xff, 0x34, 0x4c, 0x75, 0xff, 0x3a, 0x4f, 0x77, 0xff, 0x3a, 0x4c, 0x71, 0xff, 0x21, 0x31, 0x56, 0xff, 0x22, 0x31, 0x56, 0xff, 0x26, 0x38, 0x5e, 0xff, 0x25, 0x38, 0x61, 0xff, 0x31, 0x45, 0x70, 0xff, 0x33, 0x46, 0x72, 0xff, 0x2f, 0x41, 0x6b, 0xff, 0x30, 0x40, 0x69, 0xff, 0x23, 0x35, 0x5a, 0xff, 0x24, 0x31, 0x58, 0xff, 0x30, 0x49, 0x81, 0xff, 0x30, 0x4b, 0x82, 0xff, 0x44, 0x5a, 0x90, 0xff, 0x0c, 0x13, 0x33, 0xff, 0x03, 0x07, 0x2b, 0xff, 0x14, 0x26, 0x5d, 0xff, 0x0e, 0x1e, 0x4b, 0xff, 0x16, 0x24, 0x55, 0xff, 0x5b, 0x67, 0x9e, 0xff, 0x27, 0x3a, 0x83, 0xff, 0x49, 0x58, 0x98, 0xff, 0x73, 0x78, 0xaa, 0xff, 0xd4, 0xbc, 0xa7, 0xff, 0xca, 0xba, 0xa0, 0xff, 0xc6, 0xb5, 0xa0, 0xff, 0xc1, 0xb6, 0xa4, 0xff, 0xbc, 0xb6, 0xa6, 0xff, 0xb6, 0xb4, 0xaa, 0xff, 0xae, 0xb2, 0xa8, 0xff, 0xa6, 0xad, 0xa7, 0xff, 0x9f, 0xa6, 0xa1, 0xff, 0x96, 0x9e, 0x99, 0xff, 0x8c, 0x94, 0x8c, 0xb5,
0x77, 0x6b, 0x64, 0x92, 0x7d, 0x73, 0x6b, 0xff, 0x83, 0x78, 0x70, 0xff, 0x83, 0x75, 0x6e, 0xff, 0x83, 0x77, 0x6c, 0xff, 0x83, 0x75, 0x66, 0xff, 0x85, 0x77, 0x67, 0xff, 0x8d, 0x7e, 0x6d, 0xff, 0x95, 0x86, 0x76, 0xff, 0x9a, 0x8b, 0x7b, 0xff, 0x91, 0x84, 0x75, 0xff, 0x87, 0x79, 0x6d, 0xff, 0x7f, 0x72, 0x6b, 0xff, 0x7c, 0x6f, 0x6d, 0xff, 0x78, 0x71, 0x75, 0xff, 0x80, 0x79, 0x80, 0xff, 0x89, 0x85, 0x8f, 0xff, 0x94, 0x92, 0x9a, 0xff, 0xaa, 0xb1, 0xb0, 0xff, 0xda, 0xf1, 0xfd, 0xff, 0xbc, 0xd5, 0xfc, 0xff, 0x91, 0xac, 0xd9, 0xff, 0x69, 0x81, 0xba, 0xff, 0x68, 0x7b, 0xae, 0xff, 0xd4, 0xe8, 0xfc, 0xff, 0xd4, 0xe5, 0xf8, 0xff, 0xc9, 0xdd, 0xf8, 0xff, 0xb0, 0xbe, 0xe2, 0xff, 0xa2, 0xa6, 0xc2, 0xff, 0xcd, 0xd1, 0xe0, 0xff, 0xa6, 0xb4, 0xcd, 0xff, 0x70, 0x84, 0xb1, 0xff, 0x51, 0x62, 0x94, 0xff, 0x48, 0x58, 0x8a, 0xff, 0x43, 0x50, 0x80, 0xff, 0x38, 0x42, 0x70, 0xff, 0x32, 0x3d, 0x67, 0xff, 0x32, 0x3b, 0x65, 0xff, 0x24, 0x2d, 0x57, 0xff, 0x2c, 0x36, 0x5f, 0xff, 0x27, 0x31, 0x5b, 0xff, 0x43, 0x4d, 0x76, 0xff, 0x2d, 0x38, 0x5b, 0xff, 0x2b, 0x3b, 0x54, 0xff, 0x55, 0x6e, 0x98, 0xff, 0x2f, 0x42, 0x70, 0xff, 0x2d, 0x3d, 0x5c, 0xff, 0x2d, 0x37, 0x59, 0xff, 0x29, 0x3d, 0x63, 0xff, 0x2c, 0x3c, 0x60, 0xff, 0x27, 0x3a, 0x62, 0xff, 0x29, 0x3d, 0x6a, 0xff, 0x2f, 0x3f, 0x6b, 0xff, 0x2b, 0x3d, 0x63, 0xff, 0x27, 0x39, 0x60, 0xff, 0x20, 0x2d, 0x53, 0xff, 0x24, 0x32, 0x56, 0xff, 0x2a, 0x46, 0x7c, 0xff, 0x2e, 0x49, 0x80, 0xff, 0x2d, 0x3e, 0x6d, 0xff, 0x20, 0x2a, 0x49, 0xff, 0x56, 0x64, 0x8e, 0xff, 0x62, 0x7b, 0xac, 0xff, 0x4f, 0x62, 0x94, 0xff, 0x50, 0x67, 0xa7, 0xff, 0x44, 0x57, 0x97, 0xff, 0x35, 0x44, 0x89, 0xff, 0x56, 0x62, 0xab, 0xff, 0x88, 0x87, 0x8e, 0xff, 0xd1, 0xbc, 0xa4, 0xff, 0xcc, 0xba, 0x9f, 0xff, 0xc6, 0xb6, 0xa0, 0xff, 0xc2, 0xb6, 0xa3, 0xff, 0xbd, 0xb5, 0xa4, 0xff, 0xb8, 0xb4, 0xa6, 0xff, 0xb0, 0xb2, 0xa7, 0xff, 0xa5, 0xad, 0xa7, 0xff, 0x9e, 0xa6, 0x9f, 0xff, 0x95, 0x9c, 0x95, 0xff, 0x8d, 0x94, 0x8a, 0x92,
0x67, 0x62, 0x64, 0x68, 0x68, 0x64, 0x65, 0xff, 0x6b, 0x65, 0x66, 0xff, 0x6e, 0x67, 0x67, 0xff, 0x71, 0x69, 0x67, 0xff, 0x73, 0x6a, 0x66, 0xff, 0x74, 0x6c, 0x66, 0xff, 0x78, 0x6f, 0x68, 0xff, 0x7b, 0x72, 0x6b, 0xff, 0x7c, 0x74, 0x6d, 0xff, 0x7a, 0x71, 0x6b, 0xff, 0x75, 0x6c, 0x6a, 0xff, 0x73, 0x6a, 0x6b, 0xff, 0x75, 0x6c, 0x70, 0xff, 0x77, 0x70, 0x76, 0xff, 0x7c, 0x77, 0x7f, 0xff, 0x82, 0x7e, 0x88, 0xff, 0x86, 0x82, 0x8d, 0xff, 0xa7, 0xac, 0xb0, 0xff, 0xdc, 0xf0, 0xfe, 0xff, 0xaf, 0xc5, 0xee, 0xff, 0x95, 0xac, 0xd9, 0xff, 0x55, 0x6b, 0x9e, 0xff, 0x90, 0xa2, 0xc8, 0xff, 0xdf, 0xf2, 0xfe, 0xff, 0xd2, 0xed, 0xf7, 0xff, 0xe0, 0xec, 0xf4, 0xff, 0xf6, 0xf8, 0xfa, 0xff, 0xf6, 0xf8, 0xfa, 0xff, 0xe5, 0xef, 0xf7, 0xff, 0xbb, 0xc6, 0xef, 0xff, 0x76, 0x82, 0xd1, 0xff, 0x61, 0x6f, 0xbe, 0xff, 0x55, 0x64, 0xac, 0xff, 0x4d, 0x59, 0xa0, 0xff, 0x48, 0x52, 0x98, 0xff, 0x42, 0x4c, 0x90, 0xff, 0x39, 0x47, 0x85, 0xff, 0x34, 0x42, 0x7b, 0xff, 0x35, 0x42, 0x75, 0xff, 0x34, 0x3f, 0x72, 0xff, 0x3b, 0x45, 0x76, 0xff, 0x2a, 0x37, 0x5e, 0xff, 0x21, 0x2f, 0x45, 0xff, 0x74, 0x88, 0xb2, 0xff, 0x35, 0x44, 0x73, 0xff, 0x20, 0x32, 0x4d, 0xff, 0x26, 0x37, 0x54, 0xff, 0x34, 0x47, 0x67, 0xff, 0x25, 0x36, 0x56, 0xff, 0x32, 0x46, 0x69, 0xff, 0x35, 0x46, 0x72, 0xff, 0x32, 0x42, 0x6e, 0xff, 0x28, 0x39, 0x5e, 0xff, 0x2c, 0x3b, 0x62, 0xff, 0x1d, 0x2c, 0x51, 0xff, 0x28, 0x36, 0x5b, 0xff, 0x2c, 0x46, 0x7e, 0xff, 0x28, 0x40, 0x77, 0xff, 0x26, 0x43, 0x77, 0xff, 0x5f, 0x76, 0xa9, 0xff, 0x5b, 0x73, 0xa5, 0xff, 0x49, 0x67, 0x9b, 0xff, 0x31, 0x49, 0x8a, 0xff, 0x29, 0x38, 0x76, 0xff, 0x2e, 0x38, 0x7d, 0xff, 0x60, 0x65, 0xba, 0xff, 0x43, 0x52, 0x7a, 0xff, 0x76, 0x6e, 0x6b, 0xff, 0xd1, 0xbb, 0xa2, 0xff, 0xcc, 0xb8, 0x9e, 0xff, 0xc7, 0xb5, 0x9e, 0xff, 0xc2, 0xb4, 0xa1, 0xff, 0xbe, 0xb3, 0xa2, 0xff, 0xb8, 0xb2, 0xa0, 0xff, 0xae, 0xaf, 0xa4, 0xff, 0xa5, 0xaa, 0xa2, 0xff, 0x9d, 0xa3, 0x9b, 0xff, 0x91, 0x99, 0x90, 0xff, 0x8b, 0x91, 0x87, 0x68,
0x5f, 0x5c, 0x65, 0x43, 0x5f, 0x5e, 0x66, 0xfb, 0x61, 0x61, 0x68, 0xff, 0x64, 0x63, 0x69, 0xff, 0x67, 0x64, 0x69, 0xff, 0x6a, 0x65, 0x6b, 0xff, 0x6b, 0x67, 0x6a, 0xff, 0x6c, 0x68, 0x6b, 0xff, 0x6e, 0x69, 0x6d, 0xff, 0x6d, 0x68, 0x6b, 0xff, 0x6c, 0x66, 0x6a, 0xff, 0x6a, 0x65, 0x6a, 0xff, 0x6b, 0x67, 0x6d, 0xff, 0x6f, 0x6b, 0x73, 0xff, 0x75, 0x70, 0x7a, 0xff, 0x79, 0x74, 0x7e, 0xff, 0x7c, 0x78, 0x83, 0xff, 0x80, 0x79, 0x86, 0xff, 0x8a, 0x8d, 0x95, 0xff, 0xdd, 0xf1, 0xf7, 0xff, 0xaf, 0xc6, 0xea, 0xff, 0x8c, 0xa5, 0xcd, 0xff, 0x68, 0x7f, 0xa7, 0xff, 0xc0, 0xd2, 0xed, 0xff, 0xdb, 0xf0, 0xfb, 0xff, 0xe1, 0xf4, 0xfc, 0xff, 0xcd, 0xd7, 0xf9, 0xff, 0xa7, 0xac, 0xef, 0xff, 0x86, 0x93, 0xde, 0xff, 0x71, 0x78, 0xd8, 0xff, 0x62, 0x62, 0xc8, 0xff, 0x62, 0x6b, 0xc3, 0xff, 0x5e, 0x6e, 0xb7, 0xff, 0x65, 0x70, 0xba, 0xff, 0x52, 0x5d, 0xa7, 0xff, 0x4f, 0x58, 0xa5, 0xff, 0x3a, 0x40, 0x8b, 0xff, 0x34, 0x3c, 0x7e, 0xff, 0x2c, 0x34, 0x6e, 0xff, 0x29, 0x2a, 0x5c, 0xff, 0x20, 0x24, 0x4d, 0xff, 0x1d, 0x25, 0x4c, 0xff, 0x1c, 0x2a, 0x4e, 0xff, 0x33, 0x46, 0x5f, 0xff, 0x7f, 0x97, 0xbf, 0xff, 0x42, 0x4e, 0x7c, 0xff, 0x1b, 0x2c, 0x47, 0xff, 0x24, 0x37, 0x51, 0xff, 0x1c, 0x2b, 0x45, 0xff, 0x29, 0x3b, 0x5c, 0xff, 0x2a, 0x3b, 0x5f, 0xff, 0x36, 0x45, 0x6f, 0xff, 0x2d, 0x3c, 0x67, 0xff, 0x23, 0x34, 0x58, 0xff, 0x27, 0x35, 0x5a, 0xff, 0x22, 0x32, 0x58, 0xff, 0x23, 0x33, 0x59, 0xff, 0x27, 0x3f, 0x78, 0xff, 0x36, 0x4b, 0x83, 0xff, 0x4c, 0x60, 0x9c, 0xff, 0x47, 0x5a, 0x92, 0xff, 0x5c, 0x6b, 0xa2, 0xff, 0x59, 0x66, 0xa0, 0xff, 0x5f, 0x69, 0x99, 0xff, 0x53, 0x60, 0x99, 0xff, 0x55, 0x64, 0xb5, 0xff, 0x52, 0x5e, 0xa4, 0xff, 0x16, 0x28, 0x1f, 0xff, 0xa6, 0x9c, 0x93, 0xff, 0xce, 0xb8, 0x9d, 0xff, 0xcc, 0xb7, 0x9d, 0xff, 0xc7, 0xb5, 0x9c, 0xff, 0xc1, 0xb3, 0x9e, 0xff, 0xbd, 0xb2, 0xa0, 0xff, 0xb5, 0xad, 0x9a, 0xff, 0xae, 0xab, 0x9d, 0xff, 0xa3, 0xa7, 0x9c, 0xff, 0x9d, 0xa1, 0x96, 0xff, 0x8e, 0x94, 0x8b, 0xfa, 0x89, 0x8f, 0x84, 0x43,
0x5a, 0x58, 0x61, 0x29, 0x5b, 0x59, 0x63, 0xef, 0x5d, 0x5c, 0x64, 0xff, 0x5e, 0x5e, 0x67, 0xff, 0x62, 0x5f, 0x68, 0xff, 0x64, 0x60, 0x6a, 0xff, 0x66, 0x62, 0x6a, 0xff, 0x68, 0x64, 0x6b, 0xff, 0x68, 0x65, 0x6b, 0xff, 0x69, 0x65, 0x6b, 0xff, 0x6c, 0x65, 0x6c, 0xff, 0x69, 0x63, 0x6a, 0xff, 0x6a, 0x66, 0x6c, 0xff, 0x6e, 0x6a, 0x72, 0xff, 0x72, 0x6f, 0x7b, 0xff, 0x76, 0x72, 0x7d, 0xff, 0x7a, 0x76, 0x81, 0xff, 0x7f, 0x79, 0x84, 0xff, 0x77, 0x79, 0x7f, 0xff, 0xd6, 0xe9, 0xee, 0xff, 0xb8, 0xcf, 0xed, 0xff, 0x7c, 0x9a, 0xba, 0xff, 0x94, 0xaf, 0xd0, 0xff, 0xc1, 0xd5, 0xec, 0xff, 0xd5, 0xec, 0xfa, 0xff, 0xc6, 0xd4, 0xf7, 0xff, 0x74, 0x87, 0xdd, 0xff, 0x6a, 0x84, 0xd4, 0xff, 0xab, 0xbe, 0xdf, 0xff, 0x90, 0xb4, 0xd7, 0xff, 0xae, 0xcc, 0xe5, 0xff, 0xa1, 0xbc, 0xde, 0xff, 0x98, 0xb5, 0xe2, 0xff, 0xad, 0xc4, 0xd9, 0xff, 0x81, 0x96, 0xb3, 0xff, 0xa5, 0xbd, 0xda, 0xff, 0x6b, 0x81, 0xa6, 0xff, 0x54, 0x71, 0x9a, 0xff, 0x34, 0x4e, 0x71, 0xff, 0x0d, 0x15, 0x39, 0xff, 0x03, 0x01, 0x11, 0xff, 0x0b, 0x0e, 0x23, 0xff, 0x20, 0x2e, 0x4c, 0xff, 0x3a, 0x50, 0x6f, 0xff, 0x80, 0x9f, 0xc4, 0xff, 0x36, 0x42, 0x6f, 0xff, 0x17, 0x23, 0x3e, 0xff, 0x19, 0x29, 0x41, 0xff, 0x25, 0x32, 0x4b, 0xff, 0x35, 0x46, 0x6a, 0xff, 0x2c, 0x39, 0x61, 0xff, 0x34, 0x40, 0x69, 0xff, 0x2a, 0x39, 0x62, 0xff, 0x27, 0x36, 0x5a, 0xff, 0x27, 0x33, 0x58, 0xff, 0x23, 0x34, 0x59, 0xff, 0x20, 0x2f, 0x57, 0xff, 0x23, 0x39, 0x72, 0xff, 0x33, 0x46, 0x80, 0xff, 0x4f, 0x69, 0xa5, 0xff, 0x4d, 0x67, 0x9d, 0xff, 0x5d, 0x71, 0xa4, 0xff, 0x6a, 0x76, 0xaf, 0xff, 0x6a, 0x7c, 0xb7, 0xff, 0x55, 0x6e, 0xb3, 0xff, 0x58, 0x62, 0xa7, 0xff, 0x1c, 0x21, 0x32, 0xff, 0x49, 0x46, 0x59, 0xff, 0xb6, 0xab, 0x99, 0xff, 0xc6, 0xad, 0x98, 0xff, 0xc3, 0xaf, 0x94, 0xff, 0xc5, 0xb1, 0x97, 0xff, 0xc1, 0xb1, 0x9c, 0xff, 0xba, 0xad, 0x9b, 0xff, 0xaf, 0xa7, 0x91, 0xff, 0xa9, 0xa7, 0x97, 0xff, 0xa1, 0xa2, 0x97, 0xff, 0x9a, 0x9d, 0x91, 0xff, 0x8a, 0x8f, 0x84, 0xef, 0x84, 0x89, 0x7d, 0x29,
0x58, 0x55, 0x5e, 0x0b, 0x58, 0x55, 0x5e, 0xe1, 0x5a, 0x57, 0x5f, 0xff, 0x5b, 0x58, 0x62, 0xff, 0x5e, 0x5b, 0x64, 0xff, 0x5e, 0x5c, 0x65, 0xff, 0x5f, 0x5d, 0x64, 0xff, 0x60, 0x5e, 0x64, 0xff, 0x61, 0x5e, 0x64, 0xff, 0x62, 0x60, 0x67, 0xff, 0x5f, 0x5e, 0x68, 0xff, 0x5f, 0x5d, 0x66, 0xff, 0x65, 0x62, 0x6b, 0xff, 0x6d, 0x69, 0x70, 0xff, 0x6f, 0x6d, 0x76, 0xff, 0x73, 0x6f, 0x7a, 0xff, 0x76, 0x72, 0x7d, 0xff, 0x7d, 0x77, 0x82, 0xff, 0x73, 0x72, 0x79, 0xff, 0xd2, 0xdf, 0xe4, 0xff, 0xc4, 0xdc, 0xf3, 0xff, 0x7c, 0x99, 0xb9, 0xff, 0x78, 0x91, 0xbe, 0xff, 0x7b, 0x91, 0xb6, 0xff, 0xb9, 0xce, 0xeb, 0xff, 0x97, 0xa5, 0xe9, 0xff, 0x88, 0x9d, 0xee, 0xff, 0xe7, 0xef, 0xe8, 0xff, 0xf9, 0xfb, 0xfa, 0xff, 0xa8, 0xb8, 0xcc, 0xff, 0x76, 0x88, 0x8c, 0xff, 0x59, 0x62, 0x70, 0xff, 0x32, 0x33, 0x40, 0xff, 0x32, 0x33, 0x36, 0xff, 0x06, 0x03, 0x00, 0xff, 0x58, 0x61, 0x6d, 0xff, 0x59, 0x6c, 0x92, 0xff, 0x46, 0x5b, 0x7d, 0xff, 0x2f, 0x3e, 0x60, 0xff, 0x0a, 0x16, 0x34, 0xff, 0x1a, 0x23, 0x46, 0xff, 0x1f, 0x26, 0x54, 0xff, 0x24, 0x38, 0x55, 0xff, 0x3e, 0x56, 0x73, 0xff, 0x4f, 0x69, 0x92, 0xff, 0x2e, 0x3e, 0x68, 0xff, 0x1b, 0x29, 0x41, 0xff, 0x1a, 0x25, 0x42, 0xff, 0x27, 0x38, 0x55, 0xff, 0x2b, 0x3a, 0x5a, 0xff, 0x36, 0x45, 0x67, 0xff, 0x2e, 0x3b, 0x5f, 0xff, 0x2d, 0x39, 0x5e, 0xff, 0x29, 0x35, 0x5b, 0xff, 0x2c, 0x39, 0x60, 0xff, 0x2a, 0x34, 0x5b, 0xff, 0x1e, 0x2e, 0x57, 0xff, 0x2d, 0x40, 0x74, 0xff, 0x3b, 0x4b, 0x8a, 0xff, 0x4e, 0x62, 0xa9, 0xff, 0x5d, 0x6b, 0xa9, 0xff, 0x52, 0x66, 0xb0, 0xff, 0x56, 0x63, 0xb0, 0xff, 0x56, 0x63, 0xb7, 0xff, 0x44, 0x54, 0x82, 0xff, 0x1e, 0x1a, 0x34, 0xff, 0x0c, 0x13, 0x1c, 0xff, 0x8c, 0x81, 0x80, 0xff, 0xc2, 0xa8, 0x91, 0xff, 0xbf, 0xa8, 0x8c, 0xff, 0xc2, 0xa8, 0x8d, 0xff, 0xbf, 0xab, 0x8f, 0xff, 0xbc, 0xac, 0x95, 0xff, 0xba, 0xa8, 0x95, 0xff, 0xad, 0xa1, 0x8b, 0xff, 0xa8, 0xa2, 0x91, 0xff, 0x9e, 0x9f, 0x91, 0xff, 0x98, 0x9a, 0x8b, 0xff, 0x8a, 0x8a, 0x7c, 0xe1, 0x81, 0x82, 0x73, 0x0b,
0x00, 0x00, 0x00, 0x00, 0x55, 0x53, 0x5b, 0xa8, 0x56, 0x53, 0x5b, 0xff, 0x59, 0x56, 0x5d, 0xff, 0x5c, 0x59, 0x60, 0xff, 0x5e, 0x5b, 0x62, 0xff, 0x5f, 0x5d, 0x63, 0xff, 0x5e, 0x5d, 0x61, 0xff, 0x5e, 0x5c, 0x61, 0xff, 0x5e, 0x5c, 0x62, 0xff, 0x5b, 0x59, 0x61, 0xff, 0x5b, 0x57, 0x60, 0xff, 0x61, 0x5c, 0x65, 0xff, 0x69, 0x63, 0x6e, 0xff, 0x6d, 0x6a, 0x73, 0xff, 0x72, 0x6e, 0x78, 0xff, 0x74, 0x6f, 0x7a, 0xff, 0x79, 0x73, 0x7f, 0xff, 0x6e, 0x6b, 0x76, 0xff, 0xbe, 0xc9, 0xd5, 0xff, 0xd1, 0xe6, 0xfc, 0xff, 0xa1, 0xba, 0xe2, 0xff, 0x37, 0x53, 0x83, 0xff, 0x56, 0x75, 0x9d, 0xff, 0x68, 0x7e, 0xb9, 0xff, 0x38, 0x4d, 0xb5, 0xff, 0xd2, 0xcd, 0xd4, 0xff, 0xcc, 0xe5, 0xf7, 0xff, 0x37, 0x6f, 0xce, 0xff, 0x00, 0x19, 0x6b, 0xff, 0x00, 0x00, 0x06, 0xff, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x09, 0x0a, 0x11, 0xff, 0x17, 0x14, 0x30, 0xff, 0x23, 0x23, 0x41, 0xff, 0x29, 0x2d, 0x5b, 0xff, 0x31, 0x35, 0x6f, 0xff, 0x31, 0x3d, 0x6a, 0xff, 0x2e, 0x3c, 0x6a, 0xff, 0x2e, 0x43, 0x61, 0xff, 0x40, 0x57, 0x77, 0xff, 0x47, 0x5e, 0x83, 0xff, 0x29, 0x37, 0x5f, 0xff, 0x17, 0x24, 0x3c, 0xff, 0x22, 0x2f, 0x4b, 0xff, 0x2b, 0x3c, 0x5a, 0xff, 0x32, 0x40, 0x60, 0xff, 0x2c, 0x3a, 0x5c, 0xff, 0x37, 0x44, 0x68, 0xff, 0x29, 0x35, 0x5a, 0xff, 0x33, 0x40, 0x65, 0xff, 0x2b, 0x37, 0x5f, 0xff, 0x28, 0x34, 0x57, 0xff, 0x28, 0x39, 0x62, 0xff, 0x42, 0x54, 0x8b, 0xff, 0x36, 0x47, 0x83, 0xff, 0x52, 0x61, 0xaa, 0xff, 0x5e, 0x6b, 0xb0, 0xff, 0x55, 0x67, 0xaf, 0xff, 0x5a, 0x61, 0xa0, 0xff, 0x26, 0x26, 0x47, 0xff, 0x02, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x51, 0x55, 0x4f, 0xff, 0xbb, 0xa6, 0x94, 0xff, 0xbf, 0xa5, 0x89, 0xff, 0xbc, 0xa6, 0x8a, 0xff, 0xc3, 0xa9, 0x8d, 0xff, 0xbe, 0xa9, 0x8d, 0xff, 0xbb, 0xaa, 0x92, 0xff, 0xbb, 0xa9, 0x95, 0xff, 0xb3, 0xa3, 0x8c, 0xff, 0xa9, 0x9f, 0x8e, 0xff, 0x9f, 0x9b, 0x8d, 0xff, 0x9a, 0x98, 0x89, 0xff, 0x8a, 0x89, 0x7b, 0xa8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x5c, 0x4a, 0x5c, 0x59, 0x59, 0xff, 0x5d, 0x57, 0x59, 0xff, 0x62, 0x5c, 0x5d, 0xff, 0x68, 0x62, 0x63, 0xff, 0x69, 0x68, 0x67, 0xff, 0x6a, 0x6b, 0x69, 0xff, 0x69, 0x6a, 0x68, 0xff, 0x67, 0x67, 0x66, 0xff, 0x64, 0x64, 0x63, 0xff, 0x5f, 0x5c, 0x5f, 0xff, 0x5f, 0x5b, 0x60, 0xff, 0x65, 0x5e, 0x65, 0xff, 0x69, 0x66, 0x6b, 0xff, 0x6f, 0x6a, 0x72, 0xff, 0x72, 0x6c, 0x75, 0xff, 0x76, 0x6f, 0x7a, 0xff, 0x6e, 0x6d, 0x76, 0xff, 0x9a, 0xa6, 0xad, 0xff, 0xd7, 0xeb, 0xfa, 0xff, 0xc8, 0xe1, 0xfb, 0xff, 0x7d, 0x97, 0xc3, 0xff, 0x6f, 0x8e, 0xb6, 0xff, 0x7c, 0x92, 0xc0, 0xff, 0x78, 0x75, 0xa6, 0xff, 0x77, 0x7d, 0xa3, 0xff, 0x87, 0xc5, 0xee, 0xff, 0x39, 0x6a, 0xc3, 0xff, 0x27, 0x32, 0x6d, 0xff, 0x38, 0x37, 0x3a, 0xff, 0x47, 0x4a, 0x4a, 0xff, 0x69, 0x69, 0x6a, 0xff, 0x8b, 0x83, 0x9a, 0xff, 0x9a, 0x9a, 0xcf, 0xff, 0x75, 0x79, 0xbd, 0xff, 0x50, 0x53, 0x9a, 0xff, 0x42, 0x48, 0x87, 0xff, 0x41, 0x4c, 0x87, 0xff, 0x35, 0x47, 0x76, 0xff, 0x30, 0x41, 0x6d, 0xff, 0x3b, 0x4a, 0x77, 0xff, 0x24, 0x39, 0x52, 0xff, 0x3d, 0x4e, 0x6f, 0xff, 0x33, 0x46, 0x67, 0xff, 0x28, 0x33, 0x58, 0xff, 0x1a, 0x26, 0x3c, 0xff, 0x29, 0x35, 0x51, 0xff, 0x25, 0x32, 0x51, 0xff, 0x2a, 0x36, 0x57, 0xff, 0x34, 0x3f, 0x62, 0xff, 0x2c, 0x38, 0x5c, 0xff, 0x35, 0x3f, 0x64, 0xff, 0x2f, 0x3b, 0x60, 0xff, 0x25, 0x31, 0x5a, 0xff, 0x27, 0x34, 0x54, 0xff, 0x2e, 0x3f, 0x68, 0xff, 0x43, 0x55, 0x8d, 0xff, 0x31, 0x43, 0x7c, 0xff, 0x20, 0x31, 0x6a, 0xff, 0x26, 0x38, 0x6e, 0xff, 0x2b, 0x41, 0x73, 0xff, 0x15, 0x1c, 0x35, 0xff, 0x04, 0x02, 0x02, 0xff, 0x0a, 0x03, 0x09, 0xff, 0x0e, 0x12, 0x19, 0xff, 0xa4, 0x99, 0x86, 0xff, 0xc5, 0xa7, 0x89, 0xff, 0xbd, 0xa2, 0x89, 0xff, 0xbc, 0xa5, 0x88, 0xff, 0xc5, 0xa8, 0x8a, 0xff, 0xc0, 0xaa, 0x8d, 0xff, 0xbd, 0xac, 0x92, 0xff, 0xbe, 0xab, 0x95, 0xff, 0xb2, 0xa1, 0x88, 0xff, 0xa7, 0x9d, 0x8b, 0xff, 0x9e, 0x99, 0x8a, 0xff, 0x96, 0x93, 0x84, 0xff, 0x88, 0x87, 0x78, 0x4a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x63, 0x65, 0x5d, 0x0a, 0x64, 0x63, 0x5b, 0xe8, 0x64, 0x60, 0x58, 0xff, 0x66, 0x61, 0x59, 0xff, 0x6a, 0x66, 0x5f, 0xff, 0x6c, 0x6e, 0x65, 0xff, 0x70, 0x74, 0x6b, 0xff, 0x72, 0x77, 0x6c, 0xff, 0x70, 0x75, 0x6b, 0xff, 0x6e, 0x70, 0x68, 0xff, 0x69, 0x69, 0x63, 0xff, 0x65, 0x60, 0x60, 0xff, 0x63, 0x5d, 0x60, 0xff, 0x63, 0x5f, 0x64, 0xff, 0x67, 0x63, 0x69, 0xff, 0x6c, 0x68, 0x70, 0xff, 0x70, 0x6d, 0x74, 0xff, 0x6e, 0x6f, 0x72, 0xff, 0x7b, 0x85, 0x87, 0xff, 0xd8, 0xeb, 0xf6, 0xff, 0xcd, 0xe5, 0xfa, 0xff, 0xad, 0xc6, 0xea, 0xff, 0x8d, 0xa7, 0xcd, 0xff, 0xc9, 0xd9, 0xe9, 0xff, 0xf8, 0xfd, 0xff, 0xff, 0xd8, 0xdb, 0xf0, 0xff, 0xc5, 0xc4, 0xdc, 0xff, 0xc4, 0xc4, 0xce, 0xff, 0xd8, 0xd7, 0xe0, 0xff, 0xf8, 0xf6, 0xf3, 0xff, 0xfa, 0xfb, 0xff, 0xff, 0xdf, 0xdd, 0xff, 0xff, 0xb5, 0xba, 0xeb, 0xff, 0x76, 0x75, 0xd7, 0xff, 0x43, 0x46, 0xa0, 0xff, 0x4a, 0x52, 0x90, 0xff, 0x4f, 0x5b, 0x92, 0xff, 0x46, 0x4f, 0x85, 0xff, 0x31, 0x3b, 0x6c, 0xff, 0x3b, 0x4a, 0x78, 0xff, 0x20, 0x2f, 0x55, 0xff, 0x28, 0x39, 0x4e, 0xff, 0x3c, 0x48, 0x69, 0xff, 0x2e, 0x3f, 0x5e, 0xff, 0x28, 0x31, 0x51, 0xff, 0x1e, 0x29, 0x3f, 0xff, 0x1e, 0x2a, 0x47, 0xff, 0x2b, 0x38, 0x57, 0xff, 0x3a, 0x46, 0x67, 0xff, 0x33, 0x3e, 0x61, 0xff, 0x2d, 0x39, 0x5e, 0xff, 0x2a, 0x36, 0x5b, 0xff, 0x31, 0x3e, 0x64, 0xff, 0x2c, 0x39, 0x61, 0xff, 0x26, 0x33, 0x52, 0xff, 0x2d, 0x3c, 0x67, 0xff, 0x41, 0x52, 0x8b, 0xff, 0x28, 0x3c, 0x74, 0xff, 0x1f, 0x2d, 0x67, 0xff, 0x25, 0x3a, 0x72, 0xff, 0x2b, 0x40, 0x73, 0xff, 0x0c, 0x0e, 0x1f, 0xff, 0x05, 0x04, 0x03, 0xff, 0x02, 0x03, 0x07, 0xff, 0x47, 0x44, 0x42, 0xff, 0xbd, 0xa7, 0x8c, 0xff, 0xbf, 0xa3, 0x87, 0xff, 0xb8, 0xa0, 0x89, 0xff, 0xbc, 0xa4, 0x86, 0xff, 0xc6, 0xaa, 0x8a, 0xff, 0xc0, 0xab, 0x8d, 0xff, 0xbe, 0xac, 0x92, 0xff, 0xbc, 0xa9, 0x92, 0xff, 0xaf, 0xa1, 0x87, 0xff, 0xa6, 0x9e, 0x8a, 0xff, 0x96, 0x96, 0x85, 0xff, 0x8e, 0x8e, 0x7e, 0xe8, 0x8a, 0x89, 0x79, 0x0a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x6c, 0x5a, 0x03, 0x67, 0x6b, 0x59, 0xa1, 0x6c, 0x68, 0x57, 0xff, 0x6b, 0x65, 0x51, 0xff, 0x69, 0x6a, 0x57, 0xff, 0x6c, 0x71, 0x60, 0xff, 0x6e, 0x78, 0x68, 0xff, 0x70, 0x7f, 0x6b, 0xff, 0x72, 0x7f, 0x6c, 0xff, 0x72, 0x7a, 0x6d, 0xff, 0x70, 0x74, 0x66, 0xff, 0x6c, 0x69, 0x61, 0xff, 0x67, 0x5f, 0x5f, 0xff, 0x62, 0x5b, 0x5d, 0xff, 0x63, 0x5d, 0x63, 0xff, 0x65, 0x64, 0x68, 0xff, 0x69, 0x6e, 0x6d, 0xff, 0x6f, 0x72, 0x74, 0xff, 0x69, 0x6e, 0x6c, 0xff, 0xbf, 0xcf, 0xdd, 0xff, 0xca, 0xdd, 0xf9, 0xff, 0xbd, 0xd1, 0xec, 0xff, 0x98, 0xb5, 0xdd, 0xff, 0xd1, 0xe0, 0xee, 0xff, 0xf9, 0xfa, 0xfd, 0xff, 0xe4, 0xe6, 0xf2, 0xff, 0xef, 0xf0, 0xfa, 0xff, 0xfa, 0xf9, 0xfe, 0xff, 0xf4, 0xf6, 0xfb, 0xff, 0xd9, 0xdf, 0xf7, 0xff, 0x9e, 0xa4, 0xe7, 0xff, 0x66, 0x65, 0xda, 0xff, 0x51, 0x53, 0xb4, 0xff, 0x52, 0x59, 0xa0, 0xff, 0x5a, 0x65, 0x98, 0xff, 0x50, 0x5d, 0x8c, 0xff, 0x44, 0x4e, 0x7f, 0xff, 0x2e, 0x37, 0x66, 0xff, 0x2b, 0x3c, 0x6b, 0xff, 0x27, 0x38, 0x65, 0xff, 0x1f, 0x2f, 0x48, 0xff, 0x31, 0x3f, 0x56, 0xff, 0x2f, 0x38, 0x62, 0xff, 0x27, 0x31, 0x50, 0xff, 0x1f, 0x2a, 0x40, 0xff, 0x24, 0x2e, 0x46, 0xff, 0x29, 0x34, 0x55, 0xff, 0x2d, 0x3a, 0x5c, 0xff, 0x2a, 0x36, 0x57, 0xff, 0x23, 0x2d, 0x4e, 0xff, 0x3b, 0x48, 0x6c, 0xff, 0x34, 0x43, 0x6b, 0xff, 0x29, 0x37, 0x5b, 0xff, 0x2a, 0x37, 0x59, 0xff, 0x21, 0x2c, 0x4b, 0xff, 0x32, 0x3f, 0x6b, 0xff, 0x3a, 0x4c, 0x84, 0xff, 0x23, 0x36, 0x6e, 0xff, 0x21, 0x32, 0x6c, 0xff, 0x2d, 0x42, 0x75, 0xff, 0x2a, 0x3c, 0x73, 0xff, 0x04, 0x06, 0x15, 0xff, 0x05, 0x05, 0x03, 0xff, 0x01, 0x04, 0x09, 0xff, 0x74, 0x71, 0x73, 0xff, 0xc0, 0xa4, 0x83, 0xff, 0xbb, 0xa2, 0x87, 0xff, 0xb9, 0x9e, 0x85, 0xff, 0xbb, 0xa3, 0x86, 0xff, 0xc1, 0xa9, 0x89, 0xff, 0xbf, 0xa8, 0x8c, 0xff, 0xbc, 0xa9, 0x8f, 0xff, 0xb6, 0xa7, 0x8e, 0xff, 0xad, 0x9d, 0x89, 0xff, 0xa3, 0x9b, 0x87, 0xff, 0x94, 0x91, 0x82, 0xff, 0x8d, 0x8b, 0x7d, 0xa1, 0x87, 0x86, 0x78, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x70, 0x58, 0x51, 0x70, 0x6e, 0x54, 0xfb, 0x6f, 0x6a, 0x4e, 0xff, 0x6c, 0x6d, 0x53, 0xff, 0x6e, 0x74, 0x5c, 0xff, 0x72, 0x7e, 0x64, 0xff, 0x73, 0x84, 0x6b, 0xff, 0x74, 0x85, 0x6d, 0xff, 0x77, 0x82, 0x6b, 0xff, 0x76, 0x7d, 0x64, 0xff, 0x73, 0x74, 0x61, 0xff, 0x6b, 0x66, 0x5b, 0xff, 0x64, 0x5b, 0x5a, 0xff, 0x61, 0x5c, 0x5e, 0xff, 0x62, 0x62, 0x65, 0xff, 0x68, 0x6e, 0x6d, 0xff, 0x6d, 0x76, 0x75, 0xff, 0x68, 0x75, 0x70, 0xff, 0x9c, 0xae, 0xb0, 0xff, 0xd0, 0xe2, 0xf4, 0xff, 0xc4, 0xd6, 0xec, 0xff, 0xa6, 0xbf, 0xe0, 0xff, 0xd8, 0xe8, 0xf6, 0xff, 0xfb, 0xfd, 0xfe, 0xff, 0xdb, 0xe3, 0xf5, 0xff, 0xc9, 0xd2, 0xf6, 0xff, 0xc1, 0xca, 0xf0, 0xff, 0xa7, 0xb0, 0xed, 0xff, 0x95, 0x9b, 0xe6, 0xff, 0x86, 0x92, 0xcf, 0xff, 0x71, 0x7e, 0xb9, 0xff, 0x63, 0x6e, 0x9e, 0xff, 0x51, 0x5a, 0x8a, 0xff, 0x43, 0x4b, 0x79, 0xff, 0x31, 0x3c, 0x6a, 0xff, 0x2b, 0x37, 0x67, 0xff, 0x2c, 0x3a, 0x65, 0xff, 0x26, 0x36, 0x5e, 0xff, 0x22, 0x33, 0x54, 0xff, 0x25, 0x33, 0x4a, 0xff, 0x24, 0x2f, 0x47, 0xff, 0x3a, 0x40, 0x69, 0xff, 0x19, 0x23, 0x41, 0xff, 0x18, 0x21, 0x37, 0xff, 0x1b, 0x25, 0x3c, 0xff, 0x21, 0x2c, 0x4c, 0xff, 0x29, 0x38, 0x5c, 0xff, 0x2d, 0x3a, 0x5e, 0xff, 0x3f, 0x4a, 0x6e, 0xff, 0x2c, 0x38, 0x5d, 0xff, 0x2b, 0x38, 0x5f, 0xff, 0x2b, 0x37, 0x5b, 0xff, 0x26, 0x32, 0x52, 0xff, 0x1e, 0x2e, 0x4d, 0xff, 0x27, 0x39, 0x63, 0xff, 0x35, 0x48, 0x7d, 0xff, 0x1f, 0x34, 0x68, 0xff, 0x1d, 0x2f, 0x68, 0xff, 0x2c, 0x42, 0x74, 0xff, 0x2e, 0x41, 0x77, 0xff, 0x06, 0x0a, 0x17, 0xff, 0x03, 0x04, 0x06, 0xff, 0x17, 0x1f, 0x26, 0xff, 0x95, 0x90, 0x8d, 0xff, 0xbb, 0xa0, 0x87, 0xff, 0xb6, 0x9e, 0x86, 0xff, 0xb5, 0x9b, 0x81, 0xff, 0xba, 0xa0, 0x83, 0xff, 0xbc, 0xa3, 0x88, 0xff, 0xba, 0xa2, 0x89, 0xff, 0xb9, 0xa3, 0x8b, 0xff, 0xb8, 0xa4, 0x8d, 0xff, 0xae, 0x9b, 0x87, 0xff, 0xa0, 0x96, 0x84, 0xff, 0x95, 0x90, 0x81, 0xfb, 0x8f, 0x8b, 0x7e, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x78, 0x57, 0x07, 0x79, 0x71, 0x4f, 0xe4, 0x78, 0x6e, 0x4a, 0xff, 0x74, 0x71, 0x4e, 0xff, 0x79, 0x7b, 0x58, 0xff, 0x7c, 0x84, 0x62, 0xff, 0x79, 0x89, 0x68, 0xff, 0x78, 0x88, 0x6a, 0xff, 0x7b, 0x86, 0x67, 0xff, 0x79, 0x80, 0x62, 0xff, 0x77, 0x79, 0x60, 0xff, 0x72, 0x6d, 0x5c, 0xff, 0x69, 0x5e, 0x57, 0xff, 0x64, 0x5c, 0x5c, 0xff, 0x63, 0x62, 0x64, 0xff, 0x6a, 0x71, 0x6d, 0xff, 0x70, 0x7a, 0x77, 0xff, 0x72, 0x7f, 0x77, 0xff, 0x73, 0x82, 0x76, 0xff, 0xcc, 0xdb, 0xe8, 0xff, 0xc9, 0xd9, 0xec, 0xff, 0xb4, 0xca, 0xe5, 0xff, 0xd6, 0xe9, 0xf8, 0xff, 0xf7, 0xfe, 0xfb, 0xff, 0xe7, 0xf1, 0xfd, 0xff, 0xc4, 0xd4, 0xf1, 0xff, 0x9c, 0xac, 0xd1, 0xff, 0x92, 0xa4, 0xbf, 0xff, 0x77, 0x81, 0xab, 0xff, 0x66, 0x6f, 0x95, 0xff, 0x56, 0x5c, 0x87, 0xff, 0x43, 0x4d, 0x77, 0xff, 0x3c, 0x45, 0x72, 0xff, 0x2d, 0x34, 0x65, 0xff, 0x2c, 0x36, 0x67, 0xff, 0x2d, 0x3d, 0x6a, 0xff, 0x28, 0x3a, 0x61, 0xff, 0x2e, 0x3d, 0x5f, 0xff, 0x2f, 0x3b, 0x59, 0xff, 0x23, 0x2d, 0x44, 0xff, 0x19, 0x20, 0x36, 0xff, 0x18, 0x1e, 0x3d, 0xff, 0x1d, 0x22, 0x40, 0xff, 0x17, 0x1d, 0x32, 0xff, 0x19, 0x24, 0x39, 0xff, 0x20, 0x2f, 0x4d, 0xff, 0x2e, 0x3e, 0x63, 0xff, 0x28, 0x36, 0x5a, 0xff, 0x2b, 0x38, 0x5b, 0xff, 0x33, 0x40, 0x65, 0xff, 0x28, 0x34, 0x59, 0xff, 0x27, 0x33, 0x55, 0xff, 0x19, 0x23, 0x42, 0xff, 0x23, 0x33, 0x56, 0xff, 0x37, 0x4a, 0x79, 0xff, 0x2c, 0x40, 0x77, 0xff, 0x1e, 0x30, 0x66, 0xff, 0x1c, 0x31, 0x66, 0xff, 0x2d, 0x45, 0x76, 0xff, 0x2d, 0x43, 0x76, 0xff, 0x05, 0x0b, 0x16, 0xff, 0x02, 0x03, 0x09, 0xff, 0x47, 0x4e, 0x58, 0xff, 0xaa, 0xa5, 0xa3, 0xff, 0xb6, 0xa6, 0xa0, 0xff, 0xb2, 0xa0, 0x96, 0xff, 0xab, 0x9a, 0x88, 0xff, 0xaf, 0x9b, 0x88, 0xff, 0xb7, 0xa2, 0x91, 0xff, 0xb5, 0xa0, 0x90, 0xff, 0xb5, 0xa1, 0x91, 0xff, 0xaf, 0x9e, 0x8c, 0xff, 0xa6, 0x96, 0x84, 0xff, 0x9b, 0x93, 0x82, 0xff, 0x90, 0x8f, 0x80, 0xe4, 0x8a, 0x85, 0x7c, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x71, 0x49, 0x64, 0x7b, 0x6e, 0x46, 0xff, 0x7a, 0x71, 0x4c, 0xff, 0x7d, 0x7a, 0x53, 0xff, 0x7f, 0x84, 0x5f, 0xff, 0x7b, 0x87, 0x65, 0xff, 0x7b, 0x86, 0x66, 0xff, 0x7d, 0x84, 0x65, 0xff, 0x7a, 0x7f, 0x61, 0xff, 0x78, 0x78, 0x5f, 0xff, 0x72, 0x6e, 0x5b, 0xff, 0x6c, 0x61, 0x58, 0xff, 0x67, 0x5f, 0x5d, 0xff, 0x66, 0x65, 0x65, 0xff, 0x6d, 0x73, 0x6f, 0xff, 0x73, 0x7b, 0x76, 0xff, 0x76, 0x82, 0x77, 0xff, 0x77, 0x82, 0x71, 0xff, 0x96, 0xa4, 0xa3, 0xff, 0xc6, 0xd6, 0xe3, 0xff, 0xb1, 0xc6, 0xe2, 0xff, 0xd6, 0xe3, 0xf1, 0xff, 0xf1, 0xfc, 0xfa, 0xff, 0xdf, 0xec, 0xf7, 0xff, 0xc0, 0xcf, 0xe8, 0xff, 0x90, 0xa5, 0xc6, 0xff, 0x71, 0x84, 0xaf, 0xff, 0x5e, 0x6e, 0x94, 0xff, 0x4d, 0x5b, 0x7d, 0xff, 0x3b, 0x47, 0x71, 0xff, 0x35, 0x43, 0x6f, 0xff, 0x3e, 0x4c, 0x79, 0xff, 0x2f, 0x3c, 0x6d, 0xff, 0x2d, 0x39, 0x6a, 0xff, 0x22, 0x30, 0x5a, 0xff, 0x35, 0x45, 0x66, 0xff, 0x49, 0x59, 0x76, 0xff, 0x38, 0x43, 0x5d, 0xff, 0x1f, 0x28, 0x3f, 0xff, 0x1d, 0x22, 0x39, 0xff, 0x15, 0x18, 0x32, 0xff, 0x17, 0x1b, 0x34, 0xff, 0x1b, 0x23, 0x37, 0xff, 0x1e, 0x29, 0x40, 0xff, 0x21, 0x2f, 0x4f, 0xff, 0x2a, 0x3a, 0x60, 0xff, 0x31, 0x41, 0x65, 0xff, 0x2a, 0x39, 0x5d, 0xff, 0x22, 0x30, 0x55, 0xff, 0x31, 0x3c, 0x60, 0xff, 0x25, 0x2f, 0x51, 0xff, 0x21, 0x2c, 0x4b, 0xff, 0x28, 0x39, 0x60, 0xff, 0x35, 0x49, 0x79, 0xff, 0x26, 0x39, 0x71, 0xff, 0x1c, 0x2d, 0x66, 0xff, 0x1c, 0x33, 0x68, 0xff, 0x2f, 0x46, 0x78, 0xff, 0x36, 0x4c, 0x7d, 0xff, 0x0a, 0x10, 0x20, 0xff, 0x07, 0x0e, 0x14, 0xff, 0x76, 0x7e, 0x87, 0xff, 0xa5, 0x9e, 0xa1, 0xff, 0x9f, 0x9b, 0x98, 0xff, 0x9b, 0x94, 0x90, 0xff, 0x9f, 0x9a, 0x94, 0xff, 0xa2, 0x98, 0x8e, 0xff, 0xa7, 0x98, 0x8b, 0xff, 0xa4, 0x96, 0x89, 0xff, 0xa4, 0x97, 0x8b, 0xff, 0xa4, 0x96, 0x8c, 0xff, 0x99, 0x91, 0x7f, 0xff, 0x92, 0x8f, 0x80, 0xff, 0x8d, 0x8e, 0x81, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x6d, 0x42, 0x13, 0x7d, 0x6b, 0x42, 0xe0, 0x7f, 0x70, 0x4c, 0xff, 0x7f, 0x79, 0x56, 0xff, 0x7f, 0x82, 0x64, 0xff, 0x7b, 0x85, 0x69, 0xff, 0x7d, 0x85, 0x68, 0xff, 0x7e, 0x84, 0x65, 0xff, 0x7d, 0x7f, 0x60, 0xff, 0x7a, 0x76, 0x5d, 0xff, 0x76, 0x6c, 0x5b, 0xff, 0x6e, 0x62, 0x5a, 0xff, 0x68, 0x5f, 0x5d, 0xff, 0x67, 0x66, 0x65, 0xff, 0x6f, 0x71, 0x6f, 0xff, 0x76, 0x7e, 0x77, 0xff, 0x7a, 0x86, 0x7a, 0xff, 0x80, 0x89, 0x77, 0xff, 0x7c, 0x85, 0x76, 0xff, 0xc3, 0xcd, 0xcc, 0xff, 0xba, 0xca, 0xe4, 0xff, 0xd2, 0xde, 0xee, 0xff, 0xe9, 0xf8, 0xfc, 0xff, 0xe0, 0xeb, 0xfb, 0xff, 0xc0, 0xce, 0xea, 0xff, 0x9d, 0xaf, 0xd6, 0xff, 0x6c, 0x7c, 0xae, 0xff, 0x61, 0x6c, 0x9c, 0xff, 0x6b, 0x76, 0xa3, 0xff, 0x64, 0x6f, 0xa0, 0xff, 0x64, 0x70, 0xa4, 0xff, 0x49, 0x56, 0x8a, 0xff, 0x3b, 0x49, 0x7e, 0xff, 0x5e, 0x6c, 0x90, 0xff, 0x9b, 0xa8, 0xc5, 0xff, 0xa2, 0xae, 0xcf, 0xff, 0x7a, 0x87, 0xa7, 0xff, 0x51, 0x5b, 0x75, 0xff, 0x1c, 0x22, 0x3b, 0xff, 0x19, 0x1d, 0x36, 0xff, 0x13, 0x15, 0x2c, 0xff, 0x16, 0x1a, 0x2e, 0xff, 0x15, 0x1e, 0x31, 0xff, 0x1a, 0x26, 0x41, 0xff, 0x1f, 0x2c, 0x4e, 0xff, 0x2c, 0x39, 0x5e, 0xff, 0x29, 0x35, 0x5a, 0xff, 0x2c, 0x39, 0x5e, 0xff, 0x30, 0x3d, 0x63, 0xff, 0x2f, 0x3b, 0x5e, 0xff, 0x21, 0x2b, 0x4b, 0xff, 0x22, 0x2e, 0x51, 0xff, 0x2f, 0x41, 0x6b, 0xff, 0x2b, 0x3e, 0x70, 0xff, 0x1d, 0x31, 0x67, 0xff, 0x1b, 0x32, 0x69, 0xff, 0x1d, 0x36, 0x6b, 0xff, 0x32, 0x47, 0x7c, 0xff, 0x40, 0x55, 0x86, 0xff, 0x0f, 0x16, 0x2a, 0xff, 0x2a, 0x32, 0x35, 0xff, 0x92, 0x95, 0x99, 0xff, 0xaf, 0xa2, 0xa2, 0xff, 0xad, 0xa5, 0x9c, 0xff, 0xa7, 0xa0, 0x9c, 0xff, 0xa9, 0xa4, 0xa3, 0xff, 0xad, 0xa2, 0x99, 0xff, 0xb1, 0xa1, 0x92, 0xff, 0xae, 0x9f, 0x92, 0xff, 0xaa, 0x9c, 0x90, 0xff, 0xa8, 0x9c, 0x91, 0xff, 0x9e, 0x94, 0x83, 0xff, 0x98, 0x92, 0x81, 0xe0, 0x94, 0x90, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x6a, 0x42, 0x84, 0x82, 0x6c, 0x4a, 0xff, 0x7d, 0x70, 0x53, 0xff, 0x77, 0x76, 0x5d, 0xff, 0x74, 0x79, 0x63, 0xff, 0x77, 0x7b, 0x64, 0xff, 0x7c, 0x7c, 0x60, 0xff, 0x7d, 0x7a, 0x5d, 0xff, 0x7f, 0x73, 0x5d, 0xff, 0x7b, 0x69, 0x5a, 0xff, 0x70, 0x61, 0x5b, 0xff, 0x6b, 0x61, 0x60, 0xff, 0x6c, 0x67, 0x68, 0xff, 0x71, 0x71, 0x70, 0xff, 0x77, 0x7c, 0x78, 0xff, 0x7f, 0x87, 0x7c, 0xff, 0x87, 0x8d, 0x7f, 0xff, 0x8b, 0x8d, 0x7a, 0xff, 0x95, 0x94, 0x82, 0xff, 0xc3, 0xcd, 0xd4, 0xff, 0xbc, 0xcf, 0xe2, 0xff, 0xdd, 0xea, 0xf8, 0xff, 0xd4, 0xe0, 0xf8, 0xff, 0xd2, 0xdd, 0xf9, 0xff, 0xbd, 0xc9, 0xe7, 0xff, 0xba, 0xc4, 0xde, 0xff, 0xcf, 0xd8, 0xef, 0xff, 0xd3, 0xdf, 0xfa, 0xff, 0xc0, 0xd0, 0xf0, 0xff, 0xb2, 0xc2, 0xeb, 0xff, 0xb6, 0xc4, 0xe9, 0xff, 0xb9, 0xc6, 0xe9, 0xff, 0xd4, 0xe4, 0xf8, 0xff, 0xbc, 0xcb, 0xea, 0xff, 0x81, 0x8a, 0xae, 0xff, 0x44, 0x4c, 0x6f, 0xff, 0x3c, 0x42, 0x5f, 0xff, 0x1d, 0x21, 0x3b, 0xff, 0x12, 0x17, 0x2c, 0xff, 0x11, 0x17, 0x27, 0xff, 0x15, 0x1a, 0x2d, 0xff, 0x1e, 0x25, 0x3a, 0xff, 0x1a, 0x25, 0x42, 0xff, 0x25, 0x30, 0x56, 0xff, 0x2f, 0x3a, 0x62, 0xff, 0x29, 0x35, 0x5c, 0xff, 0x31, 0x3c, 0x64, 0xff, 0x2a, 0x36, 0x5d, 0xff, 0x2d, 0x39, 0x5b, 0xff, 0x1e, 0x29, 0x4c, 0xff, 0x25, 0x33, 0x59, 0xff, 0x2d, 0x40, 0x6d, 0xff, 0x25, 0x3a, 0x6d, 0xff, 0x1e, 0x34, 0x6b, 0xff, 0x20, 0x38, 0x6c, 0xff, 0x22, 0x3a, 0x6f, 0xff, 0x32, 0x47, 0x7b, 0xff, 0x46, 0x5b, 0x8c, 0xff, 0x14, 0x1a, 0x2d, 0xff, 0x52, 0x57, 0x5b, 0xff, 0xaf, 0xa9, 0xa9, 0xff, 0xb6, 0xaa, 0xa8, 0xff, 0xb8, 0xa9, 0xa5, 0xff, 0xb8, 0xab, 0xa6, 0xff, 0xb9, 0xaf, 0xad, 0xff, 0xbd, 0xad, 0xa2, 0xff, 0xbf, 0xac, 0x9e, 0xff, 0xbe, 0xac, 0x9f, 0xff, 0xba, 0xa8, 0x9b, 0xff, 0xb8, 0xa8, 0x9a, 0xff, 0xb3, 0xa4, 0x90, 0xff, 0xae, 0xa0, 0x8d, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x6d, 0x45, 0x0c, 0x83, 0x6e, 0x4c, 0xdd, 0x82, 0x70, 0x53, 0xff, 0x7c, 0x71, 0x58, 0xff, 0x74, 0x70, 0x5a, 0xff, 0x75, 0x71, 0x59, 0xff, 0x81, 0x74, 0x5c, 0xff, 0x7f, 0x73, 0x59, 0xff, 0x7d, 0x70, 0x5b, 0xff, 0x79, 0x69, 0x5b, 0xff, 0x73, 0x62, 0x5e, 0xff, 0x6f, 0x62, 0x64, 0xff, 0x6e, 0x67, 0x6a, 0xff, 0x73, 0x72, 0x72, 0xff, 0x7c, 0x7f, 0x7c, 0xff, 0x84, 0x89, 0x82, 0xff, 0x8d, 0x8f, 0x83, 0xff, 0x94, 0x94, 0x80, 0xff, 0x95, 0x8e, 0x6f, 0xff, 0xaf, 0xb2, 0xac, 0xff, 0xc9, 0xd7, 0xe8, 0xff, 0xd5, 0xe5, 0xf4, 0xff, 0xcf, 0xdf, 0xf5, 0xff, 0xca, 0xd9, 0xf1, 0xff, 0xde, 0xea, 0xf6, 0xff, 0xf2, 0xf7, 0xfa, 0xff, 0xe4, 0xeb, 0xf6, 0xff, 0xdb, 0xe5, 0xf9, 0xff, 0xcc, 0xdc, 0xf8, 0xff, 0xb7, 0xc8, 0xe9, 0xff, 0xc0, 0xcc, 0xee, 0xff, 0xc1, 0xc9, 0xed, 0xff, 0xb5, 0xbf, 0xe8, 0xff, 0x70, 0x78, 0xa5, 0xff, 0x4b, 0x4f, 0x7c, 0xff, 0x31, 0x36, 0x53, 0xff, 0x19, 0x1d, 0x31, 0xff, 0x15, 0x17, 0x2d, 0xff, 0x14, 0x18, 0x2e, 0xff, 0x22, 0x27, 0x3b, 0xff, 0x17, 0x1c, 0x2e, 0xff, 0x1b, 0x23, 0x37, 0xff, 0x23, 0x2d, 0x4c, 0xff, 0x2c, 0x38, 0x62, 0xff, 0x33, 0x45, 0x6f, 0xff, 0x32, 0x42, 0x6d, 0xff, 0x2e, 0x3f, 0x6a, 0xff, 0x22, 0x31, 0x58, 0xff, 0x30, 0x3b, 0x5e, 0xff, 0x1e, 0x2b, 0x4e, 0xff, 0x25, 0x35, 0x5d, 0xff, 0x27, 0x3a, 0x6c, 0xff, 0x27, 0x3c, 0x72, 0xff, 0x23, 0x3a, 0x71, 0xff, 0x21, 0x3c, 0x6f, 0xff, 0x25, 0x3d, 0x72, 0xff, 0x31, 0x46, 0x7a, 0xff, 0x4e, 0x63, 0x93, 0xff, 0x1a, 0x23, 0x36, 0xff, 0x84, 0x85, 0x8a, 0xff, 0xc1, 0xac, 0xab, 0xff, 0xb3, 0xad, 0xa6, 0xff, 0xbb, 0xad, 0xa7, 0xff, 0xba, 0xaf, 0xa8, 0xff, 0xbc, 0xb2, 0xb0, 0xff, 0xbe, 0xae, 0xa2, 0xff, 0xc0, 0xad, 0x9f, 0xff, 0xbb, 0xaa, 0x9c, 0xff, 0xb5, 0xa7, 0x96, 0xff, 0xb3, 0xa6, 0x95, 0xff, 0xb2, 0xa3, 0x8c, 0xdd, 0xad, 0xa0, 0x8c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x71, 0x54, 0x54, 0x88, 0x73, 0x57, 0xfa, 0x82, 0x72, 0x5d, 0xff, 0x75, 0x6f, 0x5f, 0xff, 0x75, 0x6e, 0x5a, 0xff, 0x7d, 0x71, 0x56, 0xff, 0x7e, 0x70, 0x59, 0xff, 0x7c, 0x6d, 0x5b, 0xff, 0x73, 0x6a, 0x59, 0xff, 0x74, 0x64, 0x5d, 0xff, 0x6f, 0x63, 0x63, 0xff, 0x6d, 0x69, 0x6a, 0xff, 0x75, 0x74, 0x73, 0xff, 0x82, 0x82, 0x7d, 0xff, 0x8f, 0x8e, 0x87, 0xff, 0x95, 0x96, 0x88, 0xff, 0x96, 0x98, 0x86, 0xff, 0xa7, 0x95, 0x74, 0xff, 0x9a, 0x93, 0x7f, 0xff, 0xc7, 0xcf, 0xdf, 0xff, 0xdb, 0xe3, 0xf5, 0xff, 0xd5, 0xdf, 0xf0, 0xff, 0xe1, 0xe9, 0xf6, 0xff, 0xf3, 0xf4, 0xfc, 0xff, 0xe0, 0xe6, 0xf4, 0xff, 0xd9, 0xe0, 0xf2, 0xff, 0xce, 0xd8, 0xf1, 0xff, 0xc1, 0xcd, 0xed, 0xff, 0xac, 0xba, 0xe4, 0xff, 0xad, 0xb8, 0xe5, 0xff, 0x93, 0x9c, 0xce, 0xff, 0x5b, 0x62, 0x90, 0xff, 0x27, 0x2d, 0x56, 0xff, 0x2a, 0x2e, 0x4e, 0xff, 0x1f, 0x22, 0x3d, 0xff, 0x1d, 0x21, 0x3a, 0xff, 0x25, 0x28, 0x3f, 0xff, 0x1b, 0x1e, 0x36, 0xff, 0x1c, 0x21, 0x3d, 0xff, 0x22, 0x2a, 0x41, 0xff, 0x26, 0x31, 0x4e, 0xff, 0x21, 0x2c, 0x4d, 0xff, 0x28, 0x32, 0x53, 0xff, 0x2c, 0x3e, 0x65, 0xff, 0x2f, 0x3f, 0x65, 0xff, 0x2d, 0x3b, 0x62, 0xff, 0x2c, 0x37, 0x5b, 0xff, 0x28, 0x33, 0x54, 0xff, 0x28, 0x36, 0x5d, 0xff, 0x2a, 0x3b, 0x66, 0xff, 0x2b, 0x40, 0x71, 0xff, 0x27, 0x3c, 0x71, 0xff, 0x25, 0x3b, 0x72, 0xff, 0x27, 0x3f, 0x73, 0xff, 0x29, 0x3f, 0x74, 0xff, 0x2c, 0x45, 0x7b, 0xff, 0x48, 0x60, 0x93, 0xff, 0x4e, 0x50, 0x5e, 0xff, 0xb9, 0xac, 0xac, 0xff, 0xba, 0xac, 0xab, 0xff, 0xb7, 0xab, 0xa7, 0xff, 0xba, 0xad, 0xa7, 0xff, 0xba, 0xad, 0xa7, 0xff, 0xc0, 0xb4, 0xac, 0xff, 0xbb, 0xaf, 0xa4, 0xff, 0xbc, 0xad, 0xa2, 0xff, 0xbb, 0xac, 0xa0, 0xff, 0xb7, 0xa8, 0x98, 0xff, 0xb0, 0xa2, 0x8f, 0xfa, 0xab, 0x9e, 0x8a, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x70, 0x56, 0x05, 0x84, 0x72, 0x58, 0xc0, 0x7e, 0x74, 0x62, 0xff, 0x74, 0x74, 0x68, 0xff, 0x75, 0x73, 0x64, 0xff, 0x7c, 0x71, 0x58, 0xff, 0x7a, 0x6c, 0x56, 0xff, 0x7d, 0x6e, 0x5c, 0xff, 0x78, 0x6c, 0x5d, 0xff, 0x76, 0x66, 0x5d, 0xff, 0x71, 0x65, 0x64, 0xff, 0x6d, 0x68, 0x6a, 0xff, 0x75, 0x76, 0x76, 0xff, 0x85, 0x85, 0x84, 0xff, 0x90, 0x8f, 0x8b, 0xff, 0x96, 0x96, 0x8b, 0xff, 0x97, 0x9b, 0x8a, 0xff, 0xa7, 0x9a, 0x7d, 0xff, 0x9b, 0x94, 0x7a, 0xff, 0xd1, 0xda, 0xe6, 0xff, 0xe7, 0xec, 0xfd, 0xff, 0xe0, 0xe9, 0xf8, 0xff, 0xe2, 0xec, 0xfe, 0xff, 0xd9, 0xdf, 0xf5, 0xff, 0xc5, 0xd0, 0xef, 0xff, 0xbd, 0xca, 0xe9, 0xff, 0xb1, 0xbe, 0xe4, 0xff, 0x8f, 0x9e, 0xc5, 0xff, 0x6b, 0x79, 0xa8, 0xff, 0x49, 0x53, 0x80, 0xff, 0x3d, 0x43, 0x6e, 0xff, 0x30, 0x34, 0x5e, 0xff, 0x29, 0x2e, 0x51, 0xff, 0x21, 0x25, 0x41, 0xff, 0x1b, 0x1e, 0x38, 0xff, 0x1d, 0x20, 0x3f, 0xff, 0x22, 0x26, 0x40, 0xff, 0x24, 0x29, 0x41, 0xff, 0x24, 0x2d, 0x48, 0xff, 0x1f, 0x28, 0x43, 0xff, 0x2d, 0x38, 0x5c, 0xff, 0x24, 0x33, 0x5a, 0xff, 0x2b, 0x38, 0x61, 0xff, 0x31, 0x3e, 0x68, 0xff, 0x2d, 0x39, 0x63, 0xff, 0x2c, 0x35, 0x60, 0xff, 0x30, 0x3a, 0x60, 0xff, 0x1c, 0x26, 0x48, 0xff, 0x25, 0x34, 0x5c, 0xff, 0x24, 0x36, 0x62, 0xff, 0x29, 0x3e, 0x6e, 0xff, 0x24, 0x39, 0x6e, 0xff, 0x28, 0x3e, 0x75, 0xff, 0x2a, 0x42, 0x76, 0xff, 0x2a, 0x41, 0x77, 0xff, 0x2a, 0x45, 0x7a, 0xff, 0x43, 0x57, 0x87, 0xff, 0x8c, 0x87, 0x8c, 0xff, 0xbb, 0xa6, 0x92, 0xff, 0xba, 0xab, 0x9d, 0xff, 0xb3, 0xa9, 0x9d, 0xff, 0xb5, 0xaa, 0x9e, 0xff, 0xb7, 0xaa, 0x9d, 0xff, 0xb6, 0xa9, 0x9c, 0xff, 0xbd, 0xb0, 0xa2, 0xff, 0xba, 0xaf, 0xa1, 0xff, 0xb8, 0xad, 0x9d, 0xff, 0xb1, 0xa7, 0x92, 0xff, 0xac, 0xa2, 0x89, 0xc0, 0xaa, 0x9c, 0x87, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x71, 0x5d, 0x20, 0x77, 0x71, 0x65, 0xe8, 0x71, 0x73, 0x6b, 0xff, 0x75, 0x77, 0x6d, 0xff, 0x80, 0x75, 0x64, 0xff, 0x7e, 0x70, 0x59, 0xff, 0x7f, 0x70, 0x5d, 0xff, 0x7d, 0x6d, 0x60, 0xff, 0x7b, 0x69, 0x5e, 0xff, 0x74, 0x67, 0x65, 0xff, 0x6b, 0x68, 0x6c, 0xff, 0x72, 0x75, 0x78, 0xff, 0x81, 0x84, 0x84, 0xff, 0x8b, 0x8d, 0x8c, 0xff, 0x93, 0x96, 0x8d, 0xff, 0x9a, 0x9e, 0x8d, 0xff, 0xa5, 0x9e, 0x89, 0xff, 0x9f, 0x93, 0x73, 0xff, 0xcc, 0xd3, 0xd8, 0xff, 0xd6, 0xdc, 0xed, 0xff, 0xd7, 0xe2, 0xf5, 0xff, 0xc3, 0xd1, 0xf0, 0xff, 0xaa, 0xb7, 0xdd, 0xff, 0x98, 0xa7, 0xd2, 0xff, 0x8a, 0x98, 0xc4, 0xff, 0x7f, 0x8e, 0xbb, 0xff, 0x5f, 0x6e, 0x9c, 0xff, 0x4f, 0x5d, 0x88, 0xff, 0x46, 0x4e, 0x77, 0xff, 0x34, 0x39, 0x5e, 0xff, 0x39, 0x3b, 0x5e, 0xff, 0x26, 0x29, 0x48, 0xff, 0x23, 0x27, 0x41, 0xff, 0x25, 0x29, 0x41, 0xff, 0x30, 0x34, 0x50, 0xff, 0x23, 0x26, 0x40, 0xff, 0x20, 0x25, 0x40, 0xff, 0x2f, 0x3a, 0x5a, 0xff, 0x2b, 0x37, 0x5a, 0xff, 0x2c, 0x39, 0x5c, 0xff, 0x35, 0x43, 0x6c, 0xff, 0x33, 0x42, 0x6f, 0xff, 0x37, 0x43, 0x6b, 0xff, 0x2f, 0x38, 0x62, 0xff, 0x35, 0x3d, 0x68, 0xff, 0x34, 0x3d, 0x64, 0xff, 0x26, 0x32, 0x57, 0xff, 0x29, 0x38, 0x64, 0xff, 0x2a, 0x3c, 0x6b, 0xff, 0x26, 0x3c, 0x6d, 0xff, 0x28, 0x40, 0x74, 0xff, 0x2a, 0x42, 0x78, 0xff, 0x28, 0x43, 0x76, 0xff, 0x29, 0x43, 0x78, 0xff, 0x29, 0x46, 0x7b, 0xff, 0x3b, 0x50, 0x80, 0xff, 0x98, 0x8e, 0x93, 0xff, 0xca, 0xa4, 0x88, 0xff, 0xb6, 0x9a, 0x86, 0xff, 0xaf, 0x98, 0x8a, 0xff, 0xaf, 0x9b, 0x8f, 0xff, 0xb3, 0x9d, 0x93, 0xff, 0xb7, 0xa2, 0x97, 0xff, 0xbb, 0xa5, 0x9b, 0xff, 0xb8, 0xa5, 0x9b, 0xff, 0xb3, 0xa0, 0x94, 0xff, 0xb1, 0x9e, 0x8f, 0xe8, 0xb0, 0x9d, 0x87, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6c, 0x67, 0x62, 0x6e, 0x6d, 0x6b, 0xfb, 0x72, 0x73, 0x6e, 0xff, 0x81, 0x77, 0x69, 0xff, 0x81, 0x73, 0x5e, 0xff, 0x80, 0x71, 0x5c, 0xff, 0x7f, 0x6e, 0x63, 0xff, 0x7d, 0x6a, 0x5e, 0xff, 0x72, 0x67, 0x64, 0xff, 0x6a, 0x67, 0x6c, 0xff, 0x6e, 0x72, 0x76, 0xff, 0x7f, 0x83, 0x84, 0xff, 0x8a, 0x8d, 0x8e, 0xff, 0x93, 0x98, 0x90, 0xff, 0x9e, 0x9e, 0x8d, 0xff, 0xa3, 0x9b, 0x8f, 0xff, 0xac, 0x9b, 0x75, 0xff, 0xc2, 0xc3, 0xc2, 0xff, 0xc1, 0xcb, 0xe5, 0xff, 0xb6, 0xc3, 0xde, 0xff, 0xa0, 0xb1, 0xd5, 0xff, 0x7e, 0x8c, 0xba, 0xff, 0x77, 0x83, 0xa9, 0xff, 0x73, 0x7d, 0xa5, 0xff, 0x66, 0x6f, 0x96, 0xff, 0x5f, 0x67, 0x90, 0xff, 0x5a, 0x61, 0x88, 0xff, 0x40, 0x48, 0x6e, 0xff, 0x40, 0x48, 0x6e, 0xff, 0x3e, 0x42, 0x63, 0xff, 0x32, 0x34, 0x4f, 0xff, 0x28, 0x2c, 0x43, 0xff, 0x32, 0x36, 0x4f, 0xff, 0x25, 0x2a, 0x3e, 0xff, 0x2e, 0x32, 0x48, 0xff, 0x30, 0x36, 0x54, 0xff, 0x29, 0x32, 0x5c, 0xff, 0x2e, 0x3e, 0x68, 0xff, 0x35, 0x3e, 0x61, 0xff, 0x3b, 0x42, 0x65, 0xff, 0x31, 0x3c, 0x62, 0xff, 0x2f, 0x3d, 0x60, 0xff, 0x32, 0x3d, 0x62, 0xff, 0x34, 0x3d, 0x62, 0xff, 0x2f, 0x39, 0x5e, 0xff, 0x27, 0x32, 0x5b, 0xff, 0x2b, 0x3a, 0x68, 0xff, 0x2b, 0x3e, 0x70, 0xff, 0x2b, 0x43, 0x74, 0xff, 0x2a, 0x42, 0x77, 0xff, 0x28, 0x41, 0x78, 0xff, 0x27, 0x43, 0x76, 0xff, 0x27, 0x41, 0x75, 0xff, 0x25, 0x44, 0x7b, 0xff, 0x31, 0x4a, 0x83, 0xff, 0x86, 0x85, 0x94, 0xff, 0xad, 0x94, 0x81, 0xff, 0x9a, 0x88, 0x7b, 0xff, 0x94, 0x85, 0x7a, 0xff, 0x96, 0x8c, 0x84, 0xff, 0x98, 0x91, 0x8b, 0xff, 0x9d, 0x95, 0x92, 0xff, 0xa0, 0x98, 0x96, 0xff, 0xa1, 0x98, 0x97, 0xff, 0xa0, 0x98, 0x94, 0xfb, 0xa0, 0x98, 0x8f, 0x63, 0xa6, 0x99, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x6b, 0x5e, 0x03, 0x66, 0x6a, 0x63, 0x92, 0x6a, 0x6e, 0x65, 0xff, 0x7b, 0x75, 0x64, 0xff, 0x7e, 0x73, 0x5f, 0xff, 0x7e, 0x70, 0x5d, 0xff, 0x7c, 0x6f, 0x5f, 0xff, 0x7b, 0x6a, 0x5e, 0xff, 0x72, 0x63, 0x5f, 0xff, 0x66, 0x61, 0x65, 0xff, 0x69, 0x6a, 0x72, 0xff, 0x75, 0x77, 0x7c, 0xff, 0x7d, 0x82, 0x82, 0xff, 0x89, 0x8b, 0x88, 0xff, 0x94, 0x92, 0x89, 0xff, 0xa2, 0x97, 0x81, 0xff, 0xa7, 0x95, 0x77, 0xff, 0xa4, 0x98, 0x7c, 0xff, 0xce, 0xd4, 0xda, 0xff, 0x9e, 0xac, 0xc1, 0xff, 0x8d, 0x9d, 0xbb, 0xff, 0x6b, 0x75, 0x99, 0xff, 0x64, 0x73, 0x97, 0xff, 0x57, 0x5e, 0x7d, 0xff, 0x5a, 0x60, 0x80, 0xff, 0x62, 0x6a, 0x8c, 0xff, 0x4e, 0x57, 0x75, 0xff, 0x52, 0x5a, 0x79, 0xff, 0x4c, 0x55, 0x74, 0xff, 0x44, 0x4a, 0x69, 0xff, 0x3b, 0x3e, 0x58, 0xff, 0x34, 0x3b, 0x50, 0xff, 0x2b, 0x31, 0x48, 0xff, 0x45, 0x4b, 0x69, 0xff, 0x35, 0x3d, 0x5e, 0xff, 0x35, 0x40, 0x63, 0xff, 0x2e, 0x3b, 0x5f, 0xff, 0x33, 0x3f, 0x61, 0xff, 0x3c, 0x47, 0x6b, 0xff, 0x38, 0x43, 0x68, 0xff, 0x3d, 0x48, 0x6f, 0xff, 0x41, 0x49, 0x6f, 0xff, 0x38, 0x40, 0x61, 0xff, 0x2f, 0x39, 0x5d, 0xff, 0x2d, 0x3b, 0x63, 0xff, 0x22, 0x34, 0x5e, 0xff, 0x2b, 0x3f, 0x6a, 0xff, 0x2b, 0x40, 0x6d, 0xff, 0x2f, 0x48, 0x79, 0xff, 0x2c, 0x44, 0x78, 0xff, 0x2b, 0x43, 0x78, 0xff, 0x27, 0x40, 0x76, 0xff, 0x22, 0x40, 0x72, 0xff, 0x28, 0x43, 0x7c, 0xff, 0x31, 0x49, 0x7c, 0xff, 0x68, 0x76, 0x96, 0xff, 0x98, 0x84, 0x75, 0xff, 0x7e, 0x71, 0x5a, 0xff, 0x6d, 0x68, 0x64, 0xff, 0x69, 0x68, 0x6a, 0xff, 0x60, 0x6b, 0x6e, 0xff, 0x65, 0x6f, 0x74, 0xff, 0x6f, 0x73, 0x75, 0xff, 0x75, 0x79, 0x7a, 0xff, 0x79, 0x7d, 0x7e, 0x93, 0x72, 0x78, 0x78, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x66, 0x60, 0x0d, 0x64, 0x69, 0x65, 0xc1, 0x76, 0x6f, 0x62, 0xff, 0x7d, 0x71, 0x60, 0xff, 0x7f, 0x6f, 0x5e, 0xff, 0x7d, 0x6d, 0x60, 0xff, 0x79, 0x67, 0x5b, 0xff, 0x71, 0x60, 0x5d, 0xff, 0x60, 0x5a, 0x5e, 0xff, 0x61, 0x60, 0x69, 0xff, 0x6a, 0x6b, 0x71, 0xff, 0x71, 0x74, 0x76, 0xff, 0x7b, 0x7d, 0x7c, 0xff, 0x86, 0x84, 0x7d, 0xff, 0x96, 0x8a, 0x79, 0xff, 0xa4, 0x8c, 0x6d, 0xff, 0x93, 0x7e, 0x59, 0xff, 0xa4, 0x96, 0x83, 0xff, 0x91, 0x95, 0x99, 0xff, 0x71, 0x82, 0x9d, 0xff, 0x5b, 0x63, 0x7f, 0xff, 0x56, 0x62, 0x73, 0xff, 0x49, 0x52, 0x63, 0xff, 0x39, 0x41, 0x55, 0xff, 0x3a, 0x43, 0x57, 0xff, 0x33, 0x3a, 0x4b, 0xff, 0x40, 0x46, 0x58, 0xff, 0x3c, 0x43, 0x54, 0xff, 0x30, 0x37, 0x4f, 0xff, 0x3a, 0x42, 0x5d, 0xff, 0x3a, 0x41, 0x5d, 0xff, 0x43, 0x48, 0x6a, 0xff, 0x38, 0x42, 0x67, 0xff, 0x3c, 0x47, 0x6c, 0xff, 0x39, 0x43, 0x64, 0xff, 0x40, 0x48, 0x69, 0xff, 0x39, 0x46, 0x6a, 0xff, 0x37, 0x42, 0x67, 0xff, 0x38, 0x44, 0x69, 0xff, 0x3c, 0x47, 0x6e, 0xff, 0x3d, 0x47, 0x6d, 0xff, 0x40, 0x48, 0x6e, 0xff, 0x33, 0x3e, 0x64, 0xff, 0x22, 0x32, 0x59, 0xff, 0x26, 0x37, 0x61, 0xff, 0x2e, 0x42, 0x6d, 0xff, 0x2d, 0x42, 0x70, 0xff, 0x33, 0x4b, 0x7c, 0xff, 0x2f, 0x48, 0x7a, 0xff, 0x29, 0x41, 0x75, 0xff, 0x26, 0x3e, 0x73, 0xff, 0x26, 0x43, 0x75, 0xff, 0x27, 0x42, 0x79, 0xff, 0x2f, 0x48, 0x7a, 0xff, 0x55, 0x65, 0x8b, 0xff, 0x97, 0x89, 0x84, 0xff, 0x7f, 0x70, 0x59, 0xff, 0x6a, 0x67, 0x5d, 0xff, 0x63, 0x66, 0x64, 0xff, 0x61, 0x66, 0x68, 0xff, 0x6b, 0x6f, 0x72, 0xff, 0x7a, 0x77, 0x77, 0xff, 0x81, 0x7f, 0x7b, 0xc1, 0x7b, 0x80, 0x79, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x65, 0x63, 0x16, 0x71, 0x6b, 0x5b, 0xda, 0x7c, 0x71, 0x5e, 0xff, 0x7f, 0x6d, 0x5b, 0xff, 0x7b, 0x69, 0x5a, 0xff, 0x77, 0x64, 0x5a, 0xff, 0x70, 0x5e, 0x5b, 0xff, 0x5d, 0x54, 0x59, 0xff, 0x5b, 0x58, 0x62, 0xff, 0x63, 0x61, 0x69, 0xff, 0x67, 0x68, 0x6b, 0xff, 0x6f, 0x6f, 0x6f, 0xff, 0x77, 0x72, 0x6c, 0xff, 0x84, 0x76, 0x69, 0xff, 0x8f, 0x77, 0x5e, 0xff, 0x90, 0x76, 0x53, 0xff, 0x8b, 0x6e, 0x48, 0xff, 0x79, 0x69, 0x51, 0xff, 0x60, 0x5c, 0x57, 0xff, 0x5a, 0x59, 0x63, 0xff, 0x61, 0x64, 0x78, 0xff, 0x58, 0x5f, 0x7a, 0xff, 0x55, 0x5d, 0x7c, 0xff, 0x4e, 0x55, 0x75, 0xff, 0x4e, 0x55, 0x74, 0xff, 0x40, 0x47, 0x67, 0xff, 0x3d, 0x44, 0x62, 0xff, 0x4f, 0x59, 0x7a, 0xff, 0x3e, 0x4c, 0x6b, 0xff, 0x49, 0x55, 0x74, 0xff, 0x42, 0x4d, 0x72, 0xff, 0x40, 0x4c, 0x73, 0xff, 0x42, 0x4f, 0x74, 0xff, 0x3e, 0x47, 0x6b, 0xff, 0x44, 0x4d, 0x6f, 0xff, 0x37, 0x43, 0x67, 0xff, 0x40, 0x4a, 0x71, 0xff, 0x3f, 0x49, 0x71, 0xff, 0x3a, 0x44, 0x6d, 0xff, 0x39, 0x46, 0x6e, 0xff, 0x3e, 0x47, 0x73, 0xff, 0x2f, 0x3c, 0x65, 0xff, 0x26, 0x38, 0x5e, 0xff, 0x30, 0x41, 0x6a, 0xff, 0x2b, 0x3e, 0x69, 0xff, 0x35, 0x4a, 0x78, 0xff, 0x31, 0x49, 0x78, 0xff, 0x31, 0x48, 0x79, 0xff, 0x2d, 0x44, 0x76, 0xff, 0x2b, 0x40, 0x74, 0xff, 0x23, 0x3d, 0x70, 0xff, 0x24, 0x41, 0x73, 0xff, 0x2a, 0x44, 0x74, 0xff, 0x3a, 0x52, 0x81, 0xff, 0x8e, 0x92, 0xa1, 0xff, 0x88, 0x78, 0x69, 0xff, 0x71, 0x6b, 0x60, 0xff, 0x69, 0x67, 0x65, 0xff, 0x6c, 0x6a, 0x6a, 0xff, 0x7b, 0x77, 0x77, 0xff, 0x8e, 0x85, 0x7e, 0xda, 0x95, 0x89, 0x82, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x6d, 0x54, 0x28, 0x79, 0x6e, 0x56, 0xe1, 0x7d, 0x6b, 0x54, 0xff, 0x79, 0x66, 0x52, 0xff, 0x75, 0x61, 0x56, 0xff, 0x6f, 0x5c, 0x59, 0xff, 0x5d, 0x54, 0x59, 0xff, 0x58, 0x53, 0x5c, 0xff, 0x59, 0x56, 0x5f, 0xff, 0x59, 0x59, 0x5e, 0xff, 0x63, 0x61, 0x62, 0xff, 0x68, 0x61, 0x5d, 0xff, 0x75, 0x65, 0x5a, 0xff, 0x7e, 0x68, 0x55, 0xff, 0x85, 0x6d, 0x50, 0xff, 0x85, 0x6b, 0x48, 0xff, 0x82, 0x62, 0x34, 0xff, 0x78, 0x5e, 0x3c, 0xff, 0x7a, 0x72, 0x6c, 0xff, 0x89, 0x8c, 0x9a, 0xff, 0x7b, 0x86, 0x9e, 0xff, 0x66, 0x73, 0x90, 0xff, 0x69, 0x75, 0x93, 0xff, 0x5c, 0x6b, 0x8d, 0xff, 0x5d, 0x6c, 0x8f, 0xff, 0x44, 0x54, 0x76, 0xff, 0x55, 0x61, 0x89, 0xff, 0x4a, 0x57, 0x7e, 0xff, 0x4c, 0x5a, 0x7d, 0xff, 0x4b, 0x59, 0x7d, 0xff, 0x4d, 0x59, 0x7b, 0xff, 0x46, 0x51, 0x75, 0xff, 0x45, 0x50, 0x77, 0xff, 0x3c, 0x47, 0x6e, 0xff, 0x40, 0x4c, 0x72, 0xff, 0x3a, 0x44, 0x6c, 0xff, 0x37, 0x42, 0x6a, 0xff, 0x3b, 0x46, 0x6f, 0xff, 0x3c, 0x4b, 0x74, 0xff, 0x31, 0x3b, 0x6a, 0xff, 0x24, 0x32, 0x5d, 0xff, 0x2e, 0x40, 0x67, 0xff, 0x30, 0x42, 0x6b, 0xff, 0x32, 0x45, 0x71, 0xff, 0x31, 0x47, 0x74, 0xff, 0x32, 0x49, 0x78, 0xff, 0x32, 0x49, 0x79, 0xff, 0x30, 0x47, 0x79, 0xff, 0x29, 0x40, 0x72, 0xff, 0x28, 0x40, 0x73, 0xff, 0x27, 0x41, 0x72, 0xff, 0x27, 0x42, 0x72, 0xff, 0x29, 0x43, 0x77, 0xff, 0x74, 0x83, 0x9f, 0xff, 0xa6, 0x9b, 0x98, 0xff, 0x73, 0x66, 0x60, 0xff, 0x6c, 0x65, 0x64, 0xff, 0x6d, 0x6a, 0x68, 0xff, 0x7b, 0x73, 0x70, 0xe2, 0x8a, 0x7d, 0x75, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x6d, 0x51, 0x25, 0x80, 0x6c, 0x4f, 0xe2, 0x78, 0x64, 0x4e, 0xff, 0x73, 0x5f, 0x52, 0xff, 0x6b, 0x5a, 0x57, 0xff, 0x5e, 0x52, 0x54, 0xff, 0x58, 0x50, 0x52, 0xff, 0x52, 0x4f, 0x53, 0xff, 0x4f, 0x4c, 0x51, 0xff, 0x55, 0x4f, 0x50, 0xff, 0x60, 0x57, 0x54, 0xff, 0x80, 0x67, 0x5c, 0xff, 0x8e, 0x75, 0x5a, 0xff, 0x95, 0x74, 0x53, 0xff, 0x94, 0x73, 0x4e, 0xff, 0x88, 0x69, 0x45, 0xff, 0x7a, 0x5d, 0x3b, 0xff, 0x70, 0x55, 0x37, 0xff, 0x74, 0x66, 0x59, 0xff, 0xa1, 0xa3, 0xad, 0xff, 0x7e, 0x87, 0x9a, 0xff, 0x80, 0x8d, 0xaa, 0xff, 0x6c, 0x7a, 0x98, 0xff, 0x61, 0x71, 0x93, 0xff, 0x66, 0x78, 0x9e, 0xff, 0x63, 0x73, 0x99, 0xff, 0x58, 0x67, 0x8b, 0xff, 0x5b, 0x6a, 0x8e, 0xff, 0x51, 0x62, 0x84, 0xff, 0x46, 0x56, 0x75, 0xff, 0x48, 0x55, 0x7b, 0xff, 0x42, 0x4e, 0x75, 0xff, 0x38, 0x46, 0x69, 0xff, 0x41, 0x4d, 0x75, 0xff, 0x3a, 0x45, 0x6e, 0xff, 0x38, 0x44, 0x6c, 0xff, 0x37, 0x43, 0x6b, 0xff, 0x26, 0x36, 0x61, 0xff, 0x2b, 0x39, 0x62, 0xff, 0x28, 0x37, 0x60, 0xff, 0x2d, 0x3b, 0x67, 0xff, 0x34, 0x46, 0x71, 0xff, 0x34, 0x48, 0x75, 0xff, 0x32, 0x49, 0x75, 0xff, 0x38, 0x4e, 0x7d, 0xff, 0x32, 0x48, 0x78, 0xff, 0x2b, 0x42, 0x74, 0xff, 0x28, 0x41, 0x73, 0xff, 0x25, 0x3f, 0x70, 0xff, 0x24, 0x3d, 0x6f, 0xff, 0x25, 0x3d, 0x70, 0xff, 0x2a, 0x44, 0x75, 0xff, 0x4d, 0x5f, 0x86, 0xff, 0xa5, 0xa9, 0xbb, 0xff, 0xa3, 0x9c, 0x9f, 0xff, 0x67, 0x62, 0x63, 0xff, 0x6b, 0x64, 0x67, 0xe2, 0x7c, 0x6e, 0x6d, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x6b, 0x4e, 0x28, 0x7b, 0x65, 0x4f, 0xdb, 0x71, 0x5e, 0x50, 0xff, 0x67, 0x57, 0x52, 0xff, 0x5c, 0x50, 0x52, 0xff, 0x58, 0x51, 0x52, 0xff, 0x59, 0x52, 0x55, 0xff, 0x58, 0x51, 0x52, 0xff, 0x5c, 0x50, 0x4d, 0xff, 0x70, 0x5f, 0x53, 0xff, 0x91, 0x74, 0x5f, 0xff, 0xa1, 0x84, 0x65, 0xff, 0xa8, 0x88, 0x67, 0xff, 0x9f, 0x82, 0x5b, 0xff, 0x98, 0x7a, 0x4f, 0xff, 0x8a, 0x6b, 0x42, 0xff, 0x7a, 0x5c, 0x39, 0xff, 0x7e, 0x5d, 0x3d, 0xff, 0x86, 0x72, 0x61, 0xff, 0xb3, 0xb9, 0xc2, 0xff, 0x75, 0x86, 0x9e, 0xff, 0x75, 0x85, 0xa0, 0xff, 0x78, 0x88, 0xa7, 0xff, 0x69, 0x7c, 0xa0, 0xff, 0x65, 0x77, 0x9b, 0xff, 0x5e, 0x70, 0x93, 0xff, 0x52, 0x64, 0x85, 0xff, 0x46, 0x5a, 0x79, 0xff, 0x44, 0x58, 0x79, 0xff, 0x48, 0x5b, 0x7f, 0xff, 0x40, 0x52, 0x77, 0xff, 0x3b, 0x4d, 0x72, 0xff, 0x3c, 0x4b, 0x72, 0xff, 0x38, 0x47, 0x6d, 0xff, 0x37, 0x45, 0x6c, 0xff, 0x33, 0x42, 0x69, 0xff, 0x22, 0x30, 0x58, 0xff, 0x26, 0x35, 0x5f, 0xff, 0x31, 0x41, 0x6b, 0xff, 0x31, 0x42, 0x6d, 0xff, 0x37, 0x4a, 0x77, 0xff, 0x38, 0x4e, 0x7b, 0xff, 0x36, 0x4e, 0x7b, 0xff, 0x34, 0x4b, 0x79, 0xff, 0x33, 0x4a, 0x79, 0xff, 0x2e, 0x45, 0x75, 0xff, 0x25, 0x3e, 0x6f, 0xff, 0x25, 0x3f, 0x6e, 0xff, 0x24, 0x3e, 0x6e, 0xff, 0x24, 0x3d, 0x6d, 0xff, 0x25, 0x3f, 0x6f, 0xff, 0x35, 0x4d, 0x7c, 0xff, 0x71, 0x79, 0x98, 0xff, 0xa5, 0xa2, 0xb5, 0xff, 0xa3, 0x9c, 0xaa, 0xdb, 0x59, 0x4a, 0x51, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x63, 0x4d, 0x16, 0x70, 0x5e, 0x4f, 0xc0, 0x68, 0x57, 0x52, 0xff, 0x5e, 0x54, 0x54, 0xff, 0x5d, 0x55, 0x56, 0xff, 0x62, 0x58, 0x59, 0xff, 0x5f, 0x53, 0x52, 0xff, 0x6a, 0x59, 0x51, 0xff, 0x85, 0x70, 0x5d, 0xff, 0xac, 0x89, 0x71, 0xff, 0xb5, 0x99, 0x7b, 0xff, 0xb8, 0x9b, 0x82, 0xff, 0xb2, 0x9a, 0x72, 0xff, 0xa6, 0x8e, 0x62, 0xff, 0x92, 0x7a, 0x54, 0xff, 0x7a, 0x65, 0x4a, 0xff, 0x7c, 0x67, 0x4a, 0xff, 0x8d, 0x70, 0x4b, 0xff, 0xd4, 0xe5, 0xea, 0xff, 0xcc, 0xe3, 0xed, 0xff, 0x7b, 0x8b, 0x9f, 0xff, 0x75, 0x86, 0xa2, 0xff, 0x69, 0x7c, 0xa0, 0xff, 0x5e, 0x71, 0x96, 0xff, 0x69, 0x7c, 0xa1, 0xff, 0x4e, 0x61, 0x86, 0xff, 0x56, 0x6a, 0x8d, 0xff, 0x46, 0x58, 0x7c, 0xff, 0x3a, 0x4c, 0x6d, 0xff, 0x39, 0x4b, 0x6d, 0xff, 0x39, 0x49, 0x71, 0xff, 0x38, 0x46, 0x6d, 0xff, 0x2f, 0x3d, 0x63, 0xff, 0x23, 0x32, 0x58, 0xff, 0x26, 0x36, 0x5c, 0xff, 0x28, 0x39, 0x5d, 0xff, 0x26, 0x36, 0x5f, 0xff, 0x2c, 0x3f, 0x6a, 0xff, 0x2f, 0x43, 0x70, 0xff, 0x37, 0x4a, 0x78, 0xff, 0x37, 0x4d, 0x7c, 0xff, 0x31, 0x49, 0x79, 0xff, 0x34, 0x4c, 0x7a, 0xff, 0x32, 0x4b, 0x78, 0xff, 0x2c, 0x44, 0x72, 0xff, 0x24, 0x3f, 0x6d, 0xff, 0x23, 0x3d, 0x6c, 0xff, 0x22, 0x3c, 0x6b, 0xff, 0x22, 0x3c, 0x6b, 0xff, 0x23, 0x3d, 0x6d, 0xff, 0x28, 0x41, 0x71, 0xff, 0x48, 0x5a, 0x84, 0xff, 0x6a, 0x75, 0x98, 0xc1, 0x73, 0x7a, 0x99, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x5e, 0x50, 0x0d, 0x68, 0x58, 0x53, 0x93, 0x5e, 0x53, 0x53, 0xfb, 0x5d, 0x54, 0x55, 0xff, 0x67, 0x58, 0x5a, 0xff, 0x65, 0x58, 0x55, 0xff, 0x76, 0x62, 0x56, 0xff, 0x9d, 0x82, 0x6c, 0xff, 0xb9, 0x9a, 0x7e, 0xff, 0xc0, 0xa5, 0x8d, 0xff, 0xc2, 0xaa, 0x90, 0xff, 0xbd, 0xa7, 0x89, 0xff, 0xaa, 0x97, 0x8a, 0xff, 0xb9, 0xa7, 0xb0, 0xff, 0xbe, 0xae, 0xbf, 0xff, 0xc2, 0xb5, 0xbb, 0xff, 0xcb, 0xbe, 0xa6, 0xff, 0xcd, 0xdd, 0xe1, 0xff, 0xd2, 0xf0, 0xfe, 0xff, 0xc7, 0xdd, 0xf1, 0xff, 0x83, 0x94, 0xaa, 0xff, 0x73, 0x84, 0xa5, 0xff, 0x6a, 0x7d, 0xa4, 0xff, 0x61, 0x75, 0x9d, 0xff, 0x56, 0x6a, 0x90, 0xff, 0x50, 0x64, 0x8a, 0xff, 0x48, 0x59, 0x7e, 0xff, 0x3c, 0x4c, 0x6f, 0xff, 0x3e, 0x4d, 0x70, 0xff, 0x3a, 0x48, 0x6e, 0xff, 0x2a, 0x3a, 0x64, 0xff, 0x29, 0x39, 0x62, 0xff, 0x1f, 0x30, 0x58, 0xff, 0x21, 0x31, 0x58, 0xff, 0x25, 0x36, 0x5b, 0xff, 0x2b, 0x3c, 0x63, 0xff, 0x37, 0x4a, 0x75, 0xff, 0x3b, 0x4e, 0x7a, 0xff, 0x37, 0x4b, 0x79, 0xff, 0x31, 0x47, 0x74, 0xff, 0x32, 0x4a, 0x7a, 0xff, 0x33, 0x4a, 0x78, 0xff, 0x31, 0x49, 0x76, 0xff, 0x2c, 0x43, 0x71, 0xff, 0x26, 0x3e, 0x6c, 0xff, 0x22, 0x3c, 0x69, 0xff, 0x20, 0x39, 0x67, 0xff, 0x21, 0x3a, 0x68, 0xff, 0x1f, 0x38, 0x66, 0xff, 0x22, 0x3a, 0x6b, 0xfb, 0x2f, 0x46, 0x73, 0x93, 0x5a, 0x6b, 0x92, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x51, 0x56, 0x03, 0x5d, 0x52, 0x53, 0x63, 0x5c, 0x52, 0x53, 0xe8, 0x63, 0x52, 0x53, 0xff, 0x66, 0x56, 0x51, 0xff, 0x82, 0x65, 0x54, 0xff, 0xa8, 0x86, 0x6e, 0xff, 0xbd, 0xa0, 0x83, 0xff, 0xc1, 0xa6, 0x8d, 0xff, 0xc1, 0xaa, 0x8b, 0xff, 0xbc, 0xa8, 0x9f, 0xff, 0xca, 0xbc, 0xd1, 0xff, 0xc5, 0xba, 0xe4, 0xff, 0xc0, 0xb1, 0xdd, 0xff, 0xcf, 0xc0, 0xe3, 0xff, 0xe9, 0xe9, 0xe7, 0xff, 0xef, 0xf1, 0xf6, 0xff, 0xc5, 0xe5, 0xf5, 0xff, 0xc5, 0xe3, 0xf9, 0xff, 0xb7, 0xca, 0xdf, 0xff, 0x7c, 0x8e, 0xaa, 0xff, 0x70, 0x85, 0xa9, 0xff, 0x62, 0x78, 0x9c, 0xff, 0x57, 0x6d, 0x91, 0xff, 0x58, 0x6d, 0x91, 0xff, 0x55, 0x69, 0x8d, 0xff, 0x53, 0x66, 0x8a, 0xff, 0x3a, 0x4d, 0x71, 0xff, 0x3d, 0x4f, 0x72, 0xff, 0x34, 0x45, 0x6e, 0xff, 0x2c, 0x3d, 0x66, 0xff, 0x25, 0x36, 0x5e, 0xff, 0x27, 0x38, 0x5f, 0xff, 0x24, 0x37, 0x5c, 0xff, 0x36, 0x48, 0x70, 0xff, 0x38, 0x4b, 0x75, 0xff, 0x35, 0x48, 0x74, 0xff, 0x34, 0x48, 0x75, 0xff, 0x35, 0x4a, 0x77, 0xff, 0x32, 0x48, 0x76, 0xff, 0x31, 0x48, 0x75, 0xff, 0x30, 0x46, 0x73, 0xff, 0x2d, 0x44, 0x71, 0xff, 0x28, 0x3e, 0x6d, 0xff, 0x22, 0x3a, 0x68, 0xff, 0x1f, 0x36, 0x64, 0xff, 0x1d, 0x35, 0x63, 0xff, 0x1c, 0x34, 0x62, 0xe8, 0x1e, 0x3a, 0x67, 0x63, 0x21, 0x3b, 0x69, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x4d, 0x4c, 0x20, 0x5d, 0x4d, 0x49, 0xc0, 0x66, 0x51, 0x49, 0xfa, 0x83, 0x5f, 0x4c, 0xff, 0xa3, 0x7c, 0x64, 0xff, 0xbf, 0x9e, 0x88, 0xff, 0xc4, 0xad, 0x8e, 0xff, 0xc3, 0xad, 0x99, 0xff, 0xbc, 0xaa, 0xcc, 0xff, 0xc7, 0xb9, 0xea, 0xff, 0xbe, 0xb4, 0xe8, 0xff, 0xbf, 0xb6, 0xe9, 0xff, 0xc8, 0xc3, 0xeb, 0xff, 0xee, 0xf0, 0xf4, 0xff, 0xea, 0xec, 0xf3, 0xff, 0xca, 0xe6, 0xf2, 0xff, 0xbf, 0xe1, 0xf3, 0xff, 0xc5, 0xe2, 0xf8, 0xff, 0xa5, 0xbc, 0xd6, 0xff, 0x6b, 0x83, 0xa2, 0xff, 0x6b, 0x85, 0xa7, 0xff, 0x66, 0x7f, 0xa1, 0xff, 0x56, 0x6f, 0x94, 0xff, 0x4e, 0x65, 0x89, 0xff, 0x47, 0x5d, 0x80, 0xff, 0x48, 0x5c, 0x80, 0xff, 0x42, 0x55, 0x79, 0xff, 0x3d, 0x50, 0x73, 0xff, 0x2f, 0x41, 0x65, 0xff, 0x2e, 0x3f, 0x65, 0xff, 0x2a, 0x3b, 0x62, 0xff, 0x2a, 0x3d, 0x63, 0xff, 0x32, 0x43, 0x6c, 0xff, 0x30, 0x42, 0x6e, 0xff, 0x36, 0x48, 0x77, 0xff, 0x37, 0x4a, 0x79, 0xff, 0x35, 0x4b, 0x78, 0xff, 0x34, 0x4b, 0x77, 0xff, 0x33, 0x4b, 0x75, 0xff, 0x2e, 0x46, 0x70, 0xff, 0x2c, 0x43, 0x70, 0xff, 0x29, 0x40, 0x6d, 0xff, 0x22, 0x3a, 0x65, 0xff, 0x1d, 0x36, 0x61, 0xfa, 0x1b, 0x33, 0x5e, 0xc0, 0x1c, 0x34, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x46, 0x41, 0x05, 0x5e, 0x49, 0x40, 0x53, 0x75, 0x55, 0x43, 0xdf, 0x97, 0x77, 0x59, 0xff, 0xbc, 0x9d, 0x8c, 0xff, 0xbb, 0xac, 0x8f, 0xff, 0xb9, 0xa6, 0xab, 0xff, 0xb4, 0xa5, 0xdb, 0xff, 0xc0, 0xb3, 0xec, 0xff, 0xba, 0xaf, 0xea, 0xff, 0xb7, 0xaf, 0xeb, 0xff, 0xce, 0xcb, 0xe7, 0xff, 0xf5, 0xf6, 0xf6, 0xff, 0xf4, 0xf7, 0xfb, 0xff, 0xcf, 0xec, 0xf2, 0xff, 0xb9, 0xde, 0xee, 0xff, 0xba, 0xe1, 0xf8, 0xff, 0xbc, 0xd8, 0xf0, 0xff, 0x89, 0xa1, 0xbe, 0xff, 0x67, 0x82, 0xa8, 0xff, 0x6c, 0x86, 0xad, 0xff, 0x63, 0x7c, 0xa8, 0xff, 0x5c, 0x74, 0x9d, 0xff, 0x5b, 0x71, 0x9a, 0xff, 0x54, 0x68, 0x92, 0xff, 0x47, 0x5a, 0x85, 0xff, 0x38, 0x4b, 0x6e, 0xff, 0x3b, 0x4c, 0x72, 0xff, 0x31, 0x41, 0x6c, 0xff, 0x31, 0x40, 0x6c, 0xff, 0x31, 0x43, 0x6b, 0xff, 0x2c, 0x3d, 0x68, 0xff, 0x32, 0x45, 0x73, 0xff, 0x33, 0x44, 0x74, 0xff, 0x34, 0x46, 0x77, 0xff, 0x31, 0x45, 0x73, 0xff, 0x2d, 0x46, 0x6f, 0xff, 0x2d, 0x46, 0x6e, 0xff, 0x2a, 0x42, 0x6c, 0xff, 0x27, 0x3f, 0x6a, 0xff, 0x24, 0x3b, 0x68, 0xff, 0x21, 0x3a, 0x62, 0xdf, 0x1d, 0x35, 0x5e, 0x53, 0x1b, 0x33, 0x5b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x44, 0x2f, 0x0c, 0x90, 0x6f, 0x5b, 0x81, 0xb4, 0x97, 0x86, 0xdf, 0xb3, 0xa8, 0x8c, 0xff, 0xad, 0xa1, 0xab, 0xff, 0xac, 0xa4, 0xd4, 0xff, 0xc0, 0xb8, 0xe8, 0xff, 0xc9, 0xc1, 0xe8, 0xff, 0xe0, 0xda, 0xf2, 0xff, 0xf4, 0xf5, 0xf9, 0xff, 0xf9, 0xf7, 0xf6, 0xff, 0xf9, 0xf6, 0xf9, 0xff, 0xd7, 0xec, 0xf2, 0xff, 0xc4, 0xe4, 0xf2, 0xff, 0xb5, 0xdd, 0xef, 0xff, 0xb6, 0xd9, 0xf5, 0xff, 0xa2, 0xbe, 0xe0, 0xff, 0x74, 0x8e, 0xb2, 0xff, 0x6e, 0x89, 0xb0, 0xff, 0x67, 0x81, 0xad, 0xff, 0x51, 0x67, 0x95, 0xff, 0x5a, 0x72, 0x9e, 0xff, 0x5c, 0x73, 0x9e, 0xff, 0x47, 0x5a, 0x84, 0xff, 0x44, 0x54, 0x7e, 0xff, 0x3d, 0x4e, 0x79, 0xff, 0x3d, 0x4c, 0x78, 0xff, 0x2e, 0x3e, 0x6a, 0xff, 0x30, 0x40, 0x6a, 0xff, 0x34, 0x44, 0x6f, 0xff, 0x36, 0x47, 0x74, 0xff, 0x34, 0x48, 0x77, 0xff, 0x31, 0x45, 0x74, 0xff, 0x2f, 0x45, 0x70, 0xff, 0x2c, 0x43, 0x6c, 0xff, 0x2d, 0x44, 0x6d, 0xff, 0x2a, 0x41, 0x6b, 0xff, 0x27, 0x3e, 0x68, 0xdf, 0x23, 0x3a, 0x65, 0x82, 0x1f, 0x36, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x99, 0x82, 0x13, 0xaa, 0x9d, 0x90, 0x64, 0xaa, 0xa0, 0xab, 0xe4, 0xae, 0xa6, 0xc9, 0xfb, 0xbc, 0xb4, 0xd4, 0xff, 0xef, 0xeb, 0xf5, 0xff, 0xfb, 0xfb, 0xf2, 0xff, 0xf3, 0xf4, 0xf5, 0xff, 0xf6, 0xf4, 0xf5, 0xff, 0xf6, 0xf4, 0xf7, 0xff, 0xd8, 0xec, 0xf2, 0xff, 0xc6, 0xe3, 0xef, 0xff, 0xba, 0xe3, 0xf3, 0xff, 0xae, 0xd6, 0xf2, 0xff, 0xaa, 0xc8, 0xec, 0xff, 0x8d, 0xa7, 0xcc, 0xff, 0x66, 0x83, 0xaa, 0xff, 0x6a, 0x88, 0xb2, 0xff, 0x62, 0x7a, 0xa7, 0xff, 0x5b, 0x74, 0xa0, 0xff, 0x55, 0x6e, 0x98, 0xff, 0x4f, 0x64, 0x8d, 0xff, 0x4a, 0x5d, 0x88, 0xff, 0x40, 0x52, 0x7d, 0xff, 0x3b, 0x4b, 0x76, 0xff, 0x34, 0x45, 0x6f, 0xff, 0x36, 0x48, 0x71, 0xff, 0x34, 0x46, 0x71, 0xff, 0x35, 0x48, 0x75, 0xff, 0x34, 0x48, 0x74, 0xff, 0x32, 0x45, 0x71, 0xff, 0x2f, 0x42, 0x6d, 0xff, 0x2b, 0x3e, 0x68, 0xfb, 0x29, 0x3f, 0x68, 0xe4, 0x2a, 0x40, 0x6a, 0x64, 0x27, 0x3d, 0x67, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x91, 0x74, 0x07, 0xb6, 0xb6, 0xb6, 0x51, 0xed, 0xed, 0xed, 0xa1, 0xf9, 0xf6, 0xf8, 0xe8, 0xf5, 0xf2, 0xf6, 0xff, 0xf2, 0xf3, 0xf3, 0xff, 0xf3, 0xf3, 0xf3, 0xff, 0xf3, 0xf4, 0xf7, 0xff, 0xd1, 0xe9, 0xf0, 0xff, 0xc0, 0xe0, 0xef, 0xff, 0xb2, 0xdd, 0xef, 0xff, 0xab, 0xd4, 0xf2, 0xff, 0xa6, 0xc9, 0xef, 0xff, 0xa4, 0xc3, 0xeb, 0xff, 0x6d, 0x8b, 0xb4, 0xff, 0x68, 0x87, 0xaf, 0xff, 0x69, 0x84, 0xaf, 0xff, 0x59, 0x71, 0x9d, 0xff, 0x59, 0x71, 0x9b, 0xff, 0x57, 0x70, 0x98, 0xff, 0x51, 0x65, 0x8f, 0xff, 0x48, 0x5a, 0x85, 0xff, 0x40, 0x51, 0x7c, 0xff, 0x3c, 0x4d, 0x78, 0xff, 0x35, 0x47, 0x73, 0xff, 0x34, 0x48, 0x73, 0xff, 0x34, 0x49, 0x73, 0xff, 0x33, 0x48, 0x72, 0xff, 0x32, 0x43, 0x6f, 0xe8, 0x30, 0x43, 0x6e, 0xa1, 0x2d, 0x41, 0x6a, 0x51, 0x26, 0x3a, 0x63, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xfe, 0xf6, 0x03, 0xf2, 0xf2, 0xf3, 0x0a, 0xf0, 0xf2, 0xf3, 0x4a, 0xf2, 0xf2, 0xf4, 0xa8, 0xf3, 0xf3, 0xf2, 0xe1, 0xf0, 0xf2, 0xf4, 0xee, 0xcc, 0xe5, 0xeb, 0xfa, 0xbc, 0xdc, 0xf0, 0xff, 0xaa, 0xd5, 0xeb, 0xff, 0x9f, 0xc9, 0xec, 0xff, 0xa1, 0xc5, 0xf0, 0xff, 0xa1, 0xc4, 0xee, 0xff, 0x81, 0xa1, 0xca, 0xff, 0x67, 0x85, 0xae, 0xff, 0x63, 0x82, 0xad, 0xff, 0x56, 0x6f, 0x9a, 0xff, 0x5f, 0x75, 0x9f, 0xff, 0x56, 0x72, 0x99, 0xff, 0x53, 0x69, 0x93, 0xff, 0x44, 0x58, 0x83, 0xff, 0x3b, 0x4c, 0x77, 0xff, 0x39, 0x49, 0x75, 0xfa, 0x3b, 0x4d, 0x7c, 0xee, 0x39, 0x4e, 0x79, 0xe1, 0x37, 0x4e, 0x78, 0xa8, 0x36, 0x4a, 0x74, 0x4a, 0x34, 0x43, 0x6f, 0x0a, 0x31, 0x44, 0x6d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xf4, 0xf5, 0x0b, 0xd9, 0xe7, 0xec, 0x28, 0xc2, 0xe1, 0xec, 0x41, 0xb5, 0xd9, 0xec, 0x5d, 0xa4, 0xcf, 0xed, 0x88, 0x9c, 0xc1, 0xeb, 0xb2, 0x9d, 0xbd, 0xe9, 0xd1, 0xa3, 0xc7, 0xf1, 0xe7, 0x98, 0xbc, 0xe7, 0xf4, 0x72, 0x8f, 0xba, 0xfd, 0x6c, 0x88, 0xb1, 0xfd, 0x61, 0x7d, 0xa6, 0xf4, 0x58, 0x71, 0x9c, 0xe7, 0x5b, 0x74, 0xa1, 0xd1, 0x55, 0x6b, 0x95, 0xb2, 0x4f, 0x65, 0x8f, 0x88, 0x3e, 0x52, 0x7c, 0x5d, 0x3d, 0x4f, 0x7a, 0x41, 0x3b, 0x50, 0x7a, 0x28, 0x3c, 0x51, 0x78, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_img_dsc_t img_benchmark_avatar = {
.header.magic = LV_IMAGE_HEADER_MAGIC,
.header.cf = LV_COLOR_FORMAT_ARGB8888,
.header.flags = 0,
.header.w = 80,
.header.h = 80,
.header.stride = 320,
.data_size = 25600,
.data = img_benchmark_avatar_map,
};
#endif /*LV_USE_DEMO_BENCHMARK*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,9 +1,15 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_BUILD_TEST)
#include "../../../lvgl.h"
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#include "lvgl/lvgl.h"
#endif
#if LV_USE_DEMO_BENCHMARK

View File

@@ -1,9 +1,15 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_BUILD_TEST)
#include "../../../lvgl.h"
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#include "lvgl/lvgl.h"
#endif
#if LV_USE_DEMO_BENCHMARK

View File

@@ -1,9 +1,15 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_BUILD_TEST)
#include "../../../lvgl.h"
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#include "lvgl/lvgl.h"
#endif
#if LV_USE_DEMO_BENCHMARK

View File

@@ -1,9 +1,15 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_BUILD_TEST)
#include "../../../lvgl.h"
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#include "lvgl/lvgl.h"
#endif
#if LV_USE_DEMO_BENCHMARK

View File

@@ -26,9 +26,12 @@
#warning "It's recommended to have at least 128kB RAM for the benchmark"
#endif
#include "../../src/display/lv_display_private.h"
#include "../../src/core/lv_global.h"
#if LV_USE_PERF_MONITOR
#include "../../src/display/lv_display_private.h"
#endif
/**********************
* TYPEDEFS
**********************/
@@ -760,10 +763,10 @@ static lv_obj_t * card_create(void)
lv_obj_set_size(panel, 270, 120);
lv_obj_set_style_pad_all(panel, 8, 0);
LV_IMAGE_DECLARE(img_transform_avatar_15);
LV_IMAGE_DECLARE(img_benchmark_avatar);
lv_obj_t * child = lv_image_create(panel);
lv_obj_align(child, LV_ALIGN_LEFT_MID, 0, 0);
lv_image_set_src(child, &img_transform_avatar_15);
lv_image_set_src(child, &img_benchmark_avatar);
child = lv_label_create(panel);
lv_label_set_text(child, "John Smith");

View File

@@ -64,7 +64,11 @@ static const demo_entry_info_t demos_entry_info[] = {
#endif
#if LV_USE_DEMO_VECTOR_GRAPHIC && LV_USE_VECTOR_GRAPHIC
{ "vector_graphic", .entry_cb = lv_demo_vector_graphic },
{ "vector_graphic_buffered", .entry_cb = lv_demo_vector_graphic_buffered },
#endif
#if LV_USE_DEMO_VECTOR_GRAPHIC && LV_USE_VECTOR_GRAPHIC
{ "vector_graphic_not_buffered", .entry_cb = lv_demo_vector_graphic_not_buffered },
#endif
#if LV_USE_DEMO_BENCHMARK

View File

@@ -118,33 +118,33 @@ void lv_demo_music(void)
{
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0x343247), 0);
list = _lv_demo_music_list_create(lv_screen_active());
ctrl = _lv_demo_music_main_create(lv_screen_active());
list = lv_demo_music_list_create(lv_screen_active());
ctrl = lv_demo_music_main_create(lv_screen_active());
#if LV_DEMO_MUSIC_AUTO_PLAY
lv_timer_create(auto_step_cb, 1000, NULL);
#endif
}
const char * _lv_demo_music_get_title(uint32_t track_id)
const char * lv_demo_music_get_title(uint32_t track_id)
{
if(track_id >= sizeof(title_list) / sizeof(title_list[0])) return NULL;
return title_list[track_id];
}
const char * _lv_demo_music_get_artist(uint32_t track_id)
const char * lv_demo_music_get_artist(uint32_t track_id)
{
if(track_id >= sizeof(artist_list) / sizeof(artist_list[0])) return NULL;
return artist_list[track_id];
}
const char * _lv_demo_music_get_genre(uint32_t track_id)
const char * lv_demo_music_get_genre(uint32_t track_id)
{
if(track_id >= sizeof(genre_list) / sizeof(genre_list[0])) return NULL;
return genre_list[track_id];
}
uint32_t _lv_demo_music_get_track_length(uint32_t track_id)
uint32_t lv_demo_music_get_track_length(uint32_t track_id)
{
if(track_id >= sizeof(time_list) / sizeof(time_list[0])) return 0;
return time_list[track_id];
@@ -170,17 +170,17 @@ static void auto_step_cb(lv_timer_t * t)
switch(state) {
case 5:
_lv_demo_music_album_next(true);
lv_demo_music_album_next(true);
break;
case 6:
_lv_demo_music_album_next(true);
lv_demo_music_album_next(true);
break;
case 7:
_lv_demo_music_album_next(true);
lv_demo_music_album_next(true);
break;
case 8:
_lv_demo_music_play(0);
lv_demo_music_play(0);
break;
#if LV_DEMO_MUSIC_SQUARE || LV_DEMO_MUSIC_ROUND
case 11:
@@ -201,7 +201,7 @@ static void auto_step_cb(lv_timer_t * t)
lv_obj_scroll_by(list, 0, 300, LV_ANIM_ON);
break;
case 18:
_lv_demo_music_play(1);
lv_demo_music_play(1);
break;
case 19:
lv_obj_scroll_by(ctrl, 0, LV_VER_RES, LV_ANIM_ON);
@@ -212,7 +212,7 @@ static void auto_step_cb(lv_timer_t * t)
break;
#endif
case 30:
_lv_demo_music_play(2);
lv_demo_music_play(2);
break;
case 40: {
lv_obj_t * bg = lv_layer_top();
@@ -247,7 +247,7 @@ static void auto_step_cb(lv_timer_t * t)
}
case 41:
lv_screen_load(lv_obj_create(NULL));
_lv_demo_music_pause();
lv_demo_music_pause();
break;
}
state++;

View File

@@ -36,10 +36,10 @@ extern "C" {
**********************/
void lv_demo_music(void);
const char * _lv_demo_music_get_title(uint32_t track_id);
const char * _lv_demo_music_get_artist(uint32_t track_id);
const char * _lv_demo_music_get_genre(uint32_t track_id);
uint32_t _lv_demo_music_get_track_length(uint32_t track_id);
const char * lv_demo_music_get_title(uint32_t track_id);
const char * lv_demo_music_get_artist(uint32_t track_id);
const char * lv_demo_music_get_genre(uint32_t track_id);
uint32_t lv_demo_music_get_track_length(uint32_t track_id);
/**********************
* MACROS

View File

@@ -51,7 +51,7 @@ LV_IMAGE_DECLARE(img_lv_demo_music_btn_list_pause);
* GLOBAL FUNCTIONS
**********************/
lv_obj_t * _lv_demo_music_list_create(lv_obj_t * parent)
lv_obj_t * lv_demo_music_list_create(lv_obj_t * parent)
{
font_small = LV_FONT_DEFAULT;
font_medium = LV_FONT_DEFAULT;
@@ -138,7 +138,7 @@ lv_obj_t * _lv_demo_music_list_create(lv_obj_t * parent)
lv_obj_set_flex_flow(list, LV_FLEX_FLOW_COLUMN);
uint32_t track_id;
for(track_id = 0; _lv_demo_music_get_title(track_id); track_id++) {
for(track_id = 0; lv_demo_music_get_title(track_id); track_id++) {
add_list_button(list, track_id);
}
@@ -146,12 +146,12 @@ lv_obj_t * _lv_demo_music_list_create(lv_obj_t * parent)
lv_obj_set_scroll_snap_y(list, LV_SCROLL_SNAP_CENTER);
#endif
_lv_demo_music_list_button_check(0, true);
lv_demo_music_list_button_check(0, true);
return list;
}
void _lv_demo_music_list_button_check(uint32_t track_id, bool state)
void lv_demo_music_list_button_check(uint32_t track_id, bool state)
{
lv_obj_t * btn = lv_obj_get_child(list, track_id);
lv_obj_t * icon = lv_obj_get_child(btn, 0);
@@ -173,11 +173,11 @@ void _lv_demo_music_list_button_check(uint32_t track_id, bool state)
static lv_obj_t * add_list_button(lv_obj_t * parent, uint32_t track_id)
{
uint32_t t = _lv_demo_music_get_track_length(track_id);
uint32_t t = lv_demo_music_get_track_length(track_id);
char time[32];
lv_snprintf(time, sizeof(time), "%"LV_PRIu32":%02"LV_PRIu32, t / 60, t % 60);
const char * title = _lv_demo_music_get_title(track_id);
const char * artist = _lv_demo_music_get_artist(track_id);
const char * title = lv_demo_music_get_title(track_id);
const char * artist = lv_demo_music_get_artist(track_id);
lv_obj_t * btn = lv_obj_create(parent);
lv_obj_remove_style_all(btn);
@@ -233,7 +233,7 @@ static void btn_click_event_cb(lv_event_t * e)
uint32_t idx = lv_obj_get_index(btn);
_lv_demo_music_play(idx);
lv_demo_music_play(idx);
}
static void list_delete_event_cb(lv_event_t * e)

View File

@@ -27,8 +27,8 @@ extern "C" {
/**********************
* GLOBAL PROTOTYPES
**********************/
lv_obj_t * _lv_demo_music_list_create(lv_obj_t * parent);
void _lv_demo_music_list_button_check(uint32_t track_id, bool state);
lv_obj_t * lv_demo_music_list_create(lv_obj_t * parent);
void lv_demo_music_list_button_check(uint32_t track_id, bool state);
/**********************
* MACROS

View File

@@ -124,7 +124,7 @@ static void _obj_set_x_anim_cb(void * obj, int32_t x)
lv_obj_set_x((lv_obj_t *)obj, (int32_t)x);
}
lv_obj_t * _lv_demo_music_main_create(lv_obj_t * parent)
lv_obj_t * lv_demo_music_main_create(lv_obj_t * parent)
{
font_small = LV_FONT_DEFAULT;
font_large = LV_FONT_DEFAULT;
@@ -318,7 +318,7 @@ lv_obj_t * _lv_demo_music_main_create(lv_obj_t * parent)
return main_cont;
}
void _lv_demo_music_album_next(bool next)
void lv_demo_music_album_next(bool next)
{
uint32_t id = track_id;
if(next) {
@@ -335,21 +335,21 @@ void _lv_demo_music_album_next(bool next)
}
if(playing) {
_lv_demo_music_play(id);
lv_demo_music_play(id);
}
else {
track_load(id);
}
}
void _lv_demo_music_play(uint32_t id)
void lv_demo_music_play(uint32_t id)
{
track_load(id);
_lv_demo_music_resume();
lv_demo_music_resume();
}
void _lv_demo_music_resume(void)
void lv_demo_music_resume(void)
{
playing = true;
spectrum_i = spectrum_i_pause;
@@ -364,13 +364,13 @@ void _lv_demo_music_resume(void)
lv_anim_start(&a);
if(sec_counter_timer) lv_timer_resume(sec_counter_timer);
lv_slider_set_range(slider_obj, 0, _lv_demo_music_get_track_length(track_id));
lv_slider_set_range(slider_obj, 0, lv_demo_music_get_track_length(track_id));
lv_obj_add_state(play_obj, LV_STATE_CHECKED);
}
void _lv_demo_music_pause(void)
void lv_demo_music_pause(void)
{
playing = false;
spectrum_i_pause = spectrum_i;
@@ -499,18 +499,18 @@ static lv_obj_t * create_title_box(lv_obj_t * parent)
title_label = lv_label_create(cont);
lv_obj_set_style_text_font(title_label, font_large, 0);
lv_obj_set_style_text_color(title_label, lv_color_hex(0x504d6d), 0);
lv_label_set_text(title_label, _lv_demo_music_get_title(track_id));
lv_label_set_text(title_label, lv_demo_music_get_title(track_id));
lv_obj_set_height(title_label, lv_font_get_line_height(font_large) * 3 / 2);
artist_label = lv_label_create(cont);
lv_obj_set_style_text_font(artist_label, font_small, 0);
lv_obj_set_style_text_color(artist_label, lv_color_hex(0x504d6d), 0);
lv_label_set_text(artist_label, _lv_demo_music_get_artist(track_id));
lv_label_set_text(artist_label, lv_demo_music_get_artist(track_id));
genre_label = lv_label_create(cont);
lv_obj_set_style_text_font(genre_label, font_small, 0);
lv_obj_set_style_text_color(genre_label, lv_color_hex(0x8a86b8), 0);
lv_label_set_text(genre_label, _lv_demo_music_get_genre(track_id));
lv_label_set_text(genre_label, lv_demo_music_get_genre(track_id));
return cont;
}
@@ -685,15 +685,15 @@ static void track_load(uint32_t id)
bool next = false;
if((track_id + 1) % ACTIVE_TRACK_CNT == id) next = true;
_lv_demo_music_list_button_check(track_id, false);
lv_demo_music_list_button_check(track_id, false);
track_id = id;
_lv_demo_music_list_button_check(id, true);
lv_demo_music_list_button_check(id, true);
lv_label_set_text(title_label, _lv_demo_music_get_title(track_id));
lv_label_set_text(artist_label, _lv_demo_music_get_artist(track_id));
lv_label_set_text(genre_label, _lv_demo_music_get_genre(track_id));
lv_label_set_text(title_label, lv_demo_music_get_title(track_id));
lv_label_set_text(artist_label, lv_demo_music_get_artist(track_id));
lv_label_set_text(genre_label, lv_demo_music_get_genre(track_id));
lv_anim_t a;
lv_anim_init(&a);
@@ -801,8 +801,10 @@ static void spectrum_draw_event_cb(lv_event_t * e)
if(opa < LV_OPA_MIN) return;
lv_point_t center;
center.x = obj->coords.x1 + lv_obj_get_width(obj) / 2;
center.y = obj->coords.y1 + lv_obj_get_height(obj) / 2;
lv_area_t obj_coords;
lv_obj_get_coords(obj, &obj_coords);
center.x = obj_coords.x1 + lv_obj_get_width(obj) / 2;
center.y = obj_coords.y1 + lv_obj_get_height(obj) / 2;
lv_draw_triangle_dsc_t draw_dsc;
lv_draw_triangle_dsc_init(&draw_dsc);
@@ -975,32 +977,32 @@ static void album_gesture_event_cb(lv_event_t * e)
{
LV_UNUSED(e);
lv_dir_t dir = lv_indev_get_gesture_dir(lv_indev_active());
if(dir == LV_DIR_LEFT) _lv_demo_music_album_next(true);
if(dir == LV_DIR_RIGHT) _lv_demo_music_album_next(false);
if(dir == LV_DIR_LEFT) lv_demo_music_album_next(true);
if(dir == LV_DIR_RIGHT) lv_demo_music_album_next(false);
}
static void play_event_click_cb(lv_event_t * e)
{
lv_obj_t * obj = lv_event_get_target(e);
if(lv_obj_has_state(obj, LV_STATE_CHECKED)) {
_lv_demo_music_resume();
lv_demo_music_resume();
}
else {
_lv_demo_music_pause();
lv_demo_music_pause();
}
}
static void prev_click_event_cb(lv_event_t * e)
{
LV_UNUSED(e);
_lv_demo_music_album_next(false);
lv_demo_music_album_next(false);
}
static void next_click_event_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e);
if(code == LV_EVENT_CLICKED) {
_lv_demo_music_album_next(true);
lv_demo_music_album_next(true);
}
}
@@ -1015,7 +1017,7 @@ static void timer_cb(lv_timer_t * t)
static void spectrum_end_cb(lv_anim_t * a)
{
LV_UNUSED(a);
_lv_demo_music_album_next(true);
lv_demo_music_album_next(true);
}
static void stop_start_anim(lv_timer_t * t)

View File

@@ -32,11 +32,11 @@ extern "C" {
/**********************
* GLOBAL PROTOTYPES
**********************/
lv_obj_t * _lv_demo_music_main_create(lv_obj_t * parent);
void _lv_demo_music_play(uint32_t id);
void _lv_demo_music_resume(void);
void _lv_demo_music_pause(void);
void _lv_demo_music_album_next(bool next);
lv_obj_t * lv_demo_music_main_create(lv_obj_t * parent);
void lv_demo_music_play(uint32_t id);
void lv_demo_music_resume(void);
void lv_demo_music_pause(void);
void lv_demo_music_album_next(bool next);
/**********************
* MACROS

View File

@@ -0,0 +1,73 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif
#ifndef LV_ATTRIBUTE_IMG_RENDER_LVGL_LOGO_I1
#define LV_ATTRIBUTE_IMG_RENDER_LVGL_LOGO_I1
#endif
static const
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_RENDER_LVGL_LOGO_I1
uint8_t img_render_lvgl_logo_i1_map[] = {
0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
0x20,0x00,0x00,0x18,
0xc0,0x00,0x00,0x04,
0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x70,
0x00,0x00,0x00,0xf0,
0x00,0x00,0x00,0x60,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0xff,0x80,0x00,0x00,
0xff,0xc0,0x00,0x00,
0x80,0x60,0x00,0x00,
0x80,0x60,0x00,0x00,
0x80,0x60,0x00,0x00,
0x80,0x60,0x00,0x00,
0x80,0x60,0x00,0x00,
0x80,0x60,0x00,0x00,
0x80,0x60,0x00,0x00,
0x80,0x60,0x00,0x00,
0xff,0xe0,0x00,0x00,
0x7f,0x9f,0xf0,0x00,
0x80,0x60,0x18,0x00,
0x80,0x60,0x18,0x00,
0x80,0x60,0x18,0x00,
0x80,0x60,0x18,0x00,
0x80,0x60,0x18,0x00,
0x80,0x60,0x18,0x00,
0x80,0x60,0x18,0x00,
0x80,0x60,0x18,0x04,
0x40,0x00,0x18,0x0c,
};
const lv_image_dsc_t img_render_lvgl_logo_i1 = {
.header.magic = LV_IMAGE_HEADER_MAGIC,
.header.cf = LV_COLOR_FORMAT_I1,
.header.flags = 0,
.header.w = 30,
.header.h = 30,
.header.stride = 4,
.data_size = sizeof(img_render_lvgl_logo_i1_map),
.data = img_render_lvgl_logo_i1_map,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

View File

@@ -14,54 +14,58 @@
#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif
#ifndef LV_ATTRIBUTE_IMG_IMG_RENDER_LVGL_LOGO_L8
#define LV_ATTRIBUTE_IMG_IMG_RENDER_LVGL_LOGO_L8
#ifndef LV_ATTRIBUTE_IMG_RENDER_LVGL_LOGO_L8
#define LV_ATTRIBUTE_IMG_RENDER_LVGL_LOGO_L8
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_IMG_RENDER_LVGL_LOGO_L8 uint8_t
img_render_lvgl_logo_l8_map[] = {
/*Pixel format: Grayscale 8 bit*/
0xfd,0xfd,0xdf,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xed,0xfd,0xfd,
0xfd,0xa8,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x22,0xcf,0xfd,
0xdf,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x46,0xfc,
0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x3f,0xbf,0xb1,0x1d,0x1d,0x1d,0xe7,
0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xb9,0xfd,0xfd,0x8d,0x1d,0x1d,0xe6,
0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x97,0xfd,0xfa,0x67,0x1d,0x1d,0xe6,
0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x72,0x64,0x1d,0x1d,0x1d,0xe6,
0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xe0,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xfd,0xf1,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe1,0x7c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xfa,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xdb,0xfd,0xc7,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xed,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd7,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xf2,0xdd,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xfd,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xf1,0xfd,0xfd,0xf0,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xde,0x78,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xfa,0xd5,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xdd,0xfd,0xfa,0xd5,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xdd,0xfd,0xc7,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xee,0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xee,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xe6,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xea,
0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xd2,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xe9,0xcb,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x64,0xfd,
0xd7,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xf2,0xd7,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0xf2,0xdc,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x56,0xe1,0xfd,
0xfd,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xee,0xfd,0xfd,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xee,0xfd,0xfd,0xed,0xe6,0xe6,0xe6,0xe6,0xe6,0xfa,0xfd,0xfd,
static const
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_RENDER_LVGL_LOGO_L8
uint8_t img_render_lvgl_logo_l8_map[] = {
0x00,0x00,0x40,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x47,0x47,0x47,0x46,0x47,0x20,0x00,
0x02,0x4b,0x2f,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x2c,0x2a,0x2e,0x3e,0x29,
0x40,0x2f,0x35,0x36,0x35,0x36,0x36,0x37,0x36,0x35,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x31,0x5e,0x69,0x35,0x2a,0x45,
0x47,0x32,0x36,0x35,0x36,0x36,0x35,0x36,0x35,0x36,0x36,0x35,0x36,0x35,0x36,0x35,0x37,0x36,0x36,0x36,0x36,0x35,0x37,0x2d,0x7a,0xfb,0xfd,0x9c,0x2c,0x38,
0x47,0x33,0x35,0x36,0x35,0x36,0x36,0x36,0x36,0x35,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x36,0x35,0x36,0x36,0x37,0x29,0xb1,0xfd,0xfd,0xd8,0x2f,0x39,
0x47,0x33,0x36,0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x37,0x35,0x36,0x36,0x36,0x36,0x37,0x2f,0x60,0xe7,0xf1,0x7f,0x2d,0x39,
0x47,0x33,0x36,0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x35,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x30,0x43,0x49,0x2f,0x35,0x39,
0x46,0x33,0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x35,0x36,0x36,0x35,0x36,0x36,0x37,0x36,0x36,0x35,0x36,0x36,0x35,0x36,0x36,0x32,0x31,0x35,0x35,0x39,
0x49,0x27,0x29,0x2a,0x29,0x2a,0x2a,0x29,0x29,0x2f,0x37,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x35,0x37,0x35,0x35,0x37,0x36,0x36,0x37,0x35,0x36,0x35,0x39,
0x17,0x41,0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x47,0x2e,0x36,0x35,0x37,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x39,
0x05,0x35,0x3c,0x3a,0x3a,0x3a,0x3a,0x3d,0x33,0x07,0x49,0x2e,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x35,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x39,
0x67,0x71,0x72,0x71,0x71,0x71,0x72,0x72,0x6c,0x48,0x32,0x2b,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x37,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x39,
0x72,0x77,0x79,0x79,0x79,0x79,0x79,0x79,0x6f,0x5a,0x30,0x2b,0x35,0x37,0x36,0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x35,0x36,0x35,0x36,0x36,0x36,0x35,0x39,
0x72,0x77,0x79,0x79,0x78,0x79,0x79,0x79,0x70,0x59,0x31,0x2c,0x36,0x37,0x35,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x39,
0x72,0x77,0x79,0x79,0x79,0x79,0x79,0x79,0x70,0x59,0x31,0x2c,0x35,0x36,0x36,0x36,0x37,0x35,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x39,
0x72,0x77,0x79,0x79,0x79,0x79,0x79,0x79,0x70,0x59,0x31,0x2b,0x36,0x36,0x35,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x35,0x36,0x35,0x39,
0x72,0x77,0x79,0x79,0x79,0x79,0x78,0x79,0x70,0x59,0x31,0x2c,0x36,0x36,0x36,0x35,0x35,0x36,0x35,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x39,
0x71,0x77,0x79,0x79,0x78,0x79,0x79,0x79,0x70,0x59,0x32,0x2b,0x36,0x36,0x35,0x36,0x35,0x36,0x36,0x37,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x39,
0x72,0x71,0x74,0x74,0x74,0x73,0x74,0x74,0x6b,0x5a,0x31,0x23,0x2f,0x2e,0x2f,0x2f,0x2f,0x2d,0x2e,0x32,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x39,
0x41,0x70,0x72,0x72,0x72,0x72,0x72,0x72,0x6f,0x29,0x0e,0x49,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x3f,0x2e,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x39,
0x00,0x07,0x11,0x10,0x10,0x10,0x10,0x11,0x07,0x00,0x00,0x01,0x13,0x11,0x11,0x11,0x11,0x11,0x0e,0x0b,0x4b,0x2e,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x39,
0x51,0x9d,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x9b,0x2e,0x1a,0x62,0x65,0x65,0x65,0x65,0x65,0x65,0x60,0x52,0x15,0x36,0x34,0x36,0x36,0x36,0x35,0x36,0x35,0x39,
0x91,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xac,0x60,0x35,0x59,0x63,0x63,0x63,0x63,0x63,0x63,0x5d,0x65,0x0d,0x3d,0x32,0x36,0x35,0x36,0x36,0x36,0x35,0x39,
0x8f,0xb1,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xae,0x5b,0x32,0x5e,0x65,0x65,0x65,0x65,0x65,0x65,0x60,0x65,0x11,0x3f,0x31,0x35,0x36,0x36,0x36,0x36,0x35,0x39,
0x8d,0xb1,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xad,0x5c,0x32,0x5e,0x65,0x65,0x65,0x65,0x65,0x65,0x60,0x65,0x11,0x3f,0x32,0x36,0x35,0x36,0x36,0x36,0x35,0x39,
0x8f,0xb1,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xae,0x5c,0x32,0x5e,0x65,0x65,0x65,0x65,0x65,0x65,0x60,0x65,0x11,0x3f,0x32,0x35,0x36,0x36,0x36,0x36,0x35,0x39,
0x8f,0xb1,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xad,0x5b,0x32,0x5e,0x65,0x65,0x65,0x65,0x65,0x65,0x60,0x65,0x11,0x3f,0x32,0x35,0x36,0x36,0x36,0x36,0x35,0x39,
0x6e,0xb0,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xae,0x5c,0x32,0x5e,0x65,0x65,0x65,0x65,0x65,0x65,0x5f,0x65,0x11,0x3f,0x32,0x36,0x36,0x36,0x36,0x36,0x33,0x3d,
0x1b,0x9c,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xad,0x5e,0x35,0x5b,0x65,0x65,0x65,0x65,0x65,0x65,0x5e,0x65,0x11,0x3a,0x31,0x35,0x35,0x35,0x35,0x33,0x26,0x48,
0x00,0x26,0x8a,0xa7,0xac,0xab,0xab,0xac,0xa3,0x35,0x1c,0x62,0x65,0x65,0x65,0x65,0x65,0x65,0x5e,0x58,0x03,0x49,0x33,0x39,0x39,0x3a,0x38,0x3d,0x49,0x02,
};
const lv_image_dsc_t img_render_lvgl_logo_l8 = {
.header.magic = LV_IMAGE_HEADER_MAGIC,
.header.cf = LV_COLOR_FORMAT_L8,
.header.flags = 0,
.header.w = 30,
.header.h = 30,
.data = img_render_lvgl_logo_l8_map,
.header.stride = 30,
.data_size = sizeof(img_render_lvgl_logo_l8_map),
.data = img_render_lvgl_logo_l8_map,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -10,7 +10,6 @@
#if LV_USE_DEMO_RENDER
#include "../../src/display/lv_display_private.h"
#include "../../src/core/lv_global.h"
/*********************
@@ -336,6 +335,7 @@ static void image_core_cb(lv_obj_t * parent, bool recolor, uint32_t startAt)
LV_IMAGE_DECLARE(img_render_lvgl_logo_rgb565);
LV_IMAGE_DECLARE(img_render_lvgl_logo_argb8888);
LV_IMAGE_DECLARE(img_render_lvgl_logo_l8);
LV_IMAGE_DECLARE(img_render_lvgl_logo_i1);
const void * srcs[] = {
&img_render_lvgl_logo_argb8888,
@@ -343,6 +343,7 @@ static void image_core_cb(lv_obj_t * parent, bool recolor, uint32_t startAt)
&img_render_lvgl_logo_rgb888,
&img_render_lvgl_logo_rgb565,
&img_render_lvgl_logo_l8,
&img_render_lvgl_logo_i1,
};
const void * names[] = {
@@ -351,6 +352,7 @@ static void image_core_cb(lv_obj_t * parent, bool recolor, uint32_t startAt)
"RGB\n888",
"RGB\n565",
"L8",
"I1",
};
uint32_t stopAt = startAt + LV_MIN(sizeof(srcs) / sizeof(void *) - startAt, 4);
@@ -528,12 +530,14 @@ static void triangle_draw_event_cb(lv_event_t * e)
lv_point_t * p_rel = lv_event_get_user_data(e);
dsc.p[0].x = p_rel[0].x + obj->coords.x1 + 8;
dsc.p[0].y = p_rel[0].y + obj->coords.y1 + 2;
dsc.p[1].x = p_rel[1].x + obj->coords.x1 + 8;
dsc.p[1].y = p_rel[1].y + obj->coords.y1 + 2;
dsc.p[2].x = p_rel[2].x + obj->coords.x1 + 8;
dsc.p[2].y = p_rel[2].y + obj->coords.y1 + 2;
lv_area_t coords;
lv_obj_get_coords(obj, &coords);
dsc.p[0].x = p_rel[0].x + coords.x1 + 8;
dsc.p[0].y = p_rel[0].y + coords.y1 + 2;
dsc.p[1].x = p_rel[1].x + coords.x1 + 8;
dsc.p[1].y = p_rel[1].y + coords.y1 + 2;
dsc.p[2].x = p_rel[2].x + coords.x1 + 8;
dsc.p[2].y = p_rel[2].y + coords.y1 + 2;
lv_opa_t opa = lv_obj_get_style_opa(obj, 0);
dsc.bg_grad.dir = lv_obj_get_style_bg_grad_dir(obj, 0);
@@ -1129,7 +1133,7 @@ void lv_demo_render(lv_demo_render_scene_t id, lv_opa_t opa)
const char * lv_demo_render_get_scene_name(lv_demo_render_scene_t id)
{
if(id > _LV_DEMO_RENDER_SCENE_NUM) return NULL;
if(id > LV_DEMO_RENDER_SCENE_NUM) return NULL;
return scenes[id].name;
}

View File

@@ -48,7 +48,7 @@ typedef enum {
LV_DEMO_RENDER_SCENE_RADIAL_GRADIENT,
LV_DEMO_RENDER_SCENE_CONICAL_GRADIENT,
#endif
_LV_DEMO_RENDER_SCENE_NUM,
LV_DEMO_RENDER_SCENE_NUM,
} lv_demo_render_scene_t;
/**********************

View File

@@ -438,7 +438,7 @@ static void auto_delete(lv_obj_t * obj, uint32_t delay)
static void msgbox_delete(lv_timer_t * tmr)
{
lv_msgbox_close(tmr->user_data);
lv_msgbox_close(lv_timer_get_user_data(tmr));
}
static void set_y_anim(void * obj, int32_t v)

View File

@@ -1,9 +1,15 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_BUILD_TEST)
#include "../../../lvgl.h"
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#include "lvgl/lvgl.h"
#endif
#ifndef LV_ATTRIBUTE_MEM_ALIGN

View File

@@ -245,6 +245,13 @@ static void delete_event_cb(lv_event_t * e)
lv_draw_buf_destroy(draw_buf);
}
static void event_cb(lv_event_t * e)
{
lv_layer_t * layer = lv_event_get_layer(e);
draw_vector(layer);
}
/**********************
* STATIC VARIABLES
**********************/
@@ -257,7 +264,12 @@ static void delete_event_cb(lv_event_t * e)
* GLOBAL FUNCTIONS
**********************/
void lv_demo_vector_graphic(void)
void lv_demo_vector_graphic_not_buffered(void)
{
lv_obj_add_event_cb(lv_screen_active(), event_cb, LV_EVENT_DRAW_MAIN, NULL);
}
void lv_demo_vector_graphic_buffered(void)
{
lv_draw_buf_t * draw_buf = lv_draw_buf_create(WIDTH, HEIGHT, LV_COLOR_FORMAT_ARGB8888, LV_STRIDE_AUTO);
lv_draw_buf_clear(draw_buf, NULL);
@@ -278,7 +290,15 @@ void lv_demo_vector_graphic(void)
**********************/
#else
void lv_demo_vector_graphic(void)
void lv_demo_vector_graphic_not_buffered(void)
{
/*fallback for online examples*/
lv_obj_t * label = lv_label_create(lv_screen_active());
lv_label_set_text(label, "Vector graphics is not enabled");
lv_obj_center(label);
}
void lv_demo_vector_graphic_buffered(void)
{
/*fallback for online examples*/
lv_obj_t * label = lv_label_create(lv_screen_active());

View File

@@ -27,7 +27,18 @@ extern "C" {
/**********************
* GLOBAL PROTOTYPES
**********************/
void lv_demo_vector_graphic(void);
/**
* Draw many vector based shapes and paths to canvas.
* It requires a large amount of RAM for the buffer of the canvas
*/
void lv_demo_vector_graphic_buffered(void);
/**
* Draw many vector based shapes and paths to canvas directly to the screen.
* It's slower as the graphics needs to rendered on each rendering cycle.
*/
void lv_demo_vector_graphic_not_buffered(void);
/**********************
* MACROS

View File

@@ -1,9 +1,15 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_BUILD_TEST)
#include "../../../lvgl.h"
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#include "lvgl/lvgl.h"
#endif
#if LV_USE_DEMO_WIDGETS

View File

@@ -1,9 +1,15 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_BUILD_TEST)
#include "../../../lvgl.h"
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#include "lvgl/lvgl.h"
#endif
#if LV_USE_DEMO_WIDGETS

View File

@@ -38,5 +38,5 @@ const lv_image_dsc_t img_demo_widgets_needle = {
.header.stride = 400,
.header.cf = LV_COLOR_FORMAT_ARGB8888,
.data = img_demo_widgets_needle_map,
.data_size = sizeof(img_demo_widgets_needle_map),
};

View File

@@ -1,9 +1,15 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#elif defined(LV_BUILD_TEST)
#include "../../../lvgl.h"
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#include "lvgl/lvgl.h"
#endif
#if LV_USE_DEMO_WIDGETS
@@ -19,48 +25,48 @@ static const
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMAGE_IMG_LVGL_LOGO
uint8_t img_lvgl_logo_map[] = {
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xda,0xd9,0x27,0x90,0x8f,0x8d,0x7d,0x74,0x74,0x71,0xa0,0x77,0x76,0x73,0x9f,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x76,0x76,0x73,0xa0,0x77,0x76,0x73,0x9b,0xa4,0xa4,0xa2,0x64,0xef,0xef,0xee,0x0f,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x9d,0x9c,0x9a,0x72,0x44,0x43,0x3f,0xe2,0x37,0x36,0x32,0xfe,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xf8,0x55,0x54,0x50,0xc9,0xc5,0xc5,0xc3,0x3f,0xff,0xff,0xff,0x00,
0xff,0xff,0xff,0x00,0x9e,0x9d,0x9b,0x6f,0x29,0x27,0x23,0xff,0x35,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x30,0x2f,0x2a,0xff,0x34,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2a,0xff,0x38,0x37,0x33,0xf1,0xcf,0xce,0xcd,0x33,
0xdc,0xdb,0xdb,0x25,0x44,0x43,0x40,0xe5,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2b,0xff,0x48,0x47,0x43,0xff,0x6b,0x6a,0x67,0xff,0x4e,0x4d,0x49,0xff,0x31,0x30,0x2c,0xff,0x3a,0x39,0x35,0xff,0x2d,0x2c,0x28,0xff,0x6b,0x6b,0x67,0xb1,
0x8f,0x8f,0x8d,0x7d,0x37,0x36,0x32,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x32,0x31,0x2c,0xff,0x67,0x66,0x63,0xff,0xe6,0xe5,0xe5,0xff,0xff,0xff,0xff,0xff,0xed,0xed,0xed,0xff,0x70,0x6f,0x6d,0xff,0x30,0x2f,0x2b,0xff,0x37,0x36,0x32,0xff,0x44,0x43,0x3f,0xe7,
0x75,0x74,0x71,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x34,0x33,0x2e,0xff,0xcf,0xcf,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xdb,0xdb,0xff,0x39,0x38,0x34,0xff,0x36,0x35,0x31,0xff,0x40,0x3f,0x3b,0xef,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x36,0x35,0x31,0xff,0xd9,0xd8,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xe7,0xe6,0xff,0x3e,0x3d,0x39,0xff,0x35,0x34,0x30,0xff,0x41,0x40,0x3c,0xee,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x2f,0x2e,0x2a,0xff,0x88,0x88,0x85,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x95,0x92,0xff,0x30,0x2f,0x2b,0xff,0x38,0x36,0x33,0xff,0x41,0x40,0x3c,0xee,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x33,0x32,0x2e,0xff,0x75,0x75,0x72,0xff,0xa0,0x9f,0x9d,0xff,0x7d,0x7d,0x7a,0xff,0x36,0x35,0x31,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x2f,0x2e,0x2a,0xff,0x2c,0x2b,0x27,0xff,0x2e,0x2d,0x29,0xff,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x77,0x76,0x73,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x72,0x72,0x6f,0xa2,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0xb8,0xb8,0xb6,0x4d,0x40,0x3f,0x3c,0xea,0x2e,0x2d,0x28,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x31,0x2f,0x2b,0xff,0x2e,0x2d,0x29,0xff,0x32,0x31,0x2d,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0xff,0xff,0xff,0x00,0xdd,0xdc,0xd9,0x25,0xbf,0xbc,0xb7,0x4b,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc3,0xc1,0xbc,0x47,0xaa,0xa9,0xa5,0x63,0x58,0x57,0x53,0xcc,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0xff,0xff,0xff,0x00,0xfd,0xff,0xff,0x02,0xee,0xf6,0xff,0x13,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xee,0xf6,0xff,0x13,0xff,0xff,0xff,0x00,0xf3,0xf2,0xf0,0x0a,0x64,0x63,0x61,0xb9,0x31,0x30,0x2c,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0xd1,0xde,0xfd,0x30,0x49,0x7d,0xf6,0xc8,0x24,0x63,0xf4,0xf7,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x23,0x62,0xf4,0xf6,0x50,0x81,0xf6,0xbf,0xf3,0xf9,0xff,0x0c,0xd3,0xd2,0xce,0x2f,0x35,0x34,0x30,0xfa,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x68,0x93,0xf7,0x9f,0x18,0x59,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x0f,0x53,0xf3,0xff,0xba,0xcf,0xff,0x4a,0xf5,0xf1,0xea,0x0a,0x41,0x40,0x3c,0xed,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x64,0x90,0xf7,0xa4,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb7,0xcc,0xff,0x4f,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x62,0x8e,0xf7,0xa7,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x15,0x57,0xf3,0xff,0xb6,0xcc,0xff,0x50,0xf2,0xef,0xe8,0x0f,0x3f,0x3e,0x3a,0xf1,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x7f,0xa3,0xf8,0x87,0x15,0x57,0xf3,0xff,0x14,0x56,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x13,0x56,0xf2,0xff,0x10,0x53,0xf3,0xff,0xc5,0xd7,0xff,0x3e,0xf8,0xf5,0xef,0x08,0x42,0x41,0x3d,0xe8,0x2a,0x29,0x24,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x30,0x2f,0x2a,0xff,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0xef,0xf4,0xfe,0x0f,0x81,0xa5,0xf8,0x88,0x52,0x83,0xf6,0xbc,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x52,0x83,0xf6,0xbb,0x8a,0xab,0xf9,0x7e,0xfb,0xfd,0xff,0x04,0xff,0xff,0xff,0x00,0xb7,0xb6,0xb5,0x50,0x67,0x67,0x63,0xb1,0x69,0x68,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6b,0x6a,0x67,0xb3,0x67,0x66,0x63,0xb6,0x46,0x45,0x41,0xe5,0x30,0x2f,0x2a,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xe5,0xe8,0xe8,0x17,0x69,0x68,0x65,0xb3,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0xfa,0xfd,0xfa,0x02,0xbb,0xec,0xb8,0x54,0x9d,0xe3,0x99,0x8c,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0x9d,0xe3,0x98,0x8b,0xc1,0xed,0xbe,0x49,0xfe,0xff,0xfe,0x00,0xff,0xff,0xff,0x00,0xfe,0xd6,0xca,0x38,0xfc,0x9d,0x83,0x8e,0xfc,0x9f,0x84,0x95,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9d,0x82,0x96,0xfd,0xa7,0x8f,0x81,0xff,0xf4,0xf0,0x0f,0xeb,0xec,0xeb,0x14,0x47,0x46,0x43,0xe0,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0xae,0xe7,0xab,0x61,0x61,0xd1,0x5b,0xfc,0x5e,0xd0,0x58,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5d,0xd0,0x58,0xff,0x5e,0xd1,0x59,0xf5,0xd8,0xf7,0xdb,0x28,0xff,0xf6,0xf7,0x07,0xf9,0x70,0x4a,0xdd,0xf8,0x58,0x2b,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x53,0x26,0xff,0xfb,0x98,0x7c,0x9b,0xff,0xff,0xff,0x00,0x7c,0x7c,0x7a,0x9d,0x2e,0x2d,0x29,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x93,0xe0,0x90,0x9a,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x5f,0xd1,0x5a,0xff,0xc9,0xf4,0xcc,0x42,0xff,0xef,0xef,0x0e,0xf8,0x69,0x41,0xf0,0xf8,0x63,0x3a,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x89,0x69,0xb6,0xff,0xff,0xff,0x00,0x83,0x83,0x81,0x93,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x95,0xe1,0x93,0x97,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,
0x97,0xe1,0x93,0x8d,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x40,0x3f,0x3b,0xee,
0xba,0xeb,0xb8,0x51,0x66,0xd3,0x61,0xf8,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x4b,0x49,0x46,0xde,
0xf2,0xfc,0xf2,0x0a,0x7c,0xd9,0x78,0xbf,0x60,0xd1,0x5b,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x40,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xed,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6b,0xb2,0xff,0xff,0xff,0x00,0x81,0x81,0x7f,0x96,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x3a,0x39,0x35,0xff,0x29,0x28,0x24,0xff,0x85,0x85,0x82,0x8e,
0xff,0xff,0xff,0x00,0xd3,0xf2,0xd1,0x30,0x66,0xd2,0x61,0xe2,0x5e,0xd0,0x59,0xff,0x65,0xd3,0x60,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x5c,0xd0,0x57,0xff,0xcb,0xf4,0xce,0x3b,0xff,0xf1,0xf1,0x0c,0xf8,0x68,0x3f,0xf1,0xf8,0x61,0x37,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3b,0xff,0xf8,0x5a,0x2f,0xff,0xfa,0x89,0x69,0xb5,0xff,0xff,0xff,0x00,0x7f,0x7f,0x7d,0x97,0x2a,0x29,0x24,0xff,0x38,0x37,0x33,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x38,0x37,0x33,0xff,0x35,0x34,0x30,0xff,0x29,0x28,0x24,0xff,0x57,0x56,0x53,0xc8,0xeb,0xeb,0xea,0x14,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xf4,0xd9,0x26,0x8d,0xdf,0x8a,0x9f,0x6f,0xd6,0x6b,0xdd,0x6c,0xd4,0x67,0xed,0x6d,0xd5,0x68,0xed,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xed,0x69,0xd4,0x64,0xec,0x82,0xdb,0x7e,0xb0,0xee,0xfb,0xef,0x0c,0xff,0xfd,0xfd,0x01,0xfb,0x9b,0x81,0x92,0xf9,0x66,0x3e,0xeb,0xf9,0x6b,0x44,0xef,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6a,0x42,0xef,0xf9,0x6a,0x42,0xe3,0xfc,0xc2,0xb1,0x57,0xff,0xff,0xff,0x00,0xc3,0xc3,0xc2,0x42,0x44,0x43,0x3f,0xe0,0x3e,0x3e,0x3a,0xf0,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x40,0x3f,0x3b,0xee,0x4a,0x49,0x46,0xdb,0x85,0x84,0x82,0x8f,0xec,0xec,0xec,0x13,0xff,0xff,0xff,0x00,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xda,0xd9,0x27,0x90,0x8f,0x8d,0x7d,0x74,0x74,0x71,0xa0,0x77,0x76,0x73,0x9f,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x76,0x76,0x73,0xa0,0x77,0x76,0x73,0x9b,0xa4,0xa4,0xa2,0x64,0xef,0xef,0xee,0x0f,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x9d,0x9c,0x9a,0x72,0x44,0x43,0x3f,0xe2,0x37,0x36,0x32,0xfe,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xf8,0x55,0x54,0x50,0xc9,0xc5,0xc5,0xc3,0x3f,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0x9e,0x9d,0x9b,0x6f,0x29,0x27,0x23,0xff,0x35,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x30,0x2f,0x2a,0xff,0x34,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2a,0xff,0x38,0x37,0x33,0xf1,0xcf,0xce,0xcd,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xdc,0xdb,0xdb,0x25,0x44,0x43,0x40,0xe5,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2b,0xff,0x48,0x47,0x43,0xff,0x6b,0x6a,0x67,0xff,0x4e,0x4d,0x49,0xff,0x31,0x30,0x2c,0xff,0x3a,0x39,0x35,0xff,0x2d,0x2c,0x28,0xff,0x6b,0x6b,0x67,0xb1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x8f,0x8f,0x8d,0x7d,0x37,0x36,0x32,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x32,0x31,0x2c,0xff,0x67,0x66,0x63,0xff,0xe6,0xe5,0xe5,0xff,0xff,0xff,0xff,0xff,0xed,0xed,0xed,0xff,0x70,0x6f,0x6d,0xff,0x30,0x2f,0x2b,0xff,0x37,0x36,0x32,0xff,0x44,0x43,0x3f,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x75,0x74,0x71,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x34,0x33,0x2e,0xff,0xcf,0xcf,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xdb,0xdb,0xff,0x39,0x38,0x34,0xff,0x36,0x35,0x31,0xff,0x40,0x3f,0x3b,0xef,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x36,0x35,0x31,0xff,0xd9,0xd8,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xe7,0xe6,0xff,0x3e,0x3d,0x39,0xff,0x35,0x34,0x30,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x2f,0x2e,0x2a,0xff,0x88,0x88,0x85,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x95,0x92,0xff,0x30,0x2f,0x2b,0xff,0x38,0x36,0x33,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x33,0x32,0x2e,0xff,0x75,0x75,0x72,0xff,0xa0,0x9f,0x9d,0xff,0x7d,0x7d,0x7a,0xff,0x36,0x35,0x31,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x2f,0x2e,0x2a,0xff,0x2c,0x2b,0x27,0xff,0x2e,0x2d,0x29,0xff,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x72,0x72,0x6f,0xa2,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xb8,0xb8,0xb6,0x4d,0x40,0x3f,0x3c,0xea,0x2e,0x2d,0x28,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x31,0x2f,0x2b,0xff,0x2e,0x2d,0x29,0xff,0x32,0x31,0x2d,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xdd,0xdc,0xd9,0x25,0xbf,0xbc,0xb7,0x4b,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc3,0xc1,0xbc,0x47,0xaa,0xa9,0xa5,0x63,0x58,0x57,0x53,0xcc,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xfd,0xff,0xff,0x02,0xee,0xf6,0xff,0x13,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xee,0xf6,0xff,0x13,0xff,0xff,0xff,0x00,0xf3,0xf2,0xf0,0x0a,0x64,0x63,0x61,0xb9,0x31,0x30,0x2c,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xd1,0xde,0xfd,0x30,0x49,0x7d,0xf6,0xc8,0x24,0x63,0xf4,0xf7,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x23,0x62,0xf4,0xf6,0x50,0x81,0xf6,0xbf,0xf3,0xf9,0xff,0x0c,0xd3,0xd2,0xce,0x2f,0x35,0x34,0x30,0xfa,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x68,0x93,0xf7,0x9f,0x18,0x59,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x0f,0x53,0xf3,0xff,0xba,0xcf,0xff,0x4a,0xf5,0xf1,0xea,0x0a,0x41,0x40,0x3c,0xed,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x64,0x90,0xf7,0xa4,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb7,0xcc,0xff,0x4f,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x62,0x8e,0xf7,0xa7,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x15,0x57,0xf3,0xff,0xb6,0xcc,0xff,0x50,0xf2,0xef,0xe8,0x0f,0x3f,0x3e,0x3a,0xf1,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7f,0xa3,0xf8,0x87,0x15,0x57,0xf3,0xff,0x14,0x56,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x13,0x56,0xf2,0xff,0x10,0x53,0xf3,0xff,0xc5,0xd7,0xff,0x3e,0xf8,0xf5,0xef,0x08,0x42,0x41,0x3d,0xe8,0x2a,0x29,0x24,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x30,0x2f,0x2a,0xff,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xef,0xf4,0xfe,0x0f,0x81,0xa5,0xf8,0x88,0x52,0x83,0xf6,0xbc,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x52,0x83,0xf6,0xbb,0x8a,0xab,0xf9,0x7e,0xfb,0xfd,0xff,0x04,0xff,0xff,0xff,0x00,0xb7,0xb6,0xb5,0x50,0x67,0x67,0x63,0xb1,0x69,0x68,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6b,0x6a,0x67,0xb3,0x67,0x66,0x63,0xb6,0x46,0x45,0x41,0xe5,0x30,0x2f,0x2a,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xe5,0xe8,0xe8,0x17,0x69,0x68,0x65,0xb3,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xfa,0xfd,0xfa,0x02,0xbb,0xec,0xb8,0x54,0x9d,0xe3,0x99,0x8c,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0x9d,0xe3,0x98,0x8b,0xc1,0xed,0xbe,0x49,0xfe,0xff,0xfe,0x00,0xff,0xff,0xff,0x00,0xfe,0xd6,0xca,0x38,0xfc,0x9d,0x83,0x8e,0xfc,0x9f,0x84,0x95,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9d,0x82,0x96,0xfd,0xa7,0x8f,0x81,0xff,0xf4,0xf0,0x0f,0xeb,0xec,0xeb,0x14,0x47,0x46,0x43,0xe0,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xae,0xe7,0xab,0x61,0x61,0xd1,0x5b,0xfc,0x5e,0xd0,0x58,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5d,0xd0,0x58,0xff,0x5e,0xd1,0x59,0xf5,0xd8,0xf7,0xdb,0x28,0xff,0xf6,0xf7,0x07,0xf9,0x70,0x4a,0xdd,0xf8,0x58,0x2b,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x53,0x26,0xff,0xfb,0x98,0x7c,0x9b,0xff,0xff,0xff,0x00,0x7c,0x7c,0x7a,0x9d,0x2e,0x2d,0x29,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x93,0xe0,0x90,0x9a,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x5f,0xd1,0x5a,0xff,0xc9,0xf4,0xcc,0x42,0xff,0xef,0xef,0x0e,0xf8,0x69,0x41,0xf0,0xf8,0x63,0x3a,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x89,0x69,0xb6,0xff,0xff,0xff,0x00,0x83,0x83,0x81,0x93,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x95,0xe1,0x93,0x97,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x97,0xe1,0x93,0x8d,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x40,0x3f,0x3b,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xba,0xeb,0xb8,0x51,0x66,0xd3,0x61,0xf8,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x4b,0x49,0x46,0xde,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xf2,0xfc,0xf2,0x0a,0x7c,0xd9,0x78,0xbf,0x60,0xd1,0x5b,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x40,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xed,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6b,0xb2,0xff,0xff,0xff,0x00,0x81,0x81,0x7f,0x96,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x3a,0x39,0x35,0xff,0x29,0x28,0x24,0xff,0x85,0x85,0x82,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xd3,0xf2,0xd1,0x30,0x66,0xd2,0x61,0xe2,0x5e,0xd0,0x59,0xff,0x65,0xd3,0x60,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x5c,0xd0,0x57,0xff,0xcb,0xf4,0xce,0x3b,0xff,0xf1,0xf1,0x0c,0xf8,0x68,0x3f,0xf1,0xf8,0x61,0x37,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3b,0xff,0xf8,0x5a,0x2f,0xff,0xfa,0x89,0x69,0xb5,0xff,0xff,0xff,0x00,0x7f,0x7f,0x7d,0x97,0x2a,0x29,0x24,0xff,0x38,0x37,0x33,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x38,0x37,0x33,0xff,0x35,0x34,0x30,0xff,0x29,0x28,0x24,0xff,0x57,0x56,0x53,0xc8,0xeb,0xeb,0xea,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xf4,0xd9,0x26,0x8d,0xdf,0x8a,0x9f,0x6f,0xd6,0x6b,0xdd,0x6c,0xd4,0x67,0xed,0x6d,0xd5,0x68,0xed,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xed,0x69,0xd4,0x64,0xec,0x82,0xdb,0x7e,0xb0,0xee,0xfb,0xef,0x0c,0xff,0xfd,0xfd,0x01,0xfb,0x9b,0x81,0x92,0xf9,0x66,0x3e,0xeb,0xf9,0x6b,0x44,0xef,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6a,0x42,0xef,0xf9,0x6a,0x42,0xe3,0xfc,0xc2,0xb1,0x57,0xff,0xff,0xff,0x00,0xc3,0xc3,0xc2,0x42,0x44,0x43,0x3f,0xe0,0x3e,0x3e,0x3a,0xf0,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x40,0x3f,0x3b,0xee,0x4a,0x49,0x46,0xdb,0x85,0x84,0x82,0x8f,0xec,0xec,0xec,0x13,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
@@ -70,7 +76,7 @@ const lv_img_dsc_t img_lvgl_logo = {
.header.flags = 0,
.header.w = 42,
.header.h = 42,
.header.stride = 168,
.header.stride = 192,
.data_size = sizeof(img_lvgl_logo_map),
.data = img_lvgl_logo_map,
};

View File

@@ -253,7 +253,6 @@ static void profile_create(lv_obj_t * parent)
LV_IMAGE_DECLARE(img_demo_widgets_avatar);
lv_obj_t * avatar = lv_image_create(panel1);
lv_image_set_src(avatar, &img_demo_widgets_avatar);
// lv_image_set_src(avatar, "A:lvgl/demos/widgets/assets/avatar.png")
lv_obj_t * name = lv_label_create(panel1);
lv_label_set_text(name, "Elena Smith");
@@ -998,11 +997,11 @@ void shop_create(lv_obj_t * parent)
lv_obj_add_style(title, &style_title, 0);
LV_IMAGE_DECLARE(img_clothes);
create_shop_item(list, &img_clothes, "Blue jeans", "Clothes", "$722");
create_shop_item(list, &img_clothes, "Blue jeans", "Clothes", "$411");
create_shop_item(list, &img_clothes, "Blue jeans", "Clothes", "$917");
create_shop_item(list, &img_clothes, "Blue jeans", "Clothes", "$64");
create_shop_item(list, &img_clothes, "Blue jeans", "Clothes", "$805");
create_shop_item(list, &img_clothes, "Blue T-shirt", "Clothes", "$722");
create_shop_item(list, &img_clothes, "Blue T-shirt", "Clothes", "$411");
create_shop_item(list, &img_clothes, "Blue T-shirt", "Clothes", "$917");
create_shop_item(list, &img_clothes, "Blue T-shirt", "Clothes", "$64");
create_shop_item(list, &img_clothes, "Blue T-shirt", "Clothes", "$805");
lv_obj_t * notifications = lv_obj_create(parent);
if(disp_size == DISP_SMALL) {
@@ -1049,7 +1048,7 @@ static void color_changer_create(lv_obj_t * parent)
{
static lv_palette_t palette[] = {
LV_PALETTE_BLUE, LV_PALETTE_GREEN, LV_PALETTE_BLUE_GREY, LV_PALETTE_ORANGE,
LV_PALETTE_RED, LV_PALETTE_PURPLE, LV_PALETTE_TEAL, _LV_PALETTE_LAST
LV_PALETTE_RED, LV_PALETTE_PURPLE, LV_PALETTE_TEAL, LV_PALETTE_LAST
};
lv_obj_t * color_cont = lv_obj_create(parent);
@@ -1069,7 +1068,7 @@ static void color_changer_create(lv_obj_t * parent)
lv_obj_align(color_cont, LV_ALIGN_BOTTOM_RIGHT, - LV_DPX(10), - LV_DPX(10));
uint32_t i;
for(i = 0; palette[i] != _LV_PALETTE_LAST; i++) {
for(i = 0; palette[i] != LV_PALETTE_LAST; i++) {
lv_obj_t * c = lv_button_create(color_cont);
lv_obj_set_style_bg_color(c, lv_palette_main(palette[i]), 0);
lv_obj_set_style_radius(c, LV_RADIUS_CIRCLE, 0);
@@ -1168,7 +1167,7 @@ static void color_event_cb(lv_event_t * e)
else if(code == LV_EVENT_CLICKED) {
lv_palette_t * palette_primary = lv_event_get_user_data(e);
lv_palette_t palette_secondary = (*palette_primary) + 3; /*Use another palette as secondary*/
if(palette_secondary >= _LV_PALETTE_LAST) palette_secondary = 0;
if(palette_secondary >= LV_PALETTE_LAST) palette_secondary = 0;
#if LV_USE_THEME_DEFAULT
lv_theme_default_init(NULL, lv_palette_main(*palette_primary), lv_palette_main(palette_secondary),
LV_THEME_DEFAULT_DARK, font_normal);
@@ -1367,8 +1366,8 @@ static void slider_event_cb(lv_event_t * e)
}
else if(code == LV_EVENT_DRAW_TASK_ADDED) {
lv_draw_task_t * draw_task = lv_event_get_param(e);
if(draw_task == NULL || draw_task->type != LV_DRAW_TASK_TYPE_FILL) return;
lv_draw_rect_dsc_t * draw_rect_dsc = draw_task->draw_dsc;
if(draw_task == NULL || lv_draw_task_get_type(draw_task) != LV_DRAW_TASK_TYPE_FILL) return;
lv_draw_rect_dsc_t * draw_rect_dsc = lv_draw_task_get_draw_dsc(draw_task);
if(draw_rect_dsc->base.part == LV_PART_KNOB && lv_obj_has_state(obj, LV_STATE_PRESSED)) {
char buf[8];
@@ -1378,9 +1377,11 @@ static void slider_event_cb(lv_event_t * e)
lv_text_get_size(&text_size, buf, font_normal, 0, 0, LV_COORD_MAX, LV_TEXT_FLAG_NONE);
lv_area_t txt_area;
txt_area.x1 = draw_task->area.x1 + lv_area_get_width(&draw_task->area) / 2 - text_size.x / 2;
lv_area_t draw_task_area;
lv_draw_task_get_area(draw_task, &draw_task_area);
txt_area.x1 = draw_task_area.x1 + lv_area_get_width(&draw_task_area) / 2 - text_size.x / 2;
txt_area.x2 = txt_area.x1 + text_size.x;
txt_area.y2 = draw_task->area.y1 - 10;
txt_area.y2 = draw_task_area.y1 - 10;
txt_area.y1 = txt_area.y2 - text_size.y;
lv_area_t bg_area;
@@ -1416,10 +1417,12 @@ static void chart_event_cb(lv_event_t * e)
}
else if(code == LV_EVENT_DRAW_TASK_ADDED) {
lv_draw_task_t * draw_task = lv_event_get_param(e);
lv_draw_dsc_base_t * base_dsc = draw_task->draw_dsc;
lv_draw_dsc_base_t * base_dsc = lv_draw_task_get_draw_dsc(draw_task);
lv_draw_line_dsc_t * draw_line_dsc = lv_draw_task_get_line_dsc(draw_task);
if(base_dsc->part == LV_PART_ITEMS && draw_line_dsc) {
lv_area_t obj_coords;
lv_obj_get_coords(obj, &obj_coords);
const lv_chart_series_t * ser = lv_chart_get_series_next(obj, NULL);
if(base_dsc->id1 == 1) ser = lv_chart_get_series_next(obj, ser);
@@ -1434,12 +1437,12 @@ static void chart_event_cb(lv_event_t * e)
tri_dsc.bg_grad.dir = LV_GRAD_DIR_VER;
int32_t full_h = lv_obj_get_height(obj);
int32_t fract_uppter = (int32_t)(LV_MIN(draw_line_dsc->p1.y, draw_line_dsc->p2.y) - obj->coords.y1) * 255 / full_h;
int32_t fract_lower = (int32_t)(LV_MAX(draw_line_dsc->p1.y, draw_line_dsc->p2.y) - obj->coords.y1) * 255 / full_h;
tri_dsc.bg_grad.stops[0].color = ser->color;
int32_t fract_uppter = (int32_t)(LV_MIN(draw_line_dsc->p1.y, draw_line_dsc->p2.y) - obj_coords.y1) * 255 / full_h;
int32_t fract_lower = (int32_t)(LV_MAX(draw_line_dsc->p1.y, draw_line_dsc->p2.y) - obj_coords.y1) * 255 / full_h;
tri_dsc.bg_grad.stops[0].color = lv_chart_get_series_color(obj, ser);
tri_dsc.bg_grad.stops[0].opa = 255 - fract_uppter;
tri_dsc.bg_grad.stops[0].frac = 0;
tri_dsc.bg_grad.stops[1].color = ser->color;
tri_dsc.bg_grad.stops[1].color = lv_chart_get_series_color(obj, ser);
tri_dsc.bg_grad.stops[1].opa = 255 - fract_lower;
tri_dsc.bg_grad.stops[1].frac = 255;
@@ -1448,10 +1451,10 @@ static void chart_event_cb(lv_event_t * e)
lv_draw_rect_dsc_t rect_dsc;
lv_draw_rect_dsc_init(&rect_dsc);
rect_dsc.bg_grad.dir = LV_GRAD_DIR_VER;
rect_dsc.bg_grad.stops[0].color = ser->color;
rect_dsc.bg_grad.stops[0].color = lv_chart_get_series_color(obj, ser);
rect_dsc.bg_grad.stops[0].frac = 0;
rect_dsc.bg_grad.stops[0].opa = 255 - fract_lower;
rect_dsc.bg_grad.stops[1].color = ser->color;
rect_dsc.bg_grad.stops[1].color = lv_chart_get_series_color(obj, ser);
rect_dsc.bg_grad.stops[1].frac = 255;
rect_dsc.bg_grad.stops[1].opa = 0;
@@ -1459,7 +1462,7 @@ static void chart_event_cb(lv_event_t * e)
rect_area.x1 = (int32_t)draw_line_dsc->p1.x;
rect_area.x2 = (int32_t)draw_line_dsc->p2.x;
rect_area.y1 = (int32_t)LV_MAX(draw_line_dsc->p1.y, draw_line_dsc->p2.y);
rect_area.y2 = (int32_t)obj->coords.y2;
rect_area.y2 = (int32_t)obj_coords.y2;
lv_draw_rect(base_dsc->layer, &rect_dsc, &rect_area);
}
@@ -1472,7 +1475,9 @@ static void chart_event_cb(lv_event_t * e)
outline_dsc.outline_color = lv_color_white();
outline_dsc.outline_width = 2;
outline_dsc.radius = LV_RADIUS_CIRCLE;
lv_draw_rect(base_dsc->layer, &outline_dsc, &draw_task->area);
lv_area_t draw_task_area;
lv_draw_task_get_area(draw_task, &draw_task_area);
lv_draw_rect(base_dsc->layer, &outline_dsc, &draw_task_area);
add_value = true;
}
}
@@ -1481,14 +1486,16 @@ static void chart_event_cb(lv_event_t * e)
if(base_dsc->id1 == 1) ser = lv_chart_get_series_next(obj, ser);
if(lv_chart_get_type(obj) == LV_CHART_TYPE_BAR) {
lv_draw_fill_dsc_t * fill_dsc = draw_task->draw_dsc;
lv_draw_fill_dsc_t * fill_dsc = lv_draw_task_get_draw_dsc(draw_task);
lv_draw_rect_dsc_t shadow_dsc;
lv_draw_rect_dsc_init(&shadow_dsc);
shadow_dsc.radius = fill_dsc->radius;
shadow_dsc.bg_opa = LV_OPA_TRANSP;
shadow_dsc.shadow_color = ser->color;
shadow_dsc.shadow_color = lv_chart_get_series_color(obj, ser);
shadow_dsc.shadow_width = 15;
lv_draw_rect(base_dsc->layer, &shadow_dsc, &draw_task->area);
lv_area_t draw_task_area;
lv_draw_task_get_area(draw_task, &draw_task_area);
lv_draw_rect(base_dsc->layer, &shadow_dsc, &draw_task_area);
add_value = true;
}
}
@@ -1500,15 +1507,17 @@ static void chart_event_cb(lv_event_t * e)
}
char buf[8];
lv_snprintf(buf, sizeof(buf), "%"LV_PRIu32, ser->y_points[base_dsc->id2]);
lv_snprintf(buf, sizeof(buf), "%"LV_PRId32, lv_chart_get_y_array(obj, (lv_chart_series_t *)ser)[base_dsc->id2]);
lv_point_t text_size;
lv_text_get_size(&text_size, buf, font_normal, 0, 0, LV_COORD_MAX, LV_TEXT_FLAG_NONE);
lv_area_t txt_area;
txt_area.y2 = draw_task->area.y1 - LV_DPX(15);
lv_area_t draw_task_area;
lv_draw_task_get_area(draw_task, &draw_task_area);
txt_area.y2 = draw_task_area.y1 - LV_DPX(15);
txt_area.y1 = txt_area.y2 - text_size.y;
txt_area.x1 = draw_task->area.x1 + (lv_area_get_width(&draw_task->area) - text_size.x) / 2;
txt_area.x1 = draw_task_area.x1 + (lv_area_get_width(&draw_task_area) - text_size.x) / 2;
txt_area.x2 = txt_area.x1 + text_size.x;
lv_area_t bg_area;
@@ -1519,7 +1528,7 @@ static void chart_event_cb(lv_event_t * e)
lv_draw_rect_dsc_t rect_dsc;
lv_draw_rect_dsc_init(&rect_dsc);
rect_dsc.bg_color = ser->color;
rect_dsc.bg_color = lv_chart_get_series_color(obj, ser);
rect_dsc.radius = LV_DPX(5);
lv_draw_rect(base_dsc->layer, &rect_dsc, &bg_area);

View File

@@ -3,206 +3,361 @@
Changelog
=========
`v9.1.0 <https://github.com/lvgl/lvgl/compare/v9.0.0...v9.1.0>`__ 20 March 2024
----------------------------------------------------------------------------------------------
`v9.2 <https://github.com/lvgl/lvgl/compare/v9.1.0...v9.2.0>`__ 26 August 2024
------------------------------------------------------------------------------
It's huge release with many interesting updates:
- Wayland driver
- L8 and I1 rendering support
- Transformations with matrix
- LittleFS, ESP Little FS, Arduino FS
- OpenglES and GLFW driver with supporting external textures
- SDL renderer imporevements
- Renesas GLCDC driver
- Radial, Conic and Skew gradients supported by software rendering and VG-Lite
- MQX and QNX support
- Mouse hover handling
- CI test for UEFI build
- Lottie support
And many smaller fixes and features
Breaking Changes
~~~~~~~~~~~~~~~~
``lvgl_private.h`` was introduced to better separate internal and public APIs and data. Your application might rely on APIs or data that are now available via ``lvgl_private.h``.
Resolve it by either
- include ``lvgl_private.h`` where needed
- enable ``LV_USE_PRIVATE_API`` to internally include ``lvgl_private.h`` in `lvgl.h`
New Features
~~~~~~~~~~~~
- **feat(indev) Add crown support to pointer input device** `5057 <https://github.com/lvgl/lvgl/pull/5057>`__
- **feat(test): test bin image loaded to RAM or not** `5895 <https://github.com/lvgl/lvgl/pull/5895>`__
- **feat(script): change trace_filter default trace log file to log_file.systrace** `5900 <https://github.com/lvgl/lvgl/pull/5900>`__
- **feat(vg_lite): automatically select path type based on opa** `5896 <https://github.com/lvgl/lvgl/pull/5896>`__
- **feat(freertos): support Espressif's FreeRTOS flavor** `5862 <https://github.com/lvgl/lvgl/pull/5862>`__
- **feat(tests): add freetype font stress tests** `5828 <https://github.com/lvgl/lvgl/pull/5828>`__
- **feat(vg_lite): add stroke path support** `5831 <https://github.com/lvgl/lvgl/pull/5831>`__
- **feat(docs): add Chinese translation (jump link)** `5839 <https://github.com/lvgl/lvgl/pull/5839>`__
- **feat(ci): update distro to ubuntu 22.02 to fix freetype build problem** `5834 <https://github.com/lvgl/lvgl/pull/5834>`__
- **feat(image_cache): add resize function to image cache** `5829 <https://github.com/lvgl/lvgl/pull/5829>`__
- **feat(nuttx): add cpu idle getter** `5814 <https://github.com/lvgl/lvgl/pull/5814>`__
- **feat(test): add multiple color formats to stride adjust test** `5690 <https://github.com/lvgl/lvgl/pull/5690>`__
- **feat(libjpeg_turbo): add JPEG image EXIF data parsing** `5263 <https://github.com/lvgl/lvgl/pull/5263>`__
- **feat(freetype): change the tilt of freetype fonts in italics** `5812 <https://github.com/lvgl/lvgl/pull/5812>`__
- **feat(vg_lite): add matrix assert** `5766 <https://github.com/lvgl/lvgl/pull/5766>`__
- **feat(vg_lite): add grad cache size config and auto release cache** `5731 <https://github.com/lvgl/lvgl/pull/5731>`__
- **feat(draw_buf): support indexed image in draw_buf_copy** `5686 <https://github.com/lvgl/lvgl/pull/5686>`__
- **feat(nuttx): update display driver** `5752 <https://github.com/lvgl/lvgl/pull/5752>`__
- **feat(fs): implement littlefs lfs.h driver support** `5562 <https://github.com/lvgl/lvgl/pull/5562>`__
- **feat(test_keyboard): add keyboard test** `5739 <https://github.com/lvgl/lvgl/pull/5739>`__
- **feat(x11): add LV_KEYs** `5704 <https://github.com/lvgl/lvgl/pull/5704>`__
- **feat(display): add save screenshot to file support** `5481 <https://github.com/lvgl/lvgl/pull/5481>`__
- **feat(decoder): do not even try cache if 'no_cache' is set** `5688 <https://github.com/lvgl/lvgl/pull/5688>`__
- **feat(event): return event dsc for later to remove** `5630 <https://github.com/lvgl/lvgl/pull/5630>`__
- **feat(keyboard) add Home and End keys mapping** `5675 <https://github.com/lvgl/lvgl/pull/5675>`__
- **feat(draw_buf): distinguish between lv_image_dsc_t and lv_draw_buf_t** `5496 <https://github.com/lvgl/lvgl/pull/5496>`__
- **feat(indev): remove the PRESSED state on scroll** `5660 <https://github.com/lvgl/lvgl/pull/5660>`__
- **feat(sysmon): show max memory usage** `5661 <https://github.com/lvgl/lvgl/pull/5661>`__
- **feat(image_decoder): add stride warning** `5471 <https://github.com/lvgl/lvgl/pull/5471>`__
- **feat(image, layer): add bitmap mask feature** `5545 <https://github.com/lvgl/lvgl/pull/5545>`__
- **feat(draw-sw): add simple Helium acceleration** `5596 <https://github.com/lvgl/lvgl/pull/5596>`__
- **feat(cache): use unified cache entry free callback** `5612 <https://github.com/lvgl/lvgl/pull/5612>`__
- **feat(draw_buf): use draw_buf as parameter of invalidate_cache API** `5602 <https://github.com/lvgl/lvgl/pull/5602>`__
- **feat(script): add ARGB8565 format support** `5593 <https://github.com/lvgl/lvgl/pull/5593>`__
- **feat(vg_lite): add ARGB8565 support** `5592 <https://github.com/lvgl/lvgl/pull/5592>`__
- **feat(vg_lite): add gpu idle flush** `5571 <https://github.com/lvgl/lvgl/pull/5571>`__
- **feat(vg_lite_tvg): add buffer address alignment config** `5576 <https://github.com/lvgl/lvgl/pull/5576>`__
- **feat(vg_lite/vector): add compatible processing for non-scissor support** `5572 <https://github.com/lvgl/lvgl/pull/5572>`__
- **feat(vg_lite): remove support for RGB565A8** `5574 <https://github.com/lvgl/lvgl/pull/5574>`__
- **feat(vg_lite_label): upgrade path quality to HIGH** `5556 <https://github.com/lvgl/lvgl/pull/5556>`__
- **feat(font_glyph_format): refactor draw and font format into `lv_font_glyph_format_t`** `5540 <https://github.com/lvgl/lvgl/pull/5540>`__
- **feat(vg_lite): add index format decode support** `5476 <https://github.com/lvgl/lvgl/pull/5476>`__
- **feat(vector): add API to append arc** `5510 <https://github.com/lvgl/lvgl/pull/5510>`__
- **feat(nuttx_image_cache): add independent image cache heap support** `5528 <https://github.com/lvgl/lvgl/pull/5528>`__
- **feat(cache): refactor cache framework and add new APIs** `5501 <https://github.com/lvgl/lvgl/pull/5501>`__
- **feat(drivers): add libinput/xkb driver** `5486 <https://github.com/lvgl/lvgl/pull/5486>`__
- **feat(draw_buf): misc update** `5498 <https://github.com/lvgl/lvgl/pull/5498>`__
- **feat(draw): add convenience methods for safely getting correct draw descriptor** `5505 <https://github.com/lvgl/lvgl/pull/5505>`__
- **feat(profiler): add multithreading support and testcase** `5490 <https://github.com/lvgl/lvgl/pull/5490>`__
- **feat(doc): Update display-related documentation to new API** `5489 <https://github.com/lvgl/lvgl/pull/5489>`__
- **feat(image_cache): add image header cache drop** `5472 <https://github.com/lvgl/lvgl/pull/5472>`__
- **feat(fbdev): add docs and allow forcing refresh** `5444 <https://github.com/lvgl/lvgl/pull/5444>`__
- **feat(script): add tool to view bin image** `5451 <https://github.com/lvgl/lvgl/pull/5451>`__
- **feat(vg_lite): add profiler instrumentation** `5434 <https://github.com/lvgl/lvgl/pull/5434>`__
- **feat(draw_letter): adapt `lv_font_glyph_format_t` for draw_letter process** `3c1a765 <https://github.com/lvgl/lvgl/commit/3c1a76506e8d948d5c8e029f3467139bdddf7e16>`__
- **feat(color): add color format ARGB8565** `86016a8 <https://github.com/lvgl/lvgl/commit/86016a819a134b2d71777406cfacb3a25d7685cc>`__
- **feat(sdl_render): support all draw task types** `6437 <https://github.com/lvgl/lvgl/pull/6437>`__
- **feat(scale): add custom labels example** `6699 <https://github.com/lvgl/lvgl/pull/6699>`__
- **feat(driver): import Wayland driver from v8** `6549 <https://github.com/lvgl/lvgl/pull/6549>`__
- **feat(scripts): add default config generator** `6522 <https://github.com/lvgl/lvgl/pull/6522>`__
- **feat(draw_sw): extend lv_draw_sw_rotate with L8 support** `6520 <https://github.com/lvgl/lvgl/pull/6520>`__
- **feat(anim_timeline): add repeat and more** `6127 <https://github.com/lvgl/lvgl/pull/6127>`__
- **feat(indev): add scroll_time and scroll_throw setter** `6723 <https://github.com/lvgl/lvgl/pull/6723>`__
- **feat(draw): add physical clipping area to solve the scaling accuracy problem** `6703 <https://github.com/lvgl/lvgl/pull/6703>`__
- **feat(fs): default drive letter + ESP FS docs** `6367 <https://github.com/lvgl/lvgl/pull/6367>`__
- **feat(freertos): add functions to better measure the CPU usage** `6619 <https://github.com/lvgl/lvgl/pull/6619>`__
- **feat(core): Add lv_group_get_obj_by_index method** `6589 <https://github.com/lvgl/lvgl/pull/6589>`__
- **feat(draw_buf): make draw buf API more OOP style** `6427 <https://github.com/lvgl/lvgl/pull/6427>`__
- **feat(opengles): multiple windows and embed user opengl textures** `6600 <https://github.com/lvgl/lvgl/pull/6600>`__
- **feat(obj): add lv_obj_null_on_delete** `6599 <https://github.com/lvgl/lvgl/pull/6599>`__
- **feat(indev): add long press time setter** `6664 <https://github.com/lvgl/lvgl/pull/6664>`__
- **feat(cmake): Make LVGL version available for all CMake environments** `6654 <https://github.com/lvgl/lvgl/pull/6654>`__
- **feat(os): use recursive mutex by default** `6573 <https://github.com/lvgl/lvgl/pull/6573>`__
- **feat(env/qnx): generate lv_conf.h at build time** `6596 <https://github.com/lvgl/lvgl/pull/6596>`__
- **feat(label): add property** `6575 <https://github.com/lvgl/lvgl/pull/6575>`__
- **feat(unity): update unity to version 2.6.0** `6453 <https://github.com/lvgl/lvgl/pull/6453>`__
- **feat(libpng): add parsing variable to libpng** `6553 <https://github.com/lvgl/lvgl/pull/6553>`__
- **feat(nuttx): malloc second FB if driver only has one** `6580 <https://github.com/lvgl/lvgl/pull/6580>`__
- **feat(draw): add global matrix drawing modes** `4883 <https://github.com/lvgl/lvgl/pull/4883>`__
- **feat(drivers): initial implementation of a QNX screen driver** `6507 <https://github.com/lvgl/lvgl/pull/6507>`__
- **feat(nxp/pxp): add Zephyr Support** `6298 <https://github.com/lvgl/lvgl/pull/6298>`__
- **feat(obj): add more obj properties** `6537 <https://github.com/lvgl/lvgl/pull/6537>`__
- **feat(anim): add lv_anim_speed_to_time back** `6531 <https://github.com/lvgl/lvgl/pull/6531>`__
- **feat(draw/sw): add support for LV_COLOR_FORMAT_I1** `6345 <https://github.com/lvgl/lvgl/pull/6345>`__
- **feat(barcode): add none tiled mode** `6462 <https://github.com/lvgl/lvgl/pull/6462>`__
- **feat(observer): add lv_obj_remove_from_subject** `6341 <https://github.com/lvgl/lvgl/pull/6341>`__
- **feat(textarea): make textarea editable** `6467 <https://github.com/lvgl/lvgl/pull/6467>`__
- **feat(lodepng): update lodepng to version 20230410** `6454 <https://github.com/lvgl/lvgl/pull/6454>`__
- **feat(env): make LVGL a Zephyr compatible module** `6460 <https://github.com/lvgl/lvgl/pull/6460>`__
- **feat(nuttx): add lv_nuttx_run** `6371 <https://github.com/lvgl/lvgl/pull/6371>`__
- **feat(nuttx): update the joined invalid area instead of the last one** `6397 <https://github.com/lvgl/lvgl/pull/6397>`__
- **feat(refr): add details on rendering_in_progress ASSERT cause** `6450 <https://github.com/lvgl/lvgl/pull/6450>`__
- **feat(nuttx_image_cache): add tid for cache name** `6434 <https://github.com/lvgl/lvgl/pull/6434>`__
- **feat(bar): add bar orientation** `6212 <https://github.com/lvgl/lvgl/pull/6212>`__
- **feat(scale): set tick drawing order** `6185 <https://github.com/lvgl/lvgl/pull/6185>`__
- **feat: add API JSON generator** `5677 <https://github.com/lvgl/lvgl/pull/5677>`__
- **feat(property): add property name** `6329 <https://github.com/lvgl/lvgl/pull/6329>`__
- **feat(nuttx): add stack size check** `6381 <https://github.com/lvgl/lvgl/pull/6381>`__
- **feat(vg_lite): add image clip corner support** `6121 <https://github.com/lvgl/lvgl/pull/6121>`__
- **feat(fsdrv): implement directory open and close for littlefs driver** `6301 <https://github.com/lvgl/lvgl/pull/6301>`__
- **feat(obj): add API to set/get object ID.** `6278 <https://github.com/lvgl/lvgl/pull/6278>`__
- **feat(draw): add a configuration to reduce code size** `6313 <https://github.com/lvgl/lvgl/pull/6313>`__
- **feat(opengles): add basic driver for opengles** `6254 <https://github.com/lvgl/lvgl/pull/6254>`__
- **feat(tests): add VG-Lite render test** `6264 <https://github.com/lvgl/lvgl/pull/6264>`__
- **feat(drivers): GLCDC support for RX72 family** `6291 <https://github.com/lvgl/lvgl/pull/6291>`__
- **feat(lottie): add external thorvg header file support** `6311 <https://github.com/lvgl/lvgl/pull/6311>`__
- **feat(demos): add demo for the OSAL** `6182 <https://github.com/lvgl/lvgl/pull/6182>`__
- **feat(rtthread): add cpu usage support** `6310 <https://github.com/lvgl/lvgl/pull/6310>`__
- **feat(property): add style selector support for property API** `6275 <https://github.com/lvgl/lvgl/pull/6275>`__
- **feat(micropython): improve mem core micropython** `6219 <https://github.com/lvgl/lvgl/pull/6219>`__
- **feat(vector): add set viewport support for vector api with thorvg** `6299 <https://github.com/lvgl/lvgl/pull/6299>`__
- **feat(api_map): adds guards to api mapping** `6269 <https://github.com/lvgl/lvgl/pull/6269>`__
- **feat(vg_lite): img_decoder add stride from src** `6292 <https://github.com/lvgl/lvgl/pull/6292>`__
- **feat(thorvg): update thorvg version to 0.13.5** `6274 <https://github.com/lvgl/lvgl/pull/6274>`__
- **feat(obj): add check null pointer** `6249 <https://github.com/lvgl/lvgl/pull/6249>`__
- **feat(draw_sw): implemented radial gradient background** `6170 <https://github.com/lvgl/lvgl/pull/6170>`__
- **feat(refr): add backward compatibility for LV_COLOR_16_SWAP** `6225 <https://github.com/lvgl/lvgl/pull/6225>`__
- **feat(bidi): support set neutral string** `6146 <https://github.com/lvgl/lvgl/pull/6146>`__
- **feat(pxp): add zephyr support** `6159 <https://github.com/lvgl/lvgl/pull/6159>`__
- **feat(stdlib): strncpy consistency and add strlcpy** `6204 <https://github.com/lvgl/lvgl/pull/6204>`__
- **feat(printf): LV_FORMAT_ATTRIBUTE for IAR compiler** `6231 <https://github.com/lvgl/lvgl/pull/6231>`__
- **feat(fs): file writes update the file cache** `6186 <https://github.com/lvgl/lvgl/pull/6186>`__
- **feat(tool): add premultiply support to image tool** `6175 <https://github.com/lvgl/lvgl/pull/6175>`__
- **feat(table): add function to set selected table cell** `6163 <https://github.com/lvgl/lvgl/pull/6163>`__
- **feat(os): add mqx for osal** `6191 <https://github.com/lvgl/lvgl/pull/6191>`__
- **feat(anim_timeline): add anim's `completed_cb` support** `6085 <https://github.com/lvgl/lvgl/pull/6085>`__
- **feat(test): enable warning to format-security** `6199 <https://github.com/lvgl/lvgl/pull/6199>`__
- **feat(draw_buf): add LV_DRAW_BUF_INIT macro to meet alignment requirement** `6102 <https://github.com/lvgl/lvgl/pull/6102>`__
- **feat(tools): Python script for automatically applying version (#6012)** `6080 <https://github.com/lvgl/lvgl/pull/6080>`__
- **feat(draw_buff): adapt lv_draw_buf_dup to support multi-instance** `6179 <https://github.com/lvgl/lvgl/pull/6179>`__
- **feat(hover): add Hover support for pointer device.** `5947 <https://github.com/lvgl/lvgl/pull/5947>`__
- **feat(gridnav): single axis movement flags** `6044 <https://github.com/lvgl/lvgl/pull/6044>`__
- **feat(api_map): add missing keyboard API map for v8** `6103 <https://github.com/lvgl/lvgl/pull/6103>`__
- **feat(log): add LV_LOG_PRINT_CB to set a default log print cb** `6095 <https://github.com/lvgl/lvgl/pull/6095>`__
- **feat(arc): support RGB565A8 arc image** `6009 <https://github.com/lvgl/lvgl/pull/6009>`__
- **feat(ci): Add CI test for UEFI build** `5964 <https://github.com/lvgl/lvgl/pull/5964>`__
- **feat(draw/sw): added support for LV_COLOR_FORMAT_L8** `5800 <https://github.com/lvgl/lvgl/pull/5800>`__
- **feat(cache): add name for cache instance** `6040 <https://github.com/lvgl/lvgl/pull/6040>`__
- **feat(CI): Windows MSVC and GCC build** `6015 <https://github.com/lvgl/lvgl/pull/6015>`__
- **feat(drv): Implement Arduino SD driver** `5968 <https://github.com/lvgl/lvgl/pull/5968>`__
- **feat(demos): align images used in benchmark to stride 64** `5925 <https://github.com/lvgl/lvgl/pull/5925>`__
- **feat(vg_lite): adapt premultiply src over blend mode** `6062 <https://github.com/lvgl/lvgl/pull/6062>`__
- **feat(fs): add profiler hook** `6056 <https://github.com/lvgl/lvgl/pull/6056>`__
- **feat(drivers): account for the frame buffer virtual resolution deviating from the visible resolution.** `5988 <https://github.com/lvgl/lvgl/pull/5988>`__
- **feat(decoder): add a name field to decoder to facilitate debugging** `6037 <https://github.com/lvgl/lvgl/pull/6037>`__
- **feat(fs_posix): add error number print** `6041 <https://github.com/lvgl/lvgl/pull/6041>`__
- **feat(calendar): add chinese calendar** `5940 <https://github.com/lvgl/lvgl/pull/5940>`__
- **feat(example): make "LVGL_Arduino.ino" easier to use** `6001 <https://github.com/lvgl/lvgl/pull/6001>`__
- **feat(evdev): automatically calibrate pointer input devices.** `5989 <https://github.com/lvgl/lvgl/pull/5989>`__
- **feat(draw_buf): user can separate font draw buf from default draw buff now** `5982 <https://github.com/lvgl/lvgl/pull/5982>`__
- **feat(scale): multiple line needles** `5937 <https://github.com/lvgl/lvgl/pull/5937>`__
- **feat(draw_buff): add user custom draw buffer instance support** `5974 <https://github.com/lvgl/lvgl/pull/5974>`__
- **feat(cache): add more profile notes** `5983 <https://github.com/lvgl/lvgl/pull/5983>`__
- **feat(font): add lv_font_glyph_release_draw_data api to release glyph data** `5985 <https://github.com/lvgl/lvgl/pull/5985>`__
- **feat(nuttx): add defer feature for nuttx image cache** `5967 <https://github.com/lvgl/lvgl/pull/5967>`__
- **feat(vglite) add implementation for partial border** `5912 <https://github.com/lvgl/lvgl/pull/5912>`__
- **feat(mask): add support for image file bitmap masks** `5911 <https://github.com/lvgl/lvgl/pull/5911>`__
- **feat(stdlib): add lv_strncat and refactor strcat uses** `5927 <https://github.com/lvgl/lvgl/pull/5927>`__
- **feat(cache): image cache supports dynamic setting of cache size** `5926 <https://github.com/lvgl/lvgl/pull/5926>`__
- **feat(draw): add draw thread stack size config option** `5910 <https://github.com/lvgl/lvgl/pull/5910>`__
- **feat(draw): optimize helium asm** `5702 <https://github.com/lvgl/lvgl/pull/5702>`__
- **feat(fbdev,sdl): support display rotation** `5703 <https://github.com/lvgl/lvgl/pull/5703>`__
- **feat(fs): add Arduino ESP LittleFS driver** `5905 <https://github.com/lvgl/lvgl/pull/5905>`__
- **feat(vg_lite): add radial gradient support** `5836 <https://github.com/lvgl/lvgl/pull/5836>`__
- **feat(thorvg): update ThorVG to v0.11.99** `7addc72 <https://github.com/lvgl/lvgl/commit/7addc72735e06b5c78af5638190f1c32b5bad426>`__
- **feat(lottie): add ThorVG based lottie widget** `9c5ca0e <https://github.com/lvgl/lvgl/commit/9c5ca0e0817ff2c7d7e46ff604ebf97fa062012e>`__
- **feat(drivers): Renesas GLCDC display driver** `4d12d64 <https://github.com/lvgl/lvgl/commit/4d12d64e4e043e794c11497ba3aeff3591e0158d>`__
- **feat(textarea): add properties** `357d5b7 <https://github.com/lvgl/lvgl/commit/357d5b7ff9d827c62aff520183b418585ee76054>`__
- **feat(image_decoder): refactor image decoder to reduce file operation on get_info** `daa7fef <https://github.com/lvgl/lvgl/commit/daa7fefb3a4bd058f1c5b5166871085876d0ada4>`__
- **feat(dropdown): add properties** `7c1a8a5 <https://github.com/lvgl/lvgl/commit/7c1a8a523d9d5d46dec670ec3da57b1fe54fb1dc>`__
- **feat(keyboard): add properties** `cd48c3c <https://github.com/lvgl/lvgl/commit/cd48c3c8d6247611d06fee7b41163a3b4dd13133>`__
- **feat(roller): add properties** `a793178 <https://github.com/lvgl/lvgl/commit/a793178bbf029c15e9f8a0717f15542d706f860f>`__
- **feat(nuttx): add lv_nuttx_deinit** `2b717a3 <https://github.com/lvgl/lvgl/commit/2b717a32fd1b2de0a96a0ec7a7c5a25c32aeccd7>`__
- **feat(glcdc): screen rotation support** `fd79a4f <https://github.com/lvgl/lvgl/commit/fd79a4f42712f5640d43e46f245498e99705f6d8>`__
- **feat(nuttx): add adaptive color format** `691554d <https://github.com/lvgl/lvgl/commit/691554ded85613af6ad06bba655f8e665fd661a4>`__
- **feat(libpng): use I8 format if png is 8bit mode** `49053e9 <https://github.com/lvgl/lvgl/commit/49053e9d962d589d936b35f5b11255312b2d1743>`__
- **feat(property): add boolean type support** `6dc75d4 <https://github.com/lvgl/lvgl/commit/6dc75d4995ace9a03d6d2a2eddf15b7d6d7ce611>`__
- **feat(freetype): add invalid font descriptor print** `46887db <https://github.com/lvgl/lvgl/commit/46887dbe5149616ba8cebeb45039880d462b3519>`__
- **feat(libpng): let png handle stride alignment** `3116dc4 <https://github.com/lvgl/lvgl/commit/3116dc469e2e53f9f571f16e57f65aa3ded6c691>`__
Performance
~~~~~~~~~~~
- **perf(draw): minor optimization on rgb565 color blending** `5603 <https://github.com/lvgl/lvgl/pull/5603>`__
- **perf(draw): use the simpler layer clear method** `5470 <https://github.com/lvgl/lvgl/pull/5470>`__
- **perf(vg_lite): add asynchronous rendering support** `5398 <https://github.com/lvgl/lvgl/pull/5398>`__
- **perf(draw): skip empty draw tasks** `6720 <https://github.com/lvgl/lvgl/pull/6720>`__
- **perf(vg_lite): use DST_IN blending mode to improve rounded corner cropping performance** `6623 <https://github.com/lvgl/lvgl/pull/6623>`__
- **perf(array): optimize array remove / erase function performance** `6544 <https://github.com/lvgl/lvgl/pull/6544>`__
- **perf(vg_lite): add stroke path cache to improve drawing performance** `6502 <https://github.com/lvgl/lvgl/pull/6502>`__
- **perf(array): optimize array push back function performance** `6431 <https://github.com/lvgl/lvgl/pull/6431>`__
- **perf(qrcode): improve drawing speed** `6475 <https://github.com/lvgl/lvgl/pull/6475>`__
- **perf(lottie): remove lottie canvas quadratic premultiplication.** `6358 <https://github.com/lvgl/lvgl/pull/6358>`__
- **perf(vg_lite): invert the vector font Y axis coordinate in advance** `6353 <https://github.com/lvgl/lvgl/pull/6353>`__
- **perf(obj): return directly if parent is unchanged** `6283 <https://github.com/lvgl/lvgl/pull/6283>`__
- **perf(theme): optimize the order of function calls** `5971 <https://github.com/lvgl/lvgl/pull/5971>`__
- **perf(draw): skip border drawing when border side is none** `5959 <https://github.com/lvgl/lvgl/pull/5959>`__
Fixes
~~~~~
- **fix(obj_tree): fix unintended click triggers on object deletion** `5907 <https://github.com/lvgl/lvgl/pull/5907>`__
- **fix(monkey): add missing include** `5903 <https://github.com/lvgl/lvgl/pull/5903>`__
- **fix(demo/vector_graphic): add missing buffer clear** `5898 <https://github.com/lvgl/lvgl/pull/5898>`__
- **fix(image): fix the image decoder if LV_BIN_DECODER_RAM_LOAD == 0** `5892 <https://github.com/lvgl/lvgl/pull/5892>`__
- **fix(indev): Fix scroll obj cannot be cleared when waiting until release** `5833 <https://github.com/lvgl/lvgl/pull/5833>`__
- **fix(vglite): update NXP's VGLite implementation** `5887 <https://github.com/lvgl/lvgl/pull/5887>`__
- **fix(imagebutton): clipped area of mid part** `5849 <https://github.com/lvgl/lvgl/pull/5849>`__
- **fix(drm): default to XRGB8888 framebuffer** `5851 <https://github.com/lvgl/lvgl/pull/5851>`__
- **fix(vg_lite): fix stroke path memory leak** `5883 <https://github.com/lvgl/lvgl/pull/5883>`__
- **fix(ci): workaround ASAN error in CI with Ubuntu 22.04 image** `5867 <https://github.com/lvgl/lvgl/pull/5867>`__
- **fix(conf): fix typo cause thorvg not enabled** `5837 <https://github.com/lvgl/lvgl/pull/5837>`__
- **fix(indev): always save the last key** `5795 <https://github.com/lvgl/lvgl/pull/5795>`__
- **fix(fsdrv/fatfs): fix does not detect the end of entries in fs_dir_read** `5826 <https://github.com/lvgl/lvgl/pull/5826>`__
- **fix(layer): update the cached layer type on state change** `5801 <https://github.com/lvgl/lvgl/pull/5801>`__
- **fix(file_explorer): fix quick access compiler error** `5783 <https://github.com/lvgl/lvgl/pull/5783>`__
- **fix(msgbox): return the footer in lv_msgbox_get_footer** `5804 <https://github.com/lvgl/lvgl/pull/5804>`__
- **fix(x11): fix assert on delete** `5799 <https://github.com/lvgl/lvgl/pull/5799>`__
- **fix(demo_music): fix the previous button in the music demo is not clickable** `5808 <https://github.com/lvgl/lvgl/pull/5808>`__
- **fix(draw): fix non antialiased rgb565a8 transformation** `5782 <https://github.com/lvgl/lvgl/pull/5782>`__
- **fix(freetype): fix the problem of incomplete font drawing when setting with italic** `5807 <https://github.com/lvgl/lvgl/pull/5807>`__
- **fix(fsdrv): add missing lv_fs_littlefs_init function declaration** `5778 <https://github.com/lvgl/lvgl/pull/5778>`__
- **fix(vg_lite):fix bug for wrong rendering in vertical or horizontal dir** `5789 <https://github.com/lvgl/lvgl/pull/5789>`__
- **fix(env): added *.cpp glob in ESP configuration** `5761 <https://github.com/lvgl/lvgl/pull/5761>`__
- **fix(draw): fix the invalidation of scaled areas** `5548 <https://github.com/lvgl/lvgl/pull/5548>`__
- **fix(warning): variable set but unused.** `5757 <https://github.com/lvgl/lvgl/pull/5757>`__
- **fix(draw): fix rgb565 with LV_BLEND_MODE_MULTIPLY** `5749 <https://github.com/lvgl/lvgl/pull/5749>`__
- **fix(api_map_v8): add some missing functions** `5710 <https://github.com/lvgl/lvgl/pull/5710>`__
- **fix(refr): fix ARGB8888 buffer clearing in DIRECT mode (#5741)** `5758 <https://github.com/lvgl/lvgl/pull/5758>`__
- **fix(draw_buf): init struct member in order** `5753 <https://github.com/lvgl/lvgl/pull/5753>`__
- **fix(refr): fix clearing the partial buffers in case of ARGB8888 format** `5741 <https://github.com/lvgl/lvgl/pull/5741>`__
- **fix(x11): fix typo** `5742 <https://github.com/lvgl/lvgl/pull/5742>`__
- **fix(draw_vector): check the point length of path in lv_vector_path_get_bounding** `5734 <https://github.com/lvgl/lvgl/pull/5734>`__
- **fix(vg_lite): fix draw layer drawing is incomplete** `5729 <https://github.com/lvgl/lvgl/pull/5729>`__
- **fix(test_span): fix an issue where img has span_1.png, but it is not in the code** `5736 <https://github.com/lvgl/lvgl/pull/5736>`__
- **fix(vg_lite): fix drawing command accumulation** `5730 <https://github.com/lvgl/lvgl/pull/5730>`__
- **fix(vg_lite): fix vector rendering fill dsc matrix not taking effect** `5728 <https://github.com/lvgl/lvgl/pull/5728>`__
- **fix(stdlib): fix issues when using LVGL TLSF memory pool to manage more than 4 GiB of memory** `5720 <https://github.com/lvgl/lvgl/pull/5720>`__
- **fix(vg_lite): remove redundant MOVE_TO operations** `5713 <https://github.com/lvgl/lvgl/pull/5713>`__
- **fix(nuttx): fix compile warning** `5701 <https://github.com/lvgl/lvgl/pull/5701>`__
- **fix(draw_vector): remove redundant MOVE_TO operations** `5715 <https://github.com/lvgl/lvgl/pull/5715>`__
- **fix(draw_buf): use height as loop condition instead of checking data pointers** `5687 <https://github.com/lvgl/lvgl/pull/5687>`__
- **fix(vg_lite): fix the loss of display accuracy of rounded rectangles** `5714 <https://github.com/lvgl/lvgl/pull/5714>`__
- **fix(test): check compiler flag should not contain '_'** `5706 <https://github.com/lvgl/lvgl/pull/5706>`__
- **fix(imagebutton): fix the example** `5719 <https://github.com/lvgl/lvgl/pull/5719>`__
- **fix(drm): eliminate use of nonexistent lv_api_map.h and enable smoke tests** `5694 <https://github.com/lvgl/lvgl/pull/5694>`__
- **fix(test): enable -Wpedantic** `5676 <https://github.com/lvgl/lvgl/pull/5676>`__
- **fix(pxp): fix issues in pxp cache management callback** `5685 <https://github.com/lvgl/lvgl/pull/5685>`__
- **fix(windows): improve graphic performance via using high resolution tick count and timer delay implementation** `5711 <https://github.com/lvgl/lvgl/pull/5711>`__
- **fix(windows): improve the document** `5699 <https://github.com/lvgl/lvgl/pull/5699>`__
- **fix(example): fix lv_example_obj_2** `5697 <https://github.com/lvgl/lvgl/pull/5697>`__
- **fix(draw): fix compiler error when LV_DRAW_SW_COMPLEX is disabled** `5695 <https://github.com/lvgl/lvgl/pull/5695>`__
- **fix(test): allow to run test locally on mac** `5672 <https://github.com/lvgl/lvgl/pull/5672>`__
- **fix(sdl): fix buf memleak on lv_display_delete** `5692 <https://github.com/lvgl/lvgl/pull/5692>`__
- **fix(decoder): decoded image should always have same w,h as original image** `5689 <https://github.com/lvgl/lvgl/pull/5689>`__
- **fix(cache): fix warnings** `5671 <https://github.com/lvgl/lvgl/pull/5671>`__
- **fix(dave2d): follow lvgl changes** `5659 <https://github.com/lvgl/lvgl/pull/5659>`__
- **fix(vg_lite): fix typo in decoder_close** `5683 <https://github.com/lvgl/lvgl/pull/5683>`__
- **fix(vg_lite): use float instead of int to avoid type conversion** `5682 <https://github.com/lvgl/lvgl/pull/5682>`__
- **fix(formatting): fix code formatting** `5673 <https://github.com/lvgl/lvgl/pull/5673>`__
- **fix(freetype): fix build break when disable LV_USE_FS_MEMFS** `5651 <https://github.com/lvgl/lvgl/pull/5651>`__
- **fix(array): use memmove instead of memcopy** `5656 <https://github.com/lvgl/lvgl/pull/5656>`__
- **fix(image): fix wrong log level statement** `5655 <https://github.com/lvgl/lvgl/pull/5655>`__
- **fix(tests): fix test_img_emoji_F617.c error include path** `5652 <https://github.com/lvgl/lvgl/pull/5652>`__
- **fix(FreeRTOS): Stacksize calculation** `5647 <https://github.com/lvgl/lvgl/pull/5647>`__
- **fix(benchmark): fix FPS calculation** `5646 <https://github.com/lvgl/lvgl/pull/5646>`__
- **fix(label): consider max-width** `5644 <https://github.com/lvgl/lvgl/pull/5644>`__
- **fix(demo): fix memory leak in vector demo** `5643 <https://github.com/lvgl/lvgl/pull/5643>`__
- **fix(calendar): fix crash when no default is set** `5621 <https://github.com/lvgl/lvgl/pull/5621>`__
- **fix(freetype): fix using memfs to create a FT font** `5627 <https://github.com/lvgl/lvgl/pull/5627>`__
- **fix(indev): fix variable name in preprocessor warning** `5637 <https://github.com/lvgl/lvgl/pull/5637>`__
- **fix(rle): avoid buffer overflow when compressed data is not in pixel unit** `5619 <https://github.com/lvgl/lvgl/pull/5619>`__
- **fix(LVGLImage): use lv_image_dsc_t instead of lv_img_dsc_t** `5629 <https://github.com/lvgl/lvgl/pull/5629>`__
- **fix(vg_lite): fix linear image use after free** `5618 <https://github.com/lvgl/lvgl/pull/5618>`__
- **fix(kconfig): skip lv_conf.h by default** `5617 <https://github.com/lvgl/lvgl/pull/5617>`__
- **fix(image): add data_size filed to all c-array images** `5608 <https://github.com/lvgl/lvgl/pull/5608>`__
- **fix(doc): wrong code for Displays transparency** `5607 <https://github.com/lvgl/lvgl/pull/5607>`__
- **fix(refr): take stride into consideration in partial update mode** `5583 <https://github.com/lvgl/lvgl/pull/5583>`__
- **fix(test): fix typo related to #5559** `5594 <https://github.com/lvgl/lvgl/pull/5594>`__
- **fix(sysmon): fix build error when LV_USE_PERF_MONITOR_LOG_MODE is enabled** `5597 <https://github.com/lvgl/lvgl/pull/5597>`__
- **fix(sdl): use the new draw buffer structure in the layers** `5578 <https://github.com/lvgl/lvgl/pull/5578>`__
- **fix(benchmark): improve the benchmark** `5558 <https://github.com/lvgl/lvgl/pull/5558>`__
- **fix(ffmpeg): add missing stride setting to ffmpeg image** `5580 <https://github.com/lvgl/lvgl/pull/5580>`__
- **fix(sysmon): fix build break** `5585 <https://github.com/lvgl/lvgl/pull/5585>`__
- **fix(tileview): on size change auto. update the pos. of the tiles** `5577 <https://github.com/lvgl/lvgl/pull/5577>`__
- **fix(sdl): fix keyboard handling** `5575 <https://github.com/lvgl/lvgl/pull/5575>`__
- **fix(lv_conf): minor typo fixes in lv_conf_template.h** `5570 <https://github.com/lvgl/lvgl/pull/5570>`__
- **fix(vg_lite): fix arc img not move to arc center** `5554 <https://github.com/lvgl/lvgl/pull/5554>`__
- **fix(vg_lite): add grad image buffer check** `5552 <https://github.com/lvgl/lvgl/pull/5552>`__
- **fix(obj): fix cover change with semi transparent gradients** `5531 <https://github.com/lvgl/lvgl/pull/5531>`__
- **fix(vg_lite): path matrix should use main vector matrix** `5538 <https://github.com/lvgl/lvgl/pull/5538>`__
- **fix(vg_lite): fix LV_RADIUS_CIRCLE not round** `5543 <https://github.com/lvgl/lvgl/pull/5543>`__
- **fix(vg_lite): add config to disable draw shadow** `5534 <https://github.com/lvgl/lvgl/pull/5534>`__
- **fix(neon): update stride from px to bytes** `5526 <https://github.com/lvgl/lvgl/pull/5526>`__
- **fix(script): Remove TRUECOLOR for LVGLImage.py** `5523 <https://github.com/lvgl/lvgl/pull/5523>`__
- **fix(sysmon): support starting LVGL without having a display** `5518 <https://github.com/lvgl/lvgl/pull/5518>`__
- **fix(chart): set the series id correctly** `5482 <https://github.com/lvgl/lvgl/pull/5482>`__
- **fix(vg_lite): fix clip corner image display error** `5517 <https://github.com/lvgl/lvgl/pull/5517>`__
- **fix(arduino): update example LVGL_Arduino.ino for v9** `5499 <https://github.com/lvgl/lvgl/pull/5499>`__
- **fix(fb): set DPI to correctly** `5508 <https://github.com/lvgl/lvgl/pull/5508>`__
- **fix(layer): Update calculation for overlay used memory** `5504 <https://github.com/lvgl/lvgl/pull/5504>`__
- **fix(bin_decoder): fix potential free garbage address** `5509 <https://github.com/lvgl/lvgl/pull/5509>`__
- **fix(decoder): treat ALLOCATED c-array image as draw buffer** `5483 <https://github.com/lvgl/lvgl/pull/5483>`__
- **fix(vg_lite_tvg): fix use after free when change target canvas** `5497 <https://github.com/lvgl/lvgl/pull/5497>`__
- **fix(keyboard): in the example set Arabic font if enabled** `5457 <https://github.com/lvgl/lvgl/pull/5457>`__
- **fix(codespaces): fix the issue where lv_conf.h in codespaces is not enable** `5484 <https://github.com/lvgl/lvgl/pull/5484>`__
- **fix(textarea): fix accepted chars issue on big endian systems** `5479 <https://github.com/lvgl/lvgl/pull/5479>`__
- **fix(draw_line): fix the issue where dash_dap equals 1 and cannot display properly when the line is a horizontal line** `5473 <https://github.com/lvgl/lvgl/pull/5473>`__
- **fix: removed LV_ATTRIBUTE_FAST_MEM function attribute from prototypes** `5467 <https://github.com/lvgl/lvgl/pull/5467>`__
- **fix(arm2d): apply a temporary patch to arm-2d acceleration** `5466 <https://github.com/lvgl/lvgl/pull/5466>`__
- **fix(snapshot): update the layout of the component before the screenshot** `5475 <https://github.com/lvgl/lvgl/pull/5475>`__
- **fix(vg_lite): add missing 24bit color support check** `5469 <https://github.com/lvgl/lvgl/pull/5469>`__
- **fix(display): set last_activity_time to the current time in lv_display** `5463 <https://github.com/lvgl/lvgl/pull/5463>`__
- **fix(observer): fixed lv_subject_remove_all_obj** `5464 <https://github.com/lvgl/lvgl/pull/5464>`__
- **fix(image_decoder): fix decoder not close** `5437 <https://github.com/lvgl/lvgl/pull/5437>`__
- **fix(nuttx): fix build break** `5440 <https://github.com/lvgl/lvgl/pull/5440>`__
- **fix: fix warnings with -flto on GCC 11** `5433 <https://github.com/lvgl/lvgl/pull/5433>`__
- **fix(assert): add new macro to format assert message** `5453 <https://github.com/lvgl/lvgl/pull/5453>`__
- **fix(decoder): if draw unit supports indexed image, don't add to cache** `5438 <https://github.com/lvgl/lvgl/pull/5438>`__
- **fix(bar): mask the background to fix it on value adjustment** `5426 <https://github.com/lvgl/lvgl/pull/5426>`__
- **fix(lvgl.mk): fix vg_lite_tvg.cpp not compiling** `5435 <https://github.com/lvgl/lvgl/pull/5435>`__
- **fix(ci): use the dev branch of PlatformIO** `5432 <https://github.com/lvgl/lvgl/pull/5432>`__
- **fix(vector) : add path bounding and matrix transform functions.** `5389 <https://github.com/lvgl/lvgl/pull/5389>`__
- **fix(warning): fix shadow variable warning** `47750f1 <https://github.com/lvgl/lvgl/commit/47750f1b866e5ea0617035fd208c727878bebc44>`__
- **fix(thorvg): link lvgl_thorvgl with lvgl** `9b09182 <https://github.com/lvgl/lvgl/commit/9b09182fc76032ef0bc8a2d930fa1cf4fd081431>`__
- **fix(warning): error: no newline at end of file** `9a6a194 <https://github.com/lvgl/lvgl/commit/9a6a194680db9ea12f59e94eab6e812cb28d504f>`__
- **fix(color): treat RGB565A8 bpp same as RGB565** `52426ec <https://github.com/lvgl/lvgl/commit/52426ec1919274e282889129f00e00a9a2a9ce60>`__
- **fix(warning): error: a function declaration without a prototype is deprecated in all versions of C** `c81f654 <https://github.com/lvgl/lvgl/commit/c81f654026501ba37d8df2d8ec02c58bd14eb1c3>`__
- **fix(env_support/cmake): If LV_CONF_PATH is set, install the indicated config instead of the default one.** `6675 <https://github.com/lvgl/lvgl/pull/6675>`__
- **fix(i1): fix compiler and runtime issues with I1 rendering** `6714 <https://github.com/lvgl/lvgl/pull/6714>`__
- **fix(vg_lite): fix rounded rectangle path error** `6726 <https://github.com/lvgl/lvgl/pull/6726>`__
- **fix(vg_lite): fix rendering aliasing caused by global matrix transformation** `6730 <https://github.com/lvgl/lvgl/pull/6730>`__
- **fix(indev): fix LV_EVENT_SCROLL_THROW_BEGIN not send to scroll_obj** `6693 <https://github.com/lvgl/lvgl/pull/6693>`__
- **fix(tiny_ttf): Fix formatting specifier macro in lv_tiny_ttf_set_size** `6731 <https://github.com/lvgl/lvgl/pull/6731>`__
- **fix(nuttx): fix build break** `6732 <https://github.com/lvgl/lvgl/pull/6732>`__
- **fix(chart): fix memory leak** `6727 <https://github.com/lvgl/lvgl/pull/6727>`__
- **fix(draw/neon): fix build break** `6682 <https://github.com/lvgl/lvgl/pull/6682>`__
- **fix(spinbox): add missing update value** `6719 <https://github.com/lvgl/lvgl/pull/6719>`__
- **fix(roller): do not move when there is only one option** `6717 <https://github.com/lvgl/lvgl/pull/6717>`__
- **fix(docbuild): Fix @file commands and guard macros.** `6689 <https://github.com/lvgl/lvgl/pull/6689>`__
- **fix(fs): remove Arduino SD initialization** `6725 <https://github.com/lvgl/lvgl/pull/6725>`__
- **fix(benchmark): use assets only from its own folder** `6666 <https://github.com/lvgl/lvgl/pull/6666>`__
- **fix(Kconfig): remove leading spaces on line 1692** `6695 <https://github.com/lvgl/lvgl/pull/6695>`__
- **fix(roller): fix roller error in ubuntu24.04 uefi** `6683 <https://github.com/lvgl/lvgl/pull/6683>`__
- **fix(rtthread): display driver hang** `6667 <https://github.com/lvgl/lvgl/pull/6667>`__
- **fix(objid): free old id before assign new one** `6697 <https://github.com/lvgl/lvgl/pull/6697>`__
- **fix(demo): fill image-&gt;data_size field** `6710 <https://github.com/lvgl/lvgl/pull/6710>`__
- **fix(indev): fix indev not send gesture event** `6676 <https://github.com/lvgl/lvgl/pull/6676>`__
- **fix(indev): swap the order of sending indev events and obj events** `6636 <https://github.com/lvgl/lvgl/pull/6636>`__
- **fix(scripts): fix update_version error** `6662 <https://github.com/lvgl/lvgl/pull/6662>`__
- **fix(refr): reshape using draw_buf stride** `6567 <https://github.com/lvgl/lvgl/pull/6567>`__
- **fix(arc): add missing private include** `6648 <https://github.com/lvgl/lvgl/pull/6648>`__
- **fix(docbuild): Doxygen warnings from format errors (part 2 of 2)** `6653 <https://github.com/lvgl/lvgl/pull/6653>`__
- **fix(docbuild): Doxygen warnings from format errors (part 1 of 2)** `6652 <https://github.com/lvgl/lvgl/pull/6652>`__
- **fix(API): keep ime struct lv_pinyin_dict_t public** `6645 <https://github.com/lvgl/lvgl/pull/6645>`__
- **fix(draw_sw): fix swapped 90/270 rotation in case of RGB888** `6642 <https://github.com/lvgl/lvgl/pull/6642>`__
- **fix(docs): fix Doxygen warnings caused by format errors** `6584 <https://github.com/lvgl/lvgl/pull/6584>`__
- **fix(freetype): fix outline font being cropped** `6639 <https://github.com/lvgl/lvgl/pull/6639>`__
- **fix(API): keep font struct lv_font_fmt_txt_kern_pair_t public** `6625 <https://github.com/lvgl/lvgl/pull/6625>`__
- **fix(nxp/vglite): fix stride calculation** `6613 <https://github.com/lvgl/lvgl/pull/6613>`__
- **fix(vector): fix vector graphic draw test case for amd64** `6616 <https://github.com/lvgl/lvgl/pull/6616>`__
- **fix(osal): initialize Windows thread sync correctly** `6604 <https://github.com/lvgl/lvgl/pull/6604>`__
- **fix(tiny_ttf): fix no cache and formatting cleanup** `6568 <https://github.com/lvgl/lvgl/pull/6568>`__
- **fix(vg_lite): remove pattern_color from label drawing** `6605 <https://github.com/lvgl/lvgl/pull/6605>`__
- **fix(display): delete previous screen instead of current** `6494 <https://github.com/lvgl/lvgl/pull/6494>`__
- **fix(docbuild): `@file` command arg mismatches** `6582 <https://github.com/lvgl/lvgl/pull/6582>`__
- **fix(kconfig): Do not set LV_CONF_SKIP by default** `6562 <https://github.com/lvgl/lvgl/pull/6562>`__
- **fix(property): fix style property** `6552 <https://github.com/lvgl/lvgl/pull/6552>`__
- **fix(draw_buf): handle negative coordinates on the area to clear** `6510 <https://github.com/lvgl/lvgl/pull/6510>`__
- **fix(draw_sw): do not recalculate target buffer stride** `6530 <https://github.com/lvgl/lvgl/pull/6530>`__
- **fix(theme): make the text styles work on the INDICATOR's DEFAULT state** `6521 <https://github.com/lvgl/lvgl/pull/6521>`__
- **fix(examples): fix typo in lv_port_indev_template.c** `6555 <https://github.com/lvgl/lvgl/pull/6555>`__
- **fix(ci): fix micropython CI** `6546 <https://github.com/lvgl/lvgl/pull/6546>`__
- **fix(vg_lite): fix draw pattern recolor error** `6525 <https://github.com/lvgl/lvgl/pull/6525>`__
- **fix(sdl): make sure minimal alignment is sizeof(void*) for aligned alloc** `6526 <https://github.com/lvgl/lvgl/pull/6526>`__
- **fix(pxp): use floorf instead of floor** `6516 <https://github.com/lvgl/lvgl/pull/6516>`__
- **fix(anim): fix deleted_cb not called in lv_anim_delete_all** `6513 <https://github.com/lvgl/lvgl/pull/6513>`__
- **fix(thorvg): support rendering in draw events** `6406 <https://github.com/lvgl/lvgl/pull/6406>`__
- **fix(obj_tree): fix incorrect return value of function lv_obj_get_sibling_by_type()** `6503 <https://github.com/lvgl/lvgl/pull/6503>`__
- **fix(test): fix filter option dot escape by setting regexp string** `6509 <https://github.com/lvgl/lvgl/pull/6509>`__
- **fix(dave2d): fix rendering to canvas with dave2d** `6498 <https://github.com/lvgl/lvgl/pull/6498>`__
- **fix(label): do not break last line for LV_LABEL_LONG_DOT (#5606)** `6362 <https://github.com/lvgl/lvgl/pull/6362>`__
- **fix(ime): fix buffer-overflow error in pingyin IME** `6501 <https://github.com/lvgl/lvgl/pull/6501>`__
- **fix(refr): eliminate side effect in assert** `6499 <https://github.com/lvgl/lvgl/pull/6499>`__
- **fix(gif): add correct image header** `6472 <https://github.com/lvgl/lvgl/pull/6472>`__
- **fix(vg_lite_tvg): fix path structure is not fully initialized** `6493 <https://github.com/lvgl/lvgl/pull/6493>`__
- **fix(drivers): fix hardware rotation of generic mipi display** `6470 <https://github.com/lvgl/lvgl/pull/6470>`__
- **fix(gen_json): fix bad LVGL header path** `6479 <https://github.com/lvgl/lvgl/pull/6479>`__
- **fix(Windows): use global lock** `6425 <https://github.com/lvgl/lvgl/pull/6425>`__
- **fix(decoder): use unsigned format spec with uint32_t's** `6457 <https://github.com/lvgl/lvgl/pull/6457>`__
- **fix(draw_buf): skip palette cleanup** `6471 <https://github.com/lvgl/lvgl/pull/6471>`__
- **fix(scroll): fix jumping on scroll end** `6393 <https://github.com/lvgl/lvgl/pull/6393>`__
- **fix(gridnav): send focus/defocus event from gridnav key handler** `6385 <https://github.com/lvgl/lvgl/pull/6385>`__
- **fix(nxp): fix rounded corner image in NXP vglite** `6436 <https://github.com/lvgl/lvgl/pull/6436>`__
- **fix(codespace): enable builtin OBJID feature** `6417 <https://github.com/lvgl/lvgl/pull/6417>`__
- **fix(conf): make comment requirement explicit** `6248 <https://github.com/lvgl/lvgl/pull/6248>`__
- **fix(ap): fix ap map table** `6430 <https://github.com/lvgl/lvgl/pull/6430>`__
- **fix(draw_buf): fix user defined draw_buf alloc/destroy not paired** `6426 <https://github.com/lvgl/lvgl/pull/6426>`__
- **fix(x11): use normal malloc for frame buffer allocation** `6384 <https://github.com/lvgl/lvgl/pull/6384>`__
- **fix(vg_lite): fix scissor setting error** `6420 <https://github.com/lvgl/lvgl/pull/6420>`__
- **fix(examples): correct typo in widgets example doc** `6412 <https://github.com/lvgl/lvgl/pull/6412>`__
- **fix(demo): make the music player correctly work with v9** `6302 <https://github.com/lvgl/lvgl/pull/6302>`__
- **fix(indev): fix use after free of last hovered object** `6405 <https://github.com/lvgl/lvgl/pull/6405>`__
- **fix(vg_lite): fix incorrect alpha handling** `6402 <https://github.com/lvgl/lvgl/pull/6402>`__
- **fix(theme): set a default length for scale** `6359 <https://github.com/lvgl/lvgl/pull/6359>`__
- **fix(spangroup): handle style_text_letter_space better** `6364 <https://github.com/lvgl/lvgl/pull/6364>`__
- **fix(sdl): fix draw buffer misalignment** `6386 <https://github.com/lvgl/lvgl/pull/6386>`__
- **fix(nuttx): fix build warning using nuttx** `6379 <https://github.com/lvgl/lvgl/pull/6379>`__
- **fix(test): fix compile error on macos** `6377 <https://github.com/lvgl/lvgl/pull/6377>`__
- **fix(fs_littlefs): fix maybe-uninitialized warning** `6380 <https://github.com/lvgl/lvgl/pull/6380>`__
- **fix(thorvg): fix sw_engine crash** `6372 <https://github.com/lvgl/lvgl/pull/6372>`__
- **fix(scale): fix the issue of needle sliding in scale** `6343 <https://github.com/lvgl/lvgl/pull/6343>`__
- **fix(cmake): install headers correctly** `6332 <https://github.com/lvgl/lvgl/pull/6332>`__
- **fix(animimage): add NULL pointer check** `6206 <https://github.com/lvgl/lvgl/pull/6206>`__
- **fix(docs): fix Lottie document cannot view examples (#6338)** `6342 <https://github.com/lvgl/lvgl/pull/6342>`__
- **fix(obj): fix memory leak in error handling** `6330 <https://github.com/lvgl/lvgl/pull/6330>`__
- **fix(env): fix meson build break** `5745 <https://github.com/lvgl/lvgl/pull/5745>`__
- **fix(drm): add tick_get_cb** `6306 <https://github.com/lvgl/lvgl/pull/6306>`__
- **fix(dave2d): make it work without software render too** `6290 <https://github.com/lvgl/lvgl/pull/6290>`__
- **fix(demo): lv_demo_widgets update scale3 needle and label pos on resize** `6258 <https://github.com/lvgl/lvgl/pull/6258>`__
- **fix(example): lv_example_scale_3 second scale needle was scrollable** `6320 <https://github.com/lvgl/lvgl/pull/6320>`__
- **fix(roller): enable lv_example_roller_3 again** `6307 <https://github.com/lvgl/lvgl/pull/6307>`__
- **fix(math): fix compile warning** `6315 <https://github.com/lvgl/lvgl/pull/6315>`__
- **fix(dave2d): fix warnings on non Cortex-M85** `6284 <https://github.com/lvgl/lvgl/pull/6284>`__
- **fix(docs): Fix failing docs build in master since lottie** `6316 <https://github.com/lvgl/lvgl/pull/6316>`__
- **fix(display): cancelled screen animation may block input indefinitely** `6277 <https://github.com/lvgl/lvgl/pull/6277>`__
- **fix(obj): search child object using depth-first search** `6287 <https://github.com/lvgl/lvgl/pull/6287>`__
- **fix(roller): avoid divided-by-zero during draw event** `6285 <https://github.com/lvgl/lvgl/pull/6285>`__
- **fix(indev): fix elastic scrolling with snapping** `6230 <https://github.com/lvgl/lvgl/pull/6230>`__
- **fix(benchmark): use the correct subject for performance data** `6237 <https://github.com/lvgl/lvgl/pull/6237>`__
- **fix(layouts): fix rounding for fr in grid layout** `6255 <https://github.com/lvgl/lvgl/pull/6255>`__
- **fix (dave2d) : remove __NOP(); and __BKPT(0);** `6228 <https://github.com/lvgl/lvgl/pull/6228>`__
- **fix(sdl): handle if the window_id is not set correctly in SDL** `6194 <https://github.com/lvgl/lvgl/pull/6194>`__
- **fix(drivers): drm driver not initialising with small screens** `6244 <https://github.com/lvgl/lvgl/pull/6244>`__
- **fix(freetype): fix potential multi-threaded data conflicts** `6252 <https://github.com/lvgl/lvgl/pull/6252>`__
- **fix(vglite): build issues ** `6245 <https://github.com/lvgl/lvgl/pull/6245>`__
- **fix(canvas): lv_canvas_set_px for indexed images** `6226 <https://github.com/lvgl/lvgl/pull/6226>`__
- **fix(snapshot): fix memleak in lv_snapshot** `6147 <https://github.com/lvgl/lvgl/pull/6147>`__
- **fix(span): fix span incorrect max height calculation** `6243 <https://github.com/lvgl/lvgl/pull/6243>`__
- **fix(refr): remove the unnecessary wait for flush in double buffered direct mode** `6120 <https://github.com/lvgl/lvgl/pull/6120>`__
- **fix(display): load screen from matching display** `6189 <https://github.com/lvgl/lvgl/pull/6189>`__
- **fix(roller): set the position of the selected text correctly** `6083 <https://github.com/lvgl/lvgl/pull/6083>`__
- **fix(span): fix Chinese character incorrect break line** `6222 <https://github.com/lvgl/lvgl/pull/6222>`__
- **fix(lv_msgbox): Automatically adjust msgbox's content height.** `6176 <https://github.com/lvgl/lvgl/pull/6176>`__
- **fix(imagebutton): tiling regression** `6195 <https://github.com/lvgl/lvgl/pull/6195>`__
- **fix(docs): fix broken links** `6207 <https://github.com/lvgl/lvgl/pull/6207>`__
- **fix(sysmon): fix MicroPython compilation error when system monitor is enabled** `6073 <https://github.com/lvgl/lvgl/pull/6073>`__
- **fix(fsdrv/fatfs): support FF_DIR and FATFS_DIR typedef in ff.h** `6128 <https://github.com/lvgl/lvgl/pull/6128>`__
- **fix(scripts): remove scripts/release/ directory** `6134 <https://github.com/lvgl/lvgl/pull/6134>`__
- **fix(arc): arc pressing bounds detection** `6188 <https://github.com/lvgl/lvgl/pull/6188>`__
- **fix(refr): call flush_wait_cb only if flushing is in progress** `6174 <https://github.com/lvgl/lvgl/pull/6174>`__
- **fix(event): stop event event processing when requested** `6113 <https://github.com/lvgl/lvgl/pull/6113>`__
- **fix(nuttx): fix assert failed due to wrong color format** `6160 <https://github.com/lvgl/lvgl/pull/6160>`__
- **fix(nuttx): fix compile warning** `6156 <https://github.com/lvgl/lvgl/pull/6156>`__
- **fix(README): with corrected example code** `6151 <https://github.com/lvgl/lvgl/pull/6151>`__
- **fix(example): fix the gradient text example** `6152 <https://github.com/lvgl/lvgl/pull/6152>`__
- **fix(tests): fix check failed for `-Wno-c++11-extensions`** `6154 <https://github.com/lvgl/lvgl/pull/6154>`__
- **fix(scroll): fix infinite loop in scroll_end events** `6109 <https://github.com/lvgl/lvgl/pull/6109>`__
- **fix(vg_lite): fix incorrect cache operation** `6054 <https://github.com/lvgl/lvgl/pull/6054>`__
- **fix(docs): fix typo for LV_KEYBOARD_MODE_SPECIAL** `6136 <https://github.com/lvgl/lvgl/pull/6136>`__
- **fix(demo): fix compile warning** `6100 <https://github.com/lvgl/lvgl/pull/6100>`__
- **fix(docs): use find_version helper in build script** `6122 <https://github.com/lvgl/lvgl/pull/6122>`__
- **fix(docs): pull version out of lv_version.h** `6097 <https://github.com/lvgl/lvgl/pull/6097>`__
- **fix(area): increase coordinate percent range beyond +-1000** `6051 <https://github.com/lvgl/lvgl/pull/6051>`__
- **fix(cmake): generate versioned shared libraries** `5865 <https://github.com/lvgl/lvgl/pull/5865>`__
- **fix(image): set the draw_task area correctly for tiled image** `6029 <https://github.com/lvgl/lvgl/pull/6029>`__
- **fix(encoder): always fire LV_EVENT_LONG_PRESSED to indev callback** `6064 <https://github.com/lvgl/lvgl/pull/6064>`__
- **fix(vg_lite)check the color format before alloc layer buffer** `6071 <https://github.com/lvgl/lvgl/pull/6071>`__
- **fix(lodepng): fix crash when fallback from lodepng decoder** `6079 <https://github.com/lvgl/lvgl/pull/6079>`__
- **fix(scroll): fix deletion animation causing missing scroll end event** `5979 <https://github.com/lvgl/lvgl/pull/5979>`__
- **fix(evdev): add missing include for strerror** `6047 <https://github.com/lvgl/lvgl/pull/6047>`__
- **fix(canvas): invalidate canvas on finish layer** `6042 <https://github.com/lvgl/lvgl/pull/6042>`__
- **fix(bin_decoder): fix memory leak** `5990 <https://github.com/lvgl/lvgl/pull/5990>`__
- **fix(font): fix the include path of lvgl.h** `6050 <https://github.com/lvgl/lvgl/pull/6050>`__
- **fix(kconfig): add Montserrat 10 font to default title font list in Kconfig (#6057)** `6058 <https://github.com/lvgl/lvgl/pull/6058>`__
- **fix(style): refresh the style on transition start** `6043 <https://github.com/lvgl/lvgl/pull/6043>`__
- **fix(canvas): fix buf copy assert msg error** `6063 <https://github.com/lvgl/lvgl/pull/6063>`__
- **fix(display): update the color format of the draw buffers on color format change** `5973 <https://github.com/lvgl/lvgl/pull/5973>`__
- **fix(label): fix maybe-uninitialized warning** `6028 <https://github.com/lvgl/lvgl/pull/6028>`__
- **fix(draw): fix the default draw thread stack is too large** `5951 <https://github.com/lvgl/lvgl/pull/5951>`__
- **fix(driver): lv_x11_input.c fixes** `6033 <https://github.com/lvgl/lvgl/pull/6033>`__
- **fix(example): LVGL_Arduino.ino millis() as tick source** `5999 <https://github.com/lvgl/lvgl/pull/5999>`__
- **fix(textarea): update password bullets immediately on set** `5943 <https://github.com/lvgl/lvgl/pull/5943>`__
- **fix(nuttx): fix gesture event failure** `5996 <https://github.com/lvgl/lvgl/pull/5996>`__
- **fix(fbdev): set resolution prior to buffer** `6004 <https://github.com/lvgl/lvgl/pull/6004>`__
- **fix(thorvg): fix windows build break** `5978 <https://github.com/lvgl/lvgl/pull/5978>`__
- **fix(kconfig): update as per lv_conf_template.h** `5980 <https://github.com/lvgl/lvgl/pull/5980>`__
- **fix(anim): optimize repeat_count type** `5975 <https://github.com/lvgl/lvgl/pull/5975>`__
- **fix(rtthread): implement lv_strcat function in rt-thread due to absence of rt_strcat** `5920 <https://github.com/lvgl/lvgl/pull/5920>`__
- **fix(span): handle trailing newline** `5957 <https://github.com/lvgl/lvgl/pull/5957>`__
- **fix(sdl_keyboard): fix warning of the implicit declaration of function memmove** `5962 <https://github.com/lvgl/lvgl/pull/5962>`__
- **fix(obj_tree): fix event loss caused by obj deletion** `5950 <https://github.com/lvgl/lvgl/pull/5950>`__
- **fix(sdl): handle both LV_IMAGE_SRC_FILE and LV_IMAGE_SRC_VARIABLE** `5852 <https://github.com/lvgl/lvgl/pull/5852>`__
- **fix(demos): update README to match lv_demos.c** `5939 <https://github.com/lvgl/lvgl/pull/5939>`__
- **fix(flex): LV_FLEX_ALIGN_SPACE_BETWEEN align single item left** `5915 <https://github.com/lvgl/lvgl/pull/5915>`__
- **fix(platformio): fix CI to automatically publish release** `5924 <https://github.com/lvgl/lvgl/pull/5924>`__
- **fix(script): update RLE compressed image raw len without padding** `dd70291 <https://github.com/lvgl/lvgl/commit/dd70291e4cfe152c28750192d0241def8e012625>`__
- **fix(image): image inner align name should not conflict with obj's align** `d6495b5 <https://github.com/lvgl/lvgl/commit/d6495b576b5c1cbdcde03c5de4350423d59077fa>`__
- **fix(refr): NOT draw if scale is 0** `1d647ad <https://github.com/lvgl/lvgl/commit/1d647adaef6e346c1b7e09af8123099973fe0d47>`__
- **fix(sdl): fix build warning** `9a91368 <https://github.com/lvgl/lvgl/commit/9a913684f04030d99be8341f80a78fb01ddd4ae8>`__
- **fix(script): add per image attribute for C array** `124086c <https://github.com/lvgl/lvgl/commit/124086cb1b4d4b2009d302b8183e9ec577dad13b>`__
- **fix(anim): fix lv_anim_set_repeat_count configuration parameter may be truncated** `6e3f686 <https://github.com/lvgl/lvgl/commit/6e3f6866cb71e831927d8deb9b732ff138a98a42>`__
- **fix(draw_buf): use LV_ROUND_UP to align draw buffer address** `79b64c8 <https://github.com/lvgl/lvgl/commit/79b64c8bd8f2ee51df6954fe0e0b5fbf58ff85db>`__
- **fix(bin_decoder): check buffer size before write data** `75eef0d <https://github.com/lvgl/lvgl/commit/75eef0d209dfc96bf87d9d83b30eaee3e21b9f14>`__
- **fix(property): support user added property index** `c191ecb <https://github.com/lvgl/lvgl/commit/c191ecbfb60d628252d3cb012a5a216f2b7f23d3>`__
- **fixed compile error on line 402 when using two SDL frame buffers** `7722f0f <https://github.com/lvgl/lvgl/commit/7722f0f5ce8c6a102702242e6ed4ec02b8f33e28>`__
- **fix(animimg): Optimize the structure size of animations** `150d1a1 <https://github.com/lvgl/lvgl/commit/150d1a1d371ab23406a61a7afcad408d63ec30e4>`__
- **fix(obj): avoid to init NULL obj** `9e3ea81 <https://github.com/lvgl/lvgl/commit/9e3ea81ddebe9b5f48256e657ba0bc228a7ff0a3>`__
- **fix(thorvg): use premultiplied images in SW render** `f34ec4b <https://github.com/lvgl/lvgl/commit/f34ec4b671c599eea1d1b7c2c172c1732566dea4>`__
Examples
~~~~~~~~
@@ -210,112 +365,124 @@ Examples
Docs
~~~~
- **docs: update README** `5841 <https://github.com/lvgl/lvgl/pull/5841>`__
- **docs: make it easy to add more other translations** `5874 <https://github.com/lvgl/lvgl/pull/5874>`__
- **docs: ignore the READMEs when building the docs** `5840 <https://github.com/lvgl/lvgl/pull/5840>`__
- **docs(st7789): updated the docs + added code example and step-by-step guide for STM32** `5511 <https://github.com/lvgl/lvgl/pull/5511>`__
- **docs(arduino): update tick setup** `5832 <https://github.com/lvgl/lvgl/pull/5832>`__
- **docs(display): use lv_display_delete_refr_timer to delete display timer** `5835 <https://github.com/lvgl/lvgl/pull/5835>`__
- **docs(lv_conf): show how to include something in lv_conf.h** `5740 <https://github.com/lvgl/lvgl/pull/5740>`__
- **docs(tick): simplify and promote lv_tick_set_cb** `5781 <https://github.com/lvgl/lvgl/pull/5781>`__
- **docs(style): output the style properties to style-props.rst** `5802 <https://github.com/lvgl/lvgl/pull/5802>`__
- **docs(changelog): mention that LV_COLOR_DEPTH 8 is not supported yet** `5796 <https://github.com/lvgl/lvgl/pull/5796>`__
- **docs(image): update align to inner_align** `5721 <https://github.com/lvgl/lvgl/pull/5721>`__
- **docs(README_Zh): remove mentions of SquareLine Studio** `5640 <https://github.com/lvgl/lvgl/pull/5640>`__
- **docs(profiler): fix my_get_cpu_cb implementation** `5641 <https://github.com/lvgl/lvgl/pull/5641>`__
- **docs(demos): remove inconsistent READMEs** `5626 <https://github.com/lvgl/lvgl/pull/5626>`__
- **docs(README): remove mentions of SquareLine Studio** `5638 <https://github.com/lvgl/lvgl/pull/5638>`__
- **docs(changelog): mention more features removed in v9** `5632 <https://github.com/lvgl/lvgl/pull/5632>`__
- **docs(micropython): update MicroPython examples in documentation** `5622 <https://github.com/lvgl/lvgl/pull/5622>`__
- **docs(contributing): fix links** `5615 <https://github.com/lvgl/lvgl/pull/5615>`__
- **docs(porting): add missing colon in porting docs** `5613 <https://github.com/lvgl/lvgl/pull/5613>`__
- **docs(contributing): update the feature development workflow** `5601 <https://github.com/lvgl/lvgl/pull/5601>`__
- **docs(tabview): fix tabview doc** `5588 <https://github.com/lvgl/lvgl/pull/5588>`__
- **docs(indev): Document the relation between LV_INDEV_MODE_EVENT and data-&gt;continue_reading** `5586 <https://github.com/lvgl/lvgl/pull/5586>`__
- **docs(pc-simulator): Document how to set up SDL manually, without IDE** `5563 <https://github.com/lvgl/lvgl/pull/5563>`__
- **docs(disp): document lv_refr_now** `5480 <https://github.com/lvgl/lvgl/pull/5480>`__
- **docs(disp): Fix pointer cast in flush_cb example** `5439 <https://github.com/lvgl/lvgl/pull/5439>`__
- **docs(font): about "base dir"** `5429 <https://github.com/lvgl/lvgl/pull/5429>`__
- **docs(label): fix unintentional definition list in parts and styles section** `6735 <https://github.com/lvgl/lvgl/pull/6735>`__
- **docs(arm): add overview docs for Arm** `6712 <https://github.com/lvgl/lvgl/pull/6712>`__
- **docs(obj): fix typo of LV_OBJ_FLAG_IGNORE_LAYOUT** `6713 <https://github.com/lvgl/lvgl/pull/6713>`__
- **docs(espressif): Update Espressif's documentation with esp_lvgl_port** `6658 <https://github.com/lvgl/lvgl/pull/6658>`__
- **docs(scale): Add note about major tick label calculation when no custom labels are set** `6585 <https://github.com/lvgl/lvgl/pull/6585>`__
- **docs: Added docs for BDF fonts** `6398 <https://github.com/lvgl/lvgl/pull/6398>`__
- **docs(qnx): reflect on the changed build directory** `6583 <https://github.com/lvgl/lvgl/pull/6583>`__
- **docs(example): complete the examples not cited in the docs** `6608 <https://github.com/lvgl/lvgl/pull/6608>`__
- **docs(msgbox): update to reflect latest** `6603 <https://github.com/lvgl/lvgl/pull/6603>`__
- **docs: add VG-Lite related documents** `6557 <https://github.com/lvgl/lvgl/pull/6557>`__
- **docs(qnx): add to index.rst** `6572 <https://github.com/lvgl/lvgl/pull/6572>`__
- **docs: fix flush_cb typo** `6523 <https://github.com/lvgl/lvgl/pull/6523>`__
- **docs: update the drivers description** `6423 <https://github.com/lvgl/lvgl/pull/6423>`__
- **docs(renesas): update board videos, fix typos** `6429 <https://github.com/lvgl/lvgl/pull/6429>`__
- **docs(README): fix broken images** `6404 <https://github.com/lvgl/lvgl/pull/6404>`__
- **docs(build): fix build error** `6403 <https://github.com/lvgl/lvgl/pull/6403>`__
- **docs(README): fix links** `6383 <https://github.com/lvgl/lvgl/pull/6383>`__
- **docs(tileview): fix tileview column/row argument order** `6388 <https://github.com/lvgl/lvgl/pull/6388>`__
- **docs: add evdev documentation** `6376 <https://github.com/lvgl/lvgl/pull/6376>`__
- **docs(examples): add the gradient examples** `6328 <https://github.com/lvgl/lvgl/pull/6328>`__
- **docs(quick-overview): update indev create to v9** `6282 <https://github.com/lvgl/lvgl/pull/6282>`__
- **docs(lottie): fix missing lottie link on the widgets index** `6272 <https://github.com/lvgl/lvgl/pull/6272>`__
- **docs(quick-overview): clarify which folders are required** `6250 <https://github.com/lvgl/lvgl/pull/6250>`__
- **docs(simulator): update simulator page and mention lv_port_linux** `6205 <https://github.com/lvgl/lvgl/pull/6205>`__
- **docs: simplify the find_version script and fix shellcheck report in it** `6133 <https://github.com/lvgl/lvgl/pull/6133>`__
- **docs(coord): fix the layout of overview** `6112 <https://github.com/lvgl/lvgl/pull/6112>`__
- **docs: fix example build break** `6114 <https://github.com/lvgl/lvgl/pull/6114>`__
- **docs(obj): fix add/remove flag documentation** `6067 <https://github.com/lvgl/lvgl/pull/6067>`__
- **docs(calendar): move instruction to the usage section** `6045 <https://github.com/lvgl/lvgl/pull/6045>`__
- **docs: fix typo in the comments [ci skip]** `6027 <https://github.com/lvgl/lvgl/pull/6027>`__
- **docs(renesas): fix the links** `5977 <https://github.com/lvgl/lvgl/pull/5977>`__
- **docs(renesas): add a general introduction page** `5969 <https://github.com/lvgl/lvgl/pull/5969>`__
- **docs(changelog): fixed changelog displaying no line breaks** `5931 <https://github.com/lvgl/lvgl/pull/5931>`__
- **docs: update changelog** `5923 <https://github.com/lvgl/lvgl/pull/5923>`__
- **docs(global): decoration should be as long as the text** `5ed3a06 <https://github.com/lvgl/lvgl/commit/5ed3a064c1169766bcb2b6a9cd93ff6f4f145e07>`__
- **docs(renesas): update links** `be4a9d1 <https://github.com/lvgl/lvgl/commit/be4a9d1e735f191151aae5acf4a2018ca2e86f0b>`__
- **docs(faq): lv_display_t, lv_indev_t, and lv_fs_drv_t doesn't have to be static** `1dfd782 <https://github.com/lvgl/lvgl/commit/1dfd7827148543d156a1c2ac8614c9f99054672e>`__
CI and tests
~~~~~~~~~~~~
- **test(conf): update conf and remove deprecated configs** `5881 <https://github.com/lvgl/lvgl/pull/5881>`__
- **tests(freetype): refactor code structure** `5871 <https://github.com/lvgl/lvgl/pull/5871>`__
- **ci(micropython): catch event failure in the test** `5787 <https://github.com/lvgl/lvgl/pull/5787>`__
- **ci(ref_imgs): automatically generate the missing reference image folders** `5696 <https://github.com/lvgl/lvgl/pull/5696>`__
- **ci(assets): add LV_BUILD_TEST guard** `5616 <https://github.com/lvgl/lvgl/pull/5616>`__
- **ci(codecov): disable CodeCov** `5623 <https://github.com/lvgl/lvgl/pull/5623>`__
- **test(asset): add guard to test_img_emoji_F617** `5559 <https://github.com/lvgl/lvgl/pull/5559>`__
- **ci(micropython): use the master branch** `5460 <https://github.com/lvgl/lvgl/pull/5460>`__
- **test(snapshot): add testcase for #5475** `5478 <https://github.com/lvgl/lvgl/pull/5478>`__
- **ci(sdl): add sdl build to ci test** `6505 <https://github.com/lvgl/lvgl/pull/6505>`__
- **ci(micropython): improve logs** `6257 <https://github.com/lvgl/lvgl/pull/6257>`__
- **test(span): add span testcase for Chinese line break** `6236 <https://github.com/lvgl/lvgl/pull/6236>`__
- **ci(test): fix include path** `6141 <https://github.com/lvgl/lvgl/pull/6141>`__
- **ci(ubuntu):ci use ubuntu-2204** `6213 <https://github.com/lvgl/lvgl/pull/6213>`__
- **ci(stale): do not mark shaping and ready for development issues as stale** `6086 <https://github.com/lvgl/lvgl/pull/6086>`__
- **ci: use ubuntu-22.04 instead of ubuntu-latest** `6032 <https://github.com/lvgl/lvgl/pull/6032>`__
- **ci(test): remove non-native builds and add native 32 and 64 bit builds instead** `f2e81d8 <https://github.com/lvgl/lvgl/commit/f2e81d80b37214eb72a2b21efd658817d928ac1e>`__
Others
~~~~~~
- **chore(cmsis-pack): prepare for v9.1.0** `5917 <https://github.com/lvgl/lvgl/pull/5917>`__
- **chore: fix header files include recursion** `5844 <https://github.com/lvgl/lvgl/pull/5844>`__
- **chore(group): avoid null pointer access** `5863 <https://github.com/lvgl/lvgl/pull/5863>`__
- **refactor(conf): rename LV_DRAW_SW_LAYER_SIMPLE_BUF_SIZE to LV_DRAW_LAYER_SIMPLE_BUF_SIZE** `5798 <https://github.com/lvgl/lvgl/pull/5798>`__
- **chore(freetype): remove unused codes** `5885 <https://github.com/lvgl/lvgl/pull/5885>`__
- **chore: fix compile time warnings** `5872 <https://github.com/lvgl/lvgl/pull/5872>`__
- **adds `extern "C"` to the header files that were missing it.** `5857 <https://github.com/lvgl/lvgl/pull/5857>`__
- **chore(stdlib): remove duplicate function declaration** `5845 <https://github.com/lvgl/lvgl/pull/5845>`__
- **chore(benchmark): add warning for probably low memory** `5797 <https://github.com/lvgl/lvgl/pull/5797>`__
- **chore(group): add assertion to avoid null pointer access** `5769 <https://github.com/lvgl/lvgl/pull/5769>`__
- **refact(Kconfig): update as per lv_conf_template.h** `5780 <https://github.com/lvgl/lvgl/pull/5780>`__
- **Fix the compilation error problem of lvgl9.x on rtthread** `5794 <https://github.com/lvgl/lvgl/pull/5794>`__
- **refact(vg_lite): abstract common pending release logic** `5756 <https://github.com/lvgl/lvgl/pull/5756>`__
- **doc(stm32): fix typo** `5772 <https://github.com/lvgl/lvgl/pull/5772>`__
- **doc(cache): add doc strings for cache APIs** `5718 <https://github.com/lvgl/lvgl/pull/5718>`__
- **chore(docs): fix typo** `5738 <https://github.com/lvgl/lvgl/pull/5738>`__
- **chore(font): remove unused defines** `5716 <https://github.com/lvgl/lvgl/pull/5716>`__
- **chore: add stride information in the image resource file** `5653 <https://github.com/lvgl/lvgl/pull/5653>`__
- **chore(draw_buf): remove unnecessary info logs** `5634 <https://github.com/lvgl/lvgl/pull/5634>`__
- **chore(cmsis-pack): catchup update** `5611 <https://github.com/lvgl/lvgl/pull/5611>`__
- **More chore work in indev files** `5604 <https://github.com/lvgl/lvgl/pull/5604>`__
- **Stride adjust in place** `5423 <https://github.com/lvgl/lvgl/pull/5423>`__
- **chore(conf): use EXTERNAL and INTERNAL macro to config libs** `5046 <https://github.com/lvgl/lvgl/pull/5046>`__
- **chore(vg_lite): use pointer to access matrix element** `5591 <https://github.com/lvgl/lvgl/pull/5591>`__
- **refactor(image): rename align to inner_align** `5560 <https://github.com/lvgl/lvgl/pull/5560>`__
- **chore(deps): bump codecov/codecov-action from 3 to 4** `5567 <https://github.com/lvgl/lvgl/pull/5567>`__
- **chore(deps): bump carlosperate/arm-none-eabi-gcc-action from 1.8.0 to 1.8.1** `5565 <https://github.com/lvgl/lvgl/pull/5565>`__
- **chore(deps): bump mymindstorm/setup-emsdk from 13 to 14** `5566 <https://github.com/lvgl/lvgl/pull/5566>`__
- **chore(deps): bump actions/cache from 3 to 4** `5568 <https://github.com/lvgl/lvgl/pull/5568>`__
- **chore(deps): bump uraimo/run-on-arch-action from 2.6.0 to 2.7.1** `5569 <https://github.com/lvgl/lvgl/pull/5569>`__
- **optionally install demos and libs as well** `5387 <https://github.com/lvgl/lvgl/pull/5387>`__
- **chore(arc): fix typo** `5553 <https://github.com/lvgl/lvgl/pull/5553>`__
- **Revert "feat(font_glyph_format): refactor draw and font format into `lv_font_glyph_format_t`"** `5550 <https://github.com/lvgl/lvgl/pull/5550>`__
- **chore(thorvg): fix warning** `5535 <https://github.com/lvgl/lvgl/pull/5535>`__
- **refactor(snapshot): use draw buffer interface** `5487 <https://github.com/lvgl/lvgl/pull/5487>`__
- **chore(vg_lite): fix typo** `5525 <https://github.com/lvgl/lvgl/pull/5525>`__
- **demo(music): add png assets** `5520 <https://github.com/lvgl/lvgl/pull/5520>`__
- **chore(indev): Cleanup before working in double and triple click support** `5512 <https://github.com/lvgl/lvgl/pull/5512>`__
- **chore(demos): Remove unused definitions** `5506 <https://github.com/lvgl/lvgl/pull/5506>`__
- **chore(obj_draw): remove duplicate invalidate** `5503 <https://github.com/lvgl/lvgl/pull/5503>`__
- **chore(widgets): add parentheses to MY_CLASS definition** `5485 <https://github.com/lvgl/lvgl/pull/5485>`__
- **chore(draw-sw-transform): remove duplicated code** `5488 <https://github.com/lvgl/lvgl/pull/5488>`__
- **chore(README): Fixed #5491 Typo** `5492 <https://github.com/lvgl/lvgl/pull/5492>`__
- **chore(vg_lite): remove 64-bytes alignment requirement** `5477 <https://github.com/lvgl/lvgl/pull/5477>`__
- **chore(refr): fix typo** `5474 <https://github.com/lvgl/lvgl/pull/5474>`__
- **chore(array): use array_front and use it like an array** `5448 <https://github.com/lvgl/lvgl/pull/5448>`__
- **chore(cache): only cache header info for file type of image** `5455 <https://github.com/lvgl/lvgl/pull/5455>`__
- **refactor(indev_scroll): refactor code** `5456 <https://github.com/lvgl/lvgl/pull/5456>`__
- **chore(draw_buf): add header magic to draw buff** `5449 <https://github.com/lvgl/lvgl/pull/5449>`__
- **chore(Kconfig): add missing profiler trace buffer size config** `5436 <https://github.com/lvgl/lvgl/pull/5436>`__
- **chore(libpng): fix warning** `5431 <https://github.com/lvgl/lvgl/pull/5431>`__
Others
~~~~~~
- **refactor(freetype): refactor freetype params** `0c84cc0 <https://github.com/lvgl/lvgl/commit/0c84cc0b3b9b1ea37bd6aa5300e91eee0f2feb98>`__
- **refactor(freetype): refactor glyph_index acquire method** `0b3016c <https://github.com/lvgl/lvgl/commit/0b3016c0e5b5d57141220c030c0aadd9d9c3387e>`__
- **chore(README): Fixed #5491 Typo (#5492)** `9c025d3 <https://github.com/lvgl/lvgl/commit/9c025d357f358c281db441a96a27ce2a01434a8d>`__
v9.0
----
For Other v9.0.x releases visit the `Changelog in the release/v9.0 branch <https://github.com/lvgl/lvgl/blob/release/v9.0/docs/CHANGELOG.rst>`__ .
- **chore(api): add api map for v9.1** `6733 <https://github.com/lvgl/lvgl/pull/6733>`__
- **chore: move the astyle repo to the lvgl organization** `6614 <https://github.com/lvgl/lvgl/pull/6614>`__
- **chore(docs): update Zephyr documentation** `6581 <https://github.com/lvgl/lvgl/pull/6581>`__
- **chore(display): prevent disp_refr from becoming a wild pointer** `6618 <https://github.com/lvgl/lvgl/pull/6618>`__
- **chore(demos/README.md): fix typo `LV_MEME_SIZE`** `6669 <https://github.com/lvgl/lvgl/pull/6669>`__
- **chore(tiny_ttf): fix docstring on each API** `6514 <https://github.com/lvgl/lvgl/pull/6514>`__
- **chore(text): update ISO8859-1 text functions' docstring** `6590 <https://github.com/lvgl/lvgl/pull/6590>`__
- **chore(deps): bump carlosperate/arm-none-eabi-gcc-action from 1.8.2 to 1.9.0** `6620 <https://github.com/lvgl/lvgl/pull/6620>`__
- **chore(deps): bump JamesIves/github-pages-deploy-action from 4.6.1 to 4.6.3** `6621 <https://github.com/lvgl/lvgl/pull/6621>`__
- **chore(api_map_v8): API for adapting imagebutton for version V8** `6641 <https://github.com/lvgl/lvgl/pull/6641>`__
- **refactor(API): don't expose private symbols in lvgl.h. phase-out "_lv*" names** `6068 <https://github.com/lvgl/lvgl/pull/6068>`__
- **chore(tests): remove vg_lite L8 render reference images** `6606 <https://github.com/lvgl/lvgl/pull/6606>`__
- **chore: make lv_utils as public and align function prototype with stdlib** `6473 <https://github.com/lvgl/lvgl/pull/6473>`__
- **refactor(tiny_fft): refactor tiny_ttf cache with updated improvements** `6441 <https://github.com/lvgl/lvgl/pull/6441>`__
- **chore(sdl): fix warning** `6483 <https://github.com/lvgl/lvgl/pull/6483>`__
- **chore(rt-thread): revert macro back to PKG_USING_LVGL_SQUARELINE** `6481 <https://github.com/lvgl/lvgl/pull/6481>`__
- **chore(vg_lite): remove YUV format processing of vg-lite decoder** `6461 <https://github.com/lvgl/lvgl/pull/6461>`__
- **chore(logo): update lvgl logo** `6416 <https://github.com/lvgl/lvgl/pull/6416>`__
- **chore(examples): fixes a typo in the Arduino example** `6464 <https://github.com/lvgl/lvgl/pull/6464>`__
- **chore(tests): add missing test images** `6452 <https://github.com/lvgl/lvgl/pull/6452>`__
- **chore(examples): remove extra spaces** `6435 <https://github.com/lvgl/lvgl/pull/6435>`__
- **chore(scale): fix compile warning** `6445 <https://github.com/lvgl/lvgl/pull/6445>`__
- **chore: fix spelling** `6401 <https://github.com/lvgl/lvgl/pull/6401>`__
- **chore(lvgl_private): remove unnecessary private header file includes** `6418 <https://github.com/lvgl/lvgl/pull/6418>`__
- **chore(draw_vector): complete printing information** `6399 <https://github.com/lvgl/lvgl/pull/6399>`__
- **refact(draw_vector): standardized draw gradient API** `6344 <https://github.com/lvgl/lvgl/pull/6344>`__
- **chore(test): fix render test typo** `6370 <https://github.com/lvgl/lvgl/pull/6370>`__
- **chore(widgets): fix typo** `6369 <https://github.com/lvgl/lvgl/pull/6369>`__
- **chore(decoder): use trace level of log** `6361 <https://github.com/lvgl/lvgl/pull/6361>`__
- **chore(test): add missing vg-lite ref images** `6363 <https://github.com/lvgl/lvgl/pull/6363>`__
- **chore(obj_pos): fix typo** `6336 <https://github.com/lvgl/lvgl/pull/6336>`__
- **chore(deps): bump JamesIves/github-pages-deploy-action from 4.6.0 to 4.6.1** `6323 <https://github.com/lvgl/lvgl/pull/6323>`__
- **chore(deps): bump carlosperate/arm-none-eabi-gcc-action from 1.8.1 to 1.8.2** `6322 <https://github.com/lvgl/lvgl/pull/6322>`__
- **chore(example): fix build break caused by undefined LV_USE_DRAW_SW_COMPLEX_GRADIENTS** `6286 <https://github.com/lvgl/lvgl/pull/6286>`__
- **chore(log): remove \n from log message** `6276 <https://github.com/lvgl/lvgl/pull/6276>`__
- **Revert "feat(pxp): add zephyr support"** `6261 <https://github.com/lvgl/lvgl/pull/6261>`__
- **Add LVGL9 demos to esp.cmake** `6220 <https://github.com/lvgl/lvgl/pull/6220>`__
- **chore(group): remove useless code** `6124 <https://github.com/lvgl/lvgl/pull/6124>`__
- **refactor(image_decoder): extract cache operation to image decoder from decoder instance** `6155 <https://github.com/lvgl/lvgl/pull/6155>`__
- **chore(image_decoder): fix compile error when compiling testcase** `6223 <https://github.com/lvgl/lvgl/pull/6223>`__
- **chore: fix compile error** `6224 <https://github.com/lvgl/lvgl/pull/6224>`__
- **refactor(nuttx_image_cache): remove LV_CACHE_DEF_SIZE dependency** `6178 <https://github.com/lvgl/lvgl/pull/6178>`__
- **chore(deps): bump JamesIves/github-pages-deploy-action from 4.5.0 to 4.6.0** `6164 <https://github.com/lvgl/lvgl/pull/6164>`__
- **chore(deps): bump uraimo/run-on-arch-action from 2.7.1 to 2.7.2** `6165 <https://github.com/lvgl/lvgl/pull/6165>`__
- **chore(nuttx_image_cache): optimize inlucde** `6177 <https://github.com/lvgl/lvgl/pull/6177>`__
- **chore(draw_sw): optimize lv_draw_sw_rotate judgment logic** `6148 <https://github.com/lvgl/lvgl/pull/6148>`__
- **chore(cmsis-pack): monthly catch-up** `6129 <https://github.com/lvgl/lvgl/pull/6129>`__
- **chore(style): use lv_part_t type where suitable** `6075 <https://github.com/lvgl/lvgl/pull/6075>`__
- **chore(decoder): update comments** `6072 <https://github.com/lvgl/lvgl/pull/6072>`__
- **chore(lodepng): fix typo** `6077 <https://github.com/lvgl/lvgl/pull/6077>`__
- **chore: update some code and docs to use v9 API** `5876 <https://github.com/lvgl/lvgl/pull/5876>`__
- **chore(text): move "_" funcs to private h** `5913 <https://github.com/lvgl/lvgl/pull/5913>`__
- **chore(vg_lite_tvg): fix build warnings** `5984 <https://github.com/lvgl/lvgl/pull/5984>`__
- **chore(kconfig): move use_vector to correct place** `5995 <https://github.com/lvgl/lvgl/pull/5995>`__
- **chore(vg_lite): fix typo** `5993 <https://github.com/lvgl/lvgl/pull/5993>`__
- **chore(vg_lite): remove duplicate parameter judgments** `5960 <https://github.com/lvgl/lvgl/pull/5960>`__
- **chore(PR): modify the astyle version description in PR** `5963 <https://github.com/lvgl/lvgl/pull/5963>`__
- **chore(cmsis-pack): minor update** `5948 <https://github.com/lvgl/lvgl/pull/5948>`__
- **chore(observer): rename lv_button_bind_checked to lv_obj_bind_checked** `5944 <https://github.com/lvgl/lvgl/pull/5944>`__
- **refactor(font): refactor font glyph data acquire method** `5884 <https://github.com/lvgl/lvgl/pull/5884>`__
- **Optimize lv_color_16_16_mix() when c1 == c2** `5929 <https://github.com/lvgl/lvgl/pull/5929>`__
- **chore(cache): adjust includes** `5921 <https://github.com/lvgl/lvgl/pull/5921>`__
- **refacter(conf): use defines for standard includes** `5767 <https://github.com/lvgl/lvgl/pull/5767>`__
- **refactor(image_decoder): refactor image decoder and image cache** `5890 <https://github.com/lvgl/lvgl/pull/5890>`__
- **refactor(draw_buff): separate all image cache related draw buff into image_cache_draw_buff** `417d78b <https://github.com/lvgl/lvgl/commit/417d78bead6735b54827b5f5994685994266ef7e>`__
- **refactor(image_decoder): refactor get_info so that it can pass params via dsc** `001b483 <https://github.com/lvgl/lvgl/commit/001b4835ba2e7a7c41fa6266a73122af14b217db>`__
- **refactor(display_rotate_area): use a copy instead of const casting** `20bbe4a <https://github.com/lvgl/lvgl/commit/20bbe4a8ac33b2c8d8f44015aa1838c9e17f40cb>`__
- **chore(Makefile): remove useless macro LV_USE_DEV_VERSION** `9b3e8ee <https://github.com/lvgl/lvgl/commit/9b3e8eec6da492026ed4557f5876252079c7eaa0>`__

View File

@@ -33,11 +33,11 @@ If you would rather try LVGL on your own project follow these steps:
``lvgl`` folder, change the first ``#if 0`` to ``1`` to enable the
file's content and set the :c:macro:`LV_COLOR_DEPTH` defines.
- Include ``lvgl/lvgl.h`` in files where you need to use LVGL related functions.
- Call :cpp:func:`lv_init`
- Call :cpp:expr:`lv_tick_inc(x)` every ``x`` milliseconds in a Timer or Task
(``x`` should be between 1 and 10). It is required for the internal
timing of LVGL. Alternatively, register a ``tick_get_cb`` with
:cpp:func:`lv_tick_set_cb` so that LVGL can retrieve the current time directly.
- Call :cpp:func:`lv_init`
- Create a display.
.. code:: c
@@ -51,8 +51,10 @@ If you would rather try LVGL on your own project follow these steps:
.. code:: c
static lv_color_t buf1[MY_DISP_HOR_RES * MY_DISP_VER_RES / 10]; /*Declare a buffer for 1/10 screen size*/
lv_display_set_buffers(display, buf1, NULL, sizeof(buf1)); /*Initialize the display buffer.*/
/*Declare a buffer for 1/10 screen size*/
#define BYTE_PER_PIXEL (LV_COLOR_FORMAT_GET_SIZE(LV_COLOR_FORMAT_RGB565)) /*will be 2 for RGB565 */
static uint8_t buf1[MY_DISP_HOR_RES * MY_DISP_VER_RES / 10 * BYTE_PER_PIXEL];
lv_display_set_buffers(display, buf1, NULL, sizeof(buf1), LV_DISPLAY_RENDER_MODE_PARTIAL); /*Initialize the display buffer.*/
- Implement and register a function which can copy the rendered image
to an area of your display:
@@ -227,7 +229,7 @@ LVGL objects can be in a combination of the following states:
- :cpp:enumerator:`LV_STATE_FOCUSED`: Focused via keypad or encoder or clicked via touchpad/mouse
- :cpp:enumerator:`LV_STATE_FOCUS_KEY`: Focused via keypad or encoder but not via touchpad/mouse
- :cpp:enumerator:`LV_STATE_EDITED`: Edit by an encoder
- :cpp:enumerator:`LV_STATE_HOVERED`: Hovered by mouse (not supported now)
- :cpp:enumerator:`LV_STATE_HOVERED`: Hovered by mouse
- :cpp:enumerator:`LV_STATE_PRESSED`: Being pressed
- :cpp:enumerator:`LV_STATE_SCROLLED`: Being scrolled
- :cpp:enumerator:`LV_STATE_DISABLED`: Disabled

View File

@@ -0,0 +1,57 @@
.. _arm:
===
Arm
===
Arm is a leading semiconductor and software design company, renowned for creating the Cortex-M microcontroller (MCU) cores and Cortex-A/R (MPU) processor cores, which are integral to a wide range of devices. These cores are at the heart of many embedded systems, powering chips from industry giants such as STMicroelectronics, NXP, and Renesas. Arm's energy-efficient designs are used in billions of devices worldwide, from microcontrollers to smartphones and servers. By licensing their processor designs, Arm enables a broad ecosystem of partners to develop customized solutions optimized for performance, power, and size. Arm's architecture is highly compatible with various operating systems and software libraries, including LVGL, making it a versatile choice for developers creating efficient, high-performance graphical user interfaces.
Compile LVGL for Arm
--------------------
No specific action is required. Any compiler that supports the target Arm architecture can be used to compile LVGL's source code, including GCC, LLVM, and AC6.
It is also possible to cross-compile LVGL for an MPU (instead of compiling it on the target hardware) or create a shared library. For more information, check out :ref:`build_cmake`.
Getting Started with AC6
~~~~~~~~~~~~~~~~~~~~~~~~
Since AC6 is a proprietary toolchain, it contains many specific optimizations, so you can expect the best performance when using it.
AC6 is not free, but it offers a community license that can be activated as follows:
1. Download and install the AC6 compiler from `Arm's website <https://developer.arm.com/Tools%20and%20Software/Arm%20Compiler%20for%20Embedded>`__.
2. To register a community license, go to the ``bin`` folder of the compiler and, in a terminal, run ``armlm.exe activate -server https://mdk-preview.keil.arm.com -product KEMDK-COM0`` (On Linux, use ``./armlm``).
IDE Support
-----------
There are no limitations on the supported IDEs. LVGL works in various vendors' IDEs, including Arm's Keil MDK, IAR, Renesas's e2 studio, NXP's MCUXpresso, ST's CubeIDE, as well as custom make or CMake projects.
Arm2D and the Helium instruction set
------------------------------------
Arm Cortex-M55 and Cortex-M85 have the `SIMD Helium <https://www.arm.com/technologies/helium>`__ instruction set.
Among many others, this can effectively speed up UI rendering. :ref:`Arm2D <arm2d>` is a library maintained by Arm that leverages the Helium instruction set.
Note that GCC has some known issues with Helium intrinsics. It is recommended to use AC6 or LLVM when dealing with Helium code.
To add Arm2D to your project, follow these steps:
1. To utilize its power, ensure that ``mcpu`` is set to ``cortex-m85``, ``cortex-m55``, or ``cortex-m52`` and add the ``-fvectorize`` flag. To test without SIMD, use e.g. ``cortex-m85+nomve``.
2. Arm2D can be downloaded from `https://github.com/ARM-software/Arm-2D <https://github.com/ARM-software/Arm-2D>`__. Consider using the ``developing`` branch, which contains the latest updates.
3. Add ``Arm-2D/Library/Include`` to the include paths.
4. Copy ``Arm-2D/Library/Include/template/arm_2d_cfg.h`` to any location you prefer to provide the default configuration for Arm2D. Ensure that the folder containing ``arm_2d_cfg.h`` is added to the include path.
5. The Arm2D repository contains several examples and templates; however, ensure that only ``Arm-2D/Library/Source`` is compiled.
6. The CMSIS DSP library also needs to be added to the project. You can use CMSIS-PACKS or add it manually.
7. For better performance, enable ``LTO`` (Link Time Optimization) and use ``-Omax`` or ``-Ofast``.
8. Arm2D tries to read/write multiple data with a single instruction. Therefore, it's important to use the fastest memory (e.g., ``BSS`` or ``TCM``) for LVGL's buffer to avoid memory bandwidth bottlenecks.
9. Enable ``LV_USE_DRAW_ARM2D_SYNC 1`` in ``lv_conf.h``.
Neon Acceleration
-----------------
Several Cortex-A microprocessors support the `Neon SIMD <https://www.arm.com/technologies/neon>`__ instruction set. LVGL has built-in support to improve the performance of software rendering by utilizing Neon instructions. To enable Neon acceleration, set ``LV_USE_DRAW_SW_ASM`` to ``LV_DRAW_SW_ASM_NEON`` in ``lv_conf.h``.

View File

@@ -1,85 +1,197 @@
=============================
Espressif (ESP32 chip series)
Espressif (ESP32 Chip Series)
=============================
LVGL can be used and configured as a standard `ESP-IDF <https://github.com/espressif/esp-idf>`__ component.
LVGL can be used and configured as standard `ESP-IDF <https://github.com/espressif/esp-idf>`__ component.
More information about ESP-IDF build system can be found `here <https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system.html>`__.
If you are new to ESP-IDF, follow the instructions in the `ESP-IDF Programming guide <https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/index.html>`__ to install and set up ESP-IDF on your machine.
LVGL demo project for ESP32
LVGL Demo Projects for ESP32
---------------------------
We've created `lv_port_esp32 <https://github.com/lvgl/lv_port_esp32>`__,
a project using ESP-IDF and LVGL to show one of the demos from
`demos <https://github.com/lvgl/lvgl/demos>`__. You can configure the
project to use one of the many supported display controllers and targets
(chips).
For a quick start with LVGL and ESP32, the following pre-configured demo projects are available for specific development boards:
See `lvgl_esp32_drivers <https://github.com/lvgl/lvgl_esp32_drivers>`__
repository for a complete list of supported display and indev (touch)
controllers and targets.
- `ESP-BOX-3 <https://github.com/lvgl/lv_port_espressif_esp-box-3>`__
- `ESP32-S3-LCD-EV-BOARD <https://github.com/lvgl/lv_port_espressif_esp32-s3-lcd-ev-board>`__
- `M5Stack-CoreS3 <https://github.com/lvgl/lv_port_espressif_M5Stack_CoreS3>`__
Refer to the README.md files in these repositories for build and flash instructions.
These demo projects use Espressif's Board Support Packages (BSPs). Additional BSPs and examples are available in the `esp-bsp <https://github.com/espressif/esp-bsp>`__ repository.
Using LVGL in your ESP-IDF project
Using LVGL in Your ESP-IDF Project
----------------------------------
Prerequisites
~~~~~~~~~~~~~
The simplest way to integrate LVGL into your ESP-IDF project is via the `esp_lvgl_port <https://components.espressif.com/components/espressif/esp_lvgl_port>`__ component. This component, used in the demo projects mentioned above, provides helper functions for easy installation of LVGL and display drivers. Moreover, it can add support for touch, rotary encoders, button or USB HID inputs. It simplifies power savings, screen rotation and other platform specific nuances.
- ESP-IDF v4.1 and above
- ESP evaluation board with a display
The esp_lvgl_port supports LVGL versions 8 and 9 and is compatible with ESP-IDF v4.4 and above. To add it to your project, use the following command:
.. code:: sh
idf.py add-dependency "espressif/esp_lvgl_port^2.3.0"
By default, esp_lvgl_port depends on the latest stable version of LVGL, so no additional steps are needed for new projects. If a specific LVGL version is required, specify this in your project to avoid automatic updates. LVGL can also be used without esp_lvgl_port, as described below.
Obtaining LVGL
~~~~~~~~~~~~~~
**Option 1:** git submodule
LVGL is distributed through `ESP Registry <https://components.espressif.com/>`__, where all LVGL releases are uploaded.
In case you do not want to use esp_lvgl_port, you can add `LVGL component <https://components.espressif.com/component/lvgl/lvgl>`__ into your project with following command:
Simply clone LVGL into your ``project_root/components`` directory and it
will be automatically integrated into the project. If the project is a
git repository you can include LVGL as a git submodule:
.. code:: sh
idf.py add-dependency lvgl/lvgl^9.*
Adjust the ``^9.*`` part to match your LVGL version requirement. More information on version specifications can be found in the `IDF Component Manager documentation <https://docs.espressif.com/projects/idf-component-manager/en/latest/reference/versioning.html#range-specifications>`__. During the next build, the LVGL component will be fetched from the component registry and added to the project.
**Advanced usage: Use LVGL as local component**
For LVGL development and testing, it may be useful to use LVGL as a local component instead of from the ESP Registry, which offers only released versions and does not allow local modifications. To do this, clone LVGL to your project with the following command:
.. code:: sh
git submodule add https://github.com/lvgl/lvgl.git components/lvgl
The above command will clone LVGL's main repository into the
``components/lvgl`` directory. LVGL includes a ``CMakeLists.txt`` file
that sets some configuration options so you can use LVGL right away.
**Option 2:** IDF Component Manager
LVGL is also distributed through `IDF Component Manager <https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-component-manager.html>`__.
It allows users to seamlessly integrate `LVGL component <https://components.espressif.com/component/lvgl/lvgl>`__ into
their project with following command:
.. code:: sh
idf.py add-dependency lvgl/lvgl>=8.*
During next project build, LVGL component will be fetched from the
component registry and added to project build.
.. note::
All components from ``${project_dir}/components`` are automatically added to build.
Configuration
~~~~~~~~~~~~~
When you are ready to configure LVGL, launch the configuration menu with
``idf.py menuconfig`` in your project root directory, go to
``Component config`` and then ``LVGL configuration``.
To configure LVGL, launch the configuration menu with ``idf.py menuconfig`` in your project root directory. Navigate to ``Component config`` and then ``LVGL configuration``.
Using lvgl_esp32_drivers in ESP-IDF project
-------------------------------------------
Support for Display and Touch Drivers
-------------------------------------
You can also add ``lvgl_esp32_drivers`` as a "component". This component
should be located inside a directory named "components" in your project
root directory.
For successful LVGL project you will need a display driver and optionally a touch driver. Espressif provides these drivers that are built on its `esp_lcd <https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/lcd/index.html>`__ component.
When your project is a git repository you can include
``lvgl_esp32_drivers`` as a git submodule:
- esp_lcd natively supports for some `basic displays <https://github.com/espressif/esp-idf/tree/master/components/esp_lcd/src>`__
- Other displays are maintained in `esp-bsp repository <https://github.com/espressif/esp-bsp/tree/master/components/lcd>`__ and are uploaded to ESP Registry
- Touch drivers are maintained in `esp-bsp repository <https://github.com/espressif/esp-bsp/tree/master/components/lcd_touch>`__ and are uploaded to ESP Registry
These components share a common public API, making it easy to migrate your projects across different display and touch drivers.
To add a display or touch driver to your project, use a command like:
.. code:: sh
idf.py add-dependency "espressif/esp_lcd_gc9a01^2.0.0"
git submodule add https://github.com/lvgl/lvgl_esp32_drivers.git components/lvgl_esp32_drivers
Using the File System under ESP-IDF
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ESP-IDF uses the standard C functions (``fopen``, ``fread``) in all storage related APIs.
This allows seamless interoperability with LVGL when enabling the :c:macro:`LV_USE_FS_STDIO` configuration.
The process is described in details below, using ``SPIFFS`` as demonstration.
- **Decide what storage system you want to use**
ESP-IDF has many, ready-to-use examples like
`SPIFFS <https://github.com/espressif/esp-idf/tree/master/examples/storage/spiffsgen>`__
,
`SD Card <https://github.com/espressif/esp-idf/tree/master/examples/storage/sd_card/sdspi>`__
and
`LittleFS <https://github.com/espressif/esp-idf/tree/master/examples/storage/littlefs>`__
.
- **Re-configure your own project**
The example project should be examined for details, but in general the changes involve:
- Enabling LVGL's STDIO file system in the configuration
You can use ``menuconfig``:
- ``Component config → LVGL configuration → 3rd Party Libraries``: enable ``File system on top of stdio API``
- Then select ``Set an upper cased letter on which the drive will accessible`` and set it to ``65`` (ASCII **A**)
- You can also set ``Default driver letter`` to 65 to skip the prefix in file paths.
- Modifying the partition table
The exact configuration depends on your flash size and existing partitions,
but the new final result should look something like this:
.. code:: csv
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 1400k,
storage, data, spiffs, , 400k,
.. note::
If you are not using a custom ``parition.csv`` yet, it can be added
via ``menuconfig`` (``Partition Table → Partition Table → Custom partition table CSV``).
- Apply changes to the build system
Some ESP file systems provide automatic generation from a host folder using CMake. The proper line(s) must be copied to ``main/CMakeLists.txt``
.. note::
``LittleFS`` has extra dependencies that should be added to ``main/idf_component.yml``
- **Prepare the image files**
LVGL's ``LVGLImage.py`` Python tool can be used to convert images to binary pixel map files.
It supports various formats and compression.
Meanwhile 3rd party libraries
(like :ref:`LodePNG<lodepng>` and :ref:`Tiny JPEG<tjpgd>`)
allow using image files without conversion.
After preparing the files, they should be moved to the target device:
- If properly activated a **SPIFFS** file system based on the ``spiffs_image`` folder should be automatically generated and later flashed to the target
- Similar mechanism for **LittleFS** uses the ``flash_data`` folder, but it's only available for Linux hosts
- For the **SD Card**, a traditional file browser can be used
- **Invoke proper API calls in the application code**
The core functionality requires only a few lines. The following example draws the image as well.
.. code:: c
#include "esp_spiffs.h"
void lv_example_image_from_esp_fs(void) {
esp_vfs_spiffs_conf_t conf = {
.base_path = "/spiffs",
.partition_label = NULL,
.max_files = 5,
.format_if_mount_failed = false
};
esp_err_t ret = esp_vfs_spiffs_register(&conf);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to register SPIFF filesystem");
return;
}
lv_obj_t * obj = lv_image_create(lv_screen_active());
lv_image_set_src(obj, "A:/spiffs/logo.bin");
lv_obj_center(obj);
}
- **Build and flash**
After calling ``idf.py build flash`` the picture should be displayed on the screen.
.. note::
Changes made by ``menuconfig`` are not being tracked in the repository if the ``sdkconfig`` file is added to ``.gitignore``, which is the default for many ESP-IDF projects.
To make your configuration permanent, add the following lines to ``sdkconfig.defaults``:
.. code:: c
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_LV_USE_FS_STDIO=y
CONFIG_LV_FS_STDIO_LETTER=65
CONFIG_LV_LV_FS_DEFAULT_DRIVE_LETTER=65

View File

@@ -71,11 +71,11 @@ handle the supported draw tasks.
.. code:: c
#if LV_USE_OS
#if LV_USE_PXP_DRAW_THREAD
lv_thread_init(&draw_pxp_unit->thread, LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit);
#endif
If `LV_USE_OS` is not defined, then no additional draw thread will be created
If `LV_USE_PXP_DRAW_THREAD` is not defined, then no additional draw thread will be created
and the PXP drawing task will get executed on the same LVGL main thread.
`_pxp_evaluate()` will get called after each task is being created and will
@@ -218,7 +218,7 @@ and height, and command buffer size are in the SDK file "vglite_support.h".
.. code:: c
#if LV_USE_GPU_NXP_VG_LITE
#if LV_USE_DRAW_VGLITE
#include "vg_lite.h"
#include "vglite_support.h"
#endif
@@ -265,11 +265,11 @@ handle the supported draw tasks.
.. code:: c
#if LV_USE_OS
#if LV_USE_VGLITE_DRAW_THREAD
lv_thread_init(&draw_vglite_unit->thread, LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit);
#endif
If `LV_USE_OS` is not defined, then no additional draw thread will be created
If `LV_USE_VGLITE_DRAW_THREAD` is not defined, then no additional draw thread will be created
and the VGLite drawing task will get executed on the same LVGL main thread.
`_vglite_evaluate()` will get called after each task is being created and will

View File

@@ -150,7 +150,7 @@ Get started with the Renesas ecosystem
The compiler must be activated in e² studio:
- Go to go to ``Help`` -> ``Add Renesas Toolchains``
- Press the ``Add... `` button
- Press the ``Add...`` button
- Browse the installation folder of the toolchain
|

View File

@@ -36,8 +36,11 @@ the *main.c* file. \* Create some frame buffer(s) as global variables:
//Frame buffers
/*Static or global buffer(s). The second buffer is optional*/
static lv_color_t buf_1[BUFF_SIZE]; //TODO: Chose a buffer size. DISPLAY_WIDTH * 10 is one suggestion.
static lv_color_t buf_2[BUFF_SIZE];
//TODO: Adjust color format and choose buffer size. DISPLAY_WIDTH * 10 is one suggestion.
#define BYTE_PER_PIXEL (LV_COLOR_FORMAT_GET_SIZE(LV_COLOR_FORMAT_RGB565)) /*will be 2 for RGB565 */
#define BUFF_SIZE (DISPLAY_WIDTH * 10 * BYTE_PER_PIXEL)
static uint8_t buf_1[BUFF_SIZE];
static uint8_t buf_2[BUFF_SIZE];
- In your ``main()`` function, after initialising your CPU,
peripherals, and LCD panel, call :cpp:func:`lv_init` to initialise LVGL.
@@ -149,8 +152,11 @@ variables:
//Frame buffers
/*Static or global buffer(s). The second buffer is optional*/
static lv_color_t buf_1[BUFF_SIZE]; //TODO: Declare your own BUFF_SIZE appropriate to your system.
static lv_color_t buf_2[BUFF_SIZE];
#define BYTE_PER_PIXEL (LV_COLOR_FORMAT_GET_SIZE(LV_COLOR_FORMAT_RGB565)) /*will be 2 for RGB565 */
//TODO: Declare your own BUFF_SIZE appropriate to your system.
#define BUFF_SIZE (DISPLAY_WIDTH * 10 * BYTE_PER_PIXEL)
static uint8_t buf_1[BUFF_SIZE];
static uint8_t buf_2[BUFF_SIZE];
- In your ``main`` function, after your peripherals (SPI, GPIOs, LCD
etc) have been initialised, initialise LVGL using :cpp:func:`lv_init`,
@@ -163,6 +169,7 @@ variables:
lv_init();
lv_display_t *display = lv_display_create(WIDTH, HEIGHT); /*Create the display*/
lv_display_set_flush_cb(display, my_flush_cb); /*Set a flush callback to draw to the display*/
lv_display_set_buffers(disp, buf_1, buf_2, sizeof(buf_1), LV_DISPLAY_RENDER_MODE_PARTIAL); /*Set an initialized buffer*/
// Register the touch controller with LVGL - Not included here for brevity.

View File

@@ -138,8 +138,8 @@ Example
lv_display_set_rotation(my_disp, LV_DISPLAY_ROTATION_90);
/* Configure draw buffers, etc. */
lv_color_t * buf1 = NULL;
lv_color_t * buf2 = NULL;
uint8_t * buf1 = NULL;
uint8_t * buf2 = NULL;
uint32_t buf_size = LCD_H_RES * LCD_BUF_LINES * lv_color_format_get_size(lv_display_get_color_format(my_disp));

View File

@@ -11,3 +11,4 @@ Drivers
X11
windows
opengles
wayland

View File

@@ -26,8 +26,8 @@ Configure OpenGL driver
#define LV_USE_OPENGLES 1
Usage
-----
Basic usage
-----------
.. code:: c
@@ -35,31 +35,163 @@ Usage
#include "lvgl/examples/lv_examples.h"
#include "lvgl/demos/lv_demos.h"
#define WIDTH 640
#define HEIGHT 480
int main()
{
/* initialize lvgl */
lv_init();
lv_display_t * disp = lv_glfw_window_create(480, 272);
/* create a window and initialize OpenGL */
lv_glfw_window_t * window = lv_glfw_window_create(WIDTH, HEIGHT, true);
lv_indev_t * mouse = lv_glfw_mouse_create();
lv_indev_set_group(mouse, lv_group_get_default());
lv_indev_set_display(mouse, disp);
/* create a display that flushes to a texture */
lv_display_t * texture = lv_opengles_texture_create(WIDTH, HEIGHT);
lv_display_set_default(texture);
lv_display_set_default(disp);
/* add the texture to the window */
unsigned int texture_id = lv_opengles_texture_get_texture_id(texture);
lv_glfw_texture_t * window_texture = lv_glfw_window_add_texture(window, texture_id, WIDTH, HEIGHT);
LV_IMAGE_DECLARE(mouse_cursor_icon); /*Declare the image file.*/
lv_obj_t * cursor_obj;
cursor_obj = lv_image_create(lv_screen_active()); /*Create an image object for the cursor */
lv_image_set_src(cursor_obj, &mouse_cursor_icon); /*Set the image source*/
lv_indev_set_cursor(mouse, cursor_obj); /*Connect the image object to the driver*/
/* get the mouse indev of the window texture */
lv_indev_t * mouse = lv_glfw_texture_get_mouse_indev(window_texture);
/* add a cursor to the mouse indev */
LV_IMAGE_DECLARE(mouse_cursor_icon);
lv_obj_t * cursor_obj = lv_image_create(lv_screen_active());
lv_image_set_src(cursor_obj, &mouse_cursor_icon);
lv_indev_set_cursor(mouse, cursor_obj);
/* create objects on the screen */
lv_demo_widgets();
while (1)
{
uint32_t time_till_next = lv_timer_handler();
lv_delay_ms(time_till_next);
uint32_t time_until_next = lv_timer_handler();
lv_delay_ms(time_until_next);
}
return 0;
}
Advanced usage
--------------
The OpenGL driver can draw textures from the user. A third-party library could be
used to add content to a texture and the driver will draw the texture in the window.
.. code:: c
#include "lvgl/lvgl.h"
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#define WIDTH 640
#define HEIGHT 480
void custom_texture_example(void)
{
/*****************
* MAIN WINDOW
*****************/
/* create a window and initialize OpenGL */
/* multiple windows can be created */
lv_glfw_window_t * window = lv_glfw_window_create(WIDTH, HEIGHT, true);
/****************************
* OPTIONAL MAIN TEXTURE
****************************/
/* create a main display that flushes to a texture */
lv_display_t * main_texture = lv_opengles_texture_create(WIDTH, HEIGHT);
lv_display_set_default(main_texture);
/* add the main texture to the window */
unsigned int main_texture_id = lv_opengles_texture_get_texture_id(main_texture);
lv_glfw_texture_t * window_main_texture = lv_glfw_window_add_texture(window, main_texture_id, WIDTH, HEIGHT);
/* get the mouse indev of this main texture */
lv_indev_t * main_texture_mouse = lv_glfw_texture_get_mouse_indev(window_main_texture);
/* add a cursor to the mouse indev */
LV_IMAGE_DECLARE(mouse_cursor_icon);
lv_obj_t * cursor_obj = lv_image_create(lv_screen_active());
lv_image_set_src(cursor_obj, &mouse_cursor_icon);
lv_indev_set_cursor(main_texture_mouse, cursor_obj);
/* create objects on the screen of the main texture */
lv_demo_widgets();
/**********************
* ANOTHER TEXTURE
**********************/
/* create a sub display that flushes to a texture */
const int32_t sub_texture_w = 300;
const int32_t sub_texture_h = 300;
lv_display_t * sub_texture = lv_opengles_texture_create(sub_texture_w, sub_texture_h);
/* add the sub texture to the window */
unsigned int sub_texture_id = lv_opengles_texture_get_texture_id(sub_texture);
lv_glfw_texture_t * window_sub_texture = lv_glfw_window_add_texture(window, sub_texture_id, sub_texture_w, sub_texture_h);
/* create objects on the screen of the sub texture */
lv_display_set_default(sub_texture);
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_black(), 0);
lv_example_anim_2();
lv_display_set_default(main_texture);
/* position the sub texture within the window */
lv_glfw_texture_set_x(window_sub_texture, 250);
lv_glfw_texture_set_y(window_sub_texture, 150);
/* optionally change the opacity of the sub texture */
lv_glfw_texture_set_opa(window_sub_texture, LV_OPA_80);
/*********************************************
* USE AN EXTERNAL OPENGL TEXTURE IN LVGL
*********************************************/
unsigned int external_texture_id;
glGenTextures(1, &external_texture_id);
glBindTexture(GL_TEXTURE_2D, external_texture_id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
LV_IMAGE_DECLARE(img_cogwheel_argb);
#if LV_COLOR_DEPTH == 8
const int texture_format = GL_R8;
#elif LV_COLOR_DEPTH == 16
const int texture_format = GL_RGB565;
#elif LV_COLOR_DEPTH == 24
const int texture_format = GL_RGB;
#elif LV_COLOR_DEPTH == 32
const int texture_format = GL_RGBA;
#else
#error("Unsupported color format")
#endif
glTexImage2D(GL_TEXTURE_2D, 0, texture_format, img_cogwheel_argb.header.w, img_cogwheel_argb.header.h, 0, GL_BGRA, GL_UNSIGNED_BYTE, img_cogwheel_argb.data);
glGenerateMipmap(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
/* add the external texture to the window */
lv_glfw_texture_t * window_external_texture = lv_glfw_window_add_texture(window, external_texture_id, img_cogwheel_argb.header.w, img_cogwheel_argb.header.h);
/* set the position and opacity of the external texture within the window */
lv_glfw_texture_set_x(window_external_texture, 20);
lv_glfw_texture_set_y(window_external_texture, 20);
lv_glfw_texture_set_opa(window_external_texture, LV_OPA_70);
/*********************************************
* USE AN LVGL TEXTURE IN ANOTHER LIBRARY
*********************************************/
lv_refr_now(sub_texture);
/* the texture is drawn on by LVGL and can be used by anything that uses OpenGL textures */
third_party_lib_use_texture(sub_texture_id);
}

View File

@@ -0,0 +1,180 @@
=============================
Wayland Display/Inputs driver
=============================
Overview
--------
| The **Wayland** `driver <https://github.com/lvgl/lvgl/tree/master/src/drivers/wayland>`__ offers support for simulating the LVGL display and keyboard/mouse inputs in a desktop window.
| It is an alternative to **X11** or **SDL2**
The main purpose for this driver is for testing/debugging the LVGL application, it can also be used to run applications in 'kiosk mode'
Dependencies
------------
The wayland driver requires some dependencies.
On Ubuntu
.. code:: bash
sudo apt-get install libwayland-dev libxkbcommon-dev libwayland-bin wayland-protocols
On Fedora
.. code:: bash
sudo dnf install wayland-devel libxkbcommon-devel wayland-utils wayland-protocols-devel
Configuring the wayland driver
------------------------------
1. Enable the wayland driver in ``lv_conf.h``
.. code:: c
#define LV_USE_WAYLAND 1
2. Optional configuration options:
- Enable window decorations, only required on GNOME because out of all the available wayland compositors
**only** Mutter/GNOME enforces the use of client side decorations
.. code:: c
#define LV_WAYLAND_WINDOW_DECORATIONS 1
- Enable support for the deprecated 'wl_shell', Only useful when the BSP on the target has weston ``9.x``
.. code:: c
#define LV_WAYLAND_WL_SHELL 1
Example
-------
An example simulator is available in this `repo <https://github.com/lvgl/lv_port_linux/>`__
Usage
-----
#. In ``main.c`` ``#incude "lv_drivers/wayland/wayland.h"``
#. Enable the Wayland driver in ``lv_conf.h`` with ``LV_USE_WAYLAND 1``
#. ``LV_COLOR_DEPTH`` should be set either to ``32`` or ``16`` in ``lv_conf.h``
#. Add a display using ``lv_wayland_window_create()``,
possibly with a close callback to track the status of each display:
.. code:: c
#define H_RES (800)
#define V_RES (480)
/* Create a display */
lv_disp_t * disp = lv_wayland_create_window(H_RES, V_RES, "Window Title", close_cb);
As part of the above call, the Wayland driver will register four input devices
for each display:
* a KEYPAD connected to Wayland keyboard events
* a POINTER connected to Wayland touch events
* a POINTER connected to Wayland pointer events
* an ENCODER connected to Wayland pointer axis events
Handles for input devices of each display can be obtained using
``lv_wayland_get_indev_keyboard()``, ``lv_wayland_get_indev_touchscreen()``,
``lv_wayland_get_indev_pointer()`` and ``lv_wayland_get_indev_pointeraxis()`` respectively.
Fullscreen mode
^^^^^^^^^^^^^^^
To programmatically fullscreen the window,
use the ``lv_wayland_window_set_fullscreen()`` function respectively with ``true``
or ``false`` for the ``fullscreen`` argument.
Maximized mode
^^^^^^^^^^^^^^
To programmatically maximize the window,
use the ``lv_wayland_window_set_maximized()`` function respectively with ``true``
or ``false`` for the ``maximized`` argument.
Custom timer handler
^^^^^^^^^^^^^^^^^^^^
Always call ``lv_wayland_timer_handler()`` in your timer loop instead of the regular ``lv_timer_handler()``.
**Note:** ``lv_wayland_timer_handler()`` internally calls ``lv_timer_handler()``
This allows the wayland client to work on well on weston, resizing shared memory buffers during
a commit does not work well on weston.
Wrapping the call to ``lv_timer_hander()`` is a necessity to have more control over
when the LVGL flush callback is called.
The custom timer handler returns ``false`` if the frame from previous cycle is not rendered.
When this happens, it usually means that the application is minimized or hidden behind another window.
Causing the driver to wait until the arrival of any message on the wayland socket, the process is in interruptible sleep.
Building the wayland driver
---------------------------
An example simulator is available in this `repo <https://github.com/lvgl/lv_port_linux/>`__
If there is a need to use driver with another build system. The source and header files for the XDG shell
must be generated from the definitions for the XDG shell protocol.
In the example Cmake is used to perform the operation by invoking the ``wayland-scanner`` utility
To achieve this manually,
Make sure the dependencies listed at the start of the article are installed.
The wayland protocol is defined using XML files which are present in ``/usr/share/wayland-protocols``
To generate the required files run the following commands:
.. code-block:: sh
wayland-scanner client-header </usr/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml > wayland_xdg_shell.h
wayland-scanner private-code </usr/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml > wayland_xdg_shell.c
The resulting files can then be integrated into the project, it's better to re-run ``wayland-scanner`` on
each build to ensure that the correct versions are generated, they must match the version of the ``wayland-client``
dynamically linked library installed on the system.
Current state and objectives
----------------------------
* Add direct rendering mode
* Refactor the shell integrations to avoid excessive conditional compilation
* Technically, the wayland driver allows to create multiple windows - but this feature is experimental.
* Eventually add enhanced support for XDG shell to allow the creation of desktop apps on Unix-like platforms,
similar to what the win32 driver does.
* Add a support for Mesa, currently wl_shm is used and it's not the most effective technique.
Bug reports
-----------
The wayland driver is currently under construction, bug reports, contributions and feedback is always welcome.
It is however important to create detailed issues when a problem is encountered, logs and screenshots of the problem are of great help.
Please enable ``LV_USE_LOG`` and launch the simulator executable like so
.. code::
WAYLAND_DEBUG=1 ./path/to/simulator_executable > /tmp/debug 2>&1
This will create a log file called ``debug`` in the ``/tmp`` directory, copy-paste the content of the file in the github issue.
The log file contains LVGL logs and the wayland messages.
Be sure to replicate the problem quickly otherwise the logs become too big

View File

@@ -16,7 +16,7 @@ Using the simulator on a PC has the following advantages:
- Easy Validation: The simulator is also very useful to report bugs because it
provides a common platform for every user.
- Better developer experience: On PC Debuggers are usually faster and better, you can log to files,
add a lot of ``printf``s, do profiling, and so on.
add a lot of ``printf``-s, do profiling, and so on.
Select an IDE

View File

@@ -10,3 +10,4 @@
zephyr
px5
mqx
qnx

150
docs/integration/os/qnx.rst Normal file
View File

@@ -0,0 +1,150 @@
===
QNX
===
What is QNX?
------------
QNX is a commercial operating system first released in 1980. The operating
system is based on a micro-kernel design, with the file system(s), network
stack, and various other drivers each running in its own process with a separate
address space.
See www.qnx.com for more details.
Highlight of QNX
~~~~~~~~~~~~~~~~
- 64-bit only, runs on x86_64 and ARMv8
- Requires an MMU as the design mandates separation among processes
- Support for thousands of processes and millions of threads
- Up to 64 cores, up to 16TB of RAM
- Virtualization support (as host and guest)
- Full POSIX compatibility
- Safety certification to various automotive, industrial and medical standards
How to run LVGL on QNX?
-----------------------
There are two ways to use LVGL in your QNX project. The first is similar to how
LVGL is used on other systems. The second is to build LVGL as either a shared or
a static library.
Include LVGL in Your Project
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Follow the generic instructions for getting started with LVGL. After copying
`lv_conf_template.h` to `lv_conf.h` make the following changes to the latter:
1. Enable QNX support:
.. code::
#define LV_USE_QNX 1
2. Set colour depth to 32:
.. code::
#define LV_COLOR_DEPTH 32
3. (Optional) Enable double-buffering:
.. code::
#define LV_QNX_BUF_COUNT 2
Build LVGL as a Library
~~~~~~~~~~~~~~~~~~~~~~~
**Note that this method is an alternative to including LVGL in your project. If
you choose to build a library then you do not need to follow the instructions in
the previous section.**
The top-level `qnx` directory includes a recursive make file for building LVGL,
both as a shared library and as a static library for the supported
architectures. To build all libraries, simply invoke `make` in this directory:
.. code:: shell
# cd $(LVGL_ROOT)/env_support/qnx
# make
If you prefer to build for a specific architecture and variant, go to the
appropriate directory and run `make` there. For example, to build a shared
library for ARMv8:
.. code:: shell
# cd $(LVGL_ROOT)/env_support/qnx/aarch64/so.le
# make
As a general rule, if you only want to have one LVGL application in your system
then it is better to use a static library. If you have more than one, and
especially if they run concurrently, it is better to use the shared library.
Before building the library, you may wish to edit
`$(LVGL_ROOT)/env_support/qnx/lv_conf.h`, e.g. to add fonts or disable
double-buffering.
Writing a LVGL Application
~~~~~~~~~~~~~~~~~~~~~~~~~~
To create a LVGL application for QNX, follow these steps in your code:
1. Initialize the library.
2. Create a window.
3. Add the input devices.
4. Create the UI.
5. Run the event loop.
Steps 2, 3 and 5 use QNX-specific calls, but the rest of the code should be
identical to that of a LVGL application written for any other platform.
The following code shows how to create a "Hello World" application:
.. code:: c
#include <lvgl.h>
int
main(int argc, char **argv)
{
/* Initialize the library. */
lv_init();
/* Create a 800x480 window. */
lv_display_t *disp = lv_qnx_window_create(800, 480);
lv_qnx_window_set_title(disp, "LVGL Example");
/* Add keyboard and mouse devices. */
lv_qnx_add_keyboard_device(disp);
lv_qnx_add_pointer_device(disp);
/* Generate the UI. */
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0x003a57), LV_PART_MAIN);
lv_obj_t * label = lv_label_create(lv_screen_active());
lv_label_set_text(label, "Hello world");
lv_obj_set_style_text_color(lv_screen_active(), lv_color_hex(0xffffff), LV_PART_MAIN);
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
/* Run the event loop until it exits. */
return lv_qnx_event_loop(disp);
}
Build the Application
~~~~~~~~~~~~~~~~~~~~~
Building the application consists of compiling the source with the LVGL headers,
and then linking against the library. This can be done in many ways, using
different build systems. The following is a simple make file for the example
above, which builds for ARMv8 with the shared library:
.. code:: makefile
CC=qcc -Vgcc_ntoaarch64le
LVGL_ROOT=$(HOME)/src/lvgl
CCFLAGS=-I$(LVGL_ROOT)/env_support/qnx -I$(LVGL_ROOT)
LDFLAGS=-lscreen -llvgl -L$(LVGL_ROOT)/env_support/qnx/aarch64/so.le
lvgl_example: lvgl_example.c
$(CC) $(CCFLAGS) -Wall -o $@ $< $(LDFLAGS)
clean:
rm -f *.o *~ lvgl_example

View File

@@ -106,6 +106,7 @@ The pseudo device binding descriptions can be found at:
- `button input <https://docs.zephyrproject.org/latest/build/dts/api/bindings/input/zephyr,lvgl-button-input.html>`__
- `pointer input <https://docs.zephyrproject.org/latest/build/dts/api/bindings/input/zephyr,lvgl-pointer-input.html>`__
- `encoder input <https://docs.zephyrproject.org/latest/build/dts/api/bindings/input/zephyr,lvgl-encoder-input.html>`__
- `keypad input <https://docs.zephyrproject.org/latest/build/dts/api/bindings/input/zephyr,lvgl-keypad-input.html>`__
Essentially those buffer the :code:`input_event` generated by the device pointed to by the :code:`input` phandle or if left
empty the binding captures all events regardless of the source. You do not have to instantiate or manage the devices yourself,
@@ -157,6 +158,31 @@ Overlays can be used to enable/disable features for specific boards or build
targets. For more information refer to the
`application development guide <https://docs.zephyrproject.org/latest/develop/application/index.html#application-configuration>`__.
Performance Tuning in LVGL
~~~~~~~~~~~~~~~~~~~~~~~~~~
To optimize LVGL's performance, several `kconfig` options can be configured:
- **CONFIG_LV_Z_VDB_SIZE**: Sets the rendering buffer size as a percentage of the display area, adjustable from 1% to 100%. Larger buffers can enhance performance, especially when used with **CONFIG_LV_Z_FULL_REFRESH**.
- **CONFIG_LV_Z_DOUBLE_VDB**: Enables the use of two rendering buffers, allowing for parallel rendering and data flushing, thus improving responsiveness and reducing latency.
- **CONFIG_LV_Z_VDB_ALIGN**: Ensures that the rendering buffer is properly aligned, which is critical for efficient memory access based on the color depth.
- **CONFIG_LV_Z_VBD_CUSTOM_SECTION**: Allows rendering buffers to be placed in a custom memory section (e.g., `.lvgl_buf`), useful for leveraging specific memory types like tightly coupled or external memory to enhance performance.
Zephyr ≤ 3.7.0 Specific Options
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For Zephyr versions 3.7.0 and below, additional options are available to manage LVGL's frame flushing:
- **CONFIG_LV_Z_FLUSH_THREAD**: Enables flushing LVGL frames in a separate thread, allowing the main thread to continue rendering the next frame simultaneously. This option can be disabled if the performance gain is not needed.
- **CONFIG_LV_Z_FLUSH_THREAD_STACK_SIZE**: Specifies the stack size for the flush thread, with a default of 1024 bytes.
- **CONFIG_LV_Z_FLUSH_THREAD_PRIO**: Sets the priority of the flush thread, with a default priority of 0, indicating cooperative priority.
For newer versions of Zephyr, the OSAL (Operating System Abstraction Layer) can be utilized, which takes care of the flushing.
Where can I find more information?
----------------------------------

View File

@@ -140,7 +140,13 @@ Starting from v8, every minor release is supported for 1 year.
+---------+--------------+--------------+--------+
|v8.3 | 6 July, 2022 | 1 Jan, 2025 | Yes |
+---------+--------------+--------------+--------+
|v9.0 |In progress |
|v8.4 | Mar 19, 2024 | Mar 20, 2025 | Yes |
+---------+--------------------------------------+
|v9.0 | Jan 22, 2024 | Jan 22, 2025 | Yes |
+---------+--------------------------------------+
|v9.1 | Mar 20, 2024 | Mar 20, 2025 | Yes |
+---------+--------------------------------------+
|v9.2 | Aug 26, 2024 | Aug 26, 2025 | Yes |
+---------+--------------------------------------+

View File

@@ -7,7 +7,8 @@ Arduino ESP littlefs
LittleFS is a little fail-safe filesystem designed for microcontrollers and integrated in the Arduino framework
when used with ESP32 and ESP8266.
Detailed introduction:
Detailed introduction:
- https://github.com/esp8266/Arduino
- https://github.com/espressif/arduino-esp32
@@ -15,7 +16,7 @@ Detailed introduction:
Usage
-----
Enable :c:macro:`LV_USE_FS_ARDUINO_ESP_LITTLEFS` and define a :c:macro`LV_FS_ARDUINO_ESP_LITTLEFS_LETTER` in ``lv_conf.h``.
Enable :c:macro:`LV_USE_FS_ARDUINO_ESP_LITTLEFS` and define a :c:macro:`LV_FS_ARDUINO_ESP_LITTLEFS_LETTER` in ``lv_conf.h``.
API

View File

@@ -8,16 +8,16 @@ Enables reading and writing on SD cards.
Once an SD memory card is connected to the SPI interface of the Arduino or Genuino board you can create files
and read/write on them. You can also move through directories on the SD card..
Detailed introduction:
Detailed introduction:
- https://www.arduino.cc/reference/en/libraries/sd/
Usage
-----
Enable :c:macro:`LV_USE_FS_ARDUINO_SD` and define a :c:macro`LV_FS_ARDUINO_SD_LETTER` in ``lv_conf.h``.
You probably need to configure the :c:macro:`LV_FS_ARDUINO_SD_CS_PIN` and :c:macro:`LV_FS_ARDUINO_SD_FREQUENCY` that
corresponds to the pin connected and the frequency used by the chip of the SD CARD.
Enable :c:macro:`LV_USE_FS_ARDUINO_SD` and define a :c:macro:`LV_FS_ARDUINO_SD_LETTER` in ``lv_conf.h``.
You will need to initialize the SD card before LVGL can use it (i.e. :cpp:expr:`SD.begin(0, SPI, 40000000)`).
API

View File

@@ -30,9 +30,24 @@ In ``lv_conf.h`` enable ``LV_USE_FS_...`` and assign an upper cased
letter to ``LV_FS_..._LETTER`` (e.g. ``'S'``). After that you can access
files using that driver letter. E.g. ``"S:path/to/file.txt"``.
The work directory can be set with ``LV_FS_..._PATH``. E.g.
Working with common prefixes
""""""""""""""""""""""""""""
A **default driver letter** can be set by ``LV_FS_DEFAULT_DRIVE_LETTER``,
which allows skipping the drive prefix in file paths.
For example if ``LV_FS_DEFAULT_DRIVE_LETTER`` is set the ``'S'`` *"path/to/file.txt"* will mean *"S:path/to/file.txt"*.
This feature is useful if you have only a single driver and don't want to bother with LVGL's driver layer in the file paths.
It also helps to use a unified path with LVGL's file system and normal file systems.
The original mechanism is not affected, so a path starting with drive letter will still work.
The **working directory** can be set with ``LV_FS_..._PATH``. E.g.
``"/home/joe/projects/"`` The actual file/directory paths will be
appended to it.
appended to it, allowing to skip the common part.
Caching
"""""""
:ref:`Cached reading <overview_file_system_cache>` is also supported if ``LV_FS_..._CACHE_SIZE`` is set to
not ``0`` value. :cpp:func:`lv_fs_read` caches this size of data to lower the

View File

@@ -12,7 +12,7 @@ Detailed introduction: https://github.com/littlefs-project/littlefs
Usage
-----
Enable :c:macro:`LV_USE_FS_LITTLEFS` and define a :c:macro`LV_FS_LITTLEFS_LETTER` in ``lv_conf.h``.
Enable :c:macro:`LV_USE_FS_LITTLEFS` and define a :c:macro:`LV_FS_LITTLEFS_LETTER` in ``lv_conf.h``.
When enabled :c:macro:`lv_littlefs_set_handler` can be used to set up a mount point.

View File

@@ -29,11 +29,14 @@ entire time the font is being used.
After a font is created, you can change the font size in pixels by using
:cpp:expr:`lv_tiny_ttf_set_size(font, font_size)`.
By default, a font will use up to 4KB of cache to speed up rendering
glyphs. This maximum can be changed by using
:cpp:expr:`lv_tiny_ttf_create_data_ex(data, data_size, font_size, cache_size)`
or :cpp:expr:`lv_tiny_ttf_create_file_ex(path, font_size, cache_size)` (when
available). The cache size is indicated in bytes.
By default, a font will cache data for upto 256 glyphs elements to speed up rendering.
This maximum can be changed by using
:cpp:expr:`lv_tiny_ttf_create_data_ex(data, data_size, font_size, kerning, cache_size)`
or :cpp:expr:`lv_tiny_ttf_create_file_ex(path, font_size, kerning, cache_size)` (when
available). The cache size is indicated in number of entries. Kerning is whether to allow
if supported, or disable.
.. _tiny_ttf_example:

View File

@@ -33,6 +33,7 @@ Below APIs needed to be implemented and linked to lvgl.
.. code:: c
void lv_obj_set_id(lv_obj_t * obj, void * id);
void lv_obj_assign_id(const lv_obj_class_t * class_p, lv_obj_t * obj);
void lv_obj_free_id(lv_obj_t * obj);
const char * lv_obj_stringify_id(lv_obj_t * obj, char * buf, uint32_t len);

View File

@@ -115,7 +115,7 @@ Input device events
- :cpp:enumerator:`LV_EVENT_CLICKED`: Called on release if not scrolled (regardless to long press)
- :cpp:enumerator:`LV_EVENT_RELEASED`: Called in every cases when the object has been released
- :cpp:enumerator:`LV_EVENT_SCROLL_BEGIN`: Scrolling begins. The event parameter is a pointer to the animation of the scroll. Can be modified
- :cpp:enumerator:`LV_EVENT_SCROLL_THROW_BEGIN`:
- :cpp:enumerator:`LV_EVENT_SCROLL_THROW_BEGIN`:
- :cpp:enumerator:`LV_EVENT_SCROLL_END`: Scrolling ends
- :cpp:enumerator:`LV_EVENT_SCROLL`: Scrolling
- :cpp:enumerator:`LV_EVENT_GESTURE`: A gesture is detected. Get the gesture with :cpp:expr:`lv_indev_get_gesture_dir(lv_indev_active());`
@@ -125,6 +125,8 @@ Input device events
- :cpp:enumerator:`LV_EVENT_LEAVE`: The object is defocused but still selected
- :cpp:enumerator:`LV_EVENT_HIT_TEST`: Perform advanced hit-testing
- :cpp:enumerator:`LV_EVENT_INDEV_RESET`: Indev has been reset
- :cpp:enumerator:`LV_EVENT_HOVER_OVER`: Indev hover over object
- :cpp:enumerator:`LV_EVENT_HOVER_LEAVE`: Indev hover leave object
Drawing events
--------------

View File

@@ -342,6 +342,85 @@ Example
/*Free the font if not required anymore*/
lv_binfont_destroy(my_font);
Use a BDF font
**************
Small displays with low resolution don't look pretty with automatically rendered fonts. A bitmap font provides
the solution, but it's necessary to convert the bitmap font (BDF) to a TTF.
Convert BDF to TTF
------------------
BDF are bitmap fonts where fonts are not described in outlines but in pixels. BDF files can be used but
they must be converted into the TTF format via mkttf. This tool uses potrace to generate outlines from
the bitmap information. The bitmap itself will be embedded into the TTF as well. `lv_font_conv <https://github.com/lvgl/lv_font_conv/>`__ uses
the embedded bitmap but it also needs the outlines. One could think you can use a fake MS Bitmap
only sfnt (ttf) (TTF without outlines) created by fontforge but this will not work.
Install imagemagick, python3, python3-fontforge and potrace
On Ubuntu Systems, just type
.. code:: bash
sudo apt install imagemagick python3-fontforge potrace
Clone mkttf
.. code:: bash
git clone https://github.com/Tblue/mkttf
Read the mkttf docs.
Former versions of imagemagick needs the imagemagick call in front of convert, identify and so on.
But newer versions don't. So you might probably change 2 lines in potrace-wrapper.sh.
Open potrace-wrapper.sh and remove imagemagick from line 55 and line 64.
line 55
.. code:: bash
wh=($(identify -format '%[width]pt %[height]pt' "${input?}"))
line 64
.. code:: bash
convert "${input?}" -sample '1000%' - \
It might be necessary to change the mkttf.py script.
line 1
.. code:: bash
#!/usr/bin/env python3
Example for a 12px font
-----------------------
.. code:: bash
cd mkttf
./mkttf.py ./TerminusMedium-12-12.bdf
Importing bitmaps from 0 additional fonts...
Importing font `./TerminusMedium-12-12.bdf' into glyph background...
Processing glyphs...
Saving TTF file...
Saving SFD file...
Done!
The TTF TerminusMedium-001.000.ttf has been created from ./TerminusMedium-12-12.bdf.
Create font for lvgl
.. code:: bash
lv_font_conv --bpp 1 --size 12 --no-compress --font TerminusMedium-001.000.ttf --range 0x20-0x7e,0xa1-0xff --format lvgl -o terminus_1bpp_12px.c
:note: use 1bpp because we don't use anti-aliasing. It doesn't look sharp on displays with a low resolution.
Add a new font engine
*********************

View File

@@ -9,6 +9,10 @@ any type of file system. A file system is identified by an assigned
drive letter. For example, if an SD card is associated with the letter
``'S'``, a file can be reached using ``"S:path/to/file.txt"``.
.. note::
If you want to skip the drive prefix from the path, you can use the :c:macro:`LV_FS_DEFAULT_DRIVE_LETTER` config parameter.
Ready to use drivers
********************

View File

@@ -26,3 +26,4 @@ Overview
profiler
renderers/index
new_widget
vg_lite_tvg

View File

@@ -167,6 +167,29 @@ using :cpp:expr:`lv_obj_clean(obj)`.
You can use :cpp:expr:`lv_obj_delete_delayed(obj, 1000)` to delete an object after
some time. The delay is expressed in milliseconds.
Sometimes you're not sure whether an object was deleted and you need some way to
check if it's still "alive". Anytime before the object is deleted, you can use
cpp:expr:`lv_obj_null_on_delete(&obj)` to cause your object pointer to be set to ``NULL``
when the object is deleted.
Make sure the pointer variable itself stays valid until the object is deleted. Here
is an example:
.. code:: c
void some_timer_callback(lv_timer_t * t)
{
static lv_obj_t * my_label;
if(my_label == NULL) {
my_label = lv_label_create(lv_screen_active());
lv_obj_delete_delayed(my_label, 1000);
lv_obj_null_on_delete(&my_label);
}
else {
lv_obj_set_x(my_label, lv_obj_get_x(my_label) + 1);
}
}
.. _objects_screens:
Screens

View File

@@ -1,3 +1,5 @@
.. _arm2d:
==========
Arm-2D GPU
==========
@@ -7,9 +9,9 @@ Microcontrollers**. It supports all Cortex-M processors ranging from
Cortex-M0 to the latest Cortex-M85.
Arm-2D accelerates LVGL9 with two modes: **Synchronous Mode** and
**Asynchronous Mode**.
**Asynchronous Mode**.
- When **Helium** and **ACI (Arm Custom Instruction)** are available, it is recommend
to use **Synchronous Mode** to accelerate LVGL.
to use **Synchronous Mode** to accelerate LVGL.
- When Arm-2D backed 2D-GPUs are available, for example, **DMAC-350 based 2D
GPUs**, it is recommend to use **Asynchronous Mode** to accelerate LVGL.
@@ -20,12 +22,12 @@ How to Use
**********
In general:
- you can set the macro :c:macro:`LV_USE_DRAW_ARM2D_SYNC` to ``1`` and
:c:macro:`LV_DRAW_SW_ASM` to ``LV_DRAW_SW_ASM_HELIUM`` in ``lv_conf.h`` to
enable Arm-2D synchronous acceleration for LVGL.
- You can set
the macro :c:macro:`LV_USE_DRAW_ARM2D_ASYNC` to ``1`` in ``lv_conf.h`` to enable
Arm-2D Asynchronous acceleration for LVGL.
- you can set the macro :c:macro:`LV_USE_DRAW_ARM2D_SYNC` to ``1`` and
:c:macro:`LV_DRAW_SW_ASM` to ``LV_DRAW_SW_ASM_HELIUM`` in ``lv_conf.h`` to
enable Arm-2D synchronous acceleration for LVGL.
- You can set
the macro :c:macro:`LV_USE_DRAW_ARM2D_ASYNC` to ``1`` in ``lv_conf.h`` to enable
Arm-2D Asynchronous acceleration for LVGL.
If you are using
`CMSIS-Pack <https://github.com/lvgl/lvgl/tree/master/env_support/cmsis-pack>`__
@@ -47,7 +49,7 @@ LVGL (sometimes worse) for regular Cortex-M processors.
- The target processors support
`Helium <https://developer.arm.com/documentation/102102/0103/?lang=en>`__.
- The device vendor provides an arm-2d compliant driver for their
proprietary 2D accelerators and/or ACI(Arm Customized Instruction).
proprietary 2D accelerators and/or ACI (Arm Customized Instruction).
- The target device contains
`DMAC-350 <https://community.arm.com/arm-community-blogs/b/internet-of-things-blog/posts/arm-corelink-dma-350-next-generation-direct-memory-access-for-endpoint-ai>`__

View File

@@ -11,3 +11,4 @@ Renderers and GPUs
pxp
stm32_dma2d
vglite
vg_lite

View File

@@ -0,0 +1,61 @@
===================
VG-Lite General GPU
===================
This is a generic VG-Lite rendering backend implementation that is designed to utilize
`VeriSilicon <https://verisilicon.com/>`_'s generic API to operate GPU hardware as much as possible.
Even with different chip manufacturers, as long as they use the same version of VG-Lite API as the rendering backend,
LVGL rendering acceleration can be supported without the need for LVGL adaptation work.
Configuration
*************
1. Set :c:macro:`LV_USE_DRAW_VG_LITE` to 1 in ``lv_conf.h`` to enabled the VG-Lite rendering backend.
Make sure that your hardware has been adapted to the VG-Lite API and that the absolute path to ``vg_lite.h``, which can be directly referenced by lvgl, has been exposed.
2. Confirm the GPU initialization method, there are two ways:
- The SDK calls the GPU initialization function on its own during system startup, and the GPU is available when LVGL starts; set :c:macro:`LV_VG_LITE_USE_GPU_INIT` to 0.
- LVGL actively calls the GPU initialization function, and the SDK needs to implement the public function `gpu_init()`.
LVGL will call it to complete the GPU hardware initialization during startup; set :c:macro:`LV_VG_LITE_USE_GPU_INIT` to 1.
3. Set the :c:macro:`LV_VG_LITE_USE_ASSERT` configuration to enable GPU call parameter checking.
Due to the complexity of the parameters used in GPU calls, incorrect parameters can result in abnormal GPU hardware operation, such as forgetting to add an end symbol
to the path or not meeting the alignment requirements for buffer stride.
To quickly resolve such issues, strict parameter checking has been added before each VG-Lite call, including buffer stride validation and matrix invertibility check.
When an error parameter is detected, an assertion will occur to print out the error parameter, allowing the user to promptly make corrections and reduce the time wasted on hardware simulation.
Please note that enabling this check will decrease runtime performance. It is recommended to enable it in Debug mode and disable it in the Release version.
4. Set the :c:macro:`LV_VG_LITE_FLUSH_MAX_COUNT` configuration to specify the flush method.
VG-Lite uses two sets of command buffer buffers to render instructions, and utilizing this mechanism well can greatly improve drawing efficiency.
Currently, two buffering methods are supported:
- Set :c:macro:`LV_VG_LITE_FLUSH_MAX_COUNT` to zero (recommended). The rendering backend will obtain the GPU's working status every time it writes rendering instructions to the command buffer.
When the GPU is idle, it will immediately call ``vg_lite_flush`` to notify the GPU to start rendering and swap the command buffer. When the GPU is busy, it will continue to fill the command buffer cache with rendering instructions.
The underlying driver will automatically determine if the command buffer has been filled. When it is about to be filled, it will forcibly wait for the unfinished drawing tasks to end and swap the command buffer.
This method can effectively improve GPU utilization, especially in scenarios where rendering text, as the GPU's drawing time and the CPU's data preparation time are very close, allowing the CPU and GPU to run in parallel.
- Set :c:macro:`LV_VG_LITE_FLUSH_MAX_COUNT` to a value greater than zero, such as 8. After writing 8 rendering instructions to the command buffer, the rendering backend
will call ``vg_lite_flush`` to notify the GPU to start rendering and swap the command buffer.
5. Set the :c:macro:`LV_VG_LITE_USE_BOX_SHADOW` configuration to use GPU rendering for shadows.
In fact, GPU hardware does not actually support shadow rendering. However, through experimentation, it has been found that a similar shadow effect
can be achieved by using multiple layers of borders with different levels of transparency.
It is recommended to enable this configuration in scenarios where the shadow quality requirements are not high, as it can significantly improve rendering efficiency.
6. Set the :c:macro:`LV_VG_LITE_GRAD_CACHE_CNT` configuration to specify the number of gradient cache entries.
Gradient drawing includes linear gradients and radial gradients. Using a cache can effectively reduce the number of times the gradient image is created and improve drawing efficiency.
Each individual gradient consumes around 4K of GPU memory pool. If there are many gradients used in the interface, you can try increasing the number of gradient cache entries.
If the VG-Lite API returns the :c:macro:`VG_LITE_OUT_OF_RESOURCES` error, you can try increasing the size of the GPU memory pool or reducing the number of gradient cache entries.
7. Set the :c:macro:`LV_VG_LITE_STROKE_CACHE_CNT` configuration to specify the number of stroke path caches.
When the stroke parameters do not change, the previously generated stroke parameters are automatically retrieved from the cache to improve rendering performance.
The memory occupied by the stroke is strongly related to the path length. If the VG-Lite API returns the :c:macro:`VG_LITE_OUT_OF_RESOURCES` error,
you can try increasing the size of the GPU memory pool or reducing the number of stroke cache entries.
NOTE: VG-Lite rendering backend does not support multi-threaded calls, please make sure :c:macro:`LV_USE_OS` is always configured as :c:macro:`LV_OS_NONE`.
VG-Lite Simulator
*****************
LVGL integrates a VG-Lite simulator based on ThorVG.
Its purpose is to simplify the debugging of VG-Lite adaptation and reduce the time of debugging and locating problems on hardware devices.
For detailed instructions, see `VG-Lite Simulator </overview/vg_lite_tvg>`__.

View File

@@ -41,7 +41,7 @@ The objects can be in the combination of the following states:
- :cpp:enumerator:`LV_STATE_FOCUSED`: (0x0002) Focused via keypad or encoder or clicked via touchpad/mouse
- :cpp:enumerator:`LV_STATE_FOCUS_KEY`: (0x0004) Focused via keypad or encoder but not via touchpad/mouse
- :cpp:enumerator:`LV_STATE_EDITED`: (0x0008) Edit by an encoder
- :cpp:enumerator:`LV_STATE_HOVERED`: (0x0010) Hovered by mouse (not supported now)
- :cpp:enumerator:`LV_STATE_HOVERED`: (0x0010) Hovered by mouse
- :cpp:enumerator:`LV_STATE_PRESSED`: (0x0020) Being pressed
- :cpp:enumerator:`LV_STATE_SCROLLED`: (0x0040) Being scrolled
- :cpp:enumerator:`LV_STATE_DISABLED`: (0x0080) Disabled state

View File

@@ -0,0 +1,27 @@
.. _vg_lite_tvg:
=================
VG-Lite Simulator
=================
LVGL integrates a VG-Lite simulator based on ThorVG.
Its purpose is to simplify the debugging of VG-Lite adaptation and reduce the time of debugging and locating problems on hardware devices.
It has been integrated into the CI automated compilation and testing process to ensure that the VG-Lite rendering backend can be fully tested after each PR modification.
How it works
************
Sort out the APIs in the ``vg_lite.h`` header file provided by the vendor, re-implement the APIs using `ThorVG <https://github.com/thorvg/thorvg>`_,
and simulate the same rendering images as the real hardware on the simulator.
Configuration
*************
1. Enable VG-Lite rendering backend, see `VG-Lite Rendering Backend </overview/renderers/vg_lite>`__.
2. Enable ThorVG and turn on the configuration :c:macro:`LV_USE_THORVG_INTERNAL` or :c:macro:`LV_USE_THORVG_EXTERNAL`.
It is recommended to use the internal ThorVG library to ensure uniform rendering results.
3. Enable :c:macro:`LV_USE_VG_LITE_THORVG` and set :c:macro:`LV_DRAW_BUF_ALIGN` to 64. The rest of the options can remain default.
Make sure :c:macro:`LV_VG_LITE_USE_GPU_INIT` is enabled, because the thorvg drawing context needs to be initialized before it can be used.

View File

@@ -22,7 +22,7 @@ An example ``flush_cb`` looks like this:
.. code:: c
void my_flush_cb(lv_display_t * display, const lv_area_t * area, void * px_map)
void my_flush_cb(lv_display_t * display, const lv_area_t * area, uint8_t * px_map)
{
/*The most simple case (but also the slowest) to put all pixels to the screen one-by-one
*`put_px` is just an example, it needs to be implemented by you.*/
@@ -136,7 +136,6 @@ or anything else to optimize while the waiting for flush.
If ``flush_wait_cb`` is not set, LVGL assume that `lv_display_flush_ready`
is used.
Rotation
--------
@@ -160,7 +159,7 @@ are rendered directly in the frame buffer so they cannot be
rotated later. Therefore in direct mode only the whole frame buffer can be rotated.
The same is true for :cpp:enumerator:`LV_DISPLAY_RENDER_MODE_FULL`.
In the case of :cpp:enumerator:`LV_DISPLAY_RENDER_MODE_PARTIAL`the small rendered areas
In the case of :cpp:enumerator:`LV_DISPLAY_RENDER_MODE_PARTIAL` the small rendered areas
can be rotated on their own before flushing to the frame buffer.
Color format
@@ -172,7 +171,8 @@ The default color format of the display is set according to :c:macro:`LV_COLOR_D
- :c:macro:`LV_COLOR_DEPTH` ``32``: XRGB8888 (4 bytes/pixel)
- :c:macro:`LV_COLOR_DEPTH` ``24``: RGB888 (3 bytes/pixel)
- :c:macro:`LV_COLOR_DEPTH` ``16``: RGB565 (2 bytes/pixel)
- :c:macro:`LV_COLOR_DEPTH` ``8``: L8 (1 bytes/pixel) Not supported yet
- :c:macro:`LV_COLOR_DEPTH` ``8``: L8 (1 bytes/pixel)
- :c:macro:`LV_COLOR_DEPTH` ``1``: I1 (1 bit/pixel) Only support for horizontal mapped buffers. See :refr:`monochrome` for more details:
The ``color_format`` can be changed with
:cpp:expr:`lv_display_set_color_depth(display, LV_COLOR_FORMAT_...)`.
@@ -204,6 +204,40 @@ to
``GGG BBBBB | RRRRR GGG``.
.. _monochrome:
Monochrome Displays
-------------------
LVGL supports rendering directly in a 1-bit format for monochrome displays.
To enable it, set ``LV_COLOR_DEPTH 1`` or use :cpp:expr:`lv_display_set_color_format(display, LV_COLOR_FORMAT_I1)`.
The :cpp:expr:`LV_COLOR_FORMAT_I1` format assumes that bytes are mapped to rows (i.e., the bits of a byte are written next to each other).
The order of bits is MSB first, which means:
.. code::
MSB LSB
bits 7 6 5 4 3 2 1 0
pixels 0 1 2 3 4 5 6 7
Left Right
Ensure that the LCD controller is configured accordingly.
Internally, LVGL rounds the redrawn areas to byte boundaries. Therefore, updated areas will:
- Start on an ``Nx8`` coordinate.
- End on an ``Nx8 - 1`` coordinate.
When setting up the buffers for rendering (:cpp:func:`lv_display_set_buffers`), make the buffer 8 bytes larger.
This is necessary because LVGL reserves 2 x 4 bytes in the buffer, as these are assumed to be used as a palette.
To skip the palette, include the following line in your ``flush_cb`` function: ``px_map += 8``.
As usual, monochrome displays support partial, full, and direct rendering modes as well.
In full and direct modes, the buffer size should be large enough for the whole screen, meaning ``(horizontal_resolution x vertical_resolution / 8) + 8`` bytes.
As LVGL can not handle fractional width make sure to round the horizontal resolution to 8-
(For example 90 to 96)
User data
---------
@@ -245,7 +279,7 @@ Force refreshing
----------------
Normally the invalidated areas (marked for redraw) are rendered in :cpp:func:`lv_timer_handler` in every
:cpp:macro:`LV_DEF_REFR_PERIOD`milliseconds. However, by using :cpp:func:`lv_refr_now(display)` you can ask LVGL to
:c:macro:`LV_DEF_REFR_PERIOD` milliseconds. However, by using :cpp:func:`lv_refr_now(display)` you can ask LVGL to
redraw the invalid areas immediately. The refreshing will happen in :cpp:func:`lv_refr_now` which might take
longer time.

View File

@@ -80,7 +80,7 @@ The rotary sensitivity can be adjusted on 2 levels:
The final diff is calculated like this:
``diff_final = diff_in * (indev_sensitivity / 256) + (widget_sensitivity / 256); ``
``diff_final = diff_in * (indev_sensitivity / 256) + (widget_sensitivity / 256);``
For example, if both the indev and widget sensitivity is set to 128 (0.5), the input diff. will be
multiplied by 0.25 (divided by 4). The value of the widget will be incremented by this value or

View File

@@ -90,7 +90,8 @@ will attempt to include ``lv_conf.h`` simply with
You can even use a different name for ``lv_conf.h``. The custom path can
be set via the :c:macro:`LV_CONF_PATH` define. For example
``-DLV_CONF_PATH="/home/joe/my_project/my_custom_conf.h"``
``-DLV_CONF_PATH="/home/joe/my_project/my_custom_conf.h"``. If this define
is set :c:macro:`LV_CONF_SKIP` is assumed to be ``0``.
If :c:macro:`LV_CONF_SKIP` is defined, LVGL will not try to include
``lv_conf.h``. Instead you can pass the config defines using build

View File

@@ -41,7 +41,7 @@ To set the source of an image, use :cpp:expr:`lv_image_set_src(img, src)`.
To generate a pixel array from a PNG, JPG or BMP image, use the `Online image converter tool <https://lvgl.io/tools/imageconverter>`__
and set the converted image with its pointer :cpp:expr:`lv_image_set_src(img1, &converted_img_var)`
To make the variable visible in the C file, you need to declare it with
:cpp:macro:`LV_IMAGE_DECLARE(converted_img_var)`.
:cpp:expr:`LV_IMAGE_DECLARE(converted_img_var)`.
To use external files, you also need to convert the image files using
the online converter tool but now you should select the binary output

View File

@@ -15,13 +15,13 @@ Parts and Styles
****************
- :cpp:enumerator:`LV_PART_MAIN` Uses all the typical background properties and the
text properties. The padding values can be used to add space between
the text and the background.
text properties. The padding values can be used to add space between
the text and the background.
- :cpp:enumerator:`LV_PART_SCROLLBAR` The scrollbar that is shown when the text is
larger than the widget's size.
- :cpp:enumerator:`LV_PART_SELECTED` Tells the style of the
larger than the widget's size.
- :cpp:enumerator:`LV_PART_SELECTED` Tells the style of the
:ref:`selected text <lv_label_text_selection>`. Only ``text_color`` and ``bg_color`` style
properties can be used.
properties can be used.
.. _lv_label_usage:

View File

@@ -7,12 +7,14 @@ Message box (lv_msgbox)
Overview
********
The Message boxes act as pop-ups. They are built from a background
container, a title, an optional close button, a text and optional
buttons.
Message boxes act as pop-ups. They are built from a content area
with a helper to add text, an optional header (which can have
a title, a close button, and other buttons), and an optional footer
with buttons.
The text will be broken into multiple lines automatically and the height
will be set automatically to include the text and the buttons.
The text will be broken into multiple lines and the height
will be set automatically. If the height
is set manually, the content will become scrollable.
The message box can be modal (blocking clicks on the rest of the screen)
or not modal.
@@ -25,10 +27,9 @@ Parts and Styles
The message box is built from other widgets, so you can check these
widgets' documentation for details.
- Background: :ref:`lv_obj`
- Close button: :ref:`lv_button`
- Title and text: :ref:`lv_label`
- Buttons: :ref:`lv_buttonmatrix`
- Content, header, and footer: :ref:`lv_obj`
- Buttons: :ref:`lv_button`
- Title and content text: :ref:`lv_label`
.. _lv_msgbox_usage:
@@ -38,15 +39,8 @@ Usage
Create a message box
--------------------
:cpp:expr:`lv_msgbox_create(parent, title, txt, btn_txts[], add_close_btn)`
creates a message box.
If ``parent`` is ``NULL`` the message box will be modal. ``title`` and
``txt`` are strings for the title and the text. ``btn_txts[]`` is an
array with the buttons' text.
E.g. :cpp:expr:`const char * btn_txts[] = {"Ok", "Cancel", NULL}`.
``add_close_btn`` can be ``true`` or ``false`` to add/don't add a close button.
:cpp:expr:`lv_msgbox_create(parent)` creates a message box.
If ``parent`` is ``NULL`` the message box will be modal.
Get the parts
-------------
@@ -56,29 +50,37 @@ following functions:
.. code:: c
lv_obj_t * lv_msgbox_get_title(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_close_btn(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_text(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_btns(lv_obj_t * mbox);
lv_obj_t * lv_msgbox_get_content(lv_obj_t * obj);
lv_obj_t * lv_msgbox_get_title(lv_obj_t * obj);
lv_obj_t * lv_msgbox_get_header(lv_obj_t * obj);
lv_obj_t * lv_msgbox_get_footer(lv_obj_t * obj);
Functions that add something to the message box return the newly added object:
.. code:: c
lv_obj_t * lv_msgbox_add_text(lv_obj_t * obj, const char * text);
lv_obj_t * lv_msgbox_add_title(lv_obj_t * obj, const char * title);
lv_obj_t * lv_msgbox_add_close_button(lv_obj_t * obj);
lv_obj_t * lv_msgbox_add_header_button(lv_obj_t * obj, const void * icon);
lv_obj_t * lv_msgbox_add_footer_button(lv_obj_t * obj, const char * text);
Close the message box
---------------------
:cpp:expr:`lv_msgbox_close(msgbox)` closes (deletes) the message box.
:cpp:expr:`lv_msgbox_close_async(msgbox)` closes (deletes) the message box
asynchronously. This is useful if you want the message box to close the on
the next call to ``lv_timer_handler`` instead of immediately.
.. _lv_msgbox_events:
Events
******
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED` is sent by the buttons if one of them is
clicked. :cpp:enumerator:`LV_OBJ_FLAG_EVENT_BUBBLE` is enabled on the buttons so
you can add events to the message box itself. In the event handler,
:cpp:expr:`lv_event_get_target(e)` will return the button matrix and
:cpp:expr:`lv_event_get_current_target(e)` will return the message box.
:cpp:expr:`lv_msgbox_get_active_button(msgbox)` and
:cpp:expr:`lv_msgbox_get_active_button_text(msgbox)` can be used to get the
index and text of the clicked button.
No special events are sent by this widget.
Learn more about :ref:`events`.
@@ -87,8 +89,7 @@ Learn more about :ref:`events`.
Keys
****
Keys have effect on the close button and button matrix. You can add them
manually to a group if required.
No *Keys* are processed by the object type.
Learn more about :ref:`indev_keys`.

View File

@@ -195,7 +195,7 @@ There are some attributes which can be enabled/disabled by
- :cpp:enumerator:`LV_OBJ_FLAG_EVENT_BUBBLE` Propagate the events to the parent too
- :cpp:enumerator:`LV_OBJ_FLAG_GESTURE_BUBBLE` Propagate the gestures to the parent
- :cpp:enumerator:`LV_OBJ_FLAG_ADV_HITTEST` Allow performing more accurate hit (click) test. E.g. accounting for rounded corners
- :cpp:enumerator:`LV_OBJ_FLAG_IGNORE_LAYOUT` Make the object positionable by the layouts
- :cpp:enumerator:`LV_OBJ_FLAG_IGNORE_LAYOUT` Make the object not positioned by the layouts
- :cpp:enumerator:`LV_OBJ_FLAG_FLOATING` Do not scroll the object when the parent scrolls and ignore layout
- :cpp:enumerator:`LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS` Enable sending ``LV_EVENT_DRAW_TASK_ADDED`` events
- :cpp:enumerator:`LV_OBJ_FLAG_OVERFLOW_VISIBLE` Do not clip the children's content to the parent's boundary

View File

@@ -58,10 +58,14 @@ If instead of a numerical value in the major ticks a text is required they can b
with :cpp:expr:`lv_scale_set_text_src(scale, custom_labels)` using ``NULL`` as the last element,
i.e. :cpp:expr:`static char * custom_labels[3] = {"One", "Two", NULL};`.
<strong> NOTE: </strong> The major tick value is calculated with the :cpp:expr:`lv_map` API (when not setting the custom labels),
this calculation takes into consideration the total tick number and the scale range, so the label drawn can present rounding errors
when the calculated value is a float number.
The length of the ticks can be configured with the length style property on the :cpp:enumerator:`LV_PART_INDICATOR`
for major ticks and :cpp:enumerator:`LV_PART_ITEMS` for minor ticks, for example with local style:
:cpp:expr:`lv_obj_set_style_length(scale, 5, LV_PART_INDICATOR);` for major ticks
and :cpp:expr:`lv_obj_set_style_length(scale, 5, LV_PART_ITEMS);` for minor ticks.
and :cpp:expr:`lv_obj_set_style_length(scale, 5, LV_PART_ITEMS);` for minor ticks.
Sections
--------

View File

@@ -1,9 +1,4 @@
set(LVGL_VERSION_MAJOR "9")
set(LVGL_VERSION_MINOR "1")
set(LVGL_VERSION_PATCH "1")
set(LVGL_VERSION_INFO "dev")
set(LVGL_VERSION ${LVGL_VERSION_MAJOR}.${LVGL_VERSION_MINOR}.${LVGL_VERSION_PATCH})
set(LVGL_SOVERSION ${LVGL_VERSION_MAJOR})
include("${CMAKE_CURRENT_LIST_DIR}/version.cmake")
# Option to define LV_LVGL_H_INCLUDE_SIMPLE, default: ON
option(LV_LVGL_H_INCLUDE_SIMPLE
@@ -85,8 +80,13 @@ file(GLOB LVGL_PUBLIC_HEADERS
"${LVGL_ROOT_DIR}/lv_version.h")
if(NOT LV_CONF_SKIP)
list(APPEND LVGL_PUBLIC_HEADERS
"${CMAKE_SOURCE_DIR}/lv_conf.h")
if (LV_CONF_PATH)
list(APPEND LVGL_PUBLIC_HEADERS
${LV_CONF_PATH})
else()
list(APPEND LVGL_PUBLIC_HEADERS
"${CMAKE_SOURCE_DIR}/lv_conf.h")
endif()
endif()
if("${LIB_INSTALL_DIR}" STREQUAL "")
@@ -215,4 +215,4 @@ if(NOT LV_CONF_BUILD_DISABLE_EXAMPLES)
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
endif()
endif()

View File

@@ -1,3 +1,5 @@
include("${CMAKE_CURRENT_LIST_DIR}/version.cmake")
file(GLOB_RECURSE SOURCES ${LVGL_ROOT_DIR}/src/*.c ${LVGL_ROOT_DIR}/src/*.cpp)
idf_build_get_property(LV_MICROPYTHON LV_MICROPYTHON)

View File

@@ -1,3 +1,5 @@
include("${CMAKE_CURRENT_LIST_DIR}/version.cmake")
file(GLOB_RECURSE SOURCES ${LVGL_ROOT_DIR}/src/*.c)
file(GLOB_RECURSE EXAMPLE_SOURCES ${LVGL_ROOT_DIR}/examples/*.c)

View File

@@ -0,0 +1,8 @@
set(LVGL_VERSION_MAJOR "9")
set(LVGL_VERSION_MINOR "2")
set(LVGL_VERSION_PATCH "0")
set(LVGL_VERSION_INFO "")
set(LVGL_VERSION ${LVGL_VERSION_MAJOR}.${LVGL_VERSION_MINOR}.${LVGL_VERSION_PATCH}) # This is a CMake variable
set(ENV{LVGL_VERSION} ${LVGL_VERSION}) # This is exported Environmental variable
set(LVGL_SOVERSION ${LVGL_VERSION_MAJOR})

View File

@@ -1,4 +1,5 @@
if(CONFIG_LVGL)
include("${CMAKE_CURRENT_LIST_DIR}/version.cmake")
zephyr_include_directories(${ZEPHYR_BASE}/lib/gui/lvgl)

View File

@@ -20,7 +20,7 @@
-->
<package schemaVersion="1.7.31" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="https://raw.githubusercontent.com/Open-CMSIS-Pack/Open-CMSIS-Pack-Spec/v1.7.31/schema/PACK.xsd">
<package schemaVersion="1.7.37" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="https://raw.githubusercontent.com/Open-CMSIS-Pack/Open-CMSIS-Pack-Spec/v1.7.37/schema/PACK.xsd">
<vendor>LVGL</vendor>
<name>lvgl</name>
<description>LVGL (Light and Versatile Graphics Library) is a free and open-source graphics library providing everything you need to create an embedded GUI with easy-to-use graphical elements, beautiful visual effects and a low memory footprint.</description>
@@ -36,17 +36,14 @@
<repository type="git">https://github.com/lvgl/lvgl.git</repository>
<releases>
<release date="2024-04-30" version="9.1.1-dev2" url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/LVGL.lvgl.9.1.1-dev2.pack">
- LVGL 9.1.1-dev
<release date="2024-08-26" version="9.2.0" url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/LVGL.lvgl.9.2.0.pack">
- LVGL 9.2.0
- See Change Log
</release>
<release date="2024-03-19" version="9.1.0" url="https://github.com/lvgl/lvgl/raw/v9.1.0/env_support/cmsis-pack/LVGL.lvgl.9.1.0.pack">
- LVGL 9.1.0
- See Change Log
</release>
<release date="2024-03-19" version="8.4.0" url="https://github.com/lvgl/lvgl/raw/v8.4.0/env_support/cmsis-pack/LVGL.lvgl.8.4.0.pack">
- LVGL 8.4.0
- Some minor fixes
</release>
<release date="2024-01-24" version="9.0.0" url="https://github.com/lvgl/lvgl/raw/v9.0.0/env_support/cmsis-pack/LVGL.lvgl.9.0.0.pack">
- LVGL 9.0.0
- Implements a New Render Architecture that enables parallel processing
@@ -56,7 +53,10 @@
- Adds Demos for benchmarks, render test etc,
- Other fixes
</release>
<release date="2024-03-19" version="8.4.0" url="https://github.com/lvgl/lvgl/raw/v8.4.0/env_support/cmsis-pack/LVGL.lvgl.8.4.0.pack">
- LVGL 8.4.0
- Some minor fixes
</release>
<release date="2023-12-05" version="8.3.11" url="https://github.com/lvgl/lvgl/raw/8194d83226c27c84f12dd51e16f5add9939215a5/env_support/cmsis-pack/LVGL.lvgl.8.3.11.pack">
- LVGL 8.3.11
- Add LittleFS Library to LVGL8
@@ -169,70 +169,11 @@
<keywords>
<!-- keywords for indexing -->
<keyword>Cortex-M</keyword>
<keyword>SysTick</keyword>
<keyword>Performance Analysis</keyword>
<keyword>LVGL</keyword>
<keyword>GUI</keyword>
</keywords>
<conditions>
<!--
<condition id="Arm Compiler">
<description>Arm Compiler 5 (armcc) or Arm Compiler 6 (armclang).</description>
<accept Tcompiler="ARMCC" Toptions="AC6"/>
<accept Tcompiler="ARMCC" Toptions="AC6LTO"/>
<accept Tcompiler="ARMCC" Toptions="AC5"/>
</condition>
<condition id="Arm GCC">
<description>GNU Tools for Arm Embedded Processors.</description>
<accept Tcompiler="GCC"/>
</condition>
<condition id="Cortex-M Processors">
<description>Support All Cortex-M based processors</description>
<accept Dcore="Cortex-M0"/>
<accept Dcore="Cortex-M0+"/>
<accept Dcore="Cortex-M1"/>
<accept Dcore="Cortex-M3"/>
<accept Dcore="Cortex-M4"/>
<accept Dcore="Cortex-M7"/>
<accept Dcore="Cortex-M23"/>
<accept Dcore="Cortex-M33"/>
<accept Dcore="Cortex-M35P"/>
<accept Dcore="Cortex-M55"/>
<accept Dcore="SC000"/>
<accept Dcore="SC300"/>
<accept Dcore="ARMV8MBL"/>
<accept Dcore="ARMV8MML"/>
</condition>
<condition id="CMSIS-CORE">
<description>Require CMSIS-CORE Support</description>
<require Cclass="CMSIS" Cgroup="CORE"/>
</condition>
<condition id="Cortex-M Arm GCC">
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
<require condition="Arm GCC"/>
<require condition="Cortex-M Processors"/>
</condition>
<condition id="Cortex-M Arm Compiler">
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
<require condition="Arm Compiler"/>
<require condition="Cortex-M Processors"/>
</condition>
<condition id="Cortex-M Arm GCC CMSIS-CORE">
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
<require condition="Arm GCC"/>
<require condition="Cortex-M Processors"/>
<require condition="CMSIS-CORE"/>
</condition>
<condition id="Cortex-M Arm Compiler CMSIS-CORE">
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
<require condition="Arm Compiler"/>
<require condition="Cortex-M Processors"/>
<require condition="CMSIS-CORE"/>
</condition>
-->
<condition id="GNU Assembler">
<accept Tcompiler="ARMCC" Toptions="AC6"/>
@@ -263,6 +204,8 @@
<accept Dcore="Cortex-M55"/>
<accept Dcore="Cortex-M85"/>
<accept Dcore="ARMV81MML"/>
<accept Dmve="MVE"/>
<accept Dmve="FP_MVE"/>
</condition>
<condition id="NEON GNU Assembler">
@@ -368,40 +311,10 @@
<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU GD32-IPA"/>
<!--<deny Cclass="LVGL" Cgroup="LVGL9" Csub="GPU Renesas-Dave2D"/>-->
</condition>
</conditions>
<!-- apis section (optional - for Application Programming Interface descriptions) -->
<!--
<apis>
</apis>
-->
<!-- boards section (mandatory for Board Support Packs) -->
<!--
<boards>
</boards>
-->
<!-- devices section (mandatory for Device Family Packs) -->
<!--
<devices>
</devices>
-->
<!-- examples section (optional for all Software Packs)-->
<!--
<examples>
</examples>
-->
<!-- conditions section (optional for all Software Packs)-->
<!--
<conditions>
</conditions>
-->
<components>
<bundle Cbundle="LVGL9" Cclass="LVGL" Cversion="9.1.0">
<bundle Cbundle="LVGL9" Cclass="LVGL" Cversion="9.2.0">
<description>LVGL (Light and Versatile Graphics Library) is a free and open-source graphics library providing everything you need to create an embedded GUI with easy-to-use graphical elements, beautiful visual effects and a low memory footprint.</description>
<doc></doc>
<component Cgroup="Essential">
@@ -451,7 +364,18 @@
<file category="sourceC" name="src/drivers/libinput/lv_libinput.c" />
<file category="sourceC" name="src/drivers/libinput/lv_xkb.c" />
<file category="sourceC" name="src/drivers/glfw/lv_glfw_window.c" />
<file category="sourceC" name="src/drivers/glfw/lv_opengles_debug.c" />
<file category="sourceC" name="src/drivers/glfw/lv_opengles_driver.c" />
<file category="sourceC" name="src/drivers/glfw/lv_opengles_texture.c" />
<file category="sourceC" name="src/drivers/qnx/lv_qnx.c" />
<file category="sourceC" name="src/drivers/wayland/lv_wayland.c" />
<file category="sourceC" name="src/drivers/wayland/lv_wayland_smm.c" />
<!-- src/drivers -->
<file category="sourceC" name="src/display/lv_display.c" />
@@ -488,6 +412,7 @@
<!-- src/draw/sw/blend -->
<file category="sourceC" name="src/draw/sw/blend/lv_draw_sw_blend.c" />
<file category="sourceC" name="src/draw/sw/blend/lv_draw_sw_blend_to_argb8888.c" />
<file category="sourceC" name="src/draw/sw/blend/lv_draw_sw_blend_to_i1.c" />
<file category="sourceC" name="src/draw/sw/blend/lv_draw_sw_blend_to_l8.c" />
<file category="sourceC" name="src/draw/sw/blend/lv_draw_sw_blend_to_al88.c" />
<file category="sourceC" name="src/draw/sw/blend/lv_draw_sw_blend_to_rgb565.c" />
@@ -563,9 +488,10 @@
<file category="sourceC" name="src/misc/lv_text_ap.c" />
<file category="sourceC" name="src/misc/lv_timer.c" />
<file category="sourceC" name="src/misc/lv_utils.c" />
<file category="sourceC" name="src/misc/lv_matrix.c" />
<!-- src/misc/cache-->
<file category="sourceC" name="src/misc/cache/_lv_cache_lru_rb.c" />
<file category="sourceC" name="src/misc/cache/lv_cache_lru_rb.c" />
<file category="sourceC" name="src/misc/cache/lv_cache.c" />
<file category="sourceC" name="src/misc/cache/lv_cache_entry.c" />
<file category="sourceC" name="src/misc/cache/lv_image_cache.c" />
@@ -616,6 +542,7 @@
<file category="sourceC" name="src/widgets/led/lv_led.c" />
<file category="sourceC" name="src/widgets/line/lv_line.c" />
<file category="sourceC" name="src/widgets/list/lv_list.c" />
<file category="sourceC" name="src/widgets/lottie/lv_lottie.c" />
<file category="sourceC" name="src/widgets/menu/lv_menu.c" />
<file category="sourceC" name="src/widgets/msgbox/lv_msgbox.c" />
<file category="sourceC" name="src/widgets/objx_templ/lv_objx_templ.c" />
@@ -631,6 +558,15 @@
<file category="sourceC" name="src/widgets/textarea/lv_textarea.c" />
<file category="sourceC" name="src/widgets/tileview/lv_tileview.c" />
<file category="sourceC" name="src/widgets/win/lv_win.c" />
<file category="sourceC" name="src/widgets/property/lv_image_properties.c" />
<file category="sourceC" name="src/widgets/property/lv_obj_properties.c" />
<file category="sourceC" name="src/widgets/property/lv_style_properties.c" />
<file category="sourceC" name="src/widgets/property/lv_label_properties.c" />
<file category="sourceC" name="src/widgets/property/lv_keyboard_properties.c" />
<file category="sourceC" name="src/widgets/property/lv_textarea_properties.c" />
<file category="sourceC" name="src/widgets/property/lv_roller_properties.c" />
<file category="sourceC" name="src/widgets/property/lv_dropdown_properties.c" />
<!-- src/libs -->
<file category="sourceC" name="src/libs/bin_decoder/lv_bin_decoder.c" />
@@ -647,18 +583,19 @@
<!-- src/osal -->
<file category="sourceC" name="src/osal/lv_os_none.c"/>
<file category="sourceC" name="src/osal/lv_os.c"/>
<!-- general -->
<file category="preIncludeGlobal" name="lv_conf_cmsis.h" attr="config" version="2.1.6" />
<file category="preIncludeGlobal" name="lv_conf_cmsis.h" attr="config" version="2.3.0" />
<file category="sourceC" name="lv_cmsis_pack.c" />
<file category="header" name="lvgl.h" />
<file category="doc" name="README.md"/>
<!-- code template -->
<file category="header" name="examples/porting/lv_port_disp_template.h" attr="template" select="Display port template" version="2.2.0"/>
<file category="sourceC" name="examples/porting/lv_port_disp_template.c" attr="template" select="Display port template" version="2.2.0"/>
<file category="header" name="examples/porting/lv_port_indev_template.h" attr="template" select="Input devices port template" version="2.2.0"/>
<file category="sourceC" name="examples/porting/lv_port_indev_template.c" attr="template" select="Input devices port template" version="2.2.0"/>
<file category="header" name="examples/porting/lv_port_disp_template.h" attr="template" select="Display port template" version="2.3.0"/>
<file category="sourceC" name="examples/porting/lv_port_disp_template.c" attr="template" select="Display port template" version="2.3.0"/>
<file category="header" name="examples/porting/lv_port_indev_template.h" attr="template" select="Input devices port template" version="2.3.0"/>
<file category="sourceC" name="examples/porting/lv_port_indev_template.c" attr="template" select="Input devices port template" version="2.3.0"/>
<file category="header" name="examples/porting/lv_port_fs_template.h" attr="template" select="File system port template" version="2.2.0"/>
<file category="sourceC" name="examples/porting/lv_port_fs_template.c" attr="template" select="File system port template" version="2.2.0"/>
</files>
@@ -785,6 +722,19 @@
</RTE_Components_h>
</component>
<component Cgroup="Display" Cvariant="Renesas GLCD" condition="LVGL-Essential">
<description>Add the display driver for Renesas GLCD </description>
<files>
<file category="sourceC" name="src/drivers/display/renesas_glcdc/lv_renesas_glcdc.c" />
</files>
<RTE_Components_h>
/* use display driver for Renesas GLCD */
#define LV_USE_RENESAS_GLCDC 1
</RTE_Components_h>
</component>
<component Cgroup="OS Abstraction Layer" Cvariant="pthreads" condition="LVGL-Essential">
<description>Add the support for pthreads</description>
<files>
@@ -793,16 +743,6 @@
<RTE_Components_h>
/* Select an operating system to use. Possible options:
* - LV_OS_NONE
* - LV_OS_PTHREAD
* - LV_OS_FREERTOS
* - LV_OS_CMSIS_RTOS2
* - LV_OS_RTTHREAD
* - LV_OS_WINDOWS
* - LV_OS_MQX
* - LV_OS_CUSTOM
*/
#define LV_USE_OS LV_OS_PTHREAD
</RTE_Components_h>
@@ -817,16 +757,6 @@
<RTE_Components_h>
/* Select an operating system to use. Possible options:
* - LV_OS_NONE
* - LV_OS_PTHREAD
* - LV_OS_FREERTOS
* - LV_OS_CMSIS_RTOS2
* - LV_OS_RTTHREAD
* - LV_OS_WINDOWS
* - LV_OS_MQX
* - LV_OS_CUSTOM
*/
#define LV_USE_OS LV_OS_FREERTOS
</RTE_Components_h>
@@ -841,16 +771,6 @@
<RTE_Components_h>
/* Select an operating system to use. Possible options:
* - LV_OS_NONE
* - LV_OS_PTHREAD
* - LV_OS_FREERTOS
* - LV_OS_CMSIS_RTOS2
* - LV_OS_RTTHREAD
* - LV_OS_WINDOWS
* - LV_OS_MQX
* - LV_OS_CUSTOM
*/
#define LV_USE_OS LV_OS_CMSIS_RTOS2
</RTE_Components_h>
@@ -865,16 +785,6 @@
<RTE_Components_h>
/* Select an operating system to use. Possible options:
* - LV_OS_NONE
* - LV_OS_PTHREAD
* - LV_OS_FREERTOS
* - LV_OS_CMSIS_RTOS2
* - LV_OS_RTTHREAD
* - LV_OS_WINDOWS
* - LV_OS_MQX
* - LV_OS_CUSTOM
*/
#define LV_USE_OS LV_OS_RTTHREAD
</RTE_Components_h>
@@ -889,16 +799,6 @@
<RTE_Components_h>
/* Select an operating system to use. Possible options:
* - LV_OS_NONE
* - LV_OS_PTHREAD
* - LV_OS_FREERTOS
* - LV_OS_CMSIS_RTOS2
* - LV_OS_RTTHREAD
* - LV_OS_WINDOWS
* - LV_OS_MQX
* - LV_OS_CUSTOM
*/
#define LV_USE_OS LV_OS_WINDOWS
</RTE_Components_h>
@@ -913,16 +813,6 @@
<RTE_Components_h>
/* Select an operating system to use. Possible options:
* - LV_OS_NONE
* - LV_OS_PTHREAD
* - LV_OS_FREERTOS
* - LV_OS_CMSIS_RTOS2
* - LV_OS_RTTHREAD
* - LV_OS_WINDOWS
* - LV_OS_MQX
* - LV_OS_CUSTOM
*/
#define LV_USE_OS LV_OS_MQX
</RTE_Components_h>
@@ -938,15 +828,6 @@
<RTE_Components_h>
/* Select an operating system to use. Possible options:
* - LV_OS_NONE
* - LV_OS_PTHREAD
* - LV_OS_FREERTOS
* - LV_OS_CMSIS_RTOS2
* - LV_OS_RTTHREAD
* - LV_OS_WINDOWS
* - LV_OS_CUSTOM
*/
#define LV_USE_OS LV_OS_CUSTOM
#define LV_OS_CUSTOM_INCLUDE "lv_os_custom.h"
@@ -1076,6 +957,7 @@
<file category="sourceC" name="src/draw/vg_lite/lv_vg_lite_decoder.c" />
<file category="sourceC" name="src/draw/vg_lite/lv_vg_lite_math.c" />
<file category="sourceC" name="src/draw/vg_lite/lv_vg_lite_path.c" />
<file category="sourceC" name="src/draw/vg_lite/lv_vg_lite_stroke.c" />
<file category="sourceC" name="src/draw/vg_lite/lv_vg_lite_grad.c" />
<file category="sourceC" name="src/draw/vg_lite/lv_vg_lite_pending.c" />
<file category="sourceC" name="src/draw/vg_lite/lv_vg_lite_utils.c" />
@@ -1343,7 +1225,8 @@
<RTE_Components_h>
/*! \brief enable Arduino LittleFs file access */
#define LV_USE_FS_ARDUINO_ESP_LITTLEFS 1
#define LV_USE_FS_ARDUINO_ESP_LITTLEFS 1
#define LV_USE_FS_ARDUINO_SD 1
</RTE_Components_h>
</component>
@@ -1493,14 +1376,27 @@
<description>Add ThorVG (vector graphics library), an extra librbary is required.</description>
<files>
<!-- src/libs/thorvg -->
<file category="sourceCpp" name="src/libs/thorvg/tvgAccessor.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgAnimation.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgBezier.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgCanvas.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgCapi.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgCompressor.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgFill.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgGlCanvas.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgInitializer.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLines.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLoader.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLottieAnimation.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLottieBuilder.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLottieExpressions.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLottieInterpolator.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLottieLoader.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLottieModel.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLottieParser.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgLottieParserHandler.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgMath.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgPaint.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgPicture.cpp" />
@@ -1526,6 +1422,8 @@
<file category="sourceCpp" name="src/libs/thorvg/tvgSwShape.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgSwStroke.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgTaskScheduler.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgText.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgWgCanvas.cpp" />
<file category="sourceCpp" name="src/libs/thorvg/tvgXmlParser.cpp" />
</files>
@@ -1686,6 +1584,7 @@
<file category="sourceC" name="demos/benchmark/assets/img_benchmark_cogwheel_argb.c" />
<file category="sourceC" name="demos/benchmark/assets/img_benchmark_cogwheel_indexed16.c" />
<file category="sourceC" name="demos/benchmark/assets/img_benchmark_cogwheel_rgb.c" />
<file category="sourceC" name="demos/benchmark/assets/img_benchmark_avatar.c" />
<file category="sourceC" name="demos/benchmark/assets/lv_font_benchmark_montserrat_12_compr_az.c.c" />
<file category="sourceC" name="demos/benchmark/assets/lv_font_benchmark_montserrat_16_compr_az.c.c" />
@@ -1799,6 +1698,7 @@
<file category="sourceC" name="demos/render/assets/img_render_lvgl_logo_rgb565.c" />
<file category="sourceC" name="demos/render/assets/img_render_lvgl_logo_rgb888.c" />
<file category="sourceC" name="demos/render/assets/img_render_lvgl_logo_xrgb8888.c" />
<file category="sourceC" name="demos/render/assets/img_render_lvgl_logo_i1.c" />
</files>

View File

@@ -2,8 +2,8 @@
<index schemaVersion="1.0.0" xs:noNamespaceSchemaLocation="PackIndex.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<vendor>LVGL</vendor>
<url>https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/</url>
<timestamp>2024-04-30</timestamp>
<timestamp>2024-08-26</timestamp>
<pindex>
<pdsc url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/" vendor="LVGL" name="lvgl" version="9.1.1-dev2"/>
<pdsc url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/" vendor="LVGL" name="lvgl" version="9.2.0"/>
</pindex>
</index>

View File

@@ -40,71 +40,38 @@ remove the misleading guide above this code segment.
4. Remove macro definitions for
- LV_USE_DEMO_WIDGETS
- LV_USE_DEMO_BENCHMARK
- LV_USE_IME_PINYIN
- LV_USE_OS
- LV_USE_FILE_EXPLORER
- LV_USE_DEMO_WIDGETS
- LV_USE_DEMO_KEYPAD_AND_ENCODER
- LV_USE_DEMO_BENCHMARK
- LV_USE_DEMO_RENDER
- LV_USE_DEMO_STRESS
- LV_USE_DEMO_MUSIC
- LV_USE_DEMO_FLEX_LAYOUT
- LV_USE_DEMO_MULTILANG
- LV_USE_DEMO_TRANSFORM
- LV_USE_DEMO_SCROLL
- LV_USE_DEMO_VECTOR_GRAPHIC
- LV_USE_DRAW_VGLITE
- LV_USE_DRAW_VG_LITE
- LV_USE_DRAW_PXP
- LV_USE_DRAW_SDL
- LV_USE_DRAW_ARM2D
- LV_USE_SNAPSHOT
- LV_USE_MONKEY
- LV_USE_GRIDNAV
- LV_USE_FRAGMENT
- LV_USE_IMGFONT
- LV_USE_LINUX_DRM
- LV_USE_TFT_ESPI
- LV_USE_ST7735
- LV_USE_ST7789
- LV_USE_ST7796
- LV_USE_ILI9341
- LV_USE_RENESAS_GLCDC
5. Update `LV_LOG_PRINTF` to `1` and `LV_LOG_LEVEL` to `LV_LOG_LEVEL_USER`
@@ -118,7 +85,7 @@ remove the misleading guide above this code segment.
#define LV_DRAW_BUF_STRIDE_ALIGN 4
#define LV_ATTRIBUTE_MEM_ALIGN __attribute__((aligned(4)))
```
Make sure `LV_MEM_SIZE` is no less than `(128*1024U)`.
Make sure `LV_MEM_SIZE` is no less than `(72*1024U)`.
8. Remove following macro definitions in the `3rd party libraries` section:
@@ -221,6 +188,14 @@ with:
14. Add the following macro definition to **COLOR SETTINGS** section:
```c
#define LV_COLOR_16_SWAP 0
```
14. rename '**lv_conf_template.h**' to '**lv_conf_cmsis.h**'.

View File

@@ -1,6 +1,6 @@
/**
* @file lv_conf.h
* Configuration file for v9.1.1-dev
/**
* @file lv_conf_cmsis.h
* Configuration file for v9.2.0
*/
/* clang-format off */
@@ -9,9 +9,7 @@
#ifndef LV_CONF_H
#define LV_CONF_H
#if defined(_RTE_)
#include "RTE_Components.h"
#endif
#include "RTE_Components.h"
/*If you need to include anything here, do it inside the `__ASSEMBLY__` guard */
#if 0 && defined(__ASSEMBLY__)
@@ -22,9 +20,11 @@
COLOR SETTINGS
*====================*/
/*Color depth: 8 (A8), 16 (RGB565), 24 (RGB888), 32 (XRGB8888)*/
/*Color depth: 1 (I1), 8 (L8), 16 (RGB565), 24 (RGB888), 32 (XRGB8888)*/
#define LV_COLOR_DEPTH 16
#define LV_COLOR_16_SWAP 0
/*=========================
STDLIB WRAPPER SETTINGS
*=========================*/
@@ -40,6 +40,12 @@
#define LV_USE_STDLIB_STRING LV_STDLIB_BUILTIN
#define LV_USE_STDLIB_SPRINTF LV_STDLIB_BUILTIN
#define LV_STDINT_INCLUDE <stdint.h>
#define LV_STDDEF_INCLUDE <stddef.h>
#define LV_STDBOOL_INCLUDE <stdbool.h>
#define LV_INTTYPES_INCLUDE <inttypes.h>
#define LV_LIMITS_INCLUDE <limits.h>
#define LV_STDARG_INCLUDE <stdarg.h>
#if LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN
/*Size of the memory available for `lv_malloc()` in bytes (>= 2kB)*/
@@ -81,6 +87,15 @@
/*=================
* OPERATING SYSTEM
*=================*/
/*Select an operating system to use. Possible options:
* - LV_OS_NONE
* - LV_OS_PTHREAD
* - LV_OS_FREERTOS
* - LV_OS_CMSIS_RTOS2
* - LV_OS_RTTHREAD
* - LV_OS_WINDOWS
* - LV_OS_MQX
* - LV_OS_CUSTOM */
#if LV_USE_OS == LV_OS_CUSTOM
#define LV_OS_CUSTOM_INCLUDE <stdint.h>
@@ -96,6 +111,12 @@
/*Align the start address of draw_buf addresses to this bytes*/
#define LV_DRAW_BUF_ALIGN 4
/*Using matrix for transformations.
*Requirements:
`LV_USE_MATRIX = 1`.
The rendering engine needs to support 3x3 matrix transformations.*/
#define LV_DRAW_TRANSFORM_USE_MATRIX 0
/* If a widget has `style_opa < 255` (not `bg_opa`, `text_opa` etc) or not NORMAL blend mode
* it is buffered into a "simple" layer before rendering. The widget can be buffered in smaller chunks.
* "Transformed layers" (if `transform_angle/zoom` are set) use larger buffers
@@ -104,9 +125,32 @@
/*The target buffer size for simple layer chunks.*/
#define LV_DRAW_LAYER_SIMPLE_BUF_SIZE (24 * 1024) /*[bytes]*/
/* The stack size of the drawing thread.
* NOTE: If FreeType or ThorVG is enabled, it is recommended to set it to 32KB or more.
*/
#define LV_DRAW_THREAD_STACK_SIZE (8 * 1024) /*[bytes]*/
#define LV_USE_DRAW_SW 1
#if LV_USE_DRAW_SW == 1
/* Set the number of draw unit.
/*
* Selectively disable color format support in order to reduce code size.
* NOTE: some features use certain color formats internally, e.g.
* - gradients use RGB888
* - bitmaps with transparency may use ARGB8888
*/
#define LV_DRAW_SW_SUPPORT_RGB565 1
#define LV_DRAW_SW_SUPPORT_RGB565A8 1
#define LV_DRAW_SW_SUPPORT_RGB888 1
#define LV_DRAW_SW_SUPPORT_XRGB8888 1
#define LV_DRAW_SW_SUPPORT_ARGB8888 1
#define LV_DRAW_SW_SUPPORT_L8 1
#define LV_DRAW_SW_SUPPORT_AL88 1
#define LV_DRAW_SW_SUPPORT_A8 1
#define LV_DRAW_SW_SUPPORT_I1 1
/* Set the number of draw unit.
* > 1 requires an operating system enabled in `LV_USE_OS`
* > 1 means multiple threads will render the screen in parallel */
#define LV_DRAW_SW_DRAW_UNIT_CNT 1
@@ -134,7 +178,7 @@
#if !defined(LV_USE_DRAW_SW_ASM) && defined(RTE_Acceleration_Arm_2D)
/*turn-on helium acceleration when Arm-2D and the Helium-powered device are detected */
#if defined(__ARM_FEATURE_MVE) && __ARM_FEATURE_MVE
#define LV_USE_DRAW_SW_ASM LV_DRAW_SW_ASM_HELIUM
#define LV_USE_DRAW_SW_ASM LV_DRAW_SW_ASM_HELIUM
#define LV_USE_DRAW_ARM2D_SYNC 1
#endif
#endif
@@ -146,8 +190,12 @@
#if LV_USE_DRAW_SW_ASM == LV_DRAW_SW_ASM_CUSTOM
#define LV_DRAW_SW_ASM_CUSTOM_INCLUDE ""
#endif
/* Enable drawing complex gradients in software: linear at an angle, radial or conical */
#define LV_USE_DRAW_SW_COMPLEX_GRADIENTS 0
#endif
/* Use NXP's VG-Lite GPU on iMX RTxxx platforms. */
#if LV_USE_DRAW_VGLITE
/* Enable blit quality degradation workaround recommended for screen's dimension > 352 pixels. */
#define LV_USE_VGLITE_BLIT_SPLIT 0
@@ -161,38 +209,36 @@
#define LV_USE_VGLITE_ASSERT 0
#endif
/* Use NXP's PXP on iMX RTxxx platforms. */
#if LV_USE_DRAW_PXP
/* Enable PXP asserts. */
#define LV_USE_PXP_ASSERT 0
#endif
/* Use VG-Lite GPU. */
#define LV_USE_DRAW_VG_LITE 0
#if LV_USE_DRAW_VG_LITE
/* Enable VG-Lite custom external 'gpu_init()' function */
#define LV_VG_LITE_USE_GPU_INIT 0
/* Enable VG-Lite custom external 'gpu_init()' function */
#define LV_VG_LITE_USE_GPU_INIT 0
/* Enable VG-Lite assert. */
#define LV_VG_LITE_USE_ASSERT 0
/* Enable VG-Lite assert. */
#define LV_VG_LITE_USE_ASSERT 0
/* VG-Lite flush commit trigger threshold. GPU will try to batch these many draw tasks. */
#define LV_VG_LITE_FLUSH_MAX_COUNT 8
/* VG-Lite flush commit trigger threshold. GPU will try to batch these many draw tasks. */
#define LV_VG_LITE_FLUSH_MAX_COUNT 8
/* Enable border to simulate shadow
* NOTE: which usually improves performance,
* but does not guarantee the same rendering quality as the software. */
#define LV_VG_LITE_USE_BOX_SHADOW 0
/* Enable border to simulate shadow
* NOTE: which usually improves performance,
* but does not guarantee the same rendering quality as the software. */
#define LV_VG_LITE_USE_BOX_SHADOW 0
/* VG-Lite linear gradient image maximum cache number.
* NOTE: The memory usage of a single gradient image is 4K bytes.
*/
#define LV_VG_LITE_LINEAR_GRAD_CACHE_CNT 32
/* VG-Lite gradient maximum cache number.
* NOTE: The memory usage of a single gradient image is 4K bytes.
*/
#define LV_VG_LITE_GRAD_CACHE_CNT 32
/* VG-Lite radial gradient image maximum cache size.
* NOTE: The memory usage of a single gradient image is radial grad radius * 4 bytes.
*/
#define LV_VG_LITE_RADIAL_GRAD_CACHE_CNT 32
/* VG-Lite stroke maximum cache number.
*/
#define LV_VG_LITE_STROKE_CACHE_CNT 32
#endif
@@ -215,7 +261,7 @@
*LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail
*LV_LOG_LEVEL_USER Only logs added by the user
*LV_LOG_LEVEL_NONE Do not log anything*/
#define LV_LOG_LEVEL LV_LOG_LEVEL_USER
#define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
/*1: Print the log with 'printf';
*0: User need to register a callback with `lv_log_register_print_cb()`*/
@@ -234,6 +280,7 @@
*0: Do not print file and line number of the log*/
#define LV_LOG_USE_FILE_LINE 1
/*Enable/disable LV_LOG_TRACE in modules that produces a huge number of logs*/
#define LV_LOG_TRACE_MEM 1
#define LV_LOG_TRACE_TIMER 1
@@ -290,8 +337,8 @@
/*Default cache size in bytes.
*Used by image decoders such as `lv_lodepng` to keep the decoded image in the memory.
*Data larger than the size of the cache also can be allocated but
*will be dropped immediately after usage.*/
*If size is not set to 0, the decoder will fail to decode when the cache is full.
*If size is 0, the cache function is not enabled and the decoded mem will be released immediately after use.*/
#define LV_CACHE_DEF_SIZE 0
/*Default number of image header cache entries. The cache is used to store the headers of images
@@ -313,10 +360,15 @@
#define LV_USE_OBJ_ID 0
/* Automatically assign an ID when obj is created */
#define LV_OBJ_ID_AUTO_ASSIGN 1
#define LV_OBJ_ID_AUTO_ASSIGN LV_USE_OBJ_ID
/* Use lvgl builtin method for obj ID */
#define LV_USE_OBJ_ID_BUILTIN 0
/*Use the builtin obj ID handler functions:
* - lv_obj_assign_id: Called when a widget is created. Use a separate counter for each widget class as an ID.
* - lv_obj_id_compare: Compare the ID to decide if it matches with a requested value.
* - lv_obj_stringify_id: Return e.g. "button3"
* - lv_obj_free_id: Does nothing, as there is no memory allocation for the ID.
* When disabled these functions needs to be implemented by the user.*/
#define LV_USE_OBJ_ID_BUILTIN 1
/*Use obj property set/get API*/
#define LV_USE_OBJ_PROPERTY 0
@@ -336,6 +388,9 @@
/*Enable YUV color format support*/
#define LV_VG_LITE_THORVG_YUV_SUPPORT 0
/*Enable Linear gradient extension support*/
#define LV_VG_LITE_THORVG_LINEAR_GRADIENT_EXT_SUPPORT 0
/*Enable 16 pixels alignment*/
#define LV_VG_LITE_THORVG_16PIXELS_ALIGN 1
@@ -364,7 +419,7 @@
#define LV_ATTRIBUTE_FLUSH_READY
/*Required alignment size for buffers*/
#define LV_ATTRIBUTE_MEM_ALIGN_SIZE 4
#define LV_ATTRIBUTE_MEM_ALIGN_SIZE 1
/*Will be added where memories needs to be aligned (with -Os data might not be aligned to boundary by default).
* E.g. __attribute__((aligned(4)))*/
@@ -389,6 +444,13 @@
/* Use `float` as `lv_value_precise_t` */
#define LV_USE_FLOAT 0
/*Enable matrix support
*Requires `LV_USE_FLOAT = 1`*/
#define LV_USE_MATRIX 0
/*Include `lvgl_private.h` in `lvgl.h` to access internal data and functions by default*/
#define LV_USE_PRIVATE_API 0
/*==================
* FONT USAGE
*===================*/
@@ -549,6 +611,8 @@
#define LV_USE_LIST 1
#define LV_USE_LOTTIE 0 /*Requires: lv_canvas, thorvg */
#define LV_USE_MENU 1
#define LV_USE_MSGBOX 1
@@ -624,6 +688,9 @@
/*File system interfaces for common APIs */
/*Setting a default driver letter allows skipping the driver prefix in filepaths*/
#define LV_FS_DEFAULT_DRIVE_LETTER '\0'
/*API for fopen, fread, etc*/
#if LV_USE_FS_STDIO
#define LV_FS_STDIO_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
@@ -669,21 +736,17 @@
/*API for Arduino Sd. */
#if LV_USE_FS_ARDUINO_SD
#define LV_FS_ARDUINO_SD_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_ARDUINO_SD_CS_PIN 0 /*Set the pin connected to the chip select line of the SD card */
#define LV_FS_ARDUINO_SD_FREQUENCY 40000000 /*Set the frequency used by the chip of the SD CARD */
#endif
/*GIF decoder library*/
#if LV_USE_GIF
/*GIF decoder accelerate*/
#define LV_GIF_CACHE_DECODE_DATA 0
/*GIF decoder accelerate*/
#define LV_GIF_CACHE_DECODE_DATA 0
#endif
/*Decode bin images to RAM*/
#define LV_BIN_DECODER_RAM_LOAD 0
/*FreeType library*/
#if LV_USE_FREETYPE
/*Let FreeType to use LVGL memory and file porting*/
@@ -698,9 +761,9 @@
#if LV_USE_TINY_TTF
/* Enable loading TTF data from files */
#define LV_TINY_TTF_FILE_SUPPORT 0
#define LV_TINY_TTF_CACHE_GLYPH_CNT 256
#endif
/*Enable Vector Graphic APIs*/
#ifndef LV_USE_VECTOR_GRAPHIC
# define LV_USE_VECTOR_GRAPHIC 0
@@ -714,6 +777,8 @@
/*Enable LZ4 compress/decompress lib*/
#ifndef LV_USE_LZ4
# define LV_USE_LZ4 0
/*Use lvgl built-in LZ4 lib*/
# define LV_USE_LZ4_INTERNAL 0
@@ -734,8 +799,9 @@
/*1: Enable system monitor component*/
#define LV_USE_SYSMON 0
#if LV_USE_SYSMON
/*Get the idle percentage. E.g. uint32_t my_get_idle(void);*/
#define LV_SYSMON_GET_IDLE lv_timer_get_idle
/*1: Show CPU usage and FPS count
* Requires `LV_USE_SYSMON = 1`*/
@@ -783,6 +849,7 @@
#define LV_PROFILER_END_TAG LV_PROFILER_BUILTIN_END_TAG
#endif
/*1: Enable an observer pattern implementation*/
#define LV_USE_OBSERVER 1
@@ -818,11 +885,11 @@
*==================*/
/*Use SDL to open window on PC and handle mouse and keyboard*/
#define LV_USE_SDL 0
#if LV_USE_SDL
#define LV_SDL_INCLUDE_PATH <SDL2/SDL.h>
#define LV_SDL_RENDER_MODE LV_DISPLAY_RENDER_MODE_DIRECT /*LV_DISPLAY_RENDER_MODE_DIRECT is recommended for best performance*/
#define LV_SDL_BUF_COUNT 1 /*1 or 2*/
#define LV_SDL_ACCELERATED 1 /*1: Use hardware acceleration*/
#define LV_SDL_FULLSCREEN 0 /*1: Make the window full screen by default*/
#define LV_SDL_DIRECT_EXIT 1 /*1: Exit the application when all SDL windows are closed*/
#define LV_SDL_MOUSEWHEEL_MODE LV_SDL_MOUSEWHEEL_MODE_ENCODER /*LV_SDL_MOUSEWHEEL_MODE_ENCODER/CROWN*/
@@ -839,8 +906,14 @@
#define LV_X11_RENDER_MODE_FULL 0 /*Full render mode*/
#endif
/*Use Wayland to open a window and handle input on Linux or BSD desktops */
#define LV_USE_WAYLAND 0
#if LV_USE_WAYLAND
#define LV_WAYLAND_WINDOW_DECORATIONS 0 /*Draw client side window decorations only necessary on Mutter/GNOME*/
#define LV_WAYLAND_WL_SHELL 0 /*Use the legacy wl_shell protocol instead of the default XDG shell*/
#endif
/*Driver for /dev/fb*/
#define LV_USE_LINUX_FBDEV 0
#if LV_USE_LINUX_FBDEV
#define LV_LINUX_FBDEV_BSD 0
#define LV_LINUX_FBDEV_RENDER_MODE LV_DISPLAY_RENDER_MODE_PARTIAL
@@ -869,6 +942,7 @@
#endif
/*Driver for evdev input devices*/
#define LV_USE_EVDEV 0
@@ -888,6 +962,22 @@
#define LV_USE_GENERIC_MIPI (LV_USE_ST7735 | LV_USE_ST7789 | LV_USE_ST7796 | LV_USE_ILI9341)
/* LVGL Windows backend */
#define LV_USE_WINDOWS 0
/* Use OpenGL to open window on PC and handle mouse and keyboard */
#define LV_USE_OPENGLES 0
#if LV_USE_OPENGLES
#define LV_USE_OPENGLES_DEBUG 1 /* Enable or disable debug for opengles */
#endif
/* QNX Screen display and input drivers */
#define LV_USE_QNX 0
#if LV_USE_QNX
#define LV_QNX_BUF_COUNT 1 /*1 or 2*/
#endif
/*==================
* EXAMPLES
*==================*/

2
env_support/qnx/Makefile Normal file
View File

@@ -0,0 +1,2 @@
LIST=CPU
include recurse.mk

View File

@@ -0,0 +1,2 @@
LIST=VARIANT
include recurse.mk

View File

@@ -0,0 +1 @@
include ../../common.mk

View File

@@ -0,0 +1 @@
include ../../common.mk

123
env_support/qnx/common.mk Normal file
View File

@@ -0,0 +1,123 @@
ifndef QCONFIG
QCONFIG=qconfig.mk
endif
include $(QCONFIG)
define PINFO
PINFO DESCRIPTION = Light and Versatile Graphics Library
endef
INSTALLDIR=
NAME=lvgl
USEFILE=
SRC_ROOT=$(PROJECT_ROOT)/../../src
EXTRA_SRCVPATH=$(SRC_ROOT) \
$(SRC_ROOT)/libs \
$(SRC_ROOT)/libs/bmp \
$(SRC_ROOT)/libs/libjpeg_turbo \
$(SRC_ROOT)/libs/fsdrv \
$(SRC_ROOT)/libs/libpng \
$(SRC_ROOT)/libs/bin_decoder \
$(SRC_ROOT)/libs/tiny_ttf \
$(SRC_ROOT)/libs/barcode \
$(SRC_ROOT)/libs/rlottie \
$(SRC_ROOT)/libs/qrcode \
$(SRC_ROOT)/libs/lz4 \
$(SRC_ROOT)/libs/ffmpeg \
$(SRC_ROOT)/libs/tjpgd \
$(SRC_ROOT)/libs/thorvg \
$(SRC_ROOT)/libs/thorvg/rapidjson \
$(SRC_ROOT)/libs/thorvg/rapidjson/internal \
$(SRC_ROOT)/libs/thorvg/rapidjson/error \
$(SRC_ROOT)/libs/lodepng \
$(SRC_ROOT)/libs/rle \
$(SRC_ROOT)/libs/gif \
$(SRC_ROOT)/libs/freetype \
$(SRC_ROOT)/draw \
$(SRC_ROOT)/draw/vg_lite \
$(SRC_ROOT)/draw/sw \
$(SRC_ROOT)/draw/sw/arm2d \
$(SRC_ROOT)/draw/sw/blend \
$(SRC_ROOT)/draw/sw/blend/helium \
$(SRC_ROOT)/draw/sw/blend/arm2d \
$(SRC_ROOT)/draw/sw/blend/neon \
$(SRC_ROOT)/misc \
$(SRC_ROOT)/misc/cache \
$(SRC_ROOT)/font \
$(SRC_ROOT)/stdlib \
$(SRC_ROOT)/stdlib/builtin \
$(SRC_ROOT)/stdlib/rtthread \
$(SRC_ROOT)/stdlib/clib \
$(SRC_ROOT)/stdlib/micropython \
$(SRC_ROOT)/drivers \
$(SRC_ROOT)/drivers/qnx \
$(SRC_ROOT)/themes \
$(SRC_ROOT)/themes/simple \
$(SRC_ROOT)/themes/mono \
$(SRC_ROOT)/themes/default \
$(SRC_ROOT)/display \
$(SRC_ROOT)/indev \
$(SRC_ROOT)/core \
$(SRC_ROOT)/tick \
$(SRC_ROOT)/others \
$(SRC_ROOT)/others/monkey \
$(SRC_ROOT)/others/ime \
$(SRC_ROOT)/others/snapshot \
$(SRC_ROOT)/others/file_explorer \
$(SRC_ROOT)/others/imgfont \
$(SRC_ROOT)/others/fragment \
$(SRC_ROOT)/others/observer \
$(SRC_ROOT)/others/vg_lite_tvg \
$(SRC_ROOT)/others/sysmon \
$(SRC_ROOT)/others/gridnav \
$(SRC_ROOT)/widgets \
$(SRC_ROOT)/widgets/objx_templ \
$(SRC_ROOT)/widgets/tabview \
$(SRC_ROOT)/widgets/scale \
$(SRC_ROOT)/widgets/checkbox \
$(SRC_ROOT)/widgets/slider \
$(SRC_ROOT)/widgets/calendar \
$(SRC_ROOT)/widgets/bar \
$(SRC_ROOT)/widgets/win \
$(SRC_ROOT)/widgets/dropdown \
$(SRC_ROOT)/widgets/switch \
$(SRC_ROOT)/widgets/span \
$(SRC_ROOT)/widgets/canvas \
$(SRC_ROOT)/widgets/lottie \
$(SRC_ROOT)/widgets/textarea \
$(SRC_ROOT)/widgets/arc \
$(SRC_ROOT)/widgets/msgbox \
$(SRC_ROOT)/widgets/property \
$(SRC_ROOT)/widgets/chart \
$(SRC_ROOT)/widgets/table \
$(SRC_ROOT)/widgets/list \
$(SRC_ROOT)/widgets/button \
$(SRC_ROOT)/widgets/image \
$(SRC_ROOT)/widgets/line \
$(SRC_ROOT)/widgets/animimage \
$(SRC_ROOT)/widgets/roller \
$(SRC_ROOT)/widgets/spinner \
$(SRC_ROOT)/widgets/imagebutton \
$(SRC_ROOT)/widgets/led \
$(SRC_ROOT)/widgets/spinbox \
$(SRC_ROOT)/widgets/keyboard \
$(SRC_ROOT)/widgets/buttonmatrix \
$(SRC_ROOT)/widgets/menu \
$(SRC_ROOT)/widgets/label \
$(SRC_ROOT)/widgets/tileview \
$(SRC_ROOT)/layouts \
$(SRC_ROOT)/layouts/grid \
$(SRC_ROOT)/layouts/flex \
$(SRC_ROOT)/osal
PRE_TARGET=$(PROJECT_ROOT)/lv_conf.h
include $(MKFILES_ROOT)/qtargets.mk
# Generate the lv_conf.h file from the template
$(PROJECT_ROOT)/lv_conf.h: $(PROJECT_ROOT)/../../lv_conf_template.h
cp $< $@
sed -i -e "s/#if 0/#if 1/" $@
sed -i -e "s/#define LV_COLOR_DEPTH 16/#define LV_COLOR_DEPTH 32/" $@
sed -i -e "s/#define LV_USE_QNX.*/#define LV_USE_QNX 1/" $@
sed -i -e "s/#define LV_QNX_BUF_COUNT.*/#define LV_QNX_BUF_COUNT 2/" $@

View File

@@ -0,0 +1,2 @@
LIST=VARIANT
include recurse.mk

View File

@@ -0,0 +1 @@
include ../../common.mk

View File

@@ -0,0 +1 @@
include ../../common.mk

View File

@@ -47,8 +47,9 @@ static struct rt_thread lvgl_thread;
static rt_uint8_t lvgl_thread_stack[PKG_LVGL_THREAD_STACK_SIZE];
#if LV_USE_LOG
static void lv_rt_log(const char *buf)
static void lv_rt_log(lv_log_level_t level, const char * buf)
{
(void) level;
LOG_I(buf);
}
#endif /* LV_USE_LOG */
@@ -66,11 +67,11 @@ static void lvgl_thread_entry(void *parameter)
lv_log_register_print_cb(lv_rt_log);
#endif /* LV_USE_LOG */
lv_init();
lv_tick_set_cb(&rt_tick_get_millisecond);
lv_port_disp_init();
lv_port_indev_init();
lv_user_gui_init();
lv_tick_set_cb(&rt_tick_get_millisecond);
#ifdef PKG_USING_CPU_USAGE
cpu_usage_init();

View File

@@ -10,6 +10,11 @@ Playback animation
.. lv_example:: anim/lv_example_anim_2
:language: c
Cubic Bezier animation
----------------------
.. lv_example:: anim/lv_example_anim_3
:language: c
Animation timeline
------------------
.. lv_example:: anim/lv_example_anim_timeline_1

View File

@@ -7,7 +7,7 @@ static bool size_dec = false;
static void timer_cb(lv_timer_t * timer)
{
lv_obj_invalidate(timer->user_data);
lv_obj_invalidate(lv_timer_get_user_data(timer));
if(size_dec) size--;
else size++;
@@ -19,7 +19,7 @@ static void event_cb(lv_event_t * e)
{
lv_obj_t * obj = lv_event_get_target(e);
lv_draw_task_t * draw_task = lv_event_get_draw_task(e);
lv_draw_dsc_base_t * base_dsc = draw_task->draw_dsc;
lv_draw_dsc_base_t * base_dsc = lv_draw_task_get_draw_dsc(draw_task);
if(base_dsc->part == LV_PART_MAIN) {
lv_draw_rect_dsc_t draw_dsc;
lv_draw_rect_dsc_init(&draw_dsc);
@@ -36,7 +36,9 @@ static void event_cb(lv_event_t * e)
a.y1 = 0;
a.x2 = size;
a.y2 = size;
lv_area_align(&obj->coords, &a, LV_ALIGN_CENTER, 0, 0);
lv_area_t obj_coords;
lv_obj_get_coords(obj, &obj_coords);
lv_area_align(&obj_coords, &a, LV_ALIGN_CENTER, 0, 0);
lv_draw_rect(base_dsc->layer, &draw_dsc, &a);
}

Some files were not shown because too many files have changed in this diff Show More