From e1cb97b3447dfa783bb0a46f2016ac5187f8596a Mon Sep 17 00:00:00 2001 From: Ultibo Date: Tue, 19 Sep 2017 13:18:05 +1000 Subject: [PATCH] Latest commits (Ultibo core 2.0.029) Major additions: Completed VC4 unit to support Ultibo port of Userland libraries Driver for VCHIQ protocol to enable all VideoCore IV functionality New completion objects similar to Linux completions Fixes for pThread implementation Support for sockets interface from C code Numerous additional Syscalls functions Fix for PL2303, FTDISerial and USBCDCACM transmit deadlock New units for OpenGL ES 1.1, OpenGL ES 2.0, OpenVG, EGL and DispmanX Port of OpenVG shapes library to Ultibo See the forum announcements for more information --- source/packages/ultibounits/fpmake.pp | 6 + source/packages/ultibounits/src/dispmanx.pas | 384 + source/packages/ultibounits/src/egl.pas | 662 + source/packages/ultibounits/src/openvg.pas | 932 ++ source/packages/ultibounits/src/ubitmap.pas | 602 + .../ultibounits/src/vgfonts/DejaVuSans.inc | 2221 +++ .../src/vgfonts/DejaVuSansMono.inc | 2246 +++ .../ultibounits/src/vgfonts/DejaVuSerif.inc | 2698 ++++ source/packages/ultibounits/src/vgshapes.pas | 1880 +++ source/rtl/ultibo/Makefile | 178 +- source/rtl/ultibo/Makefile.fpc | 8 +- source/rtl/ultibo/core/bcm2708.pas | 2 +- source/rtl/ultibo/core/bcm2709.pas | 2 +- source/rtl/ultibo/core/bcm2710.pas | 2 +- source/rtl/ultibo/core/console.pas | 2 +- source/rtl/ultibo/core/dwcotg.pas | 29 +- source/rtl/ultibo/core/filesystem.pas | 80 +- source/rtl/ultibo/core/globalconfig.pas | 43 +- source/rtl/ultibo/core/globalconst.pas | 45 +- source/rtl/ultibo/core/globaldefines.inc | 3 +- source/rtl/ultibo/core/globalsock.pas | 2 +- source/rtl/ultibo/core/globaltypes.pas | 17 + source/rtl/ultibo/core/keyboard.pas | 56 +- source/rtl/ultibo/core/logging.pas | 45 +- source/rtl/ultibo/core/mouse.pas | 54 +- source/rtl/ultibo/core/network.pas | 4 +- source/rtl/ultibo/core/platform.pas | 125 +- source/rtl/ultibo/core/platformarmv6.pas | 100 +- source/rtl/ultibo/core/platformarmv7.pas | 100 +- source/rtl/ultibo/core/platformarmv8.pas | 100 +- source/rtl/ultibo/core/platformrpi.pas | 4 +- source/rtl/ultibo/core/platformrpi2.pas | 2 +- source/rtl/ultibo/core/platformrpi3.pas | 2 +- source/rtl/ultibo/core/ps2.pas | 2 +- source/rtl/ultibo/core/sockets.pas | 23 + source/rtl/ultibo/core/storage.pas | 39 +- source/rtl/ultibo/core/syscalls.pas | 1511 +- source/rtl/ultibo/core/threads.pas | 1305 +- source/rtl/ultibo/core/touch.pas | 4 +- source/rtl/ultibo/core/ultiboutils.pas | 93 +- source/rtl/ultibo/core/usb.pas | 282 +- source/rtl/ultibo/core/vc4.pas | 2269 ++- source/rtl/ultibo/core/vc4v3d.pas | 745 + source/rtl/ultibo/core/vc4vchiq.pas | 11387 ++++++++++++++++ source/rtl/ultibo/drivers/ftdiserial.pas | 3 + source/rtl/ultibo/drivers/pl110.pas | 2 +- source/rtl/ultibo/drivers/pl2303.pas | 3 + source/rtl/ultibo/drivers/usbcdcacm.pas | 3 + source/rtl/ultibo/extra/WebStatus.pas | 22 +- source/rtl/ultibo/rpi.cfg.template | 3 +- source/rtl/ultibo/rpi2.cfg.template | 3 +- source/rtl/ultibo/rpi3.cfg.template | 2 + source/rtl/ultibo/sysutils.pp | 24 +- units/armv6-ultibo/lib/vc4/libEGL.a | Bin 0 -> 215536 bytes units/armv6-ultibo/lib/vc4/libGLESv2.a | Bin 0 -> 96736 bytes units/armv6-ultibo/lib/vc4/libOpenVG.a | Bin 0 -> 78742 bytes units/armv6-ultibo/lib/vc4/libWFC.a | Bin 0 -> 76428 bytes units/armv6-ultibo/lib/vc4/libbcm_host.a | Bin 0 -> 3676 bytes units/armv6-ultibo/lib/vc4/libbrcmEGL.a | Bin 0 -> 215536 bytes units/armv6-ultibo/lib/vc4/libbrcmGLESv2.a | Bin 0 -> 96736 bytes units/armv6-ultibo/lib/vc4/libbrcmOpenVG.a | Bin 0 -> 78742 bytes units/armv6-ultibo/lib/vc4/libbrcmWFC.a | Bin 0 -> 76428 bytes units/armv6-ultibo/lib/vc4/libbrcmjpeg.a | Bin 0 -> 14832 bytes units/armv6-ultibo/lib/vc4/libcontainers.a | Bin 0 -> 515118 bytes units/armv6-ultibo/lib/vc4/libilclient.a | Bin 0 -> 24036 bytes units/armv6-ultibo/lib/vc4/libkhrn_client.a | Bin 0 -> 12994 bytes units/armv6-ultibo/lib/vc4/libmmal.a | Bin 0 -> 9106 bytes .../armv6-ultibo/lib/vc4/libmmal_components.a | Bin 0 -> 72162 bytes units/armv6-ultibo/lib/vc4/libmmal_core.a | Bin 0 -> 82188 bytes units/armv6-ultibo/lib/vc4/libmmal_omx.a | Bin 0 -> 60056 bytes units/armv6-ultibo/lib/vc4/libmmal_omxutil.a | Bin 0 -> 32082 bytes units/armv6-ultibo/lib/vc4/libmmal_util.a | Bin 0 -> 76718 bytes .../armv6-ultibo/lib/vc4/libmmal_vc_client.a | Bin 0 -> 46216 bytes units/armv6-ultibo/lib/vc4/libopenmaxil.a | Bin 0 -> 4668 bytes units/armv6-ultibo/lib/vc4/libreader_asf.a | Bin 0 -> 85230 bytes units/armv6-ultibo/lib/vc4/libreader_avi.a | Bin 0 -> 60842 bytes units/armv6-ultibo/lib/vc4/libreader_binary.a | Bin 0 -> 19786 bytes units/armv6-ultibo/lib/vc4/libreader_flv.a | Bin 0 -> 65538 bytes .../lib/vc4/libreader_metadata_id3.a | Bin 0 -> 35346 bytes units/armv6-ultibo/lib/vc4/libreader_mkv.a | Bin 0 -> 90934 bytes units/armv6-ultibo/lib/vc4/libreader_mp4.a | Bin 0 -> 87590 bytes units/armv6-ultibo/lib/vc4/libreader_mpga.a | Bin 0 -> 36798 bytes units/armv6-ultibo/lib/vc4/libreader_ps.a | Bin 0 -> 64144 bytes units/armv6-ultibo/lib/vc4/libreader_qsynth.a | Bin 0 -> 28042 bytes .../lib/vc4/libreader_raw_video.a | Bin 0 -> 29478 bytes units/armv6-ultibo/lib/vc4/libreader_rcv.a | Bin 0 -> 22094 bytes units/armv6-ultibo/lib/vc4/libreader_rtp.a | Bin 0 -> 121498 bytes units/armv6-ultibo/lib/vc4/libreader_rtsp.a | Bin 0 -> 65066 bytes units/armv6-ultibo/lib/vc4/libreader_rv9.a | Bin 0 -> 21810 bytes units/armv6-ultibo/lib/vc4/libreader_simple.a | Bin 0 -> 30042 bytes units/armv6-ultibo/lib/vc4/libreader_wav.a | Bin 0 -> 26418 bytes units/armv6-ultibo/lib/vc4/libtvservice.a | Bin 0 -> 25376 bytes units/armv6-ultibo/lib/vc4/libvchiq_arm.a | Bin 0 -> 21836 bytes units/armv6-ultibo/lib/vc4/libvchostif.a | Bin 0 -> 98230 bytes units/armv6-ultibo/lib/vc4/libvcilcs.a | Bin 0 -> 25202 bytes units/armv6-ultibo/lib/vc4/libvcos.a | Bin 0 -> 220026 bytes units/armv6-ultibo/lib/vc4/libvcsm.a | Bin 0 -> 20080 bytes units/armv6-ultibo/lib/vc4/libvcsmem.a | Bin 0 -> 9600 bytes units/armv6-ultibo/lib/vc4/libwriter_asf.a | Bin 0 -> 46382 bytes units/armv6-ultibo/lib/vc4/libwriter_avi.a | Bin 0 -> 75370 bytes units/armv6-ultibo/lib/vc4/libwriter_binary.a | Bin 0 -> 18094 bytes units/armv6-ultibo/lib/vc4/libwriter_dummy.a | Bin 0 -> 16958 bytes units/armv6-ultibo/lib/vc4/libwriter_mp4.a | Bin 0 -> 104486 bytes .../lib/vc4/libwriter_raw_video.a | Bin 0 -> 22466 bytes units/armv6-ultibo/lib/vc4/libwriter_simple.a | Bin 0 -> 23962 bytes units/armv7-ultibo/lib/vc4/libEGL.a | Bin 0 -> 213956 bytes units/armv7-ultibo/lib/vc4/libGLESv2.a | Bin 0 -> 95052 bytes units/armv7-ultibo/lib/vc4/libOpenVG.a | Bin 0 -> 78586 bytes units/armv7-ultibo/lib/vc4/libWFC.a | Bin 0 -> 75712 bytes units/armv7-ultibo/lib/vc4/libbcm_host.a | Bin 0 -> 3680 bytes units/armv7-ultibo/lib/vc4/libbrcmEGL.a | Bin 0 -> 213956 bytes units/armv7-ultibo/lib/vc4/libbrcmGLESv2.a | Bin 0 -> 95052 bytes units/armv7-ultibo/lib/vc4/libbrcmOpenVG.a | Bin 0 -> 78586 bytes units/armv7-ultibo/lib/vc4/libbrcmWFC.a | Bin 0 -> 75712 bytes units/armv7-ultibo/lib/vc4/libbrcmjpeg.a | Bin 0 -> 14920 bytes units/armv7-ultibo/lib/vc4/libcontainers.a | Bin 0 -> 516690 bytes units/armv7-ultibo/lib/vc4/libilclient.a | Bin 0 -> 23812 bytes units/armv7-ultibo/lib/vc4/libkhrn_client.a | Bin 0 -> 12954 bytes units/armv7-ultibo/lib/vc4/libmmal.a | Bin 0 -> 9110 bytes .../armv7-ultibo/lib/vc4/libmmal_components.a | Bin 0 -> 72162 bytes units/armv7-ultibo/lib/vc4/libmmal_core.a | Bin 0 -> 82040 bytes units/armv7-ultibo/lib/vc4/libmmal_omx.a | Bin 0 -> 60092 bytes units/armv7-ultibo/lib/vc4/libmmal_omxutil.a | Bin 0 -> 32082 bytes units/armv7-ultibo/lib/vc4/libmmal_util.a | Bin 0 -> 76826 bytes .../armv7-ultibo/lib/vc4/libmmal_vc_client.a | Bin 0 -> 46364 bytes units/armv7-ultibo/lib/vc4/libopenmaxil.a | Bin 0 -> 4688 bytes units/armv7-ultibo/lib/vc4/libreader_asf.a | Bin 0 -> 85114 bytes units/armv7-ultibo/lib/vc4/libreader_avi.a | Bin 0 -> 60582 bytes units/armv7-ultibo/lib/vc4/libreader_binary.a | Bin 0 -> 19822 bytes units/armv7-ultibo/lib/vc4/libreader_flv.a | Bin 0 -> 65430 bytes .../lib/vc4/libreader_metadata_id3.a | Bin 0 -> 35574 bytes units/armv7-ultibo/lib/vc4/libreader_mkv.a | Bin 0 -> 90866 bytes units/armv7-ultibo/lib/vc4/libreader_mp4.a | Bin 0 -> 87670 bytes units/armv7-ultibo/lib/vc4/libreader_mpga.a | Bin 0 -> 36526 bytes units/armv7-ultibo/lib/vc4/libreader_ps.a | Bin 0 -> 64620 bytes units/armv7-ultibo/lib/vc4/libreader_qsynth.a | Bin 0 -> 27650 bytes .../lib/vc4/libreader_raw_video.a | Bin 0 -> 29106 bytes units/armv7-ultibo/lib/vc4/libreader_rcv.a | Bin 0 -> 22114 bytes units/armv7-ultibo/lib/vc4/libreader_rtp.a | Bin 0 -> 121514 bytes units/armv7-ultibo/lib/vc4/libreader_rtsp.a | Bin 0 -> 64694 bytes units/armv7-ultibo/lib/vc4/libreader_rv9.a | Bin 0 -> 21742 bytes units/armv7-ultibo/lib/vc4/libreader_simple.a | Bin 0 -> 30118 bytes units/armv7-ultibo/lib/vc4/libreader_wav.a | Bin 0 -> 26242 bytes units/armv7-ultibo/lib/vc4/libtvservice.a | Bin 0 -> 25376 bytes units/armv7-ultibo/lib/vc4/libvchiq_arm.a | Bin 0 -> 21304 bytes units/armv7-ultibo/lib/vc4/libvchostif.a | Bin 0 -> 98466 bytes units/armv7-ultibo/lib/vc4/libvcilcs.a | Bin 0 -> 24558 bytes units/armv7-ultibo/lib/vc4/libvcos.a | Bin 0 -> 220250 bytes units/armv7-ultibo/lib/vc4/libvcsm.a | Bin 0 -> 20080 bytes units/armv7-ultibo/lib/vc4/libvcsmem.a | Bin 0 -> 9604 bytes units/armv7-ultibo/lib/vc4/libwriter_asf.a | Bin 0 -> 46594 bytes units/armv7-ultibo/lib/vc4/libwriter_avi.a | Bin 0 -> 75818 bytes units/armv7-ultibo/lib/vc4/libwriter_binary.a | Bin 0 -> 18114 bytes units/armv7-ultibo/lib/vc4/libwriter_dummy.a | Bin 0 -> 16978 bytes units/armv7-ultibo/lib/vc4/libwriter_mp4.a | Bin 0 -> 104994 bytes .../lib/vc4/libwriter_raw_video.a | Bin 0 -> 22534 bytes units/armv7-ultibo/lib/vc4/libwriter_simple.a | Bin 0 -> 24038 bytes 157 files changed, 29578 insertions(+), 783 deletions(-) create mode 100644 source/packages/ultibounits/src/dispmanx.pas create mode 100644 source/packages/ultibounits/src/egl.pas create mode 100644 source/packages/ultibounits/src/openvg.pas create mode 100644 source/packages/ultibounits/src/vgfonts/DejaVuSans.inc create mode 100644 source/packages/ultibounits/src/vgfonts/DejaVuSansMono.inc create mode 100644 source/packages/ultibounits/src/vgfonts/DejaVuSerif.inc create mode 100644 source/packages/ultibounits/src/vgshapes.pas create mode 100644 source/rtl/ultibo/core/vc4v3d.pas create mode 100644 source/rtl/ultibo/core/vc4vchiq.pas create mode 100644 units/armv6-ultibo/lib/vc4/libEGL.a create mode 100644 units/armv6-ultibo/lib/vc4/libGLESv2.a create mode 100644 units/armv6-ultibo/lib/vc4/libOpenVG.a create mode 100644 units/armv6-ultibo/lib/vc4/libWFC.a create mode 100644 units/armv6-ultibo/lib/vc4/libbcm_host.a create mode 100644 units/armv6-ultibo/lib/vc4/libbrcmEGL.a create mode 100644 units/armv6-ultibo/lib/vc4/libbrcmGLESv2.a create mode 100644 units/armv6-ultibo/lib/vc4/libbrcmOpenVG.a create mode 100644 units/armv6-ultibo/lib/vc4/libbrcmWFC.a create mode 100644 units/armv6-ultibo/lib/vc4/libbrcmjpeg.a create mode 100644 units/armv6-ultibo/lib/vc4/libcontainers.a create mode 100644 units/armv6-ultibo/lib/vc4/libilclient.a create mode 100644 units/armv6-ultibo/lib/vc4/libkhrn_client.a create mode 100644 units/armv6-ultibo/lib/vc4/libmmal.a create mode 100644 units/armv6-ultibo/lib/vc4/libmmal_components.a create mode 100644 units/armv6-ultibo/lib/vc4/libmmal_core.a create mode 100644 units/armv6-ultibo/lib/vc4/libmmal_omx.a create mode 100644 units/armv6-ultibo/lib/vc4/libmmal_omxutil.a create mode 100644 units/armv6-ultibo/lib/vc4/libmmal_util.a create mode 100644 units/armv6-ultibo/lib/vc4/libmmal_vc_client.a create mode 100644 units/armv6-ultibo/lib/vc4/libopenmaxil.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_asf.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_avi.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_binary.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_flv.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_metadata_id3.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_mkv.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_mp4.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_mpga.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_ps.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_qsynth.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_raw_video.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_rcv.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_rtp.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_rtsp.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_rv9.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_simple.a create mode 100644 units/armv6-ultibo/lib/vc4/libreader_wav.a create mode 100644 units/armv6-ultibo/lib/vc4/libtvservice.a create mode 100644 units/armv6-ultibo/lib/vc4/libvchiq_arm.a create mode 100644 units/armv6-ultibo/lib/vc4/libvchostif.a create mode 100644 units/armv6-ultibo/lib/vc4/libvcilcs.a create mode 100644 units/armv6-ultibo/lib/vc4/libvcos.a create mode 100644 units/armv6-ultibo/lib/vc4/libvcsm.a create mode 100644 units/armv6-ultibo/lib/vc4/libvcsmem.a create mode 100644 units/armv6-ultibo/lib/vc4/libwriter_asf.a create mode 100644 units/armv6-ultibo/lib/vc4/libwriter_avi.a create mode 100644 units/armv6-ultibo/lib/vc4/libwriter_binary.a create mode 100644 units/armv6-ultibo/lib/vc4/libwriter_dummy.a create mode 100644 units/armv6-ultibo/lib/vc4/libwriter_mp4.a create mode 100644 units/armv6-ultibo/lib/vc4/libwriter_raw_video.a create mode 100644 units/armv6-ultibo/lib/vc4/libwriter_simple.a create mode 100644 units/armv7-ultibo/lib/vc4/libEGL.a create mode 100644 units/armv7-ultibo/lib/vc4/libGLESv2.a create mode 100644 units/armv7-ultibo/lib/vc4/libOpenVG.a create mode 100644 units/armv7-ultibo/lib/vc4/libWFC.a create mode 100644 units/armv7-ultibo/lib/vc4/libbcm_host.a create mode 100644 units/armv7-ultibo/lib/vc4/libbrcmEGL.a create mode 100644 units/armv7-ultibo/lib/vc4/libbrcmGLESv2.a create mode 100644 units/armv7-ultibo/lib/vc4/libbrcmOpenVG.a create mode 100644 units/armv7-ultibo/lib/vc4/libbrcmWFC.a create mode 100644 units/armv7-ultibo/lib/vc4/libbrcmjpeg.a create mode 100644 units/armv7-ultibo/lib/vc4/libcontainers.a create mode 100644 units/armv7-ultibo/lib/vc4/libilclient.a create mode 100644 units/armv7-ultibo/lib/vc4/libkhrn_client.a create mode 100644 units/armv7-ultibo/lib/vc4/libmmal.a create mode 100644 units/armv7-ultibo/lib/vc4/libmmal_components.a create mode 100644 units/armv7-ultibo/lib/vc4/libmmal_core.a create mode 100644 units/armv7-ultibo/lib/vc4/libmmal_omx.a create mode 100644 units/armv7-ultibo/lib/vc4/libmmal_omxutil.a create mode 100644 units/armv7-ultibo/lib/vc4/libmmal_util.a create mode 100644 units/armv7-ultibo/lib/vc4/libmmal_vc_client.a create mode 100644 units/armv7-ultibo/lib/vc4/libopenmaxil.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_asf.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_avi.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_binary.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_flv.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_metadata_id3.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_mkv.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_mp4.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_mpga.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_ps.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_qsynth.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_raw_video.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_rcv.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_rtp.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_rtsp.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_rv9.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_simple.a create mode 100644 units/armv7-ultibo/lib/vc4/libreader_wav.a create mode 100644 units/armv7-ultibo/lib/vc4/libtvservice.a create mode 100644 units/armv7-ultibo/lib/vc4/libvchiq_arm.a create mode 100644 units/armv7-ultibo/lib/vc4/libvchostif.a create mode 100644 units/armv7-ultibo/lib/vc4/libvcilcs.a create mode 100644 units/armv7-ultibo/lib/vc4/libvcos.a create mode 100644 units/armv7-ultibo/lib/vc4/libvcsm.a create mode 100644 units/armv7-ultibo/lib/vc4/libvcsmem.a create mode 100644 units/armv7-ultibo/lib/vc4/libwriter_asf.a create mode 100644 units/armv7-ultibo/lib/vc4/libwriter_avi.a create mode 100644 units/armv7-ultibo/lib/vc4/libwriter_binary.a create mode 100644 units/armv7-ultibo/lib/vc4/libwriter_dummy.a create mode 100644 units/armv7-ultibo/lib/vc4/libwriter_mp4.a create mode 100644 units/armv7-ultibo/lib/vc4/libwriter_raw_video.a create mode 100644 units/armv7-ultibo/lib/vc4/libwriter_simple.a diff --git a/source/packages/ultibounits/fpmake.pp b/source/packages/ultibounits/fpmake.pp index c038837..d376d6a 100644 --- a/source/packages/ultibounits/fpmake.pp +++ b/source/packages/ultibounits/fpmake.pp @@ -17,6 +17,7 @@ P.Directory:=ADirectory; {$endif ALLPACKAGES} P.Version:='3.1.1'; + P.Dependencies.Add('pasjpeg'); //Add pasjpeg for JPEGLib units P.Dependencies.Add('fcl-image'); //Add fcl-image for BMPcomn unit P.Author := 'Garry Wood'; @@ -35,6 +36,11 @@ T:=P.Targets.AddUnit('ubitmap.pas'); T:=P.Targets.AddUnit('uscreenshot.pas'); + T:=P.Targets.AddUnit('dispmanx.pas'); + T:=P.Targets.AddUnit('egl.pas'); + T:=P.Targets.AddUnit('openvg.pas'); + T:=P.Targets.AddUnit('vgshapes.pas'); + {$ifndef ALLPACKAGES} Run; end; diff --git a/source/packages/ultibounits/src/dispmanx.pas b/source/packages/ultibounits/src/dispmanx.pas new file mode 100644 index 0000000..e44877d --- /dev/null +++ b/source/packages/ultibounits/src/dispmanx.pas @@ -0,0 +1,384 @@ +{DispmanX Headers: + + Ported to FreePascal by Garry Wood + + Original Copyright: + + Copyright (c) 2012, Broadcom Europe Ltd + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + } + +unit DispmanX; + +{$mode objfpc} {Default to ObjFPC compatible syntax} +{$H+} {Default to AnsiString} +{$inline on} {Allow use of Inline procedures} + +interface + +uses {$ifdef ultibo}GlobalTypes,{$endif}SysUtils{$ifdef ultibo},Syscalls{$endif},VC4; + +{$PACKRECORDS C} + +const + libvchostif = 'vchostif'; + +{$linklib libvchostif} + +{$ifndef ultibo} +type + int32_t = Longint; + + uint8_t = Byte; + uint32_t = LongWord; + Puint32_t = ^uint32_t; +{$endif} + +{From interface\vmcs_host\vc_dispmanx_types.h} +const + VC_DISPMANX_VERSION = 1; + + { Opaque handles } +type + PDISPMANX_DISPLAY_HANDLE_T = ^DISPMANX_DISPLAY_HANDLE_T; + DISPMANX_DISPLAY_HANDLE_T = uint32_t; + + PDISPMANX_UPDATE_HANDLE_T = ^DISPMANX_UPDATE_HANDLE_T; + DISPMANX_UPDATE_HANDLE_T = uint32_t; + + PDISPMANX_ELEMENT_HANDLE_T = ^DISPMANX_ELEMENT_HANDLE_T; + DISPMANX_ELEMENT_HANDLE_T = uint32_t; + + PDISPMANX_RESOURCE_HANDLE_T = ^DISPMANX_RESOURCE_HANDLE_T; + DISPMANX_RESOURCE_HANDLE_T = uint32_t; + + PDISPMANX_PROTECTION_T = ^DISPMANX_PROTECTION_T; + DISPMANX_PROTECTION_T = uint32_t; + +const + DISPMANX_NO_HANDLE = 0; + + DISPMANX_PROTECTION_MAX = $0f; + DISPMANX_PROTECTION_NONE = 0; + DISPMANX_PROTECTION_HDCP = 11; { Derived from the WM DRM levels, 101-300 } + + + { Default display IDs. + Note: if you overwrite with your own dispmanx_platform_init function, you + should use IDs you provided during dispmanx_display_attach. } + DISPMANX_ID_MAIN_LCD = 0; + DISPMANX_ID_AUX_LCD = 1; + DISPMANX_ID_HDMI = 2; + DISPMANX_ID_SDTV = 3; + DISPMANX_ID_FORCE_LCD = 4; + DISPMANX_ID_FORCE_TV = 5; + DISPMANX_ID_FORCE_OTHER = 6; { non-default display } + +type + PDISPMANX_STATUS_T = ^DISPMANX_STATUS_T; + DISPMANX_STATUS_T = int32_t; +const + { Return codes. Nonzero ones indicate failure. } + DISPMANX_SUCCESS = 0; + DISPMANX_INVALID = -1; + { XXX others TBA } + +type + PDISPMANX_TRANSFORM_T = ^DISPMANX_TRANSFORM_T; + DISPMANX_TRANSFORM_T = uint32_t; +const + { Bottom 2 bits sets the orientation } + DISPMANX_NO_ROTATE = 0; + DISPMANX_ROTATE_90 = 1; + DISPMANX_ROTATE_180 = 2; + DISPMANX_ROTATE_270 = 3; + + DISPMANX_FLIP_HRIZ = 1 shl 16; + DISPMANX_FLIP_VERT = 1 shl 17; + + { invert left/right images } + DISPMANX_STEREOSCOPIC_INVERT = 1 shl 19; + + { extra flags for controlling 3d duplication behaviour } + DISPMANX_STEREOSCOPIC_NONE = 0 shl 20; + DISPMANX_STEREOSCOPIC_MONO = 1 shl 20; + DISPMANX_STEREOSCOPIC_SBS = 2 shl 20; + DISPMANX_STEREOSCOPIC_TB = 3 shl 20; + DISPMANX_STEREOSCOPIC_MASK = 15 shl 20; + + { extra flags for controlling snapshot behaviour } + DISPMANX_SNAPSHOT_NO_YUV = 1 shl 24; + DISPMANX_SNAPSHOT_NO_RGB = 1 shl 25; + DISPMANX_SNAPSHOT_FILL = 1 shl 26; + DISPMANX_SNAPSHOT_SWAP_RED_BLUE = 1 shl 27; + DISPMANX_SNAPSHOT_PACK = 1 shl 28; + +type + PDISPMANX_FLAGS_ALPHA_T = ^DISPMANX_FLAGS_ALPHA_T; + DISPMANX_FLAGS_ALPHA_T = uint32_t; +const + { Bottom 2 bits sets the alpha mode } + DISPMANX_FLAGS_ALPHA_FROM_SOURCE = 0; + DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS = 1; + DISPMANX_FLAGS_ALPHA_FIXED_NON_ZERO = 2; + DISPMANX_FLAGS_ALPHA_FIXED_EXCEED_0X07 = 3; + + DISPMANX_FLAGS_ALPHA_PREMULT = 1 shl 16; + DISPMANX_FLAGS_ALPHA_MIX = 1 shl 17; + +type + PDISPMANX_ALPHA_T = ^DISPMANX_ALPHA_T; + DISPMANX_ALPHA_T = record + flags : DISPMANX_FLAGS_ALPHA_T; + opacity : uint32_t; + mask : PVC_IMAGE_T; + end; + + PVC_DISPMANX_ALPHA_T = ^VC_DISPMANX_ALPHA_T; { for use with vmcs_host } + VC_DISPMANX_ALPHA_T = record + flags : DISPMANX_FLAGS_ALPHA_T; + opacity : uint32_t; + mask : DISPMANX_RESOURCE_HANDLE_T; + end; + +type + PDISPMANX_FLAGS_CLAMP_T = ^DISPMANX_FLAGS_CLAMP_T; + DISPMANX_FLAGS_CLAMP_T = uint32_t; +const + DISPMANX_FLAGS_CLAMP_NONE = 0; + DISPMANX_FLAGS_CLAMP_LUMA_TRANSPARENT = 1; + {DISPMANX_FLAGS_CLAMP_TRANSPARENT = 2;} + {DISPMANX_FLAGS_CLAMP_REPLACE = 3;} + DISPMANX_FLAGS_CLAMP_CHROMA_TRANSPARENT = 2; + DISPMANX_FLAGS_CLAMP_TRANSPARENT = 3; + +type + PDISPMANX_FLAGS_KEYMASK_T = ^DISPMANX_FLAGS_KEYMASK_T; + DISPMANX_FLAGS_KEYMASK_T = uint32_t; +const + DISPMANX_FLAGS_KEYMASK_OVERRIDE = 1; + DISPMANX_FLAGS_KEYMASK_SMOOTH = 1 shl 1; + DISPMANX_FLAGS_KEYMASK_CR_INV = 1 shl 2; + DISPMANX_FLAGS_KEYMASK_CB_INV = 1 shl 3; + DISPMANX_FLAGS_KEYMASK_YY_INV = 1 shl 4; + +type + PDISPMANX_CLAMP_KEYS_T = ^DISPMANX_CLAMP_KEYS_T; + DISPMANX_CLAMP_KEYS_T = record + case longint of + 0 : ( yuv : record + yy_upper : uint8_t; + yy_lower : uint8_t; + cr_upper : uint8_t; + cr_lower : uint8_t; + cb_upper : uint8_t; + cb_lower : uint8_t; + end ); + 1 : ( rgb : record + red_upper : uint8_t; + red_lower : uint8_t; + blue_upper : uint8_t; + blue_lower : uint8_t; + green_upper : uint8_t; + green_lower : uint8_t; + end ); + end; + + PDISPMANX_CLAMP_T = ^DISPMANX_CLAMP_T; + DISPMANX_CLAMP_T = record + mode : DISPMANX_FLAGS_CLAMP_T; + key_mask : DISPMANX_FLAGS_KEYMASK_T; + key_value : DISPMANX_CLAMP_KEYS_T; + replace_value : uint32_t; + end; + + PDISPMANX_MODEINFO_T = ^DISPMANX_MODEINFO_T; + DISPMANX_MODEINFO_T = record + width : int32_t; + height : int32_t; + transform : DISPMANX_TRANSFORM_T; + input_format : DISPLAY_INPUT_FORMAT_T; + display_num : uint32_t; + end; + + { Update callback. } + DISPMANX_CALLBACK_FUNC_T = procedure (u:DISPMANX_UPDATE_HANDLE_T; arg:pointer); cdecl; + + { Progress callback } + DISPMANX_PROGRESS_CALLBACK_FUNC_T = procedure (u:DISPMANX_UPDATE_HANDLE_T; line:uint32_t; arg:pointer); cdecl; + + { Pluggable display interface } + Pint32_t_array3 = ^int32_t_array3; + int32_t_array3 = array[0..2] of int32_t; + + Puint32_t_array3 = ^uint32_t_array3; + uint32_t_array3 = array[0..2] of uint32_t; + + Ptag_DISPMANX_DISPLAY_FUNCS_T = ^tag_DISPMANX_DISPLAY_FUNCS_T; + tag_DISPMANX_DISPLAY_FUNCS_T = record + {Get essential HVS configuration to be passed to the HVS driver. Options + is any combination of the following flags: HVS_ONESHOT, HVS_FIFOREG, + HVS_FIFO32, HVS_AUTOHSTART, HVS_INTLACE; and if HVS_FIFOREG, one of; + ( HVS_FMT_RGB888, HVS_FMT_RGB565, HVS_FMT_RGB666, HVS_FMT_YUV) } + get_hvs_config : function (instance:pointer; pchan:Puint32_t; poptions:Puint32_t; info:PDISPLAY_INFO_T; bg_colour:Puint32_t; + test_mode:Puint32_t):int32_t; cdecl; + + {Get optional HVS configuration for gamma tables, OLED matrix and dither controls. + Set these function pointers to NULL if the relevant features are not required} + get_gamma_params : function (instance:pointer; gain:Pint32_t_array3; offset:Pint32_t_array3; gamma:Pint32_t_array3):int32_t; cdecl; + get_oled_params : function (instance:pointer; poffsets:Puint32_t; coeffs:Puint32_t_array3):int32_t; cdecl; + get_dither : function (instance:pointer; dither_depth:Puint32_t; dither_type:Puint32_t):int32_t; cdecl; + + {Get mode information, which may be returned to the applications as a courtesy. + Transform should be set to 0, and (width,height) should be final dimensions} + get_info : function (instance:pointer; info:PDISPMANX_MODEINFO_T):int32_t; cdecl; + + {Inform driver that the application refcount has become nonzero / zero + These callbacks might perhaps be used for backlight and power management} + open : function (instance:pointer):int32_t; cdecl; + close : function (instance:pointer):int32_t; cdecl; + + {Display list updated callback. Primarily of use to a "one-shot" display. + For convenience of the driver, we pass the register address of the HVS FIFO} + dlist_updated : procedure (instance:pointer; fifo_reg:Puint32_t); + + {End-of-field callback. This may occur in an interrupt context} + eof_callback : procedure (instance:pointer); cdecl; + + {Return screen resolution format} + get_input_format : function (instance:pointer):DISPLAY_INPUT_FORMAT_T; cdecl; + + suspend_resume : function (instance:pointer; up:longint):int32_t; cdecl; + + get_3d_format : function (instance:pointer):DISPLAY_3D_FORMAT_T; cdecl; + end; + DISPMANX_DISPLAY_FUNCS_T = tag_DISPMANX_DISPLAY_FUNCS_T; + PDISPMANX_DISPLAY_FUNCS_T = ^DISPMANX_DISPLAY_FUNCS_T; + +{From interface\vmcs_host\vc_dispmanx.h} + { Display manager service API } + { Same function as above, to aid migration of code. } + function vc_dispman_init:longint; cdecl; external libvchostif name 'vc_dispman_init'; + + { Stop the service from being used } + procedure vc_dispmanx_stop; cdecl; external libvchostif name 'vc_dispmanx_stop'; + + { Set the entries in the rect structure } + function vc_dispmanx_rect_set(rect:PVC_RECT_T; x_offset:uint32_t; y_offset:uint32_t; width:uint32_t; height:uint32_t):longint; cdecl; external libvchostif name 'vc_dispmanx_rect_set'; + + { Resources } + { Create a new resource } + function vc_dispmanx_resource_create(_type:VC_IMAGE_TYPE_T; width:uint32_t; height:uint32_t; native_image_handle:Puint32_t):DISPMANX_RESOURCE_HANDLE_T; cdecl; external libvchostif name 'vc_dispmanx_resource_create'; + + { Write the bitmap data to VideoCore memory } + function vc_dispmanx_resource_write_data(res:DISPMANX_RESOURCE_HANDLE_T; src_type:VC_IMAGE_TYPE_T; src_pitch:longint; src_address:pointer; rect:PVC_RECT_T):longint; cdecl; external libvchostif name 'vc_dispmanx_resource_write_data'; + + function vc_dispmanx_resource_write_data_handle(res:DISPMANX_RESOURCE_HANDLE_T; src_type:VC_IMAGE_TYPE_T; src_pitch:longint; handle:VCHI_MEM_HANDLE_T; offset:uint32_t; + rect:PVC_RECT_T):longint; cdecl; external libvchostif name 'vc_dispmanx_resource_write_data_handle'; + + function vc_dispmanx_resource_read_data(handle:DISPMANX_RESOURCE_HANDLE_T; p_rect:PVC_RECT_T; dst_address:pointer; dst_pitch:uint32_t):longint; cdecl; external libvchostif name 'vc_dispmanx_resource_read_data'; + + { Delete a resource } + function vc_dispmanx_resource_delete(res:DISPMANX_RESOURCE_HANDLE_T):longint; cdecl; external libvchostif name 'vc_dispmanx_resource_delete'; + + { Displays } + { Opens a display on the given device } + function vc_dispmanx_display_open(device:uint32_t):DISPMANX_DISPLAY_HANDLE_T; cdecl; external libvchostif name 'vc_dispmanx_display_open'; + + { Opens a display on the given device in the request mode } + function vc_dispmanx_display_open_mode(device:uint32_t; mode:uint32_t):DISPMANX_DISPLAY_HANDLE_T; cdecl; external libvchostif name 'vc_dispmanx_display_open_mode'; + + { Open an offscreen display } + function vc_dispmanx_display_open_offscreen(dest:DISPMANX_RESOURCE_HANDLE_T; orientation:DISPMANX_TRANSFORM_T):DISPMANX_DISPLAY_HANDLE_T; cdecl; external libvchostif name 'vc_dispmanx_display_open_offscreen'; + + { Change the mode of a display } + function vc_dispmanx_display_reconfigure(display:DISPMANX_DISPLAY_HANDLE_T; mode:uint32_t):longint; cdecl; external libvchostif name 'vc_dispmanx_display_reconfigure'; + + { Sets the desstination of the display to be the given resource } + function vc_dispmanx_display_set_destination(display:DISPMANX_DISPLAY_HANDLE_T; dest:DISPMANX_RESOURCE_HANDLE_T):longint; cdecl; external libvchostif name 'vc_dispmanx_display_set_destination'; + + { Set the background colour of the display } + function vc_dispmanx_display_set_background(update:DISPMANX_UPDATE_HANDLE_T; display:DISPMANX_DISPLAY_HANDLE_T; red:uint8_t; green:uint8_t; blue:uint8_t):longint; cdecl; external libvchostif name 'vc_dispmanx_display_set_background'; + + { get the width, height, frame rate and aspect ratio of the display } + function vc_dispmanx_display_get_info(display:DISPMANX_DISPLAY_HANDLE_T; pinfo:PDISPMANX_MODEINFO_T):longint; cdecl; external libvchostif name 'vc_dispmanx_display_get_info'; + + { Closes a display } + function vc_dispmanx_display_close(display:DISPMANX_DISPLAY_HANDLE_T):longint; cdecl; external libvchostif name 'vc_dispmanx_display_close'; + + { Updates } + { Start a new update, DISPMANX_NO_HANDLE on error } + function vc_dispmanx_update_start(priority:int32_t):DISPMANX_UPDATE_HANDLE_T; cdecl; external libvchostif name 'vc_dispmanx_update_start'; + + { Add an elment to a display as part of an update } + function vc_dispmanx_element_add(update:DISPMANX_UPDATE_HANDLE_T; display:DISPMANX_DISPLAY_HANDLE_T; layer:int32_t; dest_rect:PVC_RECT_T; src:DISPMANX_RESOURCE_HANDLE_T; + src_rect:PVC_RECT_T; protection:DISPMANX_PROTECTION_T; alpha:PVC_DISPMANX_ALPHA_T; clamp:PDISPMANX_CLAMP_T; transform:DISPMANX_TRANSFORM_T):DISPMANX_ELEMENT_HANDLE_T; cdecl; external libvchostif name 'vc_dispmanx_element_add'; + + { Change the source image of a display element } + function vc_dispmanx_element_change_source(update:DISPMANX_UPDATE_HANDLE_T; element:DISPMANX_ELEMENT_HANDLE_T; src:DISPMANX_RESOURCE_HANDLE_T):longint; cdecl; external libvchostif name 'vc_dispmanx_element_change_source'; + + { Change the layer number of a display element } + function vc_dispmanx_element_change_layer(update:DISPMANX_UPDATE_HANDLE_T; element:DISPMANX_ELEMENT_HANDLE_T; layer:int32_t):longint; cdecl; external libvchostif name 'vc_dispmanx_element_change_layer'; + + { Signal that a region of the bitmap has been modified } + function vc_dispmanx_element_modified(update:DISPMANX_UPDATE_HANDLE_T; element:DISPMANX_ELEMENT_HANDLE_T; rect:PVC_RECT_T):longint; cdecl; external libvchostif name 'vc_dispmanx_element_modified'; + + { Remove a display element from its display } + function vc_dispmanx_element_remove(update:DISPMANX_UPDATE_HANDLE_T; element:DISPMANX_ELEMENT_HANDLE_T):longint; cdecl; external libvchostif name 'vc_dispmanx_element_remove'; + + { Ends an update } + function vc_dispmanx_update_submit(update:DISPMANX_UPDATE_HANDLE_T; cb_func:DISPMANX_CALLBACK_FUNC_T; cb_arg:pointer):longint; cdecl; external libvchostif name 'vc_dispmanx_update_submit'; + + { End an update and wait for it to complete } + function vc_dispmanx_update_submit_sync(update:DISPMANX_UPDATE_HANDLE_T):longint; cdecl; external libvchostif name 'vc_dispmanx_update_submit_sync'; + + { Query the image formats supported in the VMCS build } + function vc_dispmanx_query_image_formats(supported_formats:Puint32_t):longint; cdecl; external libvchostif name 'vc_dispmanx_query_image_formats'; + + {New function added to VCHI to change attributes, set_opacity does not work there. } + function vc_dispmanx_element_change_attributes(update:DISPMANX_UPDATE_HANDLE_T; element:DISPMANX_ELEMENT_HANDLE_T; change_flags:uint32_t; layer:int32_t; opacity:uint8_t; + dest_rect:PVC_RECT_T; src_rect:PVC_RECT_T; mask:DISPMANX_RESOURCE_HANDLE_T; transform:DISPMANX_TRANSFORM_T):longint; cdecl; external libvchostif name 'vc_dispmanx_element_change_attributes'; + + {xxx hack to get the image pointer from a resource handle, will be obsolete real soon } + function vc_dispmanx_resource_get_image_handle(res:DISPMANX_RESOURCE_HANDLE_T):uint32_t; cdecl; external libvchostif name 'vc_dispmanx_resource_get_image_handle'; + + {Call this instead of vc_dispman_init } + procedure vc_vchi_dispmanx_init(initialise_instance:PVCHI_INSTANCE_T; connections:PPVCHI_CONNECTION_T; num_connections:uint32_t); cdecl; external libvchostif name 'vc_vchi_dispmanx_init'; + + { Take a snapshot of a display in its current state. } + { This call may block for a time; when it completes, the snapshot is ready. } + { only transform=0 is supported } + function vc_dispmanx_snapshot(display:DISPMANX_DISPLAY_HANDLE_T; snapshot_resource:DISPMANX_RESOURCE_HANDLE_T; transform:DISPMANX_TRANSFORM_T):longint; cdecl; external libvchostif name 'vc_dispmanx_snapshot'; + + { Set the resource palette (for VC_IMAGE_4BPP and VC_IMAGE_8BPP) } + function vc_dispmanx_resource_set_palette(handle:DISPMANX_RESOURCE_HANDLE_T; src_address:pointer; offset:longint; size:longint):longint; cdecl; external libvchostif name 'vc_dispmanx_resource_set_palette'; + + { Start triggering callbacks synced to vsync } + function vc_dispmanx_vsync_callback(display:DISPMANX_DISPLAY_HANDLE_T; cb_func:DISPMANX_CALLBACK_FUNC_T; cb_arg:pointer):longint; cdecl; external libvchostif name 'vc_dispmanx_vsync_callback'; + +implementation + +end. diff --git a/source/packages/ultibounits/src/egl.pas b/source/packages/ultibounits/src/egl.pas new file mode 100644 index 0000000..73044f8 --- /dev/null +++ b/source/packages/ultibounits/src/egl.pas @@ -0,0 +1,662 @@ +{EGL Headers: + + Ported to FreePascal by Garry Wood + + Original Copyright: + + ** Reference version of egl.h for EGL 1.4. + ** + ** Copyright (c) 2007-2009 The Khronos Group Inc. + ** + ** Permission is hereby granted, free of charge, to any person obtaining a + ** copy of this software and/or associated documentation files (the + ** "Materials"), to deal in the Materials without restriction, including + ** without limitation the rights to use, copy, modify, merge, publish, + ** distribute, sublicense, and/or sell copies of the Materials, and to + ** permit persons to whom the Materials are furnished to do so, subject to + ** the following conditions: + ** + ** The above copyright notice and this permission notice shall be included + ** in all copies or substantial portions of the Materials. + ** + ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + +} + +unit EGL; + +{$mode objfpc} {Default to ObjFPC compatible syntax} +{$H+} {Default to AnsiString} +{$inline on} {Allow use of Inline procedures} + +interface + +uses {$ifdef ultibo}GlobalTypes,{$endif}SysUtils{$ifndef ultibo},dynlibs{$endif}{$ifdef X},x,xlib{$endif}{$ifdef windows},Windows{$endif}{$ifdef ultibo},Syscalls{$endif}; + +{$IFDEF FPC} +{$PACKRECORDS C} +{$ENDIF} + +{$ifdef ultibo} + {$linklib libEGL} +{$endif} + +{From EGL\eglplatform.h} +type + {$ifdef X} + EGLNativeDisplayType = PDisplay; + + EGLNativeWindowType = TWindow; + + EGLNativePixmapType = TPixmap; + {$else X} + {$ifdef windows} + EGLNativeDisplayType = HDC; + + EGLNativeWindowType = HWND; + + EGLNativePixmapType = HBITMAP; + {$else windows} + EGLNativeDisplayType = Pointer; + + EGLNativeWindowType = Pointer; + + EGLNativePixmapType = Pointer; + {$endif windows} + {$endif X} + + { Define EGLint. This must be a signed integral type large enough to contain + all legal attribute names and values passed into and out of EGL, whether + their type is boolean, bitmask, enumerant (symbolic constant), integer, + handle, or other. While in general a 32-bit integer will suffice, if + handles are 64 bit types, then EGLint should be defined as a signed 64-bit + integer type. } + PEGLint = ^EGLint; + EGLint = {$ifdef win64}int64{$else}longint{$endif}; + +{From EGL\egl.h} +type + PEGLBoolean = ^EGLBoolean; + EGLBoolean = dword; + + PEGLenum = ^EGLenum; + EGLenum = dword; + + PEGLConfig = ^EGLConfig; + EGLConfig = pointer; + + PEGLContext = ^EGLContext; + EGLContext = pointer; + + PEGLDisplay = ^EGLDisplay; + EGLDisplay = pointer; + + PEGLSurface = ^EGLSurface; + EGLSurface = pointer; + + PEGLClientBuffer = ^EGLClientBuffer; + EGLClientBuffer = pointer; + + { EGL Versioning } +const + EGL_VERSION_1_0 = 1; + EGL_VERSION_1_1 = 1; + EGL_VERSION_1_2 = 1; + EGL_VERSION_1_3 = 1; + EGL_VERSION_1_4 = 1; + + { EGL Enumerants. Bitmasks and other exceptional cases aside, most + enums are assigned unique values starting at 0x3000. } + { EGL aliases } + EGL_FALSE = 0; + EGL_TRUE = 1; + { Out-of-band handle values } + EGL_DEFAULT_DISPLAY : EGLNativeDisplayType = nil; + EGL_NO_CONTEXT : EGLContext = nil; + EGL_NO_DISPLAY : EGLDisplay = nil; + EGL_NO_SURFACE : EGLSurface = nil; + + { Out-of-band attribute value } + EGL_DONT_CARE : EGLint = -1; + + { Errors / GetError return values } +const + EGL_SUCCESS = $3000; + EGL_NOT_INITIALIZED = $3001; + EGL_BAD_ACCESS = $3002; + EGL_BAD_ALLOC = $3003; + EGL_BAD_ATTRIBUTE = $3004; + EGL_BAD_CONFIG = $3005; + EGL_BAD_CONTEXT = $3006; + EGL_BAD_CURRENT_SURFACE = $3007; + EGL_BAD_DISPLAY = $3008; + EGL_BAD_MATCH = $3009; + EGL_BAD_NATIVE_PIXMAP = $300A; + EGL_BAD_NATIVE_WINDOW = $300B; + EGL_BAD_PARAMETER = $300C; + EGL_BAD_SURFACE = $300D; + { EGL 1.1 - IMG_power_management } + EGL_CONTEXT_LOST = $300E; + { Reserved 0x300F-0x301F for additional errors } + { Config attributes } + EGL_BUFFER_SIZE = $3020; + EGL_ALPHA_SIZE = $3021; + EGL_BLUE_SIZE = $3022; + EGL_GREEN_SIZE = $3023; + EGL_RED_SIZE = $3024; + EGL_DEPTH_SIZE = $3025; + EGL_STENCIL_SIZE = $3026; + EGL_CONFIG_CAVEAT = $3027; + EGL_CONFIG_ID = $3028; + EGL_LEVEL = $3029; + EGL_MAX_PBUFFER_HEIGHT = $302A; + EGL_MAX_PBUFFER_PIXELS = $302B; + EGL_MAX_PBUFFER_WIDTH = $302C; + EGL_NATIVE_RENDERABLE = $302D; + EGL_NATIVE_VISUAL_ID = $302E; + EGL_NATIVE_VISUAL_TYPE = $302F; + EGL_PRESERVED_RESOURCES = $3030; + EGL_SAMPLES = $3031; + EGL_SAMPLE_BUFFERS = $3032; + EGL_SURFACE_TYPE = $3033; + EGL_TRANSPARENT_TYPE = $3034; + EGL_TRANSPARENT_BLUE_VALUE = $3035; + EGL_TRANSPARENT_GREEN_VALUE = $3036; + EGL_TRANSPARENT_RED_VALUE = $3037; + { Attrib list terminator } + EGL_NONE = $3038; + EGL_BIND_TO_TEXTURE_RGB = $3039; + EGL_BIND_TO_TEXTURE_RGBA = $303A; + EGL_MIN_SWAP_INTERVAL = $303B; + EGL_MAX_SWAP_INTERVAL = $303C; + EGL_LUMINANCE_SIZE = $303D; + EGL_ALPHA_MASK_SIZE = $303E; + EGL_COLOR_BUFFER_TYPE = $303F; + EGL_RENDERABLE_TYPE = $3040; + { Pseudo-attribute (not queryable) } + EGL_MATCH_NATIVE_PIXMAP = $3041; + EGL_CONFORMANT = $3042; + { Reserved 0x3041-0x304F for additional config attributes } + { Config attribute values } + { EGL_CONFIG_CAVEAT value } + EGL_SLOW_CONFIG = $3050; + { EGL_CONFIG_CAVEAT value } + EGL_NON_CONFORMANT_CONFIG = $3051; + { EGL_TRANSPARENT_TYPE value } + EGL_TRANSPARENT_RGB = $3052; + { EGL_COLOR_BUFFER_TYPE value } + EGL_RGB_BUFFER = $308E; + { EGL_COLOR_BUFFER_TYPE value } + EGL_LUMINANCE_BUFFER = $308F; + { More config attribute values, for EGL_TEXTURE_FORMAT } + EGL_NO_TEXTURE = $305C; + EGL_TEXTURE_RGB = $305D; + EGL_TEXTURE_RGBA = $305E; + EGL_TEXTURE_2D = $305F; + { Config attribute mask bits } + { EGL_SURFACE_TYPE mask bits } + EGL_PBUFFER_BIT = $0001; + { EGL_SURFACE_TYPE mask bits } + EGL_PIXMAP_BIT = $0002; + { EGL_SURFACE_TYPE mask bits } + EGL_WINDOW_BIT = $0004; + { EGL_SURFACE_TYPE mask bits } + EGL_VG_COLORSPACE_LINEAR_BIT = $0020; + { EGL_SURFACE_TYPE mask bits } + EGL_VG_ALPHA_FORMAT_PRE_BIT = $0040; + { EGL_SURFACE_TYPE mask bits } + EGL_MULTISAMPLE_RESOLVE_BOX_BIT = $0200; + { EGL_SURFACE_TYPE mask bits } + EGL_SWAP_BEHAVIOR_PRESERVED_BIT = $0400; + { EGL_RENDERABLE_TYPE mask bits } + EGL_OPENGL_ES_BIT = $0001; + { EGL_RENDERABLE_TYPE mask bits } + EGL_OPENVG_BIT = $0002; + { EGL_RENDERABLE_TYPE mask bits } + EGL_OPENGL_ES2_BIT = $0004; + { EGL_RENDERABLE_TYPE mask bits } + EGL_OPENGL_BIT = $0008; + { QueryString targets } + EGL_VENDOR = $3053; + EGL_VERSION = $3054; + EGL_EXTENSIONS = $3055; + EGL_CLIENT_APIS = $308D; + { QuerySurface / SurfaceAttrib / CreatePbufferSurface targets } + EGL_HEIGHT = $3056; + EGL_WIDTH = $3057; + EGL_LARGEST_PBUFFER = $3058; + EGL_TEXTURE_FORMAT = $3080; + EGL_TEXTURE_TARGET = $3081; + EGL_MIPMAP_TEXTURE = $3082; + EGL_MIPMAP_LEVEL = $3083; + EGL_RENDER_BUFFER = $3086; + EGL_VG_COLORSPACE = $3087; + EGL_VG_ALPHA_FORMAT = $3088; + EGL_HORIZONTAL_RESOLUTION = $3090; + EGL_VERTICAL_RESOLUTION = $3091; + EGL_PIXEL_ASPECT_RATIO = $3092; + EGL_SWAP_BEHAVIOR = $3093; + EGL_MULTISAMPLE_RESOLVE = $3099; + { EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets } + EGL_BACK_BUFFER = $3084; + EGL_SINGLE_BUFFER = $3085; + { OpenVG color spaces } + { EGL_VG_COLORSPACE value } + EGL_VG_COLORSPACE_sRGB = $3089; + { EGL_VG_COLORSPACE value } + EGL_VG_COLORSPACE_LINEAR = $308A; + { OpenVG alpha formats } + { EGL_ALPHA_FORMAT value } + EGL_VG_ALPHA_FORMAT_NONPRE = $308B; + { EGL_ALPHA_FORMAT value } + EGL_VG_ALPHA_FORMAT_PRE = $308C; + { Constant scale factor by which fractional display resolutions & + aspect ratio are scaled when queried as integer values. } + EGL_DISPLAY_SCALING = 10000; + { Unknown display resolution/aspect ratio } + { was #define dname def_expr } + EGL_UNKNOWN : EGLint = -1; + + { Back buffer swap behaviors } + { EGL_SWAP_BEHAVIOR value } +const + EGL_BUFFER_PRESERVED = $3094; + { EGL_SWAP_BEHAVIOR value } + EGL_BUFFER_DESTROYED = $3095; + { CreatePbufferFromClientBuffer buffer types } + EGL_OPENVG_IMAGE = $3096; + { QueryContext targets } + EGL_CONTEXT_CLIENT_TYPE = $3097; + { CreateContext attributes } + EGL_CONTEXT_CLIENT_VERSION = $3098; + { Multisample resolution behaviors } + { EGL_MULTISAMPLE_RESOLVE value } + EGL_MULTISAMPLE_RESOLVE_DEFAULT = $309A; + { EGL_MULTISAMPLE_RESOLVE value } + EGL_MULTISAMPLE_RESOLVE_BOX = $309B; + { BindAPI/QueryAPI targets } + EGL_OPENGL_ES_API = $30A0; + EGL_OPENVG_API = $30A1; + EGL_OPENGL_API = $30A2; + { GetCurrentSurface targets } + EGL_DRAW = $3059; + EGL_READ = $305A; + { WaitNative engines } + EGL_CORE_NATIVE_ENGINE = $305B; + { EGL 1.2 tokens renamed for consistency in EGL 1.3 } + EGL_COLORSPACE = EGL_VG_COLORSPACE; + EGL_ALPHA_FORMAT = EGL_VG_ALPHA_FORMAT; + EGL_COLORSPACE_sRGB = EGL_VG_COLORSPACE_sRGB; + EGL_COLORSPACE_LINEAR = EGL_VG_COLORSPACE_LINEAR; + EGL_ALPHA_FORMAT_NONPRE = EGL_VG_ALPHA_FORMAT_NONPRE; + EGL_ALPHA_FORMAT_PRE = EGL_VG_ALPHA_FORMAT_PRE; + { EGL extensions must request enum blocks from the Khronos + API Registrar, who maintains the enumerant registry. Submit + a bug in Khronos Bugzilla against task "Registry". } + { EGL Functions } + +{$ifdef ultibo} +const + libEGL = 'EGL'; + + function eglGetError:EGLint; cdecl; external libEGL name 'eglGetError'; + function eglGetDisplay(display_id:EGLNativeDisplayType):EGLDisplay; cdecl; external libEGL name 'eglGetDisplay'; + function eglInitialize(dpy:EGLDisplay; major:pEGLint; minor:pEGLint):EGLBoolean; cdecl; external libEGL name 'eglInitialize'; + function eglTerminate(dpy:EGLDisplay):EGLBoolean; cdecl; external libEGL name 'eglTerminate'; + function eglQueryString(dpy:EGLDisplay; name:EGLint):pchar; cdecl; external libEGL name 'eglQueryString'; + function eglGetConfigs(dpy:EGLDisplay; configs:pEGLConfig; config_size:EGLint; num_config:pEGLint):EGLBoolean; cdecl; external libEGL name 'eglGetConfigs'; + function eglChooseConfig(dpy:EGLDisplay; attrib_list:pEGLint; configs:pEGLConfig; config_size:EGLint; num_config:pEGLint):EGLBoolean; cdecl; external libEGL name 'eglChooseConfig'; + function eglGetConfigAttrib(dpy:EGLDisplay; config:EGLConfig; attribute:EGLint; value:pEGLint):EGLBoolean; cdecl; external libEGL name 'eglGetConfigAttrib'; + function eglCreateWindowSurface(dpy:EGLDisplay; config:EGLConfig; win:EGLNativeWindowType; attrib_list:pEGLint):EGLSurface; cdecl; external libEGL name 'eglCreateWindowSurface'; + function eglCreatePbufferSurface(dpy:EGLDisplay; config:EGLConfig; attrib_list:pEGLint):EGLSurface; cdecl; external libEGL name 'eglCreatePbufferSurface'; + function eglCreatePixmapSurface(dpy:EGLDisplay; config:EGLConfig; pixmap:EGLNativePixmapType; attrib_list:pEGLint):EGLSurface; cdecl; external libEGL name 'eglCreatePixmapSurface'; + function eglDestroySurface(dpy:EGLDisplay; surface:EGLSurface):EGLBoolean; cdecl; external libEGL name 'eglDestroySurface'; + function eglQuerySurface(dpy:EGLDisplay; surface:EGLSurface; attribute:EGLint; value:pEGLint):EGLBoolean; cdecl; external libEGL name 'eglQuerySurface'; + function eglBindAPI(api:EGLenum):EGLBoolean; cdecl; external libEGL name 'eglBindAPI'; + function eglQueryAPI:EGLenum; cdecl; external libEGL name 'eglQueryAPI'; + function eglWaitClient:EGLBoolean; cdecl; external libEGL name 'eglWaitClient'; + function eglReleaseThread:EGLBoolean; cdecl; external libEGL name 'eglReleaseThread'; + function eglCreatePbufferFromClientBuffer(dpy:EGLDisplay; buftype:EGLenum; buffer:EGLClientBuffer; config:EGLConfig; attrib_list:pEGLint):EGLSurface; cdecl; external libEGL name 'eglCreatePbufferFromClientBuffer'; + function eglSurfaceAttrib(dpy:EGLDisplay; surface:EGLSurface; attribute:EGLint; value:EGLint):EGLBoolean; cdecl; external libEGL name 'eglSurfaceAttrib'; + function eglBindTexImage(dpy:EGLDisplay; surface:EGLSurface; buffer:EGLint):EGLBoolean; cdecl; external libEGL name 'eglBindTexImage'; + function eglReleaseTexImage(dpy:EGLDisplay; surface:EGLSurface; buffer:EGLint):EGLBoolean; cdecl; external libEGL name 'eglReleaseTexImage'; + function eglSwapInterval(dpy:EGLDisplay; interval:EGLint):EGLBoolean; cdecl; external libEGL name 'eglSwapInterval'; + function eglCreateContext(dpy:EGLDisplay; config:EGLConfig; share_context:EGLContext; attrib_list:pEGLint):EGLContext; cdecl; external libEGL name 'eglCreateContext'; + function eglDestroyContext(dpy:EGLDisplay; ctx:EGLContext):EGLBoolean; cdecl; external libEGL name 'eglDestroyContext'; + function eglMakeCurrent(dpy:EGLDisplay; draw:EGLSurface; read:EGLSurface; ctx:EGLContext):EGLBoolean; cdecl; external libEGL name 'eglMakeCurrent'; + function eglGetCurrentContext:EGLContext; cdecl; external libEGL name 'eglGetCurrentContext'; + function eglGetCurrentSurface(readdraw:EGLint):EGLSurface; cdecl; external libEGL name 'eglGetCurrentSurface'; + function eglGetCurrentDisplay:EGLDisplay; cdecl; external libEGL name 'eglGetCurrentDisplay'; + function eglQueryContext(dpy:EGLDisplay; ctx:EGLContext; attribute:EGLint; value:pEGLint):EGLBoolean; cdecl; external libEGL name 'eglQueryContext'; + function eglWaitGL:EGLBoolean; cdecl; external libEGL name 'eglWaitGL'; + function eglWaitNative(engine:EGLint):EGLBoolean; cdecl; external libEGL name 'eglWaitNative'; + function eglSwapBuffers(dpy:EGLDisplay; surface:EGLSurface):EGLBoolean; cdecl; external libEGL name 'eglSwapBuffers'; + function eglCopyBuffers(dpy:EGLDisplay; surface:EGLSurface; target:EGLNativePixmapType):EGLBoolean; cdecl; external libEGL name 'eglCopyBuffers'; + + { This is a generic function pointer type, whose name indicates it must + be cast to the proper type *and calling convention* before use. } +type + __eglMustCastToProperFunctionPointerType = procedure (_para1:pointer); cdecl; + + { Now, define eglGetProcAddress using the generic function ptr. type } + function eglGetProcAddress(procname:pchar):__eglMustCastToProperFunctionPointerType; cdecl; external libEGL name 'eglGetProcAddress'; +{$else} +var + eglGetError : function:EGLint;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglGetDisplay : function(display_id:EGLNativeDisplayType):EGLDisplay;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglInitialize : function(dpy:EGLDisplay; major:pEGLint; minor:pEGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglTerminate : function(dpy:EGLDisplay):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglQueryString : function(dpy:EGLDisplay; name:EGLint):pchar;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglGetConfigs : function(dpy:EGLDisplay; configs:pEGLConfig; config_size:EGLint; num_config:pEGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglChooseConfig : function(dpy:EGLDisplay; attrib_list:pEGLint; configs:pEGLConfig; config_size:EGLint; num_config:pEGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglGetConfigAttrib : function(dpy:EGLDisplay; config:EGLConfig; attribute:EGLint; value:pEGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglCreateWindowSurface : function(dpy:EGLDisplay; config:EGLConfig; win:EGLNativeWindowType; attrib_list:pEGLint):EGLSurface;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglCreatePbufferSurface : function(dpy:EGLDisplay; config:EGLConfig; attrib_list:pEGLint):EGLSurface;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglCreatePixmapSurface : function(dpy:EGLDisplay; config:EGLConfig; pixmap:EGLNativePixmapType; attrib_list:pEGLint):EGLSurface;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglDestroySurface : function(dpy:EGLDisplay; surface:EGLSurface):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglQuerySurface : function(dpy:EGLDisplay; surface:EGLSurface; attribute:EGLint; value:pEGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglBindAPI : function(api:EGLenum):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglQueryAPI : function:EGLenum;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglWaitClient : function:EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglReleaseThread : function:EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglCreatePbufferFromClientBuffer : function(dpy:EGLDisplay; buftype:EGLenum; buffer:EGLClientBuffer; config:EGLConfig; attrib_list:pEGLint):EGLSurface;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglSurfaceAttrib : function(dpy:EGLDisplay; surface:EGLSurface; attribute:EGLint; value:EGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglBindTexImage : function(dpy:EGLDisplay; surface:EGLSurface; buffer:EGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglReleaseTexImage : function(dpy:EGLDisplay; surface:EGLSurface; buffer:EGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglSwapInterval : function(dpy:EGLDisplay; interval:EGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglCreateContext : function(dpy:EGLDisplay; config:EGLConfig; share_context:EGLContext; attrib_list:pEGLint):EGLContext;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglDestroyContext : function(dpy:EGLDisplay; ctx:EGLContext):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglMakeCurrent : function(dpy:EGLDisplay; draw:EGLSurface; read:EGLSurface; ctx:EGLContext):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglGetCurrentContext : function:EGLContext;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglGetCurrentSurface : function(readdraw:EGLint):EGLSurface;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglGetCurrentDisplay : function:EGLDisplay;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglQueryContext : function(dpy:EGLDisplay; ctx:EGLContext; attribute:EGLint; value:pEGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglWaitGL : function:EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglWaitNative : function(engine:EGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglSwapBuffers : function(dpy:EGLDisplay; surface:EGLSurface):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglCopyBuffers : function(dpy:EGLDisplay; surface:EGLSurface; target:EGLNativePixmapType):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + { This is a generic function pointer type, whose name indicates it must + be cast to the proper type *and calling convention* before use. } +type + __eglMustCastToProperFunctionPointerType = procedure (_para1:pointer);{$ifdef windows}stdcall;{$else}cdecl;{$endif} + { Now, define eglGetProcAddress using the generic function ptr. type } +var + eglGetProcAddress : function(procname:pchar):__eglMustCastToProperFunctionPointerType;{$ifdef windows}stdcall;{$else}cdecl;{$endif} +{$endif} + +{From EGL\eglext.h} + { Header file version number } + { Current version at http://www.khronos.org/registry/egl/ } +const + EGL_EGLEXT_VERSION = 3; + EGL_KHR_config_attribs = 1; + { EGLConfig attribute } + EGL_CONFORMANT_KHR = $3042; + { EGL_SURFACE_TYPE bitfield } + EGL_VG_COLORSPACE_LINEAR_BIT_KHR = $0020; + { EGL_SURFACE_TYPE bitfield } + EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR = $0040; + EGL_KHR_lock_surface = 1; + { EGL_LOCK_USAGE_HINT_KHR bitfield } + EGL_READ_SURFACE_BIT_KHR = $0001; + { EGL_LOCK_USAGE_HINT_KHR bitfield } + EGL_WRITE_SURFACE_BIT_KHR = $0002; + { EGL_SURFACE_TYPE bitfield } + EGL_LOCK_SURFACE_BIT_KHR = $0080; + { EGL_SURFACE_TYPE bitfield } + EGL_OPTIMAL_FORMAT_BIT_KHR = $0100; + { EGLConfig attribute } + EGL_MATCH_FORMAT_KHR = $3043; + { EGL_MATCH_FORMAT_KHR value } + EGL_FORMAT_RGB_565_EXACT_KHR = $30C0; + { EGL_MATCH_FORMAT_KHR value } + EGL_FORMAT_RGB_565_KHR = $30C1; + { EGL_MATCH_FORMAT_KHR value } + EGL_FORMAT_RGBA_8888_EXACT_KHR = $30C2; + { EGL_MATCH_FORMAT_KHR value } + EGL_FORMAT_RGBA_8888_KHR = $30C3; + { eglLockSurfaceKHR attribute } + EGL_MAP_PRESERVE_PIXELS_KHR = $30C4; + { eglLockSurfaceKHR attribute } + EGL_LOCK_USAGE_HINT_KHR = $30C5; + { eglQuerySurface attribute } + EGL_BITMAP_POINTER_KHR = $30C6; + { eglQuerySurface attribute } + EGL_BITMAP_PITCH_KHR = $30C7; + { eglQuerySurface attribute } + EGL_BITMAP_ORIGIN_KHR = $30C8; + { eglQuerySurface attribute } + EGL_BITMAP_PIXEL_RED_OFFSET_KHR = $30C9; + { eglQuerySurface attribute } + EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR = $30CA; + { eglQuerySurface attribute } + EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR = $30CB; + { eglQuerySurface attribute } + EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR = $30CC; + { eglQuerySurface attribute } + EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR = $30CD; + { EGL_BITMAP_ORIGIN_KHR value } + EGL_LOWER_LEFT_KHR = $30CE; + { EGL_BITMAP_ORIGIN_KHR value } + EGL_UPPER_LEFT_KHR = $30CF; + +const + EGL_KHR_image = 1; + { eglCreateImageKHR target } + EGL_NATIVE_PIXMAP_KHR = $30B0; + +type + EGLImageKHR = Pointer; + +const + EGL_NO_IMAGE_KHR : EGLImageKHR = nil; + +const + EGL_KHR_vg_parent_image = 1; + { eglCreateImageKHR target } + EGL_VG_PARENT_IMAGE_KHR = $30BA; + EGL_KHR_gl_texture_2D_image = 1; + { eglCreateImageKHR target } + EGL_GL_TEXTURE_2D_KHR = $30B1; + { eglCreateImageKHR attribute } + EGL_GL_TEXTURE_LEVEL_KHR = $30BC; + EGL_KHR_gl_texture_cubemap_image = 1; + { eglCreateImageKHR target } + EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR = $30B3; + { eglCreateImageKHR target } + EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR = $30B4; + { eglCreateImageKHR target } + EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR = $30B5; + { eglCreateImageKHR target } + EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR = $30B6; + { eglCreateImageKHR target } + EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR = $30B7; + { eglCreateImageKHR target } + EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR = $30B8; + EGL_KHR_gl_texture_3D_image = 1; + { eglCreateImageKHR target } + EGL_GL_TEXTURE_3D_KHR = $30B2; + { eglCreateImageKHR attribute } + EGL_GL_TEXTURE_ZOFFSET_KHR = $30BD; + EGL_KHR_gl_renderbuffer_image = 1; + { eglCreateImageKHR target } + EGL_GL_RENDERBUFFER_KHR = $30B9; + EGL_KHR_image_base = 1; + { Most interfaces defined by EGL_KHR_image_pixmap above } + { eglCreateImageKHR attribute } + EGL_IMAGE_PRESERVED_KHR = $30D2; + EGL_KHR_image_pixmap = 1; + { Interfaces defined by EGL_KHR_image above } + EGL_KHR_fence_sync = 1; + +type + { EGLSyncKHR is an opaque handle to an EGL sync object } + EGLSyncKHR = Pointer; + { EGLTimeKHR is a 64-bit unsigned integer representing intervals + in nanoseconds.} + EGLTimeKHR = Qword; + +const + EGL_SYNC_FENCE_KHR = $30F9; + EGL_SYNC_REUSABLE_KHR = $30FA; + EGL_SYNC_TYPE_KHR = $30F7; + EGL_SYNC_STATUS_KHR = $30F1; + EGL_SYNC_CONDITION_KHR = $30F8; + EGL_SIGNALED_KHR = $30F2; + EGL_UNSIGNALED_KHR = $30F3; + EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR = $30F0; + EGL_SYNC_FLUSH_COMMANDS_BIT_KHR = $0001; + EGL_TIMEOUT_EXPIRED_KHR = $30F5; + EGL_CONDITION_SATISFIED_KHR = $30F6; + + EGL_FOREVER_KHR = $FFFFFFFFFFFFFFFF; + + EGL_NO_SYNC_KHR : EGLSyncKHR = nil; + +{$ifdef ultibo} + function eglCreateSyncKHR(dpy:EGLDisplay; _type:EGLenum; attrib_list:PEGLint):EGLSyncKHR; cdecl; external libEGL name 'eglCreateSyncKHR'; + function eglDestroySyncKHR(dpy:EGLDisplay; sync:EGLSyncKHR):EGLBoolean; cdecl; external libEGL name 'eglDestroySyncKHR'; + function eglClientWaitSyncKHR(dpy:EGLDisplay; sync:EGLSyncKHR; flags:EGLint; timeout:EGLTimeKHR):EGLint; cdecl; external libEGL name 'eglClientWaitSyncKHR'; + function eglSignalSyncKHR(dpy:EGLDisplay; sync:EGLSyncKHR; mode:EGLenum):EGLBoolean; cdecl; external libEGL name 'eglSignalSyncKHR'; + function eglGetSyncAttribKHR(dpy:EGLDisplay; sync:EGLSyncKHR; attribute:EGLint; value:PEGLint):EGLBoolean; cdecl; external libEGL name 'eglGetSyncAttribKHR'; +{$else} +var + eglCreateSyncKHR : function(dpy:EGLDisplay; _type:EGLenum; attrib_list:PEGLint):EGLSyncKHR;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglDestroySyncKHR : function(dpy:EGLDisplay; sync:EGLSyncKHR):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglClientWaitSyncKHR : function(dpy:EGLDisplay; sync:EGLSyncKHR; flags:EGLint; timeout:EGLTimeKHR):EGLint;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglSignalSyncKHR : function(dpy:EGLDisplay; sync:EGLSyncKHR; mode:EGLenum):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} + eglGetSyncAttribKHR : function(dpy:EGLDisplay; sync:EGLSyncKHR; attribute:EGLint; value:PEGLint):EGLBoolean;{$ifdef windows}stdcall;{$else}cdecl;{$endif} +{$endif} + +{$ifndef ultibo} +function eglGetProcedure(ahlib:tlibhandle;ProcName:pchar):pointer; +{$endif} + +implementation + +{$ifndef ultibo} + function eglGetProcedure(ahlib:tlibhandle;ProcName:pchar):pointer; + begin + result:=dynlibs.GetProcAddress(ahlib,ProcName); + if assigned(eglGetProcAddress) and not assigned(result) then + result:=eglGetProcAddress(ProcName); + end; + + var + EGLLib : tlibhandle; + + procedure FreeEGL; + begin + if EGLLib<>0 then + FreeLibrary(EGLLib); + + eglGetError:=nil; + eglGetDisplay:=nil; + eglInitialize:=nil; + eglTerminate:=nil; + eglQueryString:=nil; + eglGetConfigs:=nil; + eglChooseConfig:=nil; + eglGetConfigAttrib:=nil; + eglCreateWindowSurface:=nil; + eglCreatePbufferSurface:=nil; + eglCreatePixmapSurface:=nil; + eglDestroySurface:=nil; + eglQuerySurface:=nil; + eglBindAPI:=nil; + eglQueryAPI:=nil; + eglWaitClient:=nil; + eglReleaseThread:=nil; + eglCreatePbufferFromClientBuffer:=nil; + eglSurfaceAttrib:=nil; + eglBindTexImage:=nil; + eglReleaseTexImage:=nil; + eglSwapInterval:=nil; + eglCreateContext:=nil; + eglDestroyContext:=nil; + eglMakeCurrent:=nil; + eglGetCurrentContext:=nil; + eglGetCurrentSurface:=nil; + eglGetCurrentDisplay:=nil; + eglQueryContext:=nil; + eglWaitGL:=nil; + eglWaitNative:=nil; + eglSwapBuffers:=nil; + eglCopyBuffers:=nil; + eglGetProcAddress:=nil; + + eglCreateSyncKHR:=nil; + eglDestroySyncKHR:=nil; + eglClientWaitSyncKHR:=nil; + eglSignalSyncKHR:=nil; + eglGetSyncAttribKHR:=nil; + end; + + procedure LoadEGL(lib : pchar); + begin + FreeEGL; + EGLLib:=dynlibs.LoadLibrary(lib); + if EGLLib=0 then + raise Exception.Create(format('Could not load library: %s',[lib])); + + pointer(eglGetProcAddress):=GetProcAddress(EGLLib,'glGetProcAddress'); + + pointer(eglGetError):=eglGetProcedure(EGLLib,'eglGetError'); + pointer(eglGetDisplay):=eglGetProcedure(EGLLib,'eglGetDisplay'); + pointer(eglInitialize):=eglGetProcedure(EGLLib,'eglInitialize'); + pointer(eglTerminate):=eglGetProcedure(EGLLib,'eglTerminate'); + pointer(eglQueryString):=eglGetProcedure(EGLLib,'eglQueryString'); + pointer(eglGetConfigs):=eglGetProcedure(EGLLib,'eglGetConfigs'); + pointer(eglChooseConfig):=eglGetProcedure(EGLLib,'eglChooseConfig'); + pointer(eglGetConfigAttrib):=eglGetProcedure(EGLLib,'eglGetConfigAttrib'); + pointer(eglCreateWindowSurface):=eglGetProcedure(EGLLib,'eglCreateWindowSurface'); + pointer(eglCreatePbufferSurface):=eglGetProcedure(EGLLib,'eglCreatePbufferSurface'); + pointer(eglCreatePixmapSurface):=eglGetProcedure(EGLLib,'eglCreatePixmapSurface'); + pointer(eglDestroySurface):=eglGetProcedure(EGLLib,'eglDestroySurface'); + pointer(eglQuerySurface):=eglGetProcedure(EGLLib,'eglQuerySurface'); + pointer(eglBindAPI):=eglGetProcedure(EGLLib,'eglBindAPI'); + pointer(eglQueryAPI):=eglGetProcedure(EGLLib,'eglQueryAPI'); + pointer(eglWaitClient):=eglGetProcedure(EGLLib,'eglWaitClient'); + pointer(eglReleaseThread):=eglGetProcedure(EGLLib,'eglReleaseThread'); + pointer(eglCreatePbufferFromClientBuffer):=eglGetProcedure(EGLLib,'eglCreatePbufferFromClientBuffer'); + pointer(eglSurfaceAttrib):=eglGetProcedure(EGLLib,'eglSurfaceAttrib'); + pointer(eglBindTexImage):=eglGetProcedure(EGLLib,'eglBindTexImage'); + pointer(eglReleaseTexImage):=eglGetProcedure(EGLLib,'eglReleaseTexImage'); + pointer(eglSwapInterval):=eglGetProcedure(EGLLib,'eglSwapInterval'); + pointer(eglCreateContext):=eglGetProcedure(EGLLib,'eglCreateContext'); + pointer(eglDestroyContext):=eglGetProcedure(EGLLib,'eglDestroyContext'); + pointer(eglMakeCurrent):=eglGetProcedure(EGLLib,'eglMakeCurrent'); + pointer(eglGetCurrentContext):=eglGetProcedure(EGLLib,'eglGetCurrentContext'); + pointer(eglGetCurrentSurface):=eglGetProcedure(EGLLib,'eglGetCurrentSurface'); + pointer(eglGetCurrentDisplay):=eglGetProcedure(EGLLib,'eglGetCurrentDisplay'); + pointer(eglQueryContext):=eglGetProcedure(EGLLib,'eglQueryContext'); + pointer(eglWaitGL):=eglGetProcedure(EGLLib,'eglWaitGL'); + pointer(eglWaitNative):=eglGetProcedure(EGLLib,'eglWaitNative'); + pointer(eglSwapBuffers):=eglGetProcedure(EGLLib,'eglSwapBuffers'); + pointer(eglCopyBuffers):=eglGetProcedure(EGLLib,'eglCopyBuffers'); + + pointer(eglCreateSyncKHR):=eglGetProcedure(EGLLib,'eglCreateSyncKHR'); + pointer(eglDestroySyncKHR):=eglGetProcedure(EGLLib,'eglDestroySyncKHR'); + pointer(eglClientWaitSyncKHR):=eglGetProcedure(EGLLib,'eglClientWaitSyncKHR'); + pointer(eglSignalSyncKHR):=eglGetProcedure(EGLLib,'eglSignalSyncKHR'); + pointer(eglGetSyncAttribKHR):=eglGetProcedure(EGLLib,'eglGetSyncAttribKHR'); + end; +{$endif} + +initialization +{$ifndef ultibo} + EGLLib:=0; + LoadEGL({$ifdef windows}'libEGL.dll'{$else}'libEGL.so'{$endif}); +{$endif} +finalization +{$ifndef ultibo} + FreeEGL; +{$endif} +end. + \ No newline at end of file diff --git a/source/packages/ultibounits/src/openvg.pas b/source/packages/ultibounits/src/openvg.pas new file mode 100644 index 0000000..df3c32b --- /dev/null +++ b/source/packages/ultibounits/src/openvg.pas @@ -0,0 +1,932 @@ +{OpenVG Headers: + + Ported to FreePascal by Garry Wood + + Original Copyright: + + * OpenVG 1.1 Reference Implementation + * ------------------------------------- + * + * Copyright (c) 2008 The Khronos Group Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and /or associated documentation files + * (the "Materials "), to deal in the Materials without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Materials, + * and to permit persons to whom the Materials are furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR + * THE USE OR OTHER DEALINGS IN THE MATERIALS. + +} + +unit OpenVG; + +{$mode objfpc} {Default to ObjFPC compatible syntax} +{$H+} {Default to AnsiString} +{$inline on} {Allow use of Inline procedures} + +interface + +uses {$ifdef ultibo}GlobalTypes,{$endif}SysUtils{$ifdef ultibo},Syscalls{$endif}; + +{$PACKRECORDS C} + +const + libOpenVG = 'OpenVG'; + +{$linklib libOpenVG} + +{$ifndef ultibo} +type + int8_t = Shortint; + int16_t = Smallint; + int32_t = Longint; + + uint8_t = Byte; + uint16_t = Word; + uint32_t = LongWord; +{$endif} + +{From VG\vgplatform.h} +type + PVGfloat = ^VGfloat; + PVGbyte = ^VGbyte; + PVGubyte = ^VGubyte; + PVGshort = ^VGshort; + PVGint = ^VGint; + PVGuint = ^VGuint; + PVGbitfield = ^VGbitfield; + + VGfloat = float_t; {khronos_float_t} + VGbyte = int8_t; {khronos_int8_t} + VGubyte = uint8_t; {khronos_uint8_t} + VGshort = int16_t; {khronos_int16_t} + VGint = int32_t; {khronos_int32_t} + VGuint = uint32_t; {khronos_uint32_t} + VGbitfield = uint32_t; {khronos_uint32_t} + +{From VG\openvg.h} +const + OPENVG_VERSION_1_0 = 1; + OPENVG_VERSION_1_0_1 = 1; + OPENVG_VERSION_1_1 = 2; + +const + VG_MAXSHORT = $7FFF; + +const + VG_MAXINT = $7FFFFFFF; + +const + VG_MAX_ENUM = $7FFFFFFF; + +type + PVGHandle = ^VGHandle; + VGHandle = VGuint; + + PVGPath = ^VGPath; + VGPath = VGHandle; + + PVGImage = ^VGImage; + VGImage = VGHandle; + + PVGMaskLayer = ^VGMaskLayer; + VGMaskLayer = VGHandle; + + PVGFont = ^VGFont; + VGFont = VGHandle; + + PVGPaint = ^VGPaint; + VGPaint = VGHandle; + +const + VG_INVALID_HANDLE:VGHandle = 0; + +type + PVGboolean = ^VGboolean; + VGboolean = VGuint; + +const + VG_FALSE = 0; + VG_TRUE = 1; + +type + PVGErrorCode = ^VGErrorCode; + VGErrorCode = VGint; +const + VG_NO_ERROR = 0; + VG_BAD_HANDLE_ERROR = $1000; + VG_ILLEGAL_ARGUMENT_ERROR = $1001; + VG_OUT_OF_MEMORY_ERROR = $1002; + VG_PATH_CAPABILITY_ERROR = $1003; + VG_UNSUPPORTED_IMAGE_FORMAT_ERROR = $1004; + VG_UNSUPPORTED_PATH_FORMAT_ERROR = $1005; + VG_IMAGE_IN_USE_ERROR = $1006; + VG_NO_CONTEXT_ERROR = $1007; + + VG_ERROR_CODE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGParamType = ^VGParamType; + VGParamType = VGint; +const + {Mode settings} + VG_MATRIX_MODE = $1100; + VG_FILL_RULE = $1101; + VG_IMAGE_QUALITY = $1102; + VG_RENDERING_QUALITY = $1103; + VG_BLEND_MODE = $1104; + VG_IMAGE_MODE = $1105; + + {Scissoring rectangles} + VG_SCISSOR_RECTS = $1106; + + {Color Transformation} + VG_COLOR_TRANSFORM = $1170; + VG_COLOR_TRANSFORM_VALUES = $1171; + + {Stroke parameters} + VG_STROKE_LINE_WIDTH = $1110; + VG_STROKE_CAP_STYLE = $1111; + VG_STROKE_JOIN_STYLE = $1112; + VG_STROKE_MITER_LIMIT = $1113; + VG_STROKE_DASH_PATTERN = $1114; + VG_STROKE_DASH_PHASE = $1115; + VG_STROKE_DASH_PHASE_RESET = $1116; + + {Edge fill color for VG_TILE_FILL tiling mode} + VG_TILE_FILL_COLOR = $1120; + + {Color for vgClear} + VG_CLEAR_COLOR = $1121; + + {Glyph origin} + VG_GLYPH_ORIGIN = $1122; + + {Enable/disable alpha masking and scissoring} + VG_MASKING = $1130; + VG_SCISSORING = $1131; + + {Pixel layout information} + VG_PIXEL_LAYOUT = $1140; + VG_SCREEN_LAYOUT = $1141; + + {Source format selection for image filters} + VG_FILTER_FORMAT_LINEAR = $1150; + VG_FILTER_FORMAT_PREMULTIPLIED = $1151; + + {Destination write enable mask for image filters} + VG_FILTER_CHANNEL_MASK = $1152; + + {Implementation limits (read-only)} + VG_MAX_SCISSOR_RECTS = $1160; + VG_MAX_DASH_COUNT = $1161; + VG_MAX_KERNEL_SIZE = $1162; + VG_MAX_SEPARABLE_KERNEL_SIZE = $1163; + VG_MAX_COLOR_RAMP_STOPS = $1164; + VG_MAX_IMAGE_WIDTH = $1165; + VG_MAX_IMAGE_HEIGHT = $1166; + VG_MAX_IMAGE_PIXELS = $1167; + VG_MAX_IMAGE_BYTES = $1168; + VG_MAX_FLOAT = $1169; + VG_MAX_GAUSSIAN_STD_DEVIATION = $116A; + + VG_PARAM_TYPE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGRenderingQuality = ^VGRenderingQuality; + VGRenderingQuality = VGint; +const + VG_RENDERING_QUALITY_NONANTIALIASED = $1200; + VG_RENDERING_QUALITY_FASTER = $1201; + VG_RENDERING_QUALITY_BETTER = $1202; {Default} + + VG_RENDERING_QUALITY_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPixelLayout = ^VGPixelLayout; + VGPixelLayout = VGint; +const + VG_PIXEL_LAYOUT_UNKNOWN = $1300; + VG_PIXEL_LAYOUT_RGB_VERTICAL = $1301; + VG_PIXEL_LAYOUT_BGR_VERTICAL = $1302; + VG_PIXEL_LAYOUT_RGB_HORIZONTAL = $1303; + VG_PIXEL_LAYOUT_BGR_HORIZONTAL = $1304; + + VG_PIXEL_LAYOUT_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGMatrixMode = ^VGMatrixMode; + VGMatrixMode = VGint; +const + VG_MATRIX_PATH_USER_TO_SURFACE = $1400; + VG_MATRIX_IMAGE_USER_TO_SURFACE = $1401; + VG_MATRIX_FILL_PAINT_TO_USER = $1402; + VG_MATRIX_STROKE_PAINT_TO_USER = $1403; + VG_MATRIX_GLYPH_USER_TO_SURFACE = $1404; + + VG_MATRIX_MODE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGMaskOperation = ^VGMaskOperation; + VGMaskOperation = VGint; +const + VG_CLEAR_MASK = $1500; + VG_FILL_MASK = $1501; + VG_SET_MASK = $1502; + VG_UNION_MASK = $1503; + VG_INTERSECT_MASK = $1504; + VG_SUBTRACT_MASK = $1505; + + VG_MASK_OPERATION_FORCE_SIZE = VG_MAX_ENUM; + +const + VG_PATH_FORMAT_STANDARD = 0; + +type + PVGPathDatatype = ^VGPathDatatype; + VGPathDatatype = VGint; +const + VG_PATH_DATATYPE_S_8 = 0; + VG_PATH_DATATYPE_S_16 = 1; + VG_PATH_DATATYPE_S_32 = 2; + VG_PATH_DATATYPE_F = 3; + + VG_PATH_DATATYPE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPathAbsRel = ^VGPathAbsRel; + VGPathAbsRel = VGint; +const + VG_ABSOLUTE = 0; + VG_RELATIVE = 1; + + VG_PATH_ABS_REL_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPathSegment = ^VGPathSegment; + VGPathSegment = VGint; +const + VG_CLOSE_PATH = 0 shl 1; + VG_MOVE_TO = 1 shl 1; + VG_LINE_TO = 2 shl 1; + VG_HLINE_TO = 3 shl 1; + VG_VLINE_TO = 4 shl 1; + VG_QUAD_TO = 5 shl 1; + VG_CUBIC_TO = 6 shl 1; + VG_SQUAD_TO = 7 shl 1; + VG_SCUBIC_TO = 8 shl 1; + VG_SCCWARC_TO = 9 shl 1; + VG_SCWARC_TO = 10 shl 1; + VG_LCCWARC_TO = 11 shl 1; + VG_LCWARC_TO = 12 shl 1; + + VG_SEGMENT_MASK = $f shl 1; + + VG_PATH_SEGMENT_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPathCommand = ^VGPathCommand; + VGPathCommand = VGint; +const + VG_MOVE_TO_ABS = VG_MOVE_TO or VG_ABSOLUTE; + VG_MOVE_TO_REL = VG_MOVE_TO or VG_RELATIVE; + VG_LINE_TO_ABS = VG_LINE_TO or VG_ABSOLUTE; + VG_LINE_TO_REL = VG_LINE_TO or VG_RELATIVE; + VG_HLINE_TO_ABS = VG_HLINE_TO or VG_ABSOLUTE; + VG_HLINE_TO_REL = VG_HLINE_TO or VG_RELATIVE; + VG_VLINE_TO_ABS = VG_VLINE_TO or VG_ABSOLUTE; + VG_VLINE_TO_REL = VG_VLINE_TO or VG_RELATIVE; + VG_QUAD_TO_ABS = VG_QUAD_TO or VG_ABSOLUTE; + VG_QUAD_TO_REL = VG_QUAD_TO or VG_RELATIVE; + VG_CUBIC_TO_ABS = VG_CUBIC_TO or VG_ABSOLUTE; + VG_CUBIC_TO_REL = VG_CUBIC_TO or VG_RELATIVE; + VG_SQUAD_TO_ABS = VG_SQUAD_TO or VG_ABSOLUTE; + VG_SQUAD_TO_REL = VG_SQUAD_TO or VG_RELATIVE; + VG_SCUBIC_TO_ABS = VG_SCUBIC_TO or VG_ABSOLUTE; + VG_SCUBIC_TO_REL = VG_SCUBIC_TO or VG_RELATIVE; + VG_SCCWARC_TO_ABS = VG_SCCWARC_TO or VG_ABSOLUTE; + VG_SCCWARC_TO_REL = VG_SCCWARC_TO or VG_RELATIVE; + VG_SCWARC_TO_ABS = VG_SCWARC_TO or VG_ABSOLUTE; + VG_SCWARC_TO_REL = VG_SCWARC_TO or VG_RELATIVE; + VG_LCCWARC_TO_ABS = VG_LCCWARC_TO or VG_ABSOLUTE; + VG_LCCWARC_TO_REL = VG_LCCWARC_TO or VG_RELATIVE; + VG_LCWARC_TO_ABS = VG_LCWARC_TO or VG_ABSOLUTE; + VG_LCWARC_TO_REL = VG_LCWARC_TO or VG_RELATIVE; + + VG_PATH_COMMAND_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPathCapabilities = ^VGPathCapabilities; + VGPathCapabilities = VGbitfield; +const + VG_PATH_CAPABILITY_APPEND_FROM = 1 shl 0; + VG_PATH_CAPABILITY_APPEND_TO = 1 shl 1; + VG_PATH_CAPABILITY_MODIFY = 1 shl 2; + VG_PATH_CAPABILITY_TRANSFORM_FROM = 1 shl 3; + VG_PATH_CAPABILITY_TRANSFORM_TO = 1 shl 4; + VG_PATH_CAPABILITY_INTERPOLATE_FROM = 1 shl 5; + VG_PATH_CAPABILITY_INTERPOLATE_TO = 1 shl 6; + VG_PATH_CAPABILITY_PATH_LENGTH = 1 shl 7; + VG_PATH_CAPABILITY_POINT_ALONG_PATH = 1 shl 8; + VG_PATH_CAPABILITY_TANGENT_ALONG_PATH = 1 shl 9; + VG_PATH_CAPABILITY_PATH_BOUNDS = 1 shl 10; + VG_PATH_CAPABILITY_PATH_TRANSFORMED_BOUNDS = 1 shl 11; + VG_PATH_CAPABILITY_ALL = (1 shl 12) -1; + + VG_PATH_CAPABILITIES_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPathParamType = ^VGPathParamType; + VGPathParamType = VGint; +const + VG_PATH_FORMAT = $1600; + VG_PATH_DATATYPE = $1601; + VG_PATH_SCALE = $1602; + VG_PATH_BIAS = $1603; + VG_PATH_NUM_SEGMENTS = $1604; + VG_PATH_NUM_COORDS = $1605; + + VG_PATH_PARAM_TYPE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGCapStyle = ^VGCapStyle; + VGCapStyle = VGint; +const + VG_CAP_BUTT = $1700; + VG_CAP_ROUND = $1701; + VG_CAP_SQUARE = $1702; + + VG_CAP_STYLE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGJoinStyle = ^VGJoinStyle; + VGJoinStyle = VGint; +const + VG_JOIN_MITER = $1800; + VG_JOIN_ROUND = $1801; + VG_JOIN_BEVEL = $1802; + + VG_JOIN_STYLE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGFillRule = ^VGFillRule; + VGFillRule = VGint; +const + VG_EVEN_ODD = $1900; + VG_NON_ZERO = $1901; + + VG_FILL_RULE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPaintMode = ^VGPaintMode; + VGPaintMode = VGbitfield; +const + VG_STROKE_PATH = 1 shl 0; + VG_FILL_PATH = 1 shl 1; + + VG_PAINT_MODE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPaintParamType = ^VGPaintParamType; + VGPaintParamType = VGint; +const + {Color paint parameters} + VG_PAINT_TYPE = $1A00; + VG_PAINT_COLOR = $1A01; + VG_PAINT_COLOR_RAMP_SPREAD_MODE = $1A02; + VG_PAINT_COLOR_RAMP_PREMULTIPLIED = $1A07; + VG_PAINT_COLOR_RAMP_STOPS = $1A03; + + {Linear gradient paint parameters} + VG_PAINT_LINEAR_GRADIENT = $1A04; + + {Radial gradient paint parameters} + VG_PAINT_RADIAL_GRADIENT = $1A05; + + {Pattern paint parameters} + VG_PAINT_PATTERN_TILING_MODE = $1A06; + + VG_PAINT_PARAM_TYPE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPaintType = ^VGPaintType; + VGPaintType = VGint; +const + VG_PAINT_TYPE_COLOR = $1B00; + VG_PAINT_TYPE_LINEAR_GRADIENT = $1B01; + VG_PAINT_TYPE_RADIAL_GRADIENT = $1B02; + VG_PAINT_TYPE_PATTERN = $1B03; + + VG_PAINT_TYPE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGColorRampSpreadMode = ^VGColorRampSpreadMode; + VGColorRampSpreadMode = VGint; +const + VG_COLOR_RAMP_SPREAD_PAD = $1C00; + VG_COLOR_RAMP_SPREAD_REPEAT = $1C01; + VG_COLOR_RAMP_SPREAD_REFLECT = $1C02; + + VG_COLOR_RAMP_SPREAD_MODE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGTilingMode = ^VGTilingMode; + VGTilingMode = VGint; +const + VG_TILE_FILL = $1D00; + VG_TILE_PAD = $1D01; + VG_TILE_REPEAT = $1D02; + VG_TILE_REFLECT = $1D03; + + VG_TILING_MODE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGImageFormat = ^VGImageFormat; + VGImageFormat = VGint; +const + {RGB(A,X) channel ordering} + VG_sRGBX_8888 = 0; + VG_sRGBA_8888 = 1; + VG_sRGBA_8888_PRE = 2; + VG_sRGB_565 = 3; + VG_sRGBA_5551 = 4; + VG_sRGBA_4444 = 5; + VG_sL_8 = 6; + VG_lRGBX_8888 = 7; + VG_lRGBA_8888 = 8; + VG_lRGBA_8888_PRE = 9; + VG_lL_8 = 10; + VG_A_8 = 11; + VG_BW_1 = 12; + VG_A_1 = 13; + VG_A_4 = 14; + + {(A,X)RGB channel ordering} + VG_sXRGB_8888 = 0 or (1 shl 6); + VG_sARGB_8888 = 1 or (1 shl 6); + VG_sARGB_8888_PRE = 2 or (1 shl 6); + VG_sARGB_1555 = 4 or (1 shl 6); + VG_sARGB_4444 = 5 or (1 shl 6); + VG_lXRGB_8888 = 7 or (1 shl 6); + VG_lARGB_8888 = 8 or (1 shl 6); + VG_lARGB_8888_PRE = 9 or (1 shl 6); + + {BGR(A,X) channel ordering} + VG_sBGRX_8888 = 0 or (1 shl 7); + VG_sBGRA_8888 = 1 or (1 shl 7); + VG_sBGRA_8888_PRE = 2 or (1 shl 7); + VG_sBGR_565 = 3 or (1 shl 7); + VG_sBGRA_5551 = 4 or (1 shl 7); + VG_sBGRA_4444 = 5 or (1 shl 7); + VG_lBGRX_8888 = 7 or (1 shl 7); + VG_lBGRA_8888 = 8 or (1 shl 7); + VG_lBGRA_8888_PRE = 9 or (1 shl 7); + + {(A,X)BGR channel ordering} + VG_sXBGR_8888 = (0 or (1 shl 6)) or (1 shl 7); + VG_sABGR_8888 = (1 or (1 shl 6)) or (1 shl 7); + VG_sABGR_8888_PRE = (2 or (1 shl 6)) or (1 shl 7); + VG_sABGR_1555 = (4 or (1 shl 6)) or (1 shl 7); + VG_sABGR_4444 = (5 or (1 shl 6)) or (1 shl 7); + VG_lXBGR_8888 = (7 or (1 shl 6)) or (1 shl 7); + VG_lABGR_8888 = (8 or (1 shl 6)) or (1 shl 7); + VG_lABGR_8888_PRE = (9 or (1 shl 6)) or (1 shl 7); + + VG_IMAGE_FORMAT_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGImageQuality = ^VGImageQuality; + VGImageQuality = VGbitfield; +const + VG_IMAGE_QUALITY_NONANTIALIASED = 1 shl 0; + VG_IMAGE_QUALITY_FASTER = 1 shl 1; + VG_IMAGE_QUALITY_BETTER = 1 shl 2; + + VG_IMAGE_QUALITY_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGImageParamType = ^VGImageParamType; + VGImageParamType = VGint; +const + VG_IMAGE_FORMAT = $1E00; + VG_IMAGE_WIDTH = $1E01; + VG_IMAGE_HEIGHT = $1E02; + + VG_IMAGE_PARAM_TYPE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGImageMode = ^VGImageMode; + VGImageMode = VGint; +const + VG_DRAW_IMAGE_NORMAL = $1F00; + VG_DRAW_IMAGE_MULTIPLY = $1F01; + VG_DRAW_IMAGE_STENCIL = $1F02; + + VG_IMAGE_MODE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGImageChannel = ^VGImageChannel; + VGImageChannel = VGint; +const + VG_RED = 1 shl 3; + VG_GREEN = 1 shl 2; + VG_BLUE = 1 shl 1; + VG_ALPHA = 1 shl 0; + + VG_IMAGE_CHANNEL_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGBlendMode = ^VGBlendMode; + VGBlendMode = VGint; +const + VG_BLEND_SRC = $2000; + VG_BLEND_SRC_OVER = $2001; + VG_BLEND_DST_OVER = $2002; + VG_BLEND_SRC_IN = $2003; + VG_BLEND_DST_IN = $2004; + VG_BLEND_MULTIPLY = $2005; + VG_BLEND_SCREEN = $2006; + VG_BLEND_DARKEN = $2007; + VG_BLEND_LIGHTEN = $2008; + VG_BLEND_ADDITIVE = $2009; + + VG_BLEND_MODE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGFontParamType = ^VGFontParamType; + VGFontParamType = VGint; +const + VG_FONT_NUM_GLYPHS = $2F00; + + VG_FONT_PARAM_TYPE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGHardwareQueryType = ^VGHardwareQueryType; + VGHardwareQueryType = VGint; +const + VG_IMAGE_FORMAT_QUERY = $2100; + VG_PATH_DATATYPE_QUERY = $2101; + + VG_HARDWARE_QUERY_TYPE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGHardwareQueryResult = ^VGHardwareQueryResult; + VGHardwareQueryResult = VGint; +const + VG_HARDWARE_ACCELERATED = $2200; + VG_HARDWARE_UNACCELERATED = $2201; + + VG_HARDWARE_QUERY_RESULT_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGStringID = ^VGStringID; + VGStringID = VGint; +const + VG_VENDOR = $2300; + VG_RENDERER = $2301; + VG_VERSION = $2302; + VG_EXTENSIONS = $2303; + + VG_STRING_ID_FORCE_SIZE = VG_MAX_ENUM; + + function vgGetError:VGErrorCode; cdecl; external libOpenVG name 'vgGetError'; + procedure vgFlush; cdecl; external libOpenVG name 'vgFlush'; + procedure vgFinish; cdecl; external libOpenVG name 'vgFinish'; + + { Getters and Setters } + procedure vgSetf(_type:VGParamType; value:VGfloat); cdecl; external libOpenVG name 'vgSetf'; + procedure vgSeti(_type:VGParamType; value:VGint); cdecl; external libOpenVG name 'vgSeti'; + procedure vgSetfv(_type:VGParamType; count:VGint; values:PVGfloat); cdecl; external libOpenVG name 'vgSetfv'; + procedure vgSetiv(_type:VGParamType; count:VGint; values:PVGint); cdecl; external libOpenVG name 'vgSetiv'; + function vgGetf(_type:VGParamType):VGfloat; cdecl; external libOpenVG name 'vgGetf'; + function vgGeti(_type:VGParamType):VGint; cdecl; external libOpenVG name 'vgGeti'; + function vgGetVectorSize(_type:VGParamType):VGint; cdecl; external libOpenVG name 'vgGetVectorSize'; + procedure vgGetfv(_type:VGParamType; count:VGint; values:PVGfloat); cdecl; external libOpenVG name 'vgGetfv'; + procedure vgGetiv(_type:VGParamType; count:VGint; values:PVGint); cdecl; external libOpenVG name 'vgGetiv'; + procedure vgSetParameterf(_object:VGHandle; paramType:VGint; value:VGfloat); cdecl; external libOpenVG name 'vgSetParameterf'; + procedure vgSetParameteri(_object:VGHandle; paramType:VGint; value:VGint); cdecl; external libOpenVG name 'vgSetParameteri'; + procedure vgSetParameterfv(_object:VGHandle; paramType:VGint; count:VGint; values:PVGfloat); cdecl; external libOpenVG name 'vgSetParameterfv'; + procedure vgSetParameteriv(_object:VGHandle; paramType:VGint; count:VGint; values:PVGint); cdecl; external libOpenVG name 'vgSetParameteriv'; + function vgGetParameterf(_object:VGHandle; paramType:VGint):VGfloat; cdecl; external libOpenVG name 'vgGetParameterf'; + function vgGetParameteri(_object:VGHandle; paramType:VGint):VGint; cdecl; external libOpenVG name 'vgGetParameteri'; + function vgGetParameterVectorSize(_object:VGHandle; paramType:VGint):VGint; cdecl; external libOpenVG name 'vgGetParameterVectorSize'; + procedure vgGetParameterfv(_object:VGHandle; paramType:VGint; count:VGint; values:PVGfloat); cdecl; external libOpenVG name 'vgGetParameterfv'; + procedure vgGetParameteriv(_object:VGHandle; paramType:VGint; count:VGint; values:PVGint); cdecl; external libOpenVG name 'vgGetParameteriv'; + + { Matrix Manipulation } + procedure vgLoadIdentity; cdecl; external libOpenVG name 'vgLoadIdentity'; + procedure vgLoadMatrix(m:PVGfloat); cdecl; external libOpenVG name 'vgLoadMatrix'; + procedure vgGetMatrix(m:PVGfloat); cdecl; external libOpenVG name 'vgGetMatrix'; + procedure vgMultMatrix(m:PVGfloat); cdecl; external libOpenVG name 'vgMultMatrix'; + procedure vgTranslate(tx:VGfloat; ty:VGfloat); cdecl; external libOpenVG name 'vgTranslate'; + procedure vgScale(sx:VGfloat; sy:VGfloat); cdecl; external libOpenVG name 'vgScale'; + procedure vgShear(shx:VGfloat; shy:VGfloat); cdecl; external libOpenVG name 'vgShear'; + procedure vgRotate(angle:VGfloat); cdecl; external libOpenVG name 'vgRotate'; + + { Masking and Clearing } + procedure vgMask(mask:VGHandle; operation:VGMaskOperation; x:VGint; y:VGint; width:VGint; + height:VGint); cdecl; external libOpenVG name 'vgMask'; + procedure vgRenderToMask(path:VGPath; paintModes:VGbitfield; operation:VGMaskOperation); cdecl; external libOpenVG name 'vgRenderToMask'; + function vgCreateMaskLayer(width:VGint; height:VGint):VGMaskLayer; cdecl; external libOpenVG name 'vgCreateMaskLayer'; + procedure vgDestroyMaskLayer(maskLayer:VGMaskLayer); cdecl; external libOpenVG name 'vgDestroyMaskLayer'; + procedure vgFillMaskLayer(maskLayer:VGMaskLayer; x:VGint; y:VGint; width:VGint; height:VGint; + value:VGfloat); cdecl; external libOpenVG name 'vgFillMaskLayer'; + procedure vgCopyMask(maskLayer:VGMaskLayer; dx:VGint; dy:VGint; sx:VGint; sy:VGint; + width:VGint; height:VGint); cdecl; external libOpenVG name 'vgCopyMask'; + procedure vgClear(x:VGint; y:VGint; width:VGint; height:VGint); cdecl; external libOpenVG name 'vgClear'; + + { Paths } + function vgCreatePath(pathFormat:VGint; datatype:VGPathDatatype; scale:VGfloat; bias:VGfloat; segmentCapacityHint:VGint; + coordCapacityHint:VGint; capabilities:VGbitfield):VGPath; cdecl; external libOpenVG name 'vgCreatePath'; + procedure vgClearPath(path:VGPath; capabilities:VGbitfield); cdecl; external libOpenVG name 'vgClearPath'; + procedure vgDestroyPath(path:VGPath); cdecl; external libOpenVG name 'vgDestroyPath'; + procedure vgRemovePathCapabilities(path:VGPath; capabilities:VGbitfield); cdecl; external libOpenVG name 'vgRemovePathCapabilities'; + function vgGetPathCapabilities(path:VGPath):VGbitfield; cdecl; external libOpenVG name 'vgGetPathCapabilities'; + procedure vgAppendPath(dstPath:VGPath; srcPath:VGPath); cdecl; external libOpenVG name 'vgAppendPath'; + procedure vgAppendPathData(dstPath:VGPath; numSegments:VGint; pathSegments:PVGubyte; pathData:pointer); cdecl; external libOpenVG name 'vgAppendPathData'; + procedure vgModifyPathCoords(dstPath:VGPath; startIndex:VGint; numSegments:VGint; pathData:pointer); cdecl; external libOpenVG name 'vgModifyPathCoords'; + procedure vgTransformPath(dstPath:VGPath; srcPath:VGPath); cdecl; external libOpenVG name 'vgTransformPath'; + function vgInterpolatePath(dstPath:VGPath; startPath:VGPath; endPath:VGPath; amount:VGfloat):VGboolean; cdecl; external libOpenVG name 'vgInterpolatePath'; + function vgPathLength(path:VGPath; startSegment:VGint; numSegments:VGint):VGfloat; cdecl; external libOpenVG name 'vgPathLength'; + procedure vgPointAlongPath(path:VGPath; startSegment:VGint; numSegments:VGint; distance:VGfloat; x:PVGfloat; + y:PVGfloat; tangentX:PVGfloat; tangentY:PVGfloat); cdecl; external libOpenVG name 'vgPointAlongPath'; + procedure vgPathBounds(path:VGPath; minX:PVGfloat; minY:PVGfloat; width:PVGfloat; height:PVGfloat); cdecl; external libOpenVG name 'vgPathBounds'; + procedure vgPathTransformedBounds(path:VGPath; minX:PVGfloat; minY:PVGfloat; width:PVGfloat; height:PVGfloat); cdecl; external libOpenVG name 'vgPathTransformedBounds'; + procedure vgDrawPath(path:VGPath; paintModes:VGbitfield); cdecl; external libOpenVG name 'vgDrawPath'; + + { Paint } + function vgCreatePaint:VGPaint; cdecl; external libOpenVG name 'vgCreatePaint'; + procedure vgDestroyPaint(paint:VGPaint); cdecl; external libOpenVG name 'vgDestroyPaint'; + procedure vgSetPaint(paint:VGPaint; paintModes:VGbitfield); cdecl; external libOpenVG name 'vgSetPaint'; + function vgGetPaint(paintMode:VGPaintMode):VGPaint; cdecl; external libOpenVG name 'vgGetPaint'; + procedure vgSetColor(paint:VGPaint; rgba:VGuint); cdecl; external libOpenVG name 'vgSetColor'; + function vgGetColor(paint:VGPaint):VGuint; cdecl; external libOpenVG name 'vgGetColor'; + procedure vgPaintPattern(paint:VGPaint; pattern:VGImage); cdecl; external libOpenVG name 'vgPaintPattern'; + + { Images } + function vgCreateImage(format:VGImageFormat; width:VGint; height:VGint; allowedQuality:VGbitfield):VGImage; cdecl; external libOpenVG name 'vgCreateImage'; + procedure vgDestroyImage(image:VGImage); cdecl; external libOpenVG name 'vgDestroyImage'; + procedure vgClearImage(image:VGImage; x:VGint; y:VGint; width:VGint; height:VGint); cdecl; external libOpenVG name 'vgClearImage'; + procedure vgImageSubData(image:VGImage; data:pointer; dataStride:VGint; dataFormat:VGImageFormat; x:VGint; + y:VGint; width:VGint; height:VGint); cdecl; external libOpenVG name 'vgImageSubData'; + procedure vgGetImageSubData(image:VGImage; data:pointer; dataStride:VGint; dataFormat:VGImageFormat; x:VGint; + y:VGint; width:VGint; height:VGint); cdecl; external libOpenVG name 'vgGetImageSubData'; + function vgChildImage(parent:VGImage; x:VGint; y:VGint; width:VGint; height:VGint):VGImage; cdecl; external libOpenVG name 'vgChildImage'; + function vgGetParent(image:VGImage):VGImage; cdecl; external libOpenVG name 'vgGetParent'; + procedure vgCopyImage(dst:VGImage; dx:VGint; dy:VGint; src:VGImage; sx:VGint; + sy:VGint; width:VGint; height:VGint; dither:VGboolean); cdecl; external libOpenVG name 'vgCopyImage'; + procedure vgDrawImage(image:VGImage); cdecl; external libOpenVG name 'vgDrawImage'; + procedure vgSetPixels(dx:VGint; dy:VGint; src:VGImage; sx:VGint; sy:VGint; + width:VGint; height:VGint); cdecl; external libOpenVG name 'vgSetPixels'; + procedure vgWritePixels(data:pointer; dataStride:VGint; dataFormat:VGImageFormat; dx:VGint; dy:VGint; + width:VGint; height:VGint); cdecl; external libOpenVG name 'vgWritePixels'; + procedure vgGetPixels(dst:VGImage; dx:VGint; dy:VGint; sx:VGint; sy:VGint; + width:VGint; height:VGint); cdecl; external libOpenVG name 'vgGetPixels'; + procedure vgReadPixels(data:pointer; dataStride:VGint; dataFormat:VGImageFormat; sx:VGint; sy:VGint; + width:VGint; height:VGint); cdecl; external libOpenVG name 'vgReadPixels'; + procedure vgCopyPixels(dx:VGint; dy:VGint; sx:VGint; sy:VGint; width:VGint; + height:VGint); cdecl; external libOpenVG name 'vgCopyPixels'; + + { Text } +type + PVGfloat_array2 = ^VGfloat_array2; + VGfloat_array2 = array[0..1] of VGfloat; + + function vgCreateFont(glyphCapacityHint:VGint):VGFont; cdecl; external libOpenVG name 'vgCreateFont'; + procedure vgDestroyFont(font:VGFont); cdecl; external libOpenVG name 'vgDestroyFont'; + procedure vgSetGlyphToPath(font:VGFont; glyphIndex:VGuint; path:VGPath; isHinted:VGboolean; glyphOrigin:PVGfloat_array2; + escapement:PVGfloat_array2); cdecl; external libOpenVG name 'vgSetGlyphToPath'; + procedure vgSetGlyphToImage(font:VGFont; glyphIndex:VGuint; image:VGImage; glyphOrigin:PVGfloat_array2; escapement:PVGfloat_array2); cdecl; external libOpenVG name 'vgSetGlyphToImage'; + procedure vgClearGlyph(font:VGFont; glyphIndex:VGuint); cdecl; external libOpenVG name 'vgClearGlyph'; + procedure vgDrawGlyph(font:VGFont; glyphIndex:VGuint; paintModes:VGbitfield; allowAutoHinting:VGboolean); cdecl; external libOpenVG name 'vgDrawGlyph'; + procedure vgDrawGlyphs(font:VGFont; glyphCount:VGint; glyphIndices:PVGuint; adjustments_x:PVGfloat; adjustments_y:PVGfloat; + paintModes:VGbitfield; allowAutoHinting:VGboolean); cdecl; external libOpenVG name 'vgDrawGlyphs'; + + { Image Filters } + procedure vgColorMatrix(dst:VGImage; src:VGImage; matrix:PVGfloat); cdecl; external libOpenVG name 'vgColorMatrix'; + procedure vgConvolve(dst:VGImage; src:VGImage; kernelWidth:VGint; kernelHeight:VGint; shiftX:VGint; + shiftY:VGint; kernel:PVGshort; scale:VGfloat; bias:VGfloat; tilingMode:VGTilingMode); cdecl; external libOpenVG name 'vgConvolve'; + procedure vgSeparableConvolve(dst:VGImage; src:VGImage; kernelWidth:VGint; kernelHeight:VGint; shiftX:VGint; + shiftY:VGint; kernelX:PVGshort; kernelY:PVGshort; scale:VGfloat; bias:VGfloat; + tilingMode:VGTilingMode); cdecl; external libOpenVG name 'vgSeparableConvolve'; + procedure vgGaussianBlur(dst:VGImage; src:VGImage; stdDeviationX:VGfloat; stdDeviationY:VGfloat; tilingMode:VGTilingMode); cdecl; external libOpenVG name 'vgGaussianBlur'; + procedure vgLookup(dst:VGImage; src:VGImage; redLUT:PVGubyte; greenLUT:PVGubyte; blueLUT:PVGubyte; + alphaLUT:PVGubyte; outputLinear:VGboolean; outputPremultiplied:VGboolean); cdecl; external libOpenVG name 'vgLookup'; + procedure vgLookupSingle(dst:VGImage; src:VGImage; lookupTable:PVGuint; sourceChannel:VGImageChannel; outputLinear:VGboolean; + outputPremultiplied:VGboolean); cdecl; external libOpenVG name 'vgLookupSingle'; + + { Hardware Queries } + function vgHardwareQuery(key:VGHardwareQueryType; setting:VGint):VGHardwareQueryResult; cdecl; external libOpenVG name 'vgHardwareQuery'; + + { Renderer and Extension Information } + function vgGetString(name:VGStringID):PVGubyte; cdecl; external libOpenVG name 'vgGetString'; + +{From VG\vgu.h} +const + VGU_VERSION_1_0 = 1; + VGU_VERSION_1_1 = 2; + +type + PVGUErrorCode = ^VGUErrorCode; + VGUErrorCode = VGint; +const + VGU_NO_ERROR = 0; + VGU_BAD_HANDLE_ERROR = $F000; + VGU_ILLEGAL_ARGUMENT_ERROR = $F001; + VGU_OUT_OF_MEMORY_ERROR = $F002; + VGU_PATH_CAPABILITY_ERROR = $F003; + VGU_BAD_WARP_ERROR = $F004; + + VGU_ERROR_CODE_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGUArcType = ^VGUArcType; + VGUArcType = VGint; +const + VGU_ARC_OPEN = $F100; + VGU_ARC_CHORD = $F101; + VGU_ARC_PIE = $F102; + + VGU_ARC_TYPE_FORCE_SIZE = VG_MAX_ENUM; + + function vguLine(path:VGPath; x0:VGfloat; y0:VGfloat; x1:VGfloat; y1:VGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguLine'; + function vguPolygon(path:VGPath; points:PVGfloat; count:VGint; closed:VGboolean):VGUErrorCode; cdecl; external libOpenVG name 'vguPolygon'; + function vguRect(path:VGPath; x:VGfloat; y:VGfloat; width:VGfloat; height:VGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguRect'; + function vguRoundRect(path:VGPath; x:VGfloat; y:VGfloat; width:VGfloat; height:VGfloat; + arcWidth:VGfloat; arcHeight:VGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguRoundRect'; + function vguEllipse(path:VGPath; cx:VGfloat; cy:VGfloat; width:VGfloat; height:VGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguEllipse'; + function vguArc(path:VGPath; x:VGfloat; y:VGfloat; width:VGfloat; height:VGfloat; + startAngle:VGfloat; angleExtent:VGfloat; arcType:VGUArcType):VGUErrorCode; cdecl; external libOpenVG name 'vguArc'; + function vguComputeWarpQuadToSquare(sx0:VGfloat; sy0:VGfloat; sx1:VGfloat; sy1:VGfloat; sx2:VGfloat; + sy2:VGfloat; sx3:VGfloat; sy3:VGfloat; matrix:PVGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguComputeWarpQuadToSquare'; + function vguComputeWarpSquareToQuad(dx0:VGfloat; dy0:VGfloat; dx1:VGfloat; dy1:VGfloat; dx2:VGfloat; + dy2:VGfloat; dx3:VGfloat; dy3:VGfloat; matrix:PVGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguComputeWarpSquareToQuad'; + function vguComputeWarpQuadToQuad(dx0:VGfloat; dy0:VGfloat; dx1:VGfloat; dy1:VGfloat; dx2:VGfloat; + dy2:VGfloat; dx3:VGfloat; dy3:VGfloat; sx0:VGfloat; sy0:VGfloat; + sx1:VGfloat; sy1:VGfloat; sx2:VGfloat; sy2:VGfloat; sx3:VGfloat; + sy3:VGfloat; matrix:PVGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguComputeWarpQuadToQuad'; + +{From VG\vgext.h} +type + PVGParamTypeKHR = ^VGParamTypeKHR; + VGParamTypeKHR = VGint; +const + VG_MAX_AVERAGE_BLUR_DIMENSION_KHR = $116B; + VG_AVERAGE_BLUR_DIMENSION_RESOLUTION_KHR = $116C; + VG_MAX_AVERAGE_BLUR_ITERATIONS_KHR = $116D; + + VG_PARAM_TYPE_KHR_FORCE_SIZE = VG_MAX_ENUM; + + { VGEGLImageKHR is an opaque handle to an EGLImage } +type + PVGeglImageKHR = ^VGeglImageKHR; + VGeglImageKHR = Pointer; + + function vgCreateEGLImageTargetKHR(image:VGeglImageKHR):VGImage; cdecl; external libOpenVG name 'vgCreateEGLImageTargetKHR'; + procedure vgIterativeAverageBlurKHR(dst:VGImage; src:VGImage; dimX:VGfloat; dimY:VGfloat; iterative:VGuint; + tilingMode:VGTilingMode); cdecl; external libOpenVG name 'vgIterativeAverageBlurKHR'; + +type + PVGBlendModeKHR = ^VGBlendModeKHR; + VGBlendModeKHR = VGint; +const + VG_BLEND_OVERLAY_KHR = $2010; + VG_BLEND_HARDLIGHT_KHR = $2011; + VG_BLEND_SOFTLIGHT_SVG_KHR = $2012; + VG_BLEND_SOFTLIGHT_KHR = $2013; + VG_BLEND_COLORDODGE_KHR = $2014; + VG_BLEND_COLORBURN_KHR = $2015; + VG_BLEND_DIFFERENCE_KHR = $2016; + VG_BLEND_SUBTRACT_KHR = $2017; + VG_BLEND_INVERT_KHR = $2018; + VG_BLEND_EXCLUSION_KHR = $2019; + VG_BLEND_LINEARDODGE_KHR = $201a; + VG_BLEND_LINEARBURN_KHR = $201b; + VG_BLEND_VIVIDLIGHT_KHR = $201c; + VG_BLEND_LINEARLIGHT_KHR = $201d; + VG_BLEND_PINLIGHT_KHR = $201e; + VG_BLEND_HARDMIX_KHR = $201f; + VG_BLEND_CLEAR_KHR = $2020; + VG_BLEND_DST_KHR = $2021; + VG_BLEND_SRC_OUT_KHR = $2022; + VG_BLEND_DST_OUT_KHR = $2023; + VG_BLEND_SRC_ATOP_KHR = $2024; + VG_BLEND_DST_ATOP_KHR = $2025; + VG_BLEND_XOR_KHR = $2026; + + VG_BLEND_MODE_KHR_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPfTypeKHR = ^VGPfTypeKHR; + VGPfTypeKHR = VGint; +const + VG_PF_OBJECT_VISIBLE_FLAG_KHR = 1 shl 0; + VG_PF_KNOCKOUT_FLAG_KHR = 1 shl 1; + VG_PF_OUTER_FLAG_KHR = 1 shl 2; + VG_PF_INNER_FLAG_KHR = 1 shl 3; + + VG_PF_TYPE_KHR_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGUErrorCodeKHR = ^VGUErrorCodeKHR; + VGUErrorCodeKHR = VGint; +const + VGU_IMAGE_IN_USE_ERROR = $F010; + + VGU_ERROR_CODE_KHR_FORCE_SIZE = VG_MAX_ENUM; + + procedure vgParametricFilterKHR(dst:VGImage; src:VGImage; blur:VGImage; strength:VGfloat; offsetX:VGfloat; + offsetY:VGfloat; filterFlags:VGbitfield; highlightPaint:VGPaint; shadowPaint:VGPaint); cdecl; external libOpenVG name 'vgParametricFilterKHR'; + function vguDropShadowKHR(dst:VGImage; src:VGImage; dimX:VGfloat; dimY:VGfloat; iterative:VGuint; + strength:VGfloat; distance:VGfloat; angle:VGfloat; filterFlags:VGbitfield; allowedQuality:VGbitfield; + shadowColorRGBA:VGuint):VGUErrorCode; cdecl; external libOpenVG name 'vguDropShadowKHR'; + function vguGlowKHR(dst:VGImage; src:VGImage; dimX:VGfloat; dimY:VGfloat; iterative:VGuint; + strength:VGfloat; filterFlags:VGbitfield; allowedQuality:VGbitfield; glowColorRGBA:VGuint):VGUErrorCode; cdecl; external libOpenVG name 'vguGlowKHR'; + function vguBevelKHR(dst:VGImage; src:VGImage; dimX:VGfloat; dimY:VGfloat; iterative:VGuint; + strength:VGfloat; distance:VGfloat; angle:VGfloat; filterFlags:VGbitfield; allowedQuality:VGbitfield; + highlightColorRGBA:VGuint; shadowColorRGBA:VGuint):VGUErrorCode; cdecl; external libOpenVG name 'vguBevelKHR'; + function vguGradientGlowKHR(dst:VGImage; src:VGImage; dimX:VGfloat; dimY:VGfloat; iterative:VGuint; + strength:VGfloat; distance:VGfloat; angle:VGfloat; filterFlags:VGbitfield; allowedQuality:VGbitfield; + stopsCount:VGuint; glowColorRampStops:PVGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguGradientGlowKHR'; + function vguGradientBevelKHR(dst:VGImage; src:VGImage; dimX:VGfloat; dimY:VGfloat; iterative:VGuint; + strength:VGfloat; distance:VGfloat; angle:VGfloat; filterFlags:VGbitfield; allowedQuality:VGbitfield; + stopsCount:VGuint; bevelColorRampStops:PVGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguGradientBevelKHR'; + +type + PVGPaintParamTypeNds = ^VGPaintParamTypeNds; + VGPaintParamTypeNds = VGint; +const + VG_PAINT_COLOR_RAMP_LINEAR_NDS = $1A10; + VG_COLOR_MATRIX_NDS = $1A11; + VG_PAINT_COLOR_TRANSFORM_LINEAR_NDS = $1A12; + + VG_PAINT_PARAM_TYPE_NDS_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGImageModeNds = ^VGImageModeNds; + VGImageModeNds = VGint; +const + VG_DRAW_IMAGE_COLOR_MATRIX_NDS = $1F10; + + VG_IMAGE_MODE_NDS_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGParamTypeNds = ^VGParamTypeNds; + VGParamTypeNds = VGint; +const + VG_CLIP_MODE_NDS = $1180; + VG_CLIP_LINES_NDS = $1181; + VG_MAX_CLIP_LINES_NDS = $1182; + + VG_PARAM_TYPE_NDS_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGClipModeNds = ^VGClipModeNds; + VGClipModeNds = VGint; +const + VG_CLIPMODE_NONE_NDS = $3000; + VG_CLIPMODE_CLIP_CLOSED_NDS = $3001; + VG_CLIPMODE_CLIP_OPEN_NDS = $3002; + VG_CLIPMODE_CULL_NDS = $3003; + + VG_CLIPMODE_NDS_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPathSegmentNds = ^VGPathSegmentNds; + VGPathSegmentNds = VGint; +const + VG_RQUAD_TO_NDS = 13 shl 1; + VG_RCUBIC_TO_NDS = 14 shl 1; + + VG_PATH_SEGMENT_NDS_FORCE_SIZE = VG_MAX_ENUM; + +type + PVGPathCommandNds = ^VGPathCommandNds; + VGPathCommandNds = VGint; +const + VG_RQUAD_TO_ABS_NDS = VG_RQUAD_TO_NDS or VG_ABSOLUTE; + VG_RQUAD_TO_REL_NDS = VG_RQUAD_TO_NDS or VG_RELATIVE; + VG_RCUBIC_TO_ABS_NDS = VG_RCUBIC_TO_NDS or VG_ABSOLUTE; + VG_RCUBIC_TO_REL_NDS = VG_RCUBIC_TO_NDS or VG_RELATIVE; + + VG_PATH_COMMAND_NDS_FORCE_SIZE = VG_MAX_ENUM; + + procedure vgProjectiveMatrixNDS(enable:VGboolean); cdecl; external libOpenVG name 'vgProjectiveMatrixNDS'; + function vguTransformClipLineNDS(Ain:VGfloat; Bin:VGfloat; Cin:VGfloat; matrix:PVGfloat; inverse:VGboolean; + Aout:PVGfloat; Bout:PVGfloat; Cout:PVGfloat):VGUErrorCode; cdecl; external libOpenVG name 'vguTransformClipLineNDS'; + +implementation + +end. diff --git a/source/packages/ultibounits/src/ubitmap.pas b/source/packages/ultibounits/src/ubitmap.pas index 94154ff..7c40037 100644 --- a/source/packages/ultibounits/src/ubitmap.pas +++ b/source/packages/ultibounits/src/ubitmap.pas @@ -55,8 +55,15 @@ interface {==============================================================================} function DrawBitmap(Handle:TWindowHandle;const Filename:String;X,Y:LongWord):Boolean; + +function DrawBitmapFromStream(Handle:TWindowHandle;Stream:TStream;X,Y:LongWord):Boolean; +function DrawBitmapFromBuffer(Handle:TWindowHandle;const Buf;Len,X,Y:LongWord):Boolean; + function SaveBitmap(Handle:TWindowHandle;const Filename:String;X,Y,Width,Height,BPP:LongWord):Boolean; +function LoadBitmapToStream(const Filename:String;Stream:TStream;out Width,Height,Format:LongWord):Boolean; +function LoadBitmapToBuffer(const Filename:String;var Buf;var Len:LongWord;out Width,Height,Format:LongWord):Boolean; + {==============================================================================} {==============================================================================} @@ -229,6 +236,263 @@ function DrawBitmap(Handle:TWindowHandle;const Filename:String;X,Y:LongWord):Boo {==============================================================================} +function DrawBitmapFromStream(Handle:TWindowHandle;Stream:TStream;X,Y:LongWord):Boolean; +{A function for drawing a standard bitmap image onto an Ultibo graphics console window from a stream} +{Handle: The handle of an existing graphics console window} +{Stream: A stream object containing the bitmap exactly as it would appear in a file (including the header etc)} +{X: The column position for the left edge of the bitmap} +{Y: The row position for the top row of the bitmap} +{Return: True if successful or False is an error occurred} +var + Format:LongWord; + TopDown:Boolean; + LineSize:LongWord; + ReadSize:LongWord; + + BitMapFileHeader:TBitMapFileHeader; + BitMapInfoHeader:TBitMapInfoHeader; +begin + {} + Result:=False; + + {This is a variation of the earlier example that showed how to load a bitmap from a file and draw it on the + screen in Ultibo, this version takes a stream object and loads the bitmap from that instead. + + It also demostrates the use of the GraphicsWindowImageFromStream() function to draw the image without + copying to a memory buffer first} + + {Check the parameters} + if Handle = INVALID_HANDLE_VALUE then Exit; + if Stream = nil then Exit; + + {Check the stream size} + if Stream.Size < (SizeOf(TBitMapFileHeader) + SizeOf(TBitMapInfoHeader)) then Exit; + + {Read the Bitmap file header} + if Stream.Read(BitMapFileHeader,SizeOf(TBitMapFileHeader)) <> SizeOf(TBitMapFileHeader) then Exit; + + {Check the magic number in the header} + if BitMapFileHeader.bfType = BMmagic then + begin + {Read the Bitmap info header} + if Stream.Read(BitMapInfoHeader,SizeOf(TBitMapInfoHeader)) <> SizeOf(TBitMapInfoHeader) then Exit; + + {Most Bitmaps are stored upside down, but they can be right way up} + TopDown:=(BitMapInfoHeader.Height < 0); + BitMapInfoHeader.Height:=Abs(BitMapInfoHeader.Height); + + {Check how many bits per pixel in this Bitmap, we only support 16, 24 and 32 in this function} + if BitMapInfoHeader.BitCount = 16 then + begin + {Check the compression format used, this function only supports raw RGB files so far} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Get the color format} + Format:=COLOR_FORMAT_RGB15; + {Now get the bytes per line} + LineSize:=BitMapInfoHeader.Width * 2; + {And also determine the actual number of bytes until the next line} + ReadSize:=(((BitMapInfoHeader.Width * 8 * 2) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else if BitMapInfoHeader.BitCount = 24 then + begin + {Check the compression} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Color format, bytes per line and actual bytes as again} + Format:=COLOR_FORMAT_RGB24; + LineSize:=BitMapInfoHeader.Width * 3; + ReadSize:=(((BitMapInfoHeader.Width * 8 * 3) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else if BitMapInfoHeader.BitCount = 32 then + begin + {Check the compression} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Color format, bytes per line and actual bytes as again} + Format:=COLOR_FORMAT_URGB32; + LineSize:=BitMapInfoHeader.Width * 4; + ReadSize:=(((BitMapInfoHeader.Width * 8 * 4) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else + begin + Exit; + end; + + {Update the position of the stream} + Stream.Position:=BitMapFileHeader.bfOffset; + + {Draw the stream onto our graphics console window} + if GraphicsWindowImageFromStream(Handle,X,Y,Stream,BitMapInfoHeader.Width,BitMapInfoHeader.Height,Format,ReadSize - LineSize,not(TopDown)) <> ERROR_SUCCESS then Exit; + + Result:=True; + end; +end; + +{==============================================================================} + +function DrawBitmapFromBuffer(Handle:TWindowHandle;const Buf;Len,X,Y:LongWord):Boolean; +{A function for drawing a standard bitmap image onto an Ultibo graphics console window from a memory buffer} +{Handle: The handle of an existing graphics console window} +{Buf: A memory buffer containing the bitmap exactly as it would appear in a file (including the header etc)} +{X: The column position for the left edge of the bitmap} +{Y: The row position for the top row of the bitmap} +{Return: True if successful or False is an error occurred} +var + Size:LongWord; + Count:LongWord; + Offset:LongWord; + Format:LongWord; + Buffer:Pointer; + TopDown:Boolean; + LineSize:LongWord; + ReadSize:LongWord; + + BitMapFileHeader:PBitMapFileHeader; + BitMapInfoHeader:PBitMapInfoHeader; +begin + {} + Result:=False; + + {This is a variation of the earlier example that showed how to load a bitmap from a file and draw it on the + screen in Ultibo, this version takes a memory buffer and a length and loads the bitmap from that instead. + + It still creates a memory buffer and puts the pixels onto the screen using GraphicsWindowDrawImage() so + you could make this more efficient by not copying the image to a buffer first} + + {Check the parameters} + if Handle = INVALID_HANDLE_VALUE then Exit; + + {Check the length} + if Len < (SizeOf(TBitMapFileHeader) + SizeOf(TBitMapInfoHeader)) then Exit; + + {Get the Bitmap file header} + BitMapFileHeader:=PBitMapFileHeader(@Buf); + + {Check the magic number in the header} + if BitMapFileHeader.bfType = BMmagic then + begin + {Get the Bitmap info header} + BitMapInfoHeader:=PBitMapInfoHeader(@Buf + SizeOf(TBitMapFileHeader)); + + {Most Bitmaps are stored upside down, but they can be right way up} + TopDown:=(BitMapInfoHeader.Height < 0); + BitMapInfoHeader.Height:=Abs(BitMapInfoHeader.Height); + + {Check how many bits per pixel in this Bitmap, we only support 16, 24 and 32 in this function} + if BitMapInfoHeader.BitCount = 16 then + begin + {Check the compression format used, this function only supports raw RGB bitmaps so far} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Get the color format} + Format:=COLOR_FORMAT_RGB15; + {Now get the bytes per line} + LineSize:=BitMapInfoHeader.Width * 2; + {And also determine the actual number of bytes until the next line} + ReadSize:=(((BitMapInfoHeader.Width * 8 * 2) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else if BitMapInfoHeader.BitCount = 24 then + begin + {Check the compression} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Color format, bytes per line and actual bytes as again} + Format:=COLOR_FORMAT_RGB24; + LineSize:=BitMapInfoHeader.Width * 3; + ReadSize:=(((BitMapInfoHeader.Width * 8 * 3) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else if BitMapInfoHeader.BitCount = 32 then + begin + {Check the compression} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Color format, bytes per line and actual bytes as again} + Format:=COLOR_FORMAT_URGB32; + LineSize:=BitMapInfoHeader.Width * 4; + ReadSize:=(((BitMapInfoHeader.Width * 8 * 4) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else + begin + Exit; + end; + + {Get the size of the Bitmap image not including the headers, just the actual pixels} + Size:=LineSize * BitMapInfoHeader.Height; + + {Allocate a buffer to hold all the pixels} + Buffer:=GetMem(Size); + try + Offset:=0; + + {Check for a which way up} + if TopDown then + begin + {Right way up is a rare case} + for Count:=0 to BitMapInfoHeader.Height - 1 do + begin + {Read a full line of pixels from the buffer} + System.Move((@Buf + BitMapFileHeader.bfOffset + (Count * ReadSize))^, (Buffer + Offset)^,LineSize); + + {Update the offset of our buffer} + Inc(Offset,LineSize); + end; + end + else + begin + {Upside down is the normal case} + for Count:=BitMapInfoHeader.Height - 1 downto 0 do + begin + {Read a full line of pixels from the buffer} + System.Move((@Buf + BitMapFileHeader.bfOffset + (Count * ReadSize))^, (Buffer + Offset)^,LineSize); + + {Update the offset of our buffer} + Inc(Offset,LineSize); + end; + end; + + {Draw the entire image onto our graphics console window in one request} + if GraphicsWindowDrawImage(Handle,X,Y,Buffer,BitMapInfoHeader.Width,BitMapInfoHeader.Height,Format) <> ERROR_SUCCESS then Exit; + + Result:=True; + finally + FreeMem(Buffer); + end; + end; +end; + +{==============================================================================} + function SaveBitmap(Handle:TWindowHandle;const Filename:String;X,Y,Width,Height,BPP:LongWord):Boolean; {A function for saving all or part of an Ultibo graphics console window to a standard bitmap file} {Handle: The handle of an existing graphics console window} @@ -373,6 +637,344 @@ function SaveBitmap(Handle:TWindowHandle;const Filename:String;X,Y,Width,Height, end; end; +{==============================================================================} + +function LoadBitmapToStream(const Filename:String;Stream:TStream;out Width,Height,Format:LongWord):Boolean; +{A function for extract a standard bitmap image into a stream object as a raw image and return the size and format} +{Filename: The name of the file to load the bitmap from} +{Stream: A stream object to receive the extracted image} +{Width: The width in pixels of the extracted image} +{Height: The height in pixels of the extracted image} +{Format: The color format of the extracted image (eg COLOR_FORMAT_RGB24)} +{Return: True if successful or False is an error occurred} +var + Size:LongWord; + Count:LongWord; + Buffer:Pointer; + TopDown:Boolean; + LineSize:LongWord; + ReadSize:LongWord; + FileStream:TFileStream; + + BitMapFileHeader:TBitMapFileHeader; + BitMapInfoHeader:TBitMapInfoHeader; +begin + {} + Result:=False; + + {This function is different from the DrawBitmap versions because it will not draw anything on screen. + Instead the bitmap will be extracted into a raw image and written to the supplied stream, this could + be useful for passing to image conversion functions in order to translate an image to another format} + + {Check the parameters} + if Stream = nil then Exit; + if Length(Filename) = 0 then Exit; + + {Check if the file exists} + if not FileExists(Filename) then Exit; + + {Open the file using a TFileStream class} + FileStream:=TFileStream.Create(Filename,fmOpenRead or fmShareDenyNone); + try + {Check the file size} + if FileStream.Size < (SizeOf(TBitMapFileHeader) + SizeOf(TBitMapInfoHeader)) then Exit; + + {Read the Bitmap file header} + if FileStream.Read(BitMapFileHeader,SizeOf(TBitMapFileHeader)) <> SizeOf(TBitMapFileHeader) then Exit; + + {Check the magic number in the header} + if BitMapFileHeader.bfType = BMmagic then + begin + {Read the Bitmap info header} + if FileStream.Read(BitMapInfoHeader,SizeOf(TBitMapInfoHeader)) <> SizeOf(TBitMapInfoHeader) then Exit; + + {Most Bitmaps are stored upside down in the file, but they can be right way up} + TopDown:=(BitMapInfoHeader.Height < 0); + BitMapInfoHeader.Height:=Abs(BitMapInfoHeader.Height); + + {Check how many bits per pixel in this Bitmap, we only support 16, 24 and 32 in this function} + if BitMapInfoHeader.BitCount = 16 then + begin + {Check the compression format used, this function only supports raw RGB files so far} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Get the color format} + Format:=COLOR_FORMAT_RGB15; + {Now get the bytes per line} + LineSize:=BitMapInfoHeader.Width * 2; + {And also determine the actual number of bytes until the next line} + ReadSize:=(((BitMapInfoHeader.Width * 8 * 2) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else if BitMapInfoHeader.BitCount = 24 then + begin + {Check the compression} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Color format, bytes per line and actual bytes as again} + Format:=COLOR_FORMAT_RGB24; + LineSize:=BitMapInfoHeader.Width * 3; + ReadSize:=(((BitMapInfoHeader.Width * 8 * 3) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else if BitMapInfoHeader.BitCount = 32 then + begin + {Check the compression} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Color format, bytes per line and actual bytes as again} + Format:=COLOR_FORMAT_URGB32; + LineSize:=BitMapInfoHeader.Width * 4; + ReadSize:=(((BitMapInfoHeader.Width * 8 * 4) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else + begin + Exit; + end; + + {Get the size of the Bitmap image not including the headers, just the actual pixels} + Size:=LineSize * BitMapInfoHeader.Height; + + {Resize the stream to accomodate the bitmap} + Stream.Size:=Size; + + {Allocate a buffer to hold one line of pixels} + Buffer:=GetMem(LineSize); + try + {Check for a which way up} + if TopDown then + begin + {Right way up is a rare case} + for Count:=0 to BitMapInfoHeader.Height - 1 do + begin + {Update the position of the file stream} + FileStream.Position:=BitMapFileHeader.bfOffset + (Count * ReadSize); + + {Read a full line of pixels from the file} + if FileStream.Read(Buffer^,LineSize) <> LineSize then Exit; + + {Write a full line of pixels to the stream} + if Stream.Write(Buffer^,LineSize) <> LineSize then Exit; + end; + end + else + begin + {Upside down is the normal case} + for Count:=BitMapInfoHeader.Height - 1 downto 0 do + begin + {Update the position of the file stream} + FileStream.Position:=BitMapFileHeader.bfOffset + (Count * ReadSize); + + {Read a full line of pixels from the file} + if FileStream.Read(Buffer^,LineSize) <> LineSize then Exit; + + {Write a full line of pixels to the stream} + if Stream.Write(Buffer^,LineSize) <> LineSize then Exit; + end; + end; + + Result:=True; + finally + FreeMem(Buffer); + end; + end; + finally + FileStream.Free; + end; +end; + +{==============================================================================} + +function LoadBitmapToBuffer(const Filename:String;var Buf;var Len:LongWord;out Width,Height,Format:LongWord):Boolean; +{A function for extract a standard bitmap image into a memory buffer as a raw image and return the size and format} +{Filename: The name of the file to load the bitmap from} +{Buf: A memory buffer to receive the extracted image (Must be large enough to contain the extracted image)} +{Len: The size in bytes of the extracted image (Pass 0 to find how how many bytes are required)} +{Width: The width in pixels of the extracted image} +{Height: The height in pixels of the extracted image} +{Format: The color format of the extracted image (eg COLOR_FORMAT_RGB24)} +{Return: True if successful or False is an error occurred} +var + Size:LongWord; + Count:LongWord; + Offset:LongWord; + Buffer:Pointer; + TopDown:Boolean; + LineSize:LongWord; + ReadSize:LongWord; + FileStream:TFileStream; + + BitMapFileHeader:TBitMapFileHeader; + BitMapInfoHeader:TBitMapInfoHeader; +begin + {} + Result:=False; + + {This function is different from the DrawBitmap versions because it will not draw anything on screen. + Instead the bitmap will be extracted into a raw image and written to the supplied buffer, this is + useful for passing to other functions that expect a raw image buffer rather than an image encapsulated + in a particular format with a header etc. + + In order to determine the size of the buffer you need to allocate you should call this function twice, + the first time simply pass 0 to for Len parameter (and a dummy variable for Buf), the function will + return False but the Len parameter will be updated to the number of bytes needed to contain the + extracted image. + + If the function returns False and the Len parameter is still 0 then the bitmap could not be read or + some other error occurred} + + {Check the parameters} + if Length(Filename) = 0 then Exit; + + {Check if the file exists} + if not FileExists(Filename) then Exit; + + {Open the file using a TFileStream class} + FileStream:=TFileStream.Create(Filename,fmOpenRead or fmShareDenyNone); + try + {Check the file size} + if FileStream.Size < (SizeOf(TBitMapFileHeader) + SizeOf(TBitMapInfoHeader)) then Exit; + + {Read the Bitmap file header} + if FileStream.Read(BitMapFileHeader,SizeOf(TBitMapFileHeader)) <> SizeOf(TBitMapFileHeader) then Exit; + + {Check the magic number in the header} + if BitMapFileHeader.bfType = BMmagic then + begin + {Read the Bitmap info header} + if FileStream.Read(BitMapInfoHeader,SizeOf(TBitMapInfoHeader)) <> SizeOf(TBitMapInfoHeader) then Exit; + + {Most Bitmaps are stored upside down in the file, but they can be right way up} + TopDown:=(BitMapInfoHeader.Height < 0); + BitMapInfoHeader.Height:=Abs(BitMapInfoHeader.Height); + + {Check how many bits per pixel in this Bitmap, we only support 16, 24 and 32 in this function} + if BitMapInfoHeader.BitCount = 16 then + begin + {Check the compression format used, this function only supports raw RGB files so far} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Get the color format} + Format:=COLOR_FORMAT_RGB15; + {Now get the bytes per line} + LineSize:=BitMapInfoHeader.Width * 2; + {And also determine the actual number of bytes until the next line} + ReadSize:=(((BitMapInfoHeader.Width * 8 * 2) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else if BitMapInfoHeader.BitCount = 24 then + begin + {Check the compression} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Color format, bytes per line and actual bytes as again} + Format:=COLOR_FORMAT_RGB24; + LineSize:=BitMapInfoHeader.Width * 3; + ReadSize:=(((BitMapInfoHeader.Width * 8 * 3) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else if BitMapInfoHeader.BitCount = 32 then + begin + {Check the compression} + if BitMapInfoHeader.Compression = BI_RGB then + begin + {Color format, bytes per line and actual bytes as again} + Format:=COLOR_FORMAT_URGB32; + LineSize:=BitMapInfoHeader.Width * 4; + ReadSize:=(((BitMapInfoHeader.Width * 8 * 4) + 31) div 32) shl 2; + end + else + begin + Exit; + end; + end + else + begin + Exit; + end; + + {Get the size of the Bitmap image not including the headers, just the actual pixels} + Size:=LineSize * BitMapInfoHeader.Height; + + {Check the size against the supplied buffer length} + if Len < Size then + begin + {Return the required length} + Len:=Size; + Exit; + end; + + {Get the buffer to hold all the pixels} + Buffer:=@Buf; + Offset:=0; + + {Check for a which way up} + if TopDown then + begin + {Right way up is a rare case} + for Count:=0 to BitMapInfoHeader.Height - 1 do + begin + {Update the position of the file stream} + FileStream.Position:=BitMapFileHeader.bfOffset + (Count * ReadSize); + + {Read a full line of pixels from the file} + if FileStream.Read((Buffer + Offset)^,LineSize) <> LineSize then Exit; + + {Update the offset of our buffer} + Inc(Offset,LineSize); + end; + end + else + begin + {Upside down is the normal case} + for Count:=BitMapInfoHeader.Height - 1 downto 0 do + begin + {Update the position of the file stream} + FileStream.Position:=BitMapFileHeader.bfOffset + (Count * ReadSize); + + {Read a full line of pixels from the file} + if FileStream.Read((Buffer + Offset)^,LineSize) <> LineSize then Exit; + + {Update the offset of our buffer} + Inc(Offset,LineSize); + end; + end; + + {Return width and height} + Width:=BitMapInfoHeader.Width; + Height:=BitMapInfoHeader.Height; + + {Return the actual length} + Len:=Size; + + Result:=True; + end; + finally + FileStream.Free; + end; +end; + {==============================================================================} {==============================================================================} diff --git a/source/packages/ultibounits/src/vgfonts/DejaVuSans.inc b/source/packages/ultibounits/src/vgfonts/DejaVuSans.inc new file mode 100644 index 0000000..52fa24e --- /dev/null +++ b/source/packages/ultibounits/src/vgfonts/DejaVuSans.inc @@ -0,0 +1,2221 @@ +{Generated by font2openvg. See http://developer.hybrid.fi for more information.} + +{converted from font file DejaVuSans.ttf} +{font family name: DejaVu Sans} +{font style name: Book} + +var + DejaVuSans_glyphInstructions:array[0..11424] of Byte = ( + 2,4,4,4,4,0,2,4,4,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,10,10,4,10,10,4,10,10,10,10,4,4,4,10,10, + 4,10,10,4,10,10,10,10,4,0,2,4,10,10,10,10,0,2,4,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,4,0,2, + 4,10,10,4,10,10,4,4,4,10,10,10,10,10,10,10,10,10,10,10, + 10,4,10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10, + 4,10,10,10,10,4,0,2,4,10,10,10,10,4,10,10,10,10,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,10,10,10, + 10,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,4,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,10, + 10,10,10,10,10,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,10,10,10,10,10,10,10,10,4,10,10, + 10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,0,2,4, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,0,2,4,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,10,10, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,4, + 0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 4,4,4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4,0,2,4, + 4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10, + 4,0,2,4,4,10,10,10,10,4,0,2,4,10,10,10,10,10,10,10, + 10,4,4,0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10,10, + 10,10,10,0,2,4,4,10,10,10,10,4,0,2,4,10,10,10,10,4, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,10,10,10,10,10,10, + 10,10,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,10,10,4,4,4, + 10,10,4,0,2,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10,10,4, + 0,2,4,10,10,10,10,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,10,10,10,10,10,10,10,10,10,10,0,2,10,10, + 4,4,4,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,10,10, + 10,10,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4, + 4,4,4,0,2,4,4,10,10,10,10,4,4,4,10,10,10,10,4,0, + 2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,4,4,0,2,4, + 4,4,10,10,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,4, + 4,4,4,4,0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10, + 10,10,10,10,0,2,4,4,4,4,4,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10,10,4,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4,10,10,4, + 4,4,4,4,4,4,4,4,4,4,10,10,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,4,10,10,10,10,4,10,10,10,10,10, + 10,10,10,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4,4, + 10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 10,10,4,4,4,10,10,4,0,2,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,4, + 4,4,10,10,10,10,4,4,4,10,10,10,10,4,4,4,4,4,10,10, + 10,10,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 0,2,4,4,4,4,4,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,4,4,4,4,4,0,2,10,10,10,10,4,4,4,4, + 4,10,10,10,10,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10, + 10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, + 4,4,4,10,10,4,4,4,10,10,4,4,4,4,4,4,0,2,4,4, + 4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,0,2,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,4, + 4,4,10,10,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,10,10,4,10,10,4,4,4,10,10,4,10,10, + 4,4,4,10,10,4,10,10,10,10,4,10,10,4,0,2,4,4,4,4, + 0,2,4,10,10,4,10,10,10,10,4,10,10,4,4,4,10,10,4,10, + 10,4,4,4,10,10,4,10,10,4,4,0,2,4,10,10,10,10,10,10, + 10,10,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4, + 4,0,2,4,10,10,10,10,0,2,4,10,10,4,10,10,4,10,10,4, + 4,4,10,10,10,10,4,4,4,10,10,0,2,4,10,10,10,10,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,10,10,10,10,0,2,4, + 4,4,10,10,10,10,4,4,4,10,10,10,10,4,4,4,10,10,10,10, + 4,4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10,10, + 10,10,10,10,10,10,0,2,4,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,4,10,10,10,10,10,4,10,10,10,10,10,10,10,10, + 10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,10,10,10, + 10,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4, + 4,10,10,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,0,2, + 10,10,10,10,10,10,4,4,0,2,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,0,2,4,4,4,4, + 0,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4,4, + 4,10,10,10,10,0,2,10,10,10,10,10,10,4,4,4,10,10,4,4, + 4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,10,10,10, + 10,10,10,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,4,10, + 10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,10, + 10,10,10,4,10,10,10,10,10,10,10,10,4,4,0,2,4,4,4,4, + 4,4,4,4,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10, + 10,10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, + 4,4,0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,4,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10, + 10,10,4,0,2,4,4,4,4,0,2,4,4,4,0,2,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,0,2,4,4,4, + 4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,0,2,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4, + 0,2,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10,4,4,10, + 10,10,10,4,10,10,10,10,4,4,10,10,10,10,0,2,4,4,4,0, + 2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,0,2,10,10, + 10,10,10,10,10,10,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,10,10,10,10,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4, + 10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,4,4,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4, + 4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10, + 10,10,0,2,4,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10, + 4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10, + 10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,4,4, + 4,10,10,10,10,10,10,4,4,4,0,2,4,4,10,10,10,10,4,4, + 4,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4,10,10,10,10, + 4,4,4,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4,10,10, + 10,10,4,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,0, + 2,4,4,10,10,10,10,4,4,4,10,10,10,10,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4,0,2,4, + 4,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,4,10,10,10, + 10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,4, + 4,4,0,2,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10, + 10,10,10,4,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4, + 0,2,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10, + 10,4,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,0,2, + 10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4, + 4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,4,4,4,0, + 2,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10, + 4,4,10,10,10,10,4,10,10,10,10,0,2,4,10,10,10,10,4,10, + 10,10,10,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10, + 10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10, + 4,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10, + 10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4, + 10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,10,10, + 10,10,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,10,10,4, + 4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,4,4, + 0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4, + 10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, + 0,2,4,4,4,4,0,2,4,4,10,10,10,10,4,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4, + 10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, + 0,2,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,4,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,0,2,4,4,4, + 4,0,2,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,0, + 2,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,4,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4, + 4,4,4,10,10,10,10,0,2,4,10,10,10,10,4,10,10,10,10,4, + 10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,4,10,10, + 10,10,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,4, + 0,2,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,4,4, + 0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2, + 4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4, + 4,10,10,10,10,0,2,4,0,2,4,4,4,4,0,2,4,4,4,10, + 10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,0,2,4,4,4, + 4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10, + 10,10,0,2,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10, + 10,4,4,4,10,10,4,4,4,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,0,2,10,10,4,4,4,10,10,4,4,4,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0, + 2,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10, + 4,4,10,10,10,10,4,10,10,10,10,0,2,4,10,10,10,10,4,10, + 10,10,10,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,0,2, + 4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,4,4, + 0,2,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10,4,10,10, + 10,10,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,0,2,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10, + 4,10,10,10,10,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,0,2,4,10,10,10,10,10,10,10,10,4,10, + 10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,4, + 4,4,0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10, + 10,10,0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10, + 10,10,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,4, + 4,4,4,0,2,4,0,2,4,10,10,10,10,10,10,10,10,4,10,10, + 10,10,10,10,10,10,0,2,4,10,10,10,10,10,10,10,10,4,10,10, + 10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,4,10,10, + 10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,10,10,10, + 10,4,0,2,4,10,10,10,10,4,4,0,2,4,4,4,4,4,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,0,2,4,10,10,10,10,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,4,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,4,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,4,0,2,4,10,10,10,10,4,10, + 10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 10,10,10,10,4,10,10,10,10,0,2,4,4,10,10,10,10,4,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0, + 2,4,0,2,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, + 10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, + 0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0, + 2,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10, + 10,10,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,10,10,10,10,10,10,10,10,4,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,4,10,10,10,10,4,10,10,10,10, + 10,10,10,10,4,4,4,0,2,4,4,4,4,4,10,10,10,10,10,10, + 10,10,4,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,4,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, + 10,10,10,10,4,10,10,10,10,10,10,10,10,4,4,4,0,2,4,10, + 10,10,10,4,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4, + 4,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,4,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,4,10,10,10,10,4,10,10,10,10,10,10,10,10,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,4,10,10,10,10,10,10,10, + 10,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,4,10,10,10,10,4,10,10, + 10,10,10,10,10,10,4,4,4,0,2,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4, + 4,4,4,4,4,4,4,4,4,10,10,10,10,0,2,4,10,10,10,10, + 4,4,10,10,10,10,4,10,10,10,10,4,4,10,10,10,10,0,2,4, + 4,4,4,0,2,4,10,10,10,10,4,10,10,10,10,4,10,10,10,10, + 4,10,10,10,10,0,2,4,4,4,4,0,2,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,0,2,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,0, + 2,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,0,2,4, + 0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, + 4,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,0,2,4,4,10,10,4,4,4, + 10,10,4,0,2,4,4,4,4,0,2,4,4,10,10,4,4,4,10,10, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,4,4,4,0,2,4,4,10,10,4,4,4,10,10,4, + 0,2,4,4,4,4,4,4,4,0,2,4,4,10,10,4,4,4,10,10, + 4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4, + 4,4,4,4,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10, + 10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,10,10,10,10, + 4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2, + 4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4, + 4,4,4,4,0,2,10,10,10,4,4,4,4,4,10,10,10,10,4,10, + 10,4,4,4,10,10,4,0,2,4,10,10,4,4,4,10,10,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,0,2,10, + 10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4, + 4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,0,2,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,10,10, + 10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4, + 4,4,4,10,10,10,10,4,0,2,4,10,10,10,10,4,4,0,2,10, + 10,10,10,4,0,2,4,4,10,10,10,10,4,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,4,4,4,4,0,2,10,10,4,4,4,10,10,4,4,4,4,4,10, + 10,10,10,0,2,4,4,10,10,10,10,4,0,2,4,4,4,4,0,2, + 10,10,10,10,4,4,4,4,4,10,10,10,10,4,0,2,4,4,4,4, + 0,2,10,10,4,4,4,10,10,4,4,4,4,4,10,10,10,10,0,2, + 4,4,10,10,10,10,4,0,2,4,4,4,4,0,2,10,10,10,10,4, + 4,4,4,4,10,10,10,10,4,0,2,10,10,4,4,4,10,10,4,4, + 4,4,4,10,10,10,10,0,2,4,4,10,10,10,10,4,0,2,4,4, + 4,4,4,4,4,0,2,10,10,10,10,4,4,4,4,4,10,10,10,10, + 4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,10, + 10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10, + 10,10,0,2,4,4,4,4,4,4,4,0,2,4,10,10,10,10,10,10, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,0,2,4,4,4,4,4,4,4,0,2,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10, + 0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10, + 10,10,10,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,4,10, + 10,10,10,10,10,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10, + 10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,10,10, + 10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10, + 10,10,0,2,4,4,4,4,4,4,4,0,2,4,10,10,10,10,10,10, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,0,2,4,4,4,4,4,4,4,0,2,4,0,2,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,0, + 2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4,4, + 4,4,10,10,4,4,4,10,10,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,10,10,4,4,4,10,10,4,4,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,10,10,4,4,4,10,10,4,4,4,4, + 4,4,4,4,4,4,0,2,4,10,10,10,10,4,4,10,10,10,10,4, + 10,10,10,10,4,4,10,10,10,10,0,2,4,4,10,10,10,10,4,4, + 4,10,10,10,10,4,0,2,4,10,10,10,10,4,10,10,10,10,4,10, + 10,10,10,4,10,10,10,10,0,2,4,4,4,10,10,10,10,4,4,4, + 4,4,10,10,10,10,0,2,4,0,2,4,4,4,4,0,2,4,4,10, + 10,10,10,4,4,4,10,10,10,10,4,0,2,4,4,4,4,0,2,4, + 4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,0,2, + 4,10,10,10,10,4,10,10,10,10,0,2,4,4,10,10,10,10,4,4, + 4,10,10,10,10,4,0,2,4,10,10,10,10,4,10,10,10,10,0,2, + 4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,0, + 2,4,4,10,10,10,10,4,4,4,10,10,10,10,4,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,0,2,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,4,4,4,10, + 10,10,10,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,0,2,4, + 4,10,10,10,10,4,4,4,10,10,10,10,4,0,2,4,10,10,10,10, + 10,10,4,10,10,10,10,10,10,0,2,4,4,4,10,10,10,10,4,4, + 4,4,4,10,10,10,10,0,2,4,0,2,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,0,2,10,10,4,4,4,10,10,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4, + 4,4,0,2,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,10,10,4,4,4,10,10,4,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,4,4,4,4,4, + 4,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,4,0,2,4, + 4,10,10,10,10,4,0,2,4,10,10,10,10,10,10,10,10,4,4,10, + 10,4,4,4,10,10,0,2,10,10,4,4,4,10,10,0,2,4,4,4, + 4,10,10,10,10,4,4,4,0,2,10,10,10,10,10,10,10,10,4,4, + 4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,4, + 4,4,10,10,0,2,4,4,10,10,10,10,4,4,4,4,4,0,2,10, + 10,10,10,10,10,10,10,4,4,4,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,10,10,10,10,4,10,10,10,10,10, + 10,10,10,4,0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10, + 10,10,10,10,10,10,4,4,4,10,10,0,2,4,10,10,10,10,10,10, + 10,10,4,10,10,10,10,10,10,10,4,10,10,4,4,4,10,10,0,2, + 4,10,10,10,10,4,4,4,4,4,4,0,2,4,4,4,4,4,4,10, + 10,10,10,4,0,2,4,4,10,10,10,10,4,0,2,4,10,10,10,10, + 4,4,10,10,4,4,4,10,10,0,2,10,4,4,4,10,10,0,2,4, + 4,4,10,10,10,10,4,4,4,4,0,2,4,4,4,4,4,10,10,10, + 10,10,10,10,10,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,4,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,4,0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,4,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4, + 4,4,4,10,10,4,4,4,10,10,4,0,2,4,4,10,10,4,4,4, + 4,4,10,10,4,4,4,10,10,4,4,4,4,4,10,10,4,0,2,4, + 4,4,4,4,10,10,10,10,10,10,10,10,10,10,4,4,4,10,10,4, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,10,10,10,10,10,10,10,10,4,4,4,0,2,10,10,10,10, + 4,10,10,10,10,4,10,10,4,10,10,10,10,4,4,4,4,4,10,10, + 10,10,4,10,10,4,0,2,4,4,10,10,4,4,4,10,10,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,10,10,10,4, + 4,4,4,4,4,4,4,4,4,10,10,10,4,0,2,10,10,4,4,4, + 10,10,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,0,2,10,10,10,10,4,4,4,10,10,10,10,4,4,4, + 10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4, + 4,4,4,10,10,4,4,4,10,10,4,0,2,4,4,4,10,10,10,10, + 4,4,4,4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,10,10,4,10,10,0,2,10,10,10,10,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10, + 10,10,4,10,10,10,10,10,10,0,2,4,10,10,10,10,10,10,4,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,4,10,10,4,10,10,10,10,10,10,4,10,10, + 4,4,0,2,10,10,10,10,10,4,10,0,2,4,10,10,4,10,10,10, + 10,10,10,4,10,10,4,4,0,2,10,10,10,10,10,4,10,0,2,4, + 4,10,10,10,10,4,0,2,4,10,10,10,10,4,4,4,4,10,10,4, + 4,4,10,10,0,2,4,4,4,10,10,4,4,4,10,10,4,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,4, + 4,4,10,10,4,4,4,4,4,4,4,10,10,10,10,0,2,4,4,10, + 10,10,10,4,0,2,10,10,10,10,10,4,10,10,10,10,10,4,10,10, + 10,10,10,4,10,10,10,10,10,4,0,2,10,10,10,10,10,10,4,10, + 10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10,4, + 4,4,10,10,4,4,10,10,10,10,4,4,4,0,2,10,10,10,10,4, + 0,2,4,4,4,4,4,10,10,4,4,10,10,4,4,4,10,10,4,10, + 10,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,10,10,4,4, + 4,10,10,0,2,4,4,4,4,4,10,10,4,4,4,10,10,4,4,4, + 4,4,10,10,4,4,4,10,10,0,2,4,4,4,4,10,10,4,4,4, + 10,10,4,4,4,0,2,4,4,10,10,10,10,4,4,4,10,10,10,10, + 4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,0,2,4,0,2,4,10,10,10, + 10,10,10,10,10,4,4,4,4,10,10,10,10,10,10,10,10,4,4,4, + 0,2,10,10,10,10,4,4,10,10,10,10,4,10,10,4,4,4,10,10, + 4,0,2,10,10,4,4,4,4,4,4,4,4,10,10,10,4,4,4,10, + 10,0,2,10,10,4,4,4,10,10,4,4,4,4,4,10,10,10,10,4, + 4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,10,10,10,10,4,4,4,4,4,4,4, + 4,10,10,10,10,10,10,10,4,10,10,0,2,10,10,4,10,10,10,10, + 10,10,10,4,4,4,4,4,4,4,4,10,10,10,10,0,2,4,4,4, + 4,4,4,4,4,10,10,10,10,10,10,4,10,10,10,10,10,10,10,0, + 2,10,10,4,10,10,10,10,10,10,10,4,4,4,4,4,4,10,10,10, + 10,0,2,4,4,4,4,4,4,4,4,4,10,10,10,10,10,10,4,10, + 10,10,10,10,10,4,4,4,4,4,0,2,10,10,10,10,4,4,4,4, + 4,4,4,10,10,10,4,10,10,10,10,4,0,2,10,10,10,10,4,4, + 4,4,4,4,4,10,10,10,10,4,10,10,10,4,0,2,4,10,10,10, + 10,10,10,4,10,10,10,10,10,10,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,10,10,10,10,10,0,2,10,10,10,10,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,10, + 10,10,10,4,0,2,4,10,10,10,10,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,10,10, + 10,10,4,0,2,4,10,10,10,10,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,10,10,4,4,4,10,10,4,0,2,4,4,4,4,4,4,0,2, + 4,4,10,10,4,4,4,10,10,4,0,2,4,4,4,4,0,2,4,4, + 4,4,4,4,0,2,4,4,10,10,4,4,4,10,10,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,10,10,4,4,4,10,10,4, + 0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,10,10,4,4, + 4,10,10,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,4,0,2,4,4,10,10,4,4,4,10,10,4,0,2,4,4,4,4, + 0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2, + 4,4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,0,2,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10, + 10,10,10,4,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,0,2,4,4,4,4,4,4,4,0,2,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,4,4,10,10, + 10,10,4,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,0, + 2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4, + 0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,4,4,4,10,10, + 10,10,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4, + 4,4,4,10,10,10,10,0,2,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,10,10,10,10,4,4,4,10,10,10,10,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,10, + 10,10,10,4,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10, + 10,4,4,4,4,4,10,10,10,10,0,2,4,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,10,10, + 10,10,4,4,4,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4, + 4,4,10,10,10,10,0,2,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,4,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,0,2,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,10,10,10,10,10,10,4,4,0,2,4,4,4,10, + 10,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,0, + 2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10, + 10,10,4,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,10,10,10,10,4,0,2,10,10,10,10,4,4,10,10,10,10, + 4,10,10,10,10,10,10,10,10,10,10,4,4,10,10,10,10,4,10,10, + 10,10,0,2,10,10,10,10,10,10,4,4,0,2,4,4,4,4,4,10, + 10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,4,4,4,4, + 4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,4,4,4, + 10,10,10,10,4,10,10,10,10,4,4,4,10,4,10,10,10,10,10,10, + 10,10,4,4,4,0,2,4,4,4,4,4,10,10,10,10,10,10,10,10, + 4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,4,10,10,10,10,4,10,10,10,10,10,10,10,10,4,4,4, + 0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,4,4,4,4,4, + 4,4,4,10,10,10,10,10,10,10,4,10,10,0,2,4,4,4,4,4, + 4,4,0,2,10,10,10,10,10,10,10,4,10,10,10,10,10,10,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,10, + 10,4,4,4,10,10,4,0,2,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,10,10,10,10,4,0,2,4,10,10,10,10,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,4,0,2, + 4,10,10,10,10,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,0 ); + + DejaVuSans_glyphInstructionIndices:array[0..467] of Integer = ( + 0,0,14,26,62,104,150,189,195,207,219,239,253,261,267,273,279,299,312,335, + 366,384,408,437,446,484,513,525,539,548,560,569,601,658,673,704,724,742,756,768, + 792,806,812,824,837,845,860,872,892,912,937,964,994,1004,1020,1029,1044,1058,1069,1081, + 1091,1097,1107,1116,1122,1128,1160,1185,1205,1230,1254,1274,1307,1325,1337,1355,1368,1374,1403,1421, + 1441,1466,1491,1507,1537,1557,1578,1587,1602,1616,1632,1644,1675,1681,1712,1732,1744,1756,1768,1780, + 1792,1804,1816,1828,1840,1852,1864,1876,1888,1900,1912,1924,1936,1948,1960,1972,1984,1996,2008,2020, + 2032,2044,2056,2068,2080,2092,2104,2116,2128,2128,2142,2172,2198,2238,2265,2277,2323,2335,2391,2429, + 2447,2455,2461,2524,2530,2552,2572,2591,2622,2628,2655,2669,2675,2691,2704,2730,2748,2785,2823,2878, + 2910,2931,2952,2976,3015,3042,3074,3098,3134,3154,3174,3197,3223,3235,3247,3262,3280,3306,3342,3368, + 3394,3423,3467,3499,3513,3551,3573,3595,3620,3648,3665,3687,3723,3761,3799,3840,3894,3938,3990,4041, + 4077,4107,4137,4170,4206,4221,4236,4254,4275,4310,4350,4376,4402,4431,4473,4505,4523,4561,4588,4615, + 4645,4678,4700,4725,4753,4774,4812,4839,4883,4914,4962,4988,5014,5043,5072,5098,5127,5156,5185,5212, + 5243,5269,5302,5322,5352,5378,5414,5434,5467,5497,5537,5560,5593,5626,5668,5704,5749,5779,5821,5851, + 5890,5913,5940,5968,5994,6024,6055,6067,6082,6100,6121,6143,6171,6183,6192,6210,6240,6261,6282,6301, + 6320,6333,6347,6359,6373,6385,6399,6411,6425,6437,6453,6467,6485,6509,6527,6551,6572,6599,6625,6648, + 6672,6698,6724,6756,6788,6820,6852,6878,6920,6953,6975,7008,7030,7066,7091,7127,7163,7202,7241,7287, + 7333,7372,7414,7440,7476,7495,7521,7539,7567,7607,7650,7672,7699,7727,7760,7796,7837,7865,7898,7930, + 7967,7991,8015,8035,8060,8083,8101,8119,8137,8158,8179,8200,8216,8249,8287,8309,8336,8358,8385,8405, + 8432,8459,8485,8510,8531,8558,8586,8600,8623,8654,8672,8698,8729,8755,8787,8799,8813,8834,8853,8867, + 8885,8914,8932,8950,8974,9010,9046,9072,9098,9125,9156,9185,9211,9241,9255,9281,9308,9324,9350,9366, + 9398,9435,9461,9482,9502,9528,9548,9568,9592,9616,9640,9662,9691,9713,9735,9762,9781,9787,9799,9821, + 9835,9874,9913,9959,9979,10005,10029,10053,10083,10119,10143,10184,10199,10217,10246,10275,10300,10330,10364,10403, + 10437,10476,10513,10555,10589,10628,10652,10685,10735,10762,10806,10836,10893,10925,10966,10999,11041,11063,11085,11121, + 11157,11199,11241,11274,11307,11328,11358,11388 ); + + DejaVuSans_glyphInstructionCounts:array[0..467] of Integer = ( + 0,14,12,36,42,46,39,6,12,12,20,14,8,6,6,6,20,13,23,31, + 18,24,29,9,38,29,12,14,9,12,9,32,57,15,31,20,18,14,12,24, + 14,6,12,13,8,15,12,20,20,25,27,30,10,16,9,15,14,11,12,10, + 6,10,9,6,6,32,25,20,25,24,20,33,18,12,18,13,6,29,18,20, + 25,25,16,30,20,21,9,15,14,16,12,31,6,31,20,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,0,14,30,26,40,27,12,46,12,56,38,18, + 8,6,63,6,22,20,19,31,6,27,14,6,16,13,26,18,37,38,55,32, + 21,21,24,39,27,32,24,36,20,20,23,26,12,12,15,18,26,36,26,26, + 29,44,32,14,38,22,22,25,28,17,22,36,38,38,41,54,44,52,51,36, + 30,30,33,36,15,15,18,21,35,40,26,26,29,42,32,18,38,27,27,30, + 33,22,25,28,21,38,27,44,31,48,26,26,29,29,26,29,29,29,27,31, + 26,33,20,30,26,36,20,33,30,40,23,33,33,42,36,45,30,42,30,39, + 23,27,28,26,30,31,12,15,18,21,22,28,12,9,18,30,21,21,19,19, + 13,14,12,14,12,14,12,14,12,16,14,18,24,18,24,21,27,26,23,24, + 26,26,32,32,32,32,26,42,33,22,33,22,36,25,36,36,39,39,46,46, + 39,42,26,36,19,26,18,28,40,43,22,27,28,33,36,41,28,33,32,37, + 24,24,20,25,23,18,18,18,21,21,21,16,33,38,22,27,22,27,20,27, + 27,26,25,21,27,28,14,23,31,18,26,31,26,32,12,14,21,19,14,18, + 29,18,18,24,36,36,26,26,27,31,29,26,30,14,26,27,16,26,16,32, + 37,26,21,20,26,20,20,24,24,24,22,29,22,22,27,19,6,12,22,14, + 39,39,46,20,26,24,24,30,36,24,41,15,18,29,29,25,30,34,39,34, + 39,37,42,34,39,24,33,50,27,44,30,57,32,41,33,42,22,22,36,36, + 42,42,33,33,21,30,30,37 ); + + DejaVuSans_glyphPointIndices:array[0..467] of Integer = ( + 0,0,12,22,56,119,192,257,262,281,300,319,332,339,344,349,354,388,400,438, + 492,508,547,598,606,673,724,734,746,754,764,772,820,923,936,980,1015,1039,1052,1063, + 1102,1115,1120,1135,1147,1154,1168,1179,1213,1239,1280,1317,1370,1379,1402,1410,1424,1437,1447,1458, + 1467,1472,1481,1489,1494,1499,1549,1588,1623,1662,1700,1723,1778,1803,1813,1833,1845,1850,1894,1919, + 1953,1992,2031,2054,2107,2130,2157,2165,2179,2192,2211,2222,2268,2273,2319,2354,2364,2374,2384,2394, + 2404,2414,2424,2434,2444,2454,2464,2474,2484,2494,2504,2514,2524,2534,2544,2554,2564,2574,2584,2594, + 2604,2614,2624,2634,2644,2654,2664,2674,2684,2684,2696,2740,2773,2835,2861,2871,2954,2964,3065,3120, + 3136,3143,3148,3251,3256,3294,3312,3342,3396,3401,3443,3460,3465,3492,3504,3543,3559,3592,3639,3714, + 3762,3780,3798,3819,3871,3894,3939,3961,4023,4041,4059,4080,4103,4113,4123,4136,4151,4183,4233,4272, + 4311,4353,4426,4470,4483,4542,4570,4598,4629,4662,4677,4705,4768,4823,4878,4936,5023,5083,5167,5251, + 5313,5356,5399,5445,5493,5505,5517,5532,5549,5602,5664,5703,5742,5784,5855,5899,5914,5973,6005,6037, + 6072,6109,6133,6172,6201,6219,6274,6306,6375,6415,6492,6532,6572,6615,6658,6698,6740,6783,6826,6858, + 6902,6934,6981,6999,7042,7074,7131,7149,7194,7234,7299,7320,7366,7413,7476,7534,7608,7652,7714,7758, + 7818,7839,7872,7898,7931,7975,8019,8029,8041,8065,8091,8123,8160,8170,8177,8197,8227,8250,8273,8290, + 8307,8319,8331,8341,8353,8363,8375,8385,8397,8407,8422,8435,8451,8481,8497,8527,8546,8579,8611,8644, + 8679,8718,8757,8810,8863,8907,8951,8983,9054,9096,9124,9166,9194,9239,9270,9328,9386,9447,9508,9588, + 9668,9729,9792,9828,9878,9895,9923,9940,9971,10033,10097,10125,10157,10199,10245,10302,10363,10396,10433,10483, + 10537,10559,10581,10599,10626,10646,10662,10678,10694,10712,10731,10750,10769,10816,10871,10899,10940,10968,11009,11044, + 11090,11135,11167,11202,11228,11269,11318,11331,11368,11422,11443,11476,11526,11566,11617,11632,11645,11671,11693,11706, + 11723,11767,11788,11813,11850,11911,11972,12012,12052,12089,12138,12177,12222,12275,12288,12324,12358,12377,12410,12429, + 12479,12533,12574,12606,12632,12669,12688,12707,12743,12779,12815,12849,12889,12921,12953,12991,13017,13022,13032,13053, + 13065,13108,13151,13209,13231,13258,13283,13309,13340,13385,13406,13464,13477,13492,13534,13576,13607,13642,13680,13722, + 13760,13802,13843,13888,13926,13968,14006,14034,14099,14122,14182,14209,14298,14345,14410,14457,14520,14540,14560,14621, + 14682,14748,14814,14858,14902,14925,14960,14995 ); + + DejaVuSans_glyphPoints:array[0..(15045 * 2) - 1] of Integer = ( + 13136,10800,21760,10800,21760,0,13136,0,13136,10800,13136,63456,21760,63456,21760,35616,20912,20448,14032,20448, + 13136,35616,13136,63456,15600,63456,15600,39872,8368,39872,8368,63456,15600,63456,31664,63456,31664,39872,24432,39872, + 24432,63456,31664,63456,44496,38288,32128,38288,28560,24096,41008,24096,44496,38288,38128,62480,33696,44832,46112,44832, + 50576,62480,57376,62480,52992,44832,66256,44832,66256,38288,51344,38288,47856,24096,61376,24096,61376,17600,46192,17600, + 41776,0,34976,0,39360,17600,26896,17600,22528,0,15680,0,20096,17600,6720,17600,6720,24096,21680,24096, + 25248,38288,11568,38288,11568,44832,26896,44832,31232,62480,38128,62480,29408,-12800,25168,-12800,25120,0,20656,80, + 16192,1040,11728,2000,7232,3904,7232,11568,11568,8848,16008,7464,20448,6080,25168,6032,25168,25408,15760,26944, + 11496,30600,7232,34256,7232,40624,7232,47552,11864,51552,16496,55552,25168,56144,25168,66128,29408,66128,29408,56272, + 33360,56096,37056,55440,40752,54784,44288,53632,44288,46192,40752,47984,37040,48960,33328,49936,29408,50112,29408,31968, + 39056,30480,43608,26648,48160,22816,48160,16192,48160,9008,43336,4864,38512,720,29408,80,29408,-12800,25168,32720, + 25168,50144,20224,49600,17632,47344,15040,45088,15040,41360,15040,37696,17440,35656,19840,33616,25168,32720,29408,24560, + 29408,6160,34800,6880,37544,9224,40288,11568,40288,15392,40288,19120,37672,21336,35056,23552,29408,24560,63280,27920, + 59584,27920,57480,24776,55376,21632,55376,16016,55376,10496,57480,7328,59584,4160,63280,4160,66896,4160,69000,7328, + 71104,10496,71104,16016,71104,21584,69000,24752,66896,27920,63280,27920,63280,33328,70000,33328,73952,28648,77904,23968, + 77904,16016,77904,8080,73928,3424,69952,-1232,63280,-1232,56480,-1232,52528,3424,48576,8080,48576,16016,48576,24016, + 52552,28672,56528,33328,63280,33328,19424,59200,15760,59200,13664,56032,11568,52864,11568,47344,11568,41728,13648,38584, + 15728,35440,19424,35440,23120,35440,25224,38584,27328,41728,27328,47344,27328,52832,25200,56016,23072,59200,19424,59200, + 57808,64608,64608,64608,24912,-1232,18112,-1232,57808,64608,19424,64608,26144,64608,30136,59952,34128,55296,34128,47344, + 34128,39312,30152,34680,26176,30048,19424,30048,12672,30048,8736,34704,4800,39360,4800,47344,4800,55248,8752,59928, + 12704,64608,19424,64608,21168,34128,17296,30688,15488,27264,13680,23840,13680,20096,13680,13904,18184,9776,22688,5648, + 29488,5648,33536,5648,37064,6992,40592,8336,43696,11056,21168,34128,27152,38880,48752,16784,51248,20576,52656,24888, + 54064,29200,54320,34048,62224,34048,61712,28432,59504,22952,57296,17472,53344,12112,65200,0,54480,0,48400,6240, + 43984,2464,39144,616,34304,-1232,28736,-1232,18480,-1232,11984,4608,5488,10448,5488,19600,5488,25040,8336,29816, + 11184,34592,16880,38800,14832,41488,13768,44144,12704,46800,12704,49344,12704,56224,17424,60416,22144,64608,29968,64608, + 33488,64608,36992,63840,40496,63072,44112,61536,44112,53808,40416,55808,37056,56848,33696,57888,30816,57888,26352,57888, + 23568,55528,20784,53168,20784,49424,20784,47264,22040,45072,23296,42880,27152,38880,15600,63456,15600,39872,8368,39872, + 8368,63456,15600,63456,26992,66048,21296,56272,18528,46712,15760,37152,15760,27328,15760,17504,18544,7880,21328,-1744, + 26992,-11472,20192,-11472,13808,-1488,10648,8160,7488,17808,7488,27328,7488,36800,10632,46408,13776,56016,20192,66048, + 26992,66048,6976,66048,13776,66048,20144,56016,23312,46408,26480,36800,26480,27328,26480,17808,23312,8160,20144,-1488, + 13776,-11472,6976,-11472,12624,-1744,15408,7880,18192,17504,18192,27328,18192,37152,15408,46712,12624,56272,6976,66048, + 40928,52992,25664,44752,40928,36464,38464,32304,24176,40928,24176,24912,19344,24912,19344,40928,5056,32304,2592,36464, + 17856,44752,2592,52992,5056,57200,19344,48576,19344,64608,24176,64608,24176,48576,38464,57200,40928,52992,40032,54576, + 40032,30896,63712,30896,63712,23680,40032,23680,40032,0,32896,0,32896,23680,9216,23680,9216,30896,32896,30896, + 32896,54576,40032,54576,10208,10800,19168,10800,19168,3488,12192,-10112,6720,-10112,10208,3488,10208,10800,4256,27328, + 27152,27328,27152,20352,4256,20352,4256,27328,9312,10800,18272,10800,18272,0,9312,0,9312,10800,22096,63456, + 29328,63456,7232,-8080,0,-8080,22096,63456,27664,57808,21040,57808,17704,51280,14368,44752,14368,31664,14368,18608, + 17704,12088,21040,5568,27664,5568,34336,5568,37672,12088,41008,18608,41008,31664,41008,44752,37672,51280,34336,57808, + 27664,57808,27664,64608,38336,64608,43968,56168,49600,47728,49600,31664,49600,15648,43968,7208,38336,-1232,27664,-1232, + 17008,-1232,11376,7208,5744,15648,5744,31664,5744,47728,11376,56168,17008,64608,27664,64608,10800,7232,24816,7232, + 24816,55632,9568,52576,9568,60400,24736,63456,33328,63456,33328,7232,47344,7232,47344,0,10800,0,10800,7232, + 16704,7232,46672,7232,46672,0,6368,0,6368,7232,11264,12288,19696,20808,28128,29328,30304,31792,34432,36416, + 36064,39632,37696,42848,37696,45936,37696,51008,34152,54192,30608,57376,24912,57376,20864,57376,16384,55976,11904,54576, + 6800,51728,6800,60400,11984,62480,16488,63544,20992,64608,24736,64608,34592,64608,40456,59672,46320,54736,46320,46496, + 46320,42592,44856,39080,43392,35568,39520,30816,38464,29584,32768,23696,27072,17808,16704,7232,35312,34208,41488,32896, + 44944,28728,48400,24560,48400,18448,48400,9056,41944,3912,35488,-1232,23584,-1232,19600,-1232,15368,-448,11136,336, + 6624,1920,6624,10208,10208,8112,14456,7056,18704,6000,23328,6000,31408,6000,35640,9184,39872,12368,39872,18448, + 39872,24048,35936,27216,32000,30384,24992,30384,17600,30384,17600,37440,25328,37440,31664,37440,35024,39968,38384,42496, + 38384,47264,38384,52144,34920,54760,31456,57376,24992,57376,21456,57376,17424,56608,13392,55840,8544,54224,8544,61888, + 13424,63248,17696,63928,21968,64608,25760,64608,35536,64608,41232,60160,46928,55712,46928,48160,46928,42880,43904,39248, + 40880,35616,35312,34208,32896,55968,11216,22096,32896,22096,32896,55968,30640,63456,41440,63456,41440,22096,50496,22096, + 50496,14960,41440,14960,41440,0,32896,0,32896,14960,4256,14960,4256,23248,30640,63456,9392,63456,43088,63456, + 43088,56224,17248,56224,17248,40672,19120,41312,20992,41632,22864,41952,24736,41952,35360,41952,41568,36128,47776,30304, + 47776,20352,47776,10112,41400,4440,35024,-1232,23424,-1232,19424,-1232,15280,-552,11136,128,6720,1488,6720,10112, + 10544,8032,14624,7016,18704,6000,23248,6000,30608,6000,34896,9864,39184,13728,39184,20352,39184,26992,34896,30856, + 30608,34720,23248,34720,19808,34720,16384,33960,12960,33200,9392,31584,9392,63456,28736,35152,22944,35152,19568,31200, + 16192,27248,16192,20352,16192,13520,19568,9544,22944,5568,28736,5568,34512,5568,37888,9544,41264,13520,41264,20352, + 41264,27248,37888,31200,34512,35152,28736,35152,45776,62048,45776,54224,42544,55760,39248,56568,35952,57376,32720,57376, + 24224,57376,19744,51640,15264,45904,14624,34304,17120,38000,20904,39976,24688,41952,29248,41952,38800,41952,44344,36152, + 49888,30352,49888,20352,49888,10576,44112,4672,38336,-1232,28736,-1232,17728,-1232,11904,7208,6080,15648,6080,31664, + 6080,46704,13216,55656,20352,64608,32384,64608,35616,64608,38912,63968,42208,63328,45776,62048,7136,63456,47936,63456, + 47936,59792,24912,0,15936,0,37616,56224,7136,56224,7136,63456,27664,30128,21552,30128,18040,26856,14528,23584, + 14528,17856,14528,12112,18040,8840,21552,5568,27664,5568,33792,5568,37320,8864,40848,12160,40848,17856,40848,23584, + 37336,26856,33824,30128,27664,30128,19088,33792,13552,35152,10472,38936,7392,42720,7392,48160,7392,55760,12816,60184, + 18240,64608,27664,64608,37152,64608,42544,60184,47936,55760,47936,48160,47936,42720,44856,38936,41776,35152,36288,33792, + 42496,32336,45960,28128,49424,23920,49424,17856,49424,8624,43792,3696,38160,-1232,27664,-1232,17168,-1232,11536,3696, + 5904,8624,5904,17856,5904,23920,9392,28128,12880,32336,19088,33792,15936,47344,15936,42416,19016,39656,22096,36896, + 27664,36896,33200,36896,36320,39656,39440,42416,39440,47344,39440,52272,36320,55040,33200,57808,27664,57808,22096,57808, + 19016,55040,15936,52272,15936,47344,9568,1312,9568,9136,12800,7600,16112,6800,19424,6000,22608,6000,31104,6000, + 35592,11712,40080,17424,40720,29072,38256,25408,34472,23456,30688,21504,26096,21504,16576,21504,11032,27264,5488,33024, + 5488,43008,5488,52784,11264,58696,17040,64608,26640,64608,37648,64608,43456,56168,49264,47728,49264,31664,49264,16656, + 42144,7712,35024,-1232,22992,-1232,19760,-1232,16448,-592,13136,48,9568,1312,26640,28224,32432,28224,35808,32176, + 39184,36128,39184,43008,39184,49856,35808,53832,32432,57808,26640,57808,20864,57808,17488,53832,14112,49856,14112,43008, + 14112,36128,17488,32176,20864,28224,26640,28224,10208,10800,19168,10800,19168,0,10208,0,10208,10800,10208,45008, + 19168,45008,19168,34208,10208,34208,10208,45008,10208,45008,19168,45008,19168,34208,10208,34208,10208,45008,10208,10800, + 19168,10800,19168,3488,12192,-10112,6720,-10112,10208,3488,10208,10800,63712,42848,19840,27248,63712,11728,63712,4000, + 9216,23760,9216,30816,63712,50576,63712,42848,9216,39520,63712,39520,63712,32384,9216,32384,9216,39520,9216,22192, + 63712,22192,63712,14960,9216,14960,9216,22192,9216,42848,9216,50576,63712,30816,63712,23760,9216,4000,9216,11728, + 52992,27248,9216,42848,16624,10800,25248,10800,25248,0,16624,0,16624,10800,24992,17040,16880,17040,16880,23584, + 16880,27888,18064,30648,19248,33408,23072,37056,26896,40848,29328,43088,30408,45088,31488,47088,31488,49168,31488,52960, + 28704,55296,25920,57632,21328,57632,17984,57632,14176,56144,10368,54656,6240,51808,6240,59792,10240,62224,14344,63416, + 18448,64608,22816,64608,30640,64608,35384,60480,40128,56352,40128,49600,40128,46368,38592,43456,37056,40544,33232,36896, + 29488,33232,27504,31232,26672,30112,25840,28992,25504,27920,25248,27024,25120,25752,24992,24480,24992,22272,24992,17040, + 32384,22816,32384,16752,35400,13288,38416,9824,43696,9824,48912,9824,51912,13304,54912,16784,54912,22816,54912,28768, + 51848,32280,48784,35792,43600,35792,38464,35792,35424,32304,32384,28816,32384,22816,55552,10112,52992,6848,49704,5296, + 46416,3744,42032,3744,34720,3744,30152,9032,25584,14320,25584,22816,25584,31328,30176,36640,34768,41952,42032,41952, + 46416,41952,49728,40360,53040,38768,55552,35536,55552,41104,61632,41104,61632,9824,67824,10752,71336,15488,74848,20224, + 74848,27760,74848,32304,73504,36296,72160,40288,69440,43696,65024,49264,58672,52216,52320,55168,44832,55168,39616,55168, + 34808,53784,30000,52400,25920,49680,19248,45344,15488,38312,11728,31280,11728,23072,11728,16320,14176,10416,16624,4512, + 21248,0,25712,-4416,31576,-6736,37440,-9056,44112,-9056,49600,-9056,54888,-7208,60176,-5360,64608,-1920,68432,-6624, + 63120,-10752,56848,-12944,50576,-15136,44112,-15136,36256,-15136,29288,-12352,22320,-9568,16880,-4256,11440,1056,8592,8048, + 5744,15040,5744,23072,5744,30816,8632,37824,11520,44832,16880,50144,22352,55552,29536,58416,36720,61280,44752,61280, + 53760,61280,61472,57584,69184,53888,74416,47088,77600,42928,79280,38040,80960,33152,80960,27920,80960,16752,74200,10288, + 67440,3824,55552,3568,55552,10112,29744,54992,18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0, + 49888,0,44112,16272,15520,16272,9728,0,688,0,24912,63456,17120,30304,17120,7056,30896,7056,37824,7056, + 41160,9928,44496,12800,44496,18704,44496,24656,41160,27480,37824,30304,30896,30304,17120,30304,17120,56400,17120,37280, + 29840,37280,36128,37280,39208,39632,42288,41984,42288,46832,42288,51632,39208,54016,36128,56400,29840,56400,17120,56400, + 8544,63456,30480,63456,40288,63456,45600,59376,50912,55296,50912,47776,50912,41952,48192,38504,45472,35056,40208,34208, + 46544,32848,50048,28536,53552,24224,53552,17760,53552,9264,47768,4632,41984,0,31328,0,8544,0,8544,63456, + 56064,58560,56064,49520,51728,53552,46816,55552,41904,57552,36384,57552,25504,57552,19720,50896,13936,44240,13936,31664, + 13936,19120,19720,12472,25504,5824,36384,5824,41904,5824,46816,7824,51728,9824,56064,13856,56064,4880,51552,1824, + 46520,296,41488,-1232,35872,-1232,21456,-1232,13168,7584,4880,16400,4880,31664,4880,46960,13168,55784,21456,64608, + 35872,64608,41568,64608,46600,63096,51632,61584,56064,58560,17120,56400,17120,7056,27504,7056,40624,7056,46728,13008, + 52832,18960,52832,31792,52832,44544,46728,50472,40624,56400,27504,56400,17120,56400,8544,63456,26176,63456,44624,63456, + 53256,55784,61888,48112,61888,31792,61888,15392,53216,7696,44544,0,26176,0,8544,0,8544,63456,8544,63456, + 48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232,49424,7232,49424,0, + 8544,0,8544,63456,8544,63456,45008,63456,45008,56224,17120,56224,17120,37520,42288,37520,42288,30304,17120,30304, + 17120,0,8544,0,8544,63456,51808,9056,51808,26096,37776,26096,37776,33152,60304,33152,60304,5904,55328,2384, + 49336,576,43344,-1232,36544,-1232,21680,-1232,13280,7456,4880,16144,4880,31664,4880,47216,13280,55912,21680,64608, + 36544,64608,42752,64608,48344,63072,53936,61536,58656,58560,58656,49424,53888,53472,48536,55512,43184,57552,37280,57552, + 25632,57552,19784,51048,13936,44544,13936,31664,13936,18832,19784,12328,25632,5824,37280,5824,41824,5824,45392,6608, + 48960,7392,51808,9056,8544,63456,17120,63456,17120,37440,48320,37440,48320,63456,56912,63456,56912,0,48320,0, + 48320,30224,17120,30224,17120,0,8544,0,8544,63456,8544,63456,17120,63456,17120,0,8544,0,8544,63456, + 8544,63456,17120,63456,17120,4416,17120,-7056,12768,-12240,8416,-17424,-1232,-17424,-4512,-17424,-4512,-10208,-1824,-10208, + 3872,-10208,6208,-7016,8544,-3824,8544,4416,8544,63456,8544,63456,17120,63456,17120,36640,45600,63456,56656,63456, + 25168,33872,58912,0,47600,0,17120,30560,17120,0,8544,0,8544,63456,8544,63456,17120,63456,17120,7232, + 48032,7232,48032,0,8544,0,8544,63456,8544,63456,21328,63456,37520,20272,53808,63456,66592,63456,66592,0, + 58224,0,58224,55712,41856,12192,33232,12192,16880,55712,16880,0,8544,0,8544,63456,8544,63456,20096,63456, + 48240,10368,48240,63456,56560,63456,56560,0,45008,0,16880,53088,16880,0,8544,0,8544,63456,34304,57632, + 24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744,34304,5744,43648,5744,49112,12712, + 54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,34304,64608,47648,64608,55632,55656,63616,46704, + 63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232,12896,7696,4880,16624,4880,31664,4880,46704, + 12896,55656,20912,64608,34304,64608,17120,56400,17120,32560,27920,32560,33920,32560,37192,35664,40464,38768,40464,44496, + 40464,50192,37192,53296,33920,56400,27920,56400,17120,56400,8544,63456,27920,63456,38592,63456,44056,58632,49520,53808, + 49520,44496,49520,35104,44056,30304,38592,25504,27920,25504,17120,25504,17120,0,8544,0,8544,63456,34304,57632, + 24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744,34304,5744,43648,5744,49112,12712, + 54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,46320,1152,57632,-11216,47264,-11216,37872,-1056, + 36464,-1152,35720,-1192,34976,-1232,34304,-1232,20912,-1232,12896,7712,4880,16656,4880,31664,4880,46704,12896,55656, + 20912,64608,34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,20608,59176,12744,54736,4880,46320,1152, + 38640,29744,41392,28816,44008,25752,46624,22688,49264,17344,57968,0,48752,0,40624,16272,37488,22656,34536,24736, + 31584,26816,26480,26816,17120,26816,17120,0,8544,0,8544,63456,27920,63456,38800,63456,44160,58904,49520,54352, + 49520,45184,49520,39184,46736,35232,43952,31280,38640,29744,17120,56400,17120,33872,27920,33872,34128,33872,37296,36744, + 40464,39616,40464,45184,40464,50752,37296,53576,34128,56400,27920,56400,17120,56400,46576,61376,46576,52992,41696,55328, + 37360,56480,33024,57632,28992,57632,21968,57632,18168,54912,14368,52192,14368,47168,14368,42960,16896,40816,19424,38672, + 26480,37360,31664,36288,41264,34464,45832,29856,50400,25248,50400,17504,50400,8288,44216,3528,38032,-1232,26096,-1232, + 21584,-1232,16512,-216,11440,800,6000,2800,6000,11648,11216,8720,16232,7232,21248,5744,26096,5744,33440,5744, + 37440,8632,41440,11520,41440,16880,41440,21552,38568,24184,35696,26816,29152,28128,23920,29152,14320,31072,10032,35152, + 5744,39232,5744,46496,5744,54912,11672,59760,17600,64608,28000,64608,32464,64608,37096,63800,41728,62992,46576,61376, + -256,63456,53424,63456,53424,56224,30896,56224,30896,0,22272,0,22272,56224,-256,56224,-256,63456,7568,63456, + 16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912, + 47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440, + 7568,23840,7568,63456,24912,0,688,63456,9648,63456,29744,10032,49888,63456,58816,63456,34640,0,24912,0, + 2896,63456,11568,63456,24912,9824,38208,63456,47856,63456,61200,9824,74496,63456,83216,63456,67280,0,56480,0, + 43088,55088,29584,0,18784,0,2896,63456,5488,63456,14704,63456,30480,39872,46320,63456,55552,63456,35152,32976, + 56912,0,47680,0,29840,26992,11856,0,2592,0,25248,33872,5488,63456,-176,63456,9056,63456,26640,37360, + 44112,63456,53344,63456,30896,30224,30896,0,22272,0,22272,30224,-176,63456,4880,63456,54736,63456,54736,56912, + 14624,7232,55712,7232,55712,0,3904,0,3904,6544,44032,56224,4880,56224,4880,63456,7488,66128,25504,66128, + 25504,60048,15296,60048,15296,-5392,25504,-5392,25504,-11472,7488,-11472,7488,66128,7232,63456,29328,-8080,22096,-8080, + 0,63456,7232,63456,26480,66128,26480,-11472,8464,-11472,8464,-5392,18608,-5392,18608,60048,8464,60048,8464,66128, + 26480,66128,40624,63456,63712,39776,55168,39776,36464,56560,17760,39776,9216,39776,32304,63456,40624,63456,44368,-14448, + 44368,-20528,-848,-20528,-848,-14448,44368,-14448,15600,69616,27584,53728,21088,53728,7232,69616,15600,69616,29840,23920, + 20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920, + 37616,14528,37616,22192,37616,23920,29840,23920,45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832, + 26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048, + 37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208, + 8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,42368,23760, + 42368,32384,38824,37296,35280,42208,29072,42208,22864,42208,19312,37296,15760,32384,15760,23760,15760,15136,19312,10224, + 22864,5312,29072,5312,35280,5312,38824,10224,42368,15136,42368,23760,15760,40368,18240,44624,22000,46688,25760,48752, + 30976,48752,39648,48752,45072,41864,50496,34976,50496,23760,50496,12544,45072,5656,39648,-1232,30976,-1232,25760,-1232, + 22000,832,18240,2896,15760,7136,15760,0,7904,0,7904,66128,15760,66128,15760,40368,42464,45776,42464,38464, + 39136,40288,35800,41200,32464,42112,29072,42112,21456,42112,17248,37288,13040,32464,13040,23760,13040,15040,17248,10216, + 21456,5392,29072,5392,32464,5392,35800,6312,39136,7232,42464,9056,42464,1824,39184,304,35680,-464,32176,-1232, + 28224,-1232,17472,-1232,11136,5528,4800,12288,4800,23760,4800,35408,11200,42080,17600,48752,28736,48752,32336,48752, + 35784,48008,39232,47264,42464,45776,39520,40368,39520,66128,47344,66128,47344,0,39520,0,39520,7136,37056,2896, + 33296,832,29536,-1232,24272,-1232,15648,-1232,10224,5656,4800,12544,4800,23760,4800,34976,10224,41864,15648,48752, + 24272,48752,29536,48752,33296,46688,37056,44624,39520,40368,12880,23760,12880,15136,16424,10224,19968,5312,26176,5312, + 32384,5312,35952,10224,39520,15136,39520,23760,39520,32384,35952,37296,32384,42208,26176,42208,19968,42208,16424,37296, + 12880,32384,12880,23760,48912,25760,48912,21936,12960,21936,13472,13856,17832,9624,22192,5392,29968,5392,34464,5392, + 38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232,18112,-1232,11456,5400, + 4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752,37744,48752,43328,42568,48912,36384,48912,25760, + 41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112,17744,38416,13808,34720,13216,28000,41104,28048, + 32304,66128,32304,59632,24816,59632,20608,59632,18976,57928,17344,56224,17344,51808,17344,47600,30224,47600,30224,41520, + 17344,41520,17344,0,9472,0,9472,41520,2000,41520,2000,47600,9472,47600,9472,50912,9472,58864,13176,62496, + 16880,66128,24912,66128,32304,66128,39520,24352,39520,32848,36016,37528,32512,42208,26176,42208,19888,42208,16384,37528, + 12880,32848,12880,24352,12880,15888,16384,11216,19888,6544,26176,6544,32512,6544,36016,11216,39520,15888,39520,24352, + 47344,5904,47344,-6240,41944,-12176,36544,-18112,25408,-18112,21296,-18112,17640,-17496,13984,-16880,10544,-15600,10544,-7984, + 13984,-9856,17344,-10752,20704,-11648,24176,-11648,31872,-11648,35696,-7632,39520,-3616,39520,4512,39520,8368,37104,4160, + 33320,2080,29536,0,24272,0,15520,0,10160,6672,4800,13344,4800,24352,4800,35408,10160,42080,15520,48752, + 24272,48752,29536,48752,33320,46664,37104,44576,39520,40368,39520,47600,47344,47600,47344,5904,47776,28736,47776,0, + 39952,0,39952,28480,39952,35232,37320,38592,34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896, + 15760,0,7904,0,7904,66128,15760,66128,15760,40208,18576,44496,22376,46624,26176,48752,31152,48752,39360,48752, + 43568,43672,47776,38592,47776,28736,8208,47600,16016,47600,16016,0,8208,0,8208,47600,8208,66128,16016,66128, + 16016,56224,8208,56224,8208,66128,8208,47600,16016,47600,16016,-848,16016,-9952,12552,-14032,9088,-18112,1408,-18112, + -1568,-18112,-1568,-11472,512,-11472,4976,-11472,6592,-9416,8208,-7360,8208,-848,8208,47600,8208,66128,16016,66128, + 16016,56224,8208,56224,8208,66128,7904,66128,15760,66128,15760,27072,39104,47600,49088,47600,23840,25328,50144,0, + 39952,0,15760,23248,15760,0,7904,0,7904,66128,8208,66128,16016,66128,16016,0,8208,0,8208,66128, + 45264,38464,48192,43728,52272,46240,56352,48752,61888,48752,69312,48752,73352,43544,77392,38336,77392,28736,77392,0, + 69536,0,69536,28480,69536,35312,67112,38632,64688,41952,59712,41952,53632,41952,50104,37912,46576,33872,46576,26896, + 46576,0,38720,0,38720,28480,38720,35360,36296,38656,33872,41952,28816,41952,22816,41952,19288,37888,15760,33824, + 15760,26896,15760,0,7904,0,7904,47600,15760,47600,15760,40208,18448,44576,22184,46664,25920,48752,31072,48752, + 36256,48752,39888,46112,43520,43472,45264,38464,47776,28736,47776,0,39952,0,39952,28480,39952,35232,37320,38592, + 34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896,15760,0,7904,0,7904,47600,15760,47600, + 15760,40208,18576,44496,22376,46624,26176,48752,31152,48752,39360,48752,43568,43672,47776,38592,47776,28736,26640,42112, + 20352,42112,16696,37208,13040,32304,13040,23760,13040,15216,16680,10304,20320,5392,26640,5392,32896,5392,36552,10328, + 40208,15264,40208,23760,40208,32208,36552,37160,32896,42112,26640,42112,26640,48752,36848,48752,42672,42120,48496,35488, + 48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488, + 10600,42120,16400,48752,26640,48752,15760,7136,15760,-18112,7904,-18112,7904,47600,15760,47600,15760,40368,18240,44624, + 22000,46688,25760,48752,30976,48752,39648,48752,45072,41864,50496,34976,50496,23760,50496,12544,45072,5656,39648,-1232, + 30976,-1232,25760,-1232,22000,832,18240,2896,15760,7136,42368,23760,42368,32384,38824,37296,35280,42208,29072,42208, + 22864,42208,19312,37296,15760,32384,15760,23760,15760,15136,19312,10224,22864,5312,29072,5312,35280,5312,38824,10224, + 42368,15136,42368,23760,12880,23760,12880,15136,16424,10224,19968,5312,26176,5312,32384,5312,35952,10224,39520,15136, + 39520,23760,39520,32384,35952,37296,32384,42208,26176,42208,19968,42208,16424,37296,12880,32384,12880,23760,39520,7136, + 37056,2896,33296,832,29536,-1232,24272,-1232,15648,-1232,10224,5656,4800,12544,4800,23760,4800,34976,10224,41864, + 15648,48752,24272,48752,29536,48752,33296,46688,37056,44624,39520,40368,39520,47600,47344,47600,47344,-18112,39520,-18112, + 39520,7136,35792,40288,34464,41056,32912,41416,31360,41776,29488,41776,22864,41776,19312,37464,15760,33152,15760,25072, + 15760,0,7904,0,7904,47600,15760,47600,15760,40208,18240,44544,22192,46648,26144,48752,31792,48752,32592,48752, + 33576,48640,34560,48528,35744,48320,35792,40288,38544,46192,38544,38800,35232,40496,31664,41352,28096,42208,24272,42208, + 18448,42208,15536,40424,12624,38640,12624,35056,12624,32336,14704,30792,16784,29248,23072,27840,25760,27248,34080,25456, + 37592,22208,41104,18960,41104,13136,41104,6496,35856,2632,30608,-1232,21424,-1232,17600,-1232,13456,-488,9312,256, + 4720,1744,4720,9824,9056,7568,13264,6440,17472,5312,21584,5312,27120,5312,30096,7200,33072,9088,33072,12544, + 33072,15728,30920,17424,28768,19120,21504,20704,18784,21328,11520,22864,8288,26032,5056,29200,5056,34720,5056,41440, + 9816,45096,14576,48752,23328,48752,27664,48752,31488,48112,35312,47472,38544,46192,15936,61120,15936,47600,32048,47600, + 32048,41520,15936,41520,15936,15680,15936,9856,17528,8200,19120,6544,24016,6544,32048,6544,32048,0,24016,0, + 14960,0,11520,3376,8080,6752,8080,15680,8080,41520,2336,41520,2336,47600,8080,47600,8080,61120,15936,61120, + 7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608, + 39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232, + 24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752,2592,47600,10880,47600,25760,7648, + 40624,47600,48912,47600,31072,0,20448,0,2592,47600,3648,47600,11472,47600,21248,10448,30976,47600,40208,47600, + 49984,10448,59712,47600,67536,47600,55088,0,45856,0,35616,39008,25328,0,16112,0,3648,47600,47776,47600, + 30560,24432,48656,0,39440,0,25584,18704,11728,0,2512,0,20992,24912,4080,47600,13296,47600,25920,30640, + 38544,47600,47776,47600,28000,-4416,24688,-12928,21544,-15520,18400,-18112,13136,-18112,6880,-18112,6880,-11568,11472,-11568, + 14704,-11568,16488,-10032,18272,-8496,20448,-2800,21840,768,2592,47600,10880,47600,25760,10368,40624,47600,48912,47600, + 28000,-4416,4800,47600,41952,47600,41952,40464,12544,6240,41952,6240,41952,0,3744,0,3744,7136,33152,41360, + 4800,41360,4800,47600,44496,-8080,44496,-14192,41856,-14192,31280,-14192,27688,-11048,24096,-7904,24096,1488,24096,11648, + 24096,18064,21800,20528,19504,22992,13472,22992,10880,22992,10880,29072,13472,29072,19552,29072,21824,31512,24096,33952, + 24096,40288,24096,50496,24096,59888,27688,63008,31280,66128,41856,66128,44496,66128,44496,60048,41600,60048,35616,60048, + 33792,58184,31968,56320,31968,50320,31968,39776,31968,33104,30032,30088,28096,27072,23424,26016,28128,24864,30048,21848, + 31968,18832,31968,12192,31968,1664,31968,-4336,33792,-6208,35616,-8080,41600,-8080,44496,-8080,18272,66512,18272,-20528, + 11056,-20528,11056,66512,18272,66512,10880,-8080,13856,-8080,19808,-8080,21616,-6248,23424,-4416,23424,1664,23424,12192, + 23424,18832,25336,21848,27248,24864,31968,26016,27248,27072,25336,30088,23424,33104,23424,39776,23424,50320,23424,56352, + 21616,58200,19808,60048,13856,60048,10880,60048,10880,66128,13552,66128,24144,66128,27688,63008,31232,59888,31232,50496, + 31232,40288,31232,33952,33528,31512,35824,29072,41856,29072,44496,29072,44496,22992,41856,22992,35824,22992,33528,20528, + 31232,18064,31232,11648,31232,1488,31232,-7904,27688,-11048,24144,-14192,13552,-14192,10880,-14192,10880,-8080,63712,34720, + 63712,27152,59248,23808,55440,22360,51632,20912,47520,20912,42848,20912,36640,23424,36160,23584,35952,23680,35664,23808, + 35024,24016,28432,26640,24432,26640,20704,26640,17048,25008,13392,23376,9216,19840,9216,27408,13680,30768,17488,32232, + 21296,33696,25408,33696,30096,33696,36336,31152,36768,30976,36976,30896,37312,30768,37904,30560,44496,27920,48496,27920, + 52144,27920,55736,29536,59328,31152,63712,34720,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, + 43008,-10544,43008,56480,9216,56480,9216,-10544,21760,52656,13136,52656,13136,63456,21760,63456,21760,52656,21760,0, + 13136,0,13136,27840,14032,43008,20912,43008,21760,27840,21760,0,28816,5568,28816,41952,22560,41184,19080,36384, + 15600,31584,15600,23760,15600,15888,19080,11088,22560,6288,28816,5568,45008,45776,45008,38464,41856,40208,38968,41096, + 36080,41984,33200,42112,33152,5392,36128,5616,39040,6504,41952,7392,45008,9056,45008,1824,42240,560,39328,-184, + 36416,-928,33152,-1232,33152,-13296,28816,-13296,28816,-1056,18576,-208,12944,6312,7312,12832,7312,23760,7312,34720, + 12944,41224,18576,47728,28816,48656,28816,60864,33152,60864,33200,48656,36288,48496,39200,47792,42112,47088,45008,45776, + 46832,62048,46832,54320,43600,56064,40712,56936,37824,57808,35232,57808,28944,57808,26480,54512,24016,51216,24016,42208, + 24016,33072,40624,33072,40624,26992,24016,26992,24016,7232,47680,7232,47680,0,5488,0,5488,7232,15520,7232, + 15520,26992,7056,26992,7056,33072,15520,33072,15520,43184,15520,54272,20064,59440,24608,64608,34464,64608,37056,64608, + 40264,63944,43472,63280,46832,62048,37872,42208,46672,51088,51504,46192,42752,37440,44320,34928,45088,32400,45856,29872, + 45856,27248,45856,24560,45048,22120,44240,19680,42544,17248,51424,8464,46576,3648,37776,12448,35280,10752,32816,9944, + 30352,9136,27760,9136,25280,9136,22736,9920,20192,10704,17600,12288,8800,3488,4000,8368,12800,17120,11216,19760, + 10432,22272,9648,24784,9648,27248,9648,29968,10456,32432,11264,34896,12880,37280,4080,46032,8960,50912,17760,42112, + 20096,43776,22568,44560,25040,45344,27760,45344,30304,45344,32792,44584,35280,43824,37872,42208,39184,27328,39184,32080, + 35888,35360,32592,38640,27760,38640,22992,38640,19632,35360,16272,32080,16272,27328,16272,22480,19608,19168,22944,15856, + 27760,15856,32560,15856,35872,19192,39184,22528,39184,27328,49520,19344,31968,19344,31968,0,23424,0,23424,19344, + 5744,19344,5744,24560,23424,24560,23424,26736,19840,33328,5744,33328,5744,38544,16960,38544,3488,63456,11568,63456, + 27664,33696,43696,63456,51808,63456,38288,38544,49520,38544,49520,33328,35440,33328,31872,26736,31872,24560,49520,24560, + 49520,19344,18272,17344,18272,-14880,11056,-14880,11056,17344,18272,17344,18272,60864,18272,28640,11056,28640,11056,60864, + 18272,60864,16112,39776,13424,37824,12112,35912,10800,34000,10800,32048,10800,28816,13752,25992,16704,23168,27328,17424, + 30000,19344,31320,21272,32640,23200,32640,25168,32640,28352,29600,31240,26560,34128,16112,39776,35232,62128,35232,55168, + 31712,56816,28672,57648,25632,58480,23248,58480,19120,58480,16824,56784,14528,55088,14528,52064,14528,48240,23296,43344, + 24400,42720,24992,42368,33952,37312,36736,34040,39520,30768,39520,26480,39520,22656,37568,19680,35616,16704,31664,14448, + 34304,12240,35512,9920,36720,7600,36720,4880,36720,-1152,32384,-4720,28048,-8288,20704,-8288,17600,-8288,14328,-7672, + 11056,-7056,7312,-5824,7312,1152,11008,-512,14152,-1336,17296,-2160,19760,-2160,24096,-2160,26496,-376,28896,1408, + 28896,4640,28896,8960,19504,14192,18448,14784,9344,19888,6624,23144,3904,26400,3904,30720,3904,34592,5880,37632, + 7856,40672,11728,42752,9216,44624,7968,47008,6720,49392,6720,52320,6720,57840,10968,61224,15216,64608,22272,64608, + 25376,64608,28624,63984,31872,63360,35232,62128,25760,65968,34384,65968,34384,57376,25760,57376,25760,65968,9136,65968, + 17760,65968,17760,57376,9136,57376,9136,65968,43520,63120,49984,63120,55568,60776,61152,58432,65792,53808,70416,49168, + 72712,43600,75008,38032,75008,31488,75008,25040,72712,19488,70416,13936,65792,9312,61152,4672,55568,2336,49984,0, + 43520,0,37056,0,31472,2336,25888,4672,21248,9312,16624,13936,14328,19488,12032,25040,12032,31488,12032,38032, + 14328,43600,16624,49168,21248,53808,25888,58432,31472,60776,37056,63120,43520,63120,43520,58736,37952,58736,33152,56736, + 28352,54736,24352,50752,20352,46752,18312,41888,16272,37024,16272,31488,16272,26016,18312,21192,20352,16368,24352,12368, + 28352,8368,33152,6352,37952,4336,43520,4336,49136,4336,53960,6352,58784,8368,62768,12368,66720,16320,68696,21120, + 70672,25920,70672,31488,70672,37152,68680,41976,66688,46800,62768,50752,58784,54736,53960,56736,49136,58736,43520,58736, + 56224,48320,56224,42848,53424,44240,50664,44920,47904,45600,45088,45600,38768,45600,35216,41880,31664,38160,31664,31488, + 31664,24736,35296,21040,38928,17344,45520,17344,48240,17344,50832,18000,53424,18656,56224,20096,56224,14704,53376,13472, + 50464,12880,47552,12288,44576,12288,35408,12288,30072,17472,24736,22656,24736,31488,24736,40368,30072,45512,35408,50656, + 44576,50656,47680,50656,50576,50064,53472,49472,56224,48320,5904,25168,35152,25168,35152,19936,5904,19936,5904,25168, + 35056,49520,35056,30480,28736,30480,28736,35232,26864,32560,23800,31112,20736,29664,16784,29664,11344,29664,8112,32536, + 4880,35408,4880,40208,4880,45936,8944,48872,13008,51808,20992,51808,28736,51808,28736,51984,28736,55840,26248,57776, + 23760,59712,18784,59712,16144,59712,13256,58992,10368,58272,7488,56816,7488,62224,10576,63408,13664,64008,16752,64608, + 19680,64608,27456,64608,31256,60864,35056,57120,35056,49520,23328,46928,16496,46928,13816,45504,11136,44080,11136,40720, + 11136,38000,13216,36360,15296,34720,18784,34720,23200,34720,25968,37784,28736,40848,28736,45680,28736,46928,23328,46928, + 45088,45008,45088,36896,32304,25504,45088,14112,45088,6000,25168,23760,25168,27248,45088,45008,26640,45008,26640,36896, + 13856,25504,26640,14112,26640,6000,6720,23760,6720,27248,26640,45008,9216,36640,63712,36640,63712,12192,56560,12192, + 56560,29408,9216,29408,9216,36640,4256,27328,27152,27328,27152,20352,4256,20352,4256,27328,43520,58736,37952,58736, + 33152,56736,28352,54736,24352,50752,20352,46752,18312,41888,16272,37024,16272,31488,16272,26016,18312,21192,20352,16368, + 24352,12368,28352,8368,33152,6352,37952,4336,43520,4336,49136,4336,53960,6352,58784,8368,62768,12368,66720,16320, + 68696,21120,70672,25920,70672,31488,70672,37152,68680,41976,66688,46800,62768,50752,58784,54736,53960,56736,49136,58736, + 43520,58736,43520,63120,49984,63120,55568,60776,61152,58432,65792,53808,70416,49168,72712,43600,75008,38032,75008,31488, + 75008,25040,72712,19488,70416,13936,65792,9312,61152,4672,55568,2336,49984,0,43520,0,37056,0,31472,2336, + 25888,4672,21248,9312,16624,13936,14328,19488,12032,25040,12032,31488,12032,38032,14328,43600,16624,49168,21248,53808, + 25888,58432,31472,60776,37056,63120,43520,63120,42368,45520,37152,45520,37152,33792,42368,33792,47040,33792,48896,35104, + 50752,36416,50752,39616,50752,42848,48880,44184,47008,45520,42368,45520,42672,49888,50144,49888,53848,47360,57552,44832, + 57552,39696,57552,36048,55320,33664,53088,31280,49008,30560,50016,30224,51440,28584,52864,26944,54832,23840,60640,14368, + 53344,14368,47856,23248,45344,27328,43792,28408,42240,29488,39952,29488,37152,29488,37152,14368,30560,14368,30560,49888, + 42672,49888,9056,64848,34464,64848,34464,58560,9056,58560,9056,64848,21760,59120,18368,59120,16024,56760,13680,54400, + 13680,51008,13680,47648,16024,45328,18368,43008,21760,43008,25168,43008,27504,45328,29840,47648,29840,51008,29840,54352, + 27480,56736,25120,59120,21760,59120,21760,64608,24480,64608,26984,63560,29488,62512,31328,60560,33280,58656,34256,56232, + 35232,53808,35232,51008,35232,45392,31304,41504,27376,37616,21680,37616,15936,37616,12112,41440,8288,45264,8288,51008, + 8288,56688,12200,60648,16112,64608,21760,64608,40032,54576,40032,38128,63712,38128,63712,30896,40032,30896,40032,14448, + 32896,14448,32896,30896,9216,30896,9216,38128,32896,38128,32896,54576,40032,54576,9216,7232,63712,7232,63712,0, + 9216,0,9216,7232,11392,33232,29408,33232,29408,28384,4000,28384,4000,33072,5440,34384,8112,36768,22736,49728, + 22736,53728,22736,56528,20528,58248,18320,59968,14704,59968,12496,59968,9904,59224,7312,58480,4256,56992,4256,62224, + 7520,63408,10344,64008,13168,64608,15600,64608,21760,64608,25456,61800,29152,58992,29152,54400,29152,48496,15088,36416, + 12704,34384,11392,33232,22272,47600,26176,46832,28328,44520,30480,42208,30480,38720,30480,33440,26440,30600,22400,27760, + 14880,27760,12448,27760,9792,28200,7136,28640,4160,29488,4160,34640,6368,33488,8904,32936,11440,32384,14288,32384, + 18912,32384,21464,34064,24016,35744,24016,38720,24016,41856,21656,43472,19296,45088,14704,45088,11056,45088,11056,49680, + 15040,49680,19040,49680,21104,51024,23168,52368,23168,54912,23168,57376,21040,58672,18912,59968,14880,59968,13168,59968, + 11008,59584,8848,59200,5392,58224,5392,63120,8496,63840,11216,64224,13936,64608,16272,64608,22400,64608,25992,62096, + 29584,59584,29584,55376,29584,52448,27672,50408,25760,48368,22272,47600,27664,69616,36128,69616,22272,53632,15760,53632, + 27664,69616,7392,-18112,7392,47600,15216,47600,15216,18016,15216,11856,18152,8712,21088,5568,26816,5568,33104,5568, + 36272,9136,39440,12704,39440,19840,39440,47600,47264,47600,47264,10960,47264,8416,48008,7208,48752,6000,50320,6000, + 50704,6000,51384,6232,52064,6464,53248,6976,53248,688,51504,-304,49952,-768,48400,-1232,46928,-1232,43984,-1232, + 42240,424,40496,2080,39872,5488,37744,2128,34664,448,31584,-1232,27408,-1232,23072,-1232,20040,424,17008,2080, + 15216,5392,15216,-18112,7392,-18112,26896,63456,45936,63456,45936,-8368,39952,-8368,39952,58224,31872,58224,31872,-8368, + 25840,-8368,25840,27584,16704,28304,11712,33000,6720,37696,6720,45520,6720,53600,12240,58528,17760,63456,26896,63456, + 9312,35616,18272,35616,18272,24816,9312,24816,9312,35616,25328,0,27664,-2640,28816,-4872,29968,-7104,29968,-9136, + 29968,-12928,27416,-14856,24864,-16784,19840,-16784,17888,-16784,16040,-16528,14192,-16272,12368,-15760,12368,-10208,13808,-10928, + 15384,-11248,16960,-11568,18960,-11568,21456,-11568,22736,-10544,24016,-9520,24016,-7568,24016,-6288,23104,-4440,22192,-2592, + 20272,0,25328,0,6624,33072,15296,33072,15296,59040,5824,57296,5824,62224,15600,63872,21424,63872,21424,33072, + 30128,33072,30128,28384,6624,28384,6624,33072,5904,25168,35152,25168,35152,19936,5904,19936,5904,25168,20528,64608, + 28128,64608,32512,59904,36896,55200,36896,47088,36896,38976,32512,34320,28128,29664,20528,29664,12928,29664,8504,34336, + 4080,39008,4080,47088,4080,55200,8504,59904,12928,64608,20528,64608,20528,59712,16064,59712,13384,56288,10704,52864, + 10704,47088,10704,41440,13408,38040,16112,34640,20528,34640,24992,34640,27648,38040,30304,41440,30304,47088,30304,52912, + 27672,56312,25040,59712,20528,59712,8208,45008,28128,27248,28128,23760,8208,6000,8208,14112,20992,25504,8208,36896, + 8208,45008,26640,45008,46576,27248,46576,23760,26640,6000,26640,14112,39440,25504,26640,36896,26640,45008,6624,33072, + 15296,33072,15296,59040,5824,57296,5824,62224,15600,63872,21424,63872,21424,33072,30128,33072,30128,28384,6624,28384, + 6624,33072,69424,30064,56288,12256,69424,12256,69424,30064,68496,35200,75552,35200,75552,12256,81280,12256,81280,7616, + 75552,7616,75552,-288,69424,-288,69424,7616,51824,7616,51824,12768,68496,35200,58496,64608,65296,64608,25680,-1232, + 18880,-1232,58496,64608,6624,33072,15296,33072,15296,59040,5824,57296,5824,62224,15600,63872,21424,63872,21424,33072, + 30128,33072,30128,28384,6624,28384,6624,33072,60544,4560,78560,4560,78560,-288,53152,-288,53152,4400,54592,5712, + 57264,8096,71888,21056,71888,25056,71888,27856,69680,29576,67472,31296,63856,31296,61648,31296,59056,30552,56464,29808, + 53408,28320,53408,33552,56672,34736,59496,35336,62320,35936,64752,35936,70912,35936,74608,33128,78304,30320,78304,25728, + 78304,19824,64240,7744,61856,5712,60544,4560,58496,64608,65296,64608,25680,-1232,18880,-1232,58496,64608,22272,47600, + 26176,46832,28328,44520,30480,42208,30480,38720,30480,33440,26440,30600,22400,27760,14880,27760,12448,27760,9792,28200, + 7136,28640,4160,29488,4160,34640,6368,33488,8904,32936,11440,32384,14288,32384,18912,32384,21464,34064,24016,35744, + 24016,38720,24016,41856,21656,43472,19296,45088,14704,45088,11056,45088,11056,49680,15040,49680,19040,49680,21104,51024, + 23168,52368,23168,54912,23168,57376,21040,58672,18912,59968,14880,59968,13168,59968,11008,59584,8848,59200,5392,58224, + 5392,63120,8496,63840,11216,64224,13936,64608,16272,64608,22400,64608,25992,62096,29584,59584,29584,55376,29584,52448, + 27672,50408,25760,48368,22272,47600,69424,30064,56288,12256,69424,12256,69424,30064,68496,35200,75552,35200,75552,12256, + 81280,12256,81280,7616,75552,7616,75552,-288,69424,-288,69424,7616,51824,7616,51824,12768,68496,35200,58496,64608, + 65296,64608,25680,-1232,18880,-1232,58496,64608,21248,46416,29328,46416,29328,39776,29328,35488,28160,32728,26992,29968, + 23168,26272,19344,22528,16880,20272,15792,18272,14704,16272,14704,14192,14704,10416,17488,8080,20272,5744,24912,5744, + 28224,5744,32048,7232,35872,8720,39952,11568,39952,3568,35952,1152,31872,-40,27792,-1232,23424,-1232,15600,-1232, + 10840,2888,6080,7008,6080,13776,6080,17008,7632,19912,9184,22816,12960,26480,16704,30128,18736,32128,19544,33256, + 20352,34384,20704,35440,20992,36336,21120,37608,21248,38880,21248,41184,21248,46416,29584,52656,20992,52656,20992,63456, + 29584,63456,29584,52656,29744,54992,18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0, + 44112,16272,15520,16272,9728,0,688,0,24912,63456,27024,80208,35344,68992,28848,68992,19072,80208,27024,80208, + 29744,54992,18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0,44112,16272,15520,16272, + 9728,0,688,0,24912,63456,31776,80208,39632,80208,29952,68992,23440,68992,31776,80208,29744,54992,18112,23424, + 41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0,44112,16272,15520,16272,9728,0,688,0, + 24912,63456,25440,80304,33440,80304,42400,68992,36496,68992,29440,76560,22384,68992,16480,68992,25440,80304,29744,54992, + 18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0,44112,16272,15520,16272,9728,0, + 688,0,24912,63456,29264,72176,26848,73584,25792,74176,25128,74408,24464,74640,23952,74640,22432,74640,21576,73584, + 20720,72528,20720,70608,20720,70352,15408,70352,15408,74640,17600,77152,19792,79664,23440,79664,24976,79664,26272,79320, + 27568,78976,29616,77840,32032,76560,33008,76000,33728,75752,34448,75504,35088,75504,36448,75504,37304,76584,38160,77664, + 38160,79408,38160,79664,43472,79664,43376,75408,41192,72880,39008,70352,35440,70352,33984,70352,32728,70696,31472,71040, + 29264,72176,29744,54992,18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0,44112,16272, + 15520,16272,9728,0,688,0,24912,63456,33440,78976,42064,78976,42064,70352,33440,70352,33440,78976,16816,78976, + 25440,78976,25440,70352,16816,70352,16816,78976,36208,69104,36208,71776,34320,73672,32432,75568,29744,75568,27024,75568, + 25176,73720,23328,71872,23328,69104,23328,66432,25200,64560,27072,62688,29744,62688,32432,62688,34320,64560,36208,66432, + 36208,69104,29744,54992,18192,23424,41360,23424,29744,54992,23328,59376,20736,61120,19424,63560,18112,66000,18112,69104, + 18112,74000,21488,77400,24864,80800,29744,80800,34592,80800,38016,77376,41440,73952,41440,69104,41440,66128,40104,63624, + 38768,61120,36208,59376,58816,0,49888,0,44112,16272,15520,16272,9728,0,688,0,23328,59376,78416,63456, + 78416,56224,46928,56224,46928,37440,77136,37440,77136,30224,46928,30224,46928,7232,79216,7232,79216,0,38288,0, + 38288,16272,15856,16272,9056,0,336,0,26896,63456,78416,63456,32816,56736,18784,23424,38288,23424,38288,56736, + 32816,56736,56064,58560,56064,49520,51728,53552,46816,55552,41904,57552,36384,57552,25504,57552,19720,50896,13936,44240, + 13936,31664,13936,19120,19720,12472,25504,5824,36384,5824,41904,5824,46816,7824,51728,9824,56064,13856,56064,4880, + 51552,1824,46520,296,41488,-1232,35872,-1232,21456,-1232,13168,7584,4880,16400,4880,31664,4880,46960,13168,55784, + 21456,64608,35872,64608,41568,64608,46600,63096,51632,61584,56064,58560,38640,0,40976,-2640,42128,-4872,43280,-7104, + 43280,-9136,43280,-12928,40728,-14856,38176,-16784,33152,-16784,31200,-16784,29352,-16528,27504,-16272,25680,-15760,25680,-10208, + 27120,-10928,28696,-11248,30272,-11568,32272,-11568,34768,-11568,36048,-10544,37328,-9520,37328,-7568,37328,-6288,36416,-4440, + 35504,-2592,33584,0,38640,0,8544,63456,48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224, + 17120,30224,17120,7232,49424,7232,49424,0,8544,0,8544,63456,26000,80208,34320,68992,27824,68992,18048,80208, + 26000,80208,8544,63456,48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232, + 49424,7232,49424,0,8544,0,8544,63456,30752,80208,38608,80208,28928,68992,22416,68992,30752,80208,8544,63456, + 48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232,49424,7232,49424,0, + 8544,0,8544,63456,24416,80304,32416,80304,41376,68992,35472,68992,28416,76560,21360,68992,15456,68992,24416,80304, + 8544,63456,48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232,49424,7232, + 49424,0,8544,0,8544,63456,32416,78976,41040,78976,41040,70352,32416,70352,32416,78976,15792,78976,24416,78976, + 24416,70352,15792,70352,15792,78976,8544,63456,17120,63456,17120,0,8544,0,8544,63456,10640,80208,18960,68992, + 12464,68992,2688,80208,10640,80208,8544,63456,17120,63456,17120,0,8544,0,8544,63456,15392,80208,23248,80208, + 13568,68992,7056,68992,15392,80208,8544,63456,17120,63456,17120,0,8544,0,8544,63456,9056,80304,17056,80304, + 26016,68992,20112,68992,13056,76560,6000,68992,96,68992,9056,80304,8544,63456,17120,63456,17120,0,8544,0, + 8544,63456,17056,78976,25680,78976,25680,70352,17056,70352,17056,78976,432,78976,9056,78976,9056,70352,432,70352, + 432,78976,8960,63456,26640,63456,45056,63456,53680,55784,62304,48112,62304,31792,62304,15392,53656,7696,45008,0, + 26640,0,8960,0,8960,29744,432,29744,432,35872,8960,35872,8960,63456,17600,56400,17600,35872,31872,35872, + 31872,29744,17600,29744,17600,7056,27920,7056,41056,7056,47152,13008,53248,18960,53248,31792,53248,44544,47152,50472, + 41056,56400,27920,56400,17600,56400,8544,63456,20096,63456,48240,10368,48240,63456,56560,63456,56560,0,45008,0, + 16880,53088,16880,0,8544,0,8544,63456,32336,72176,29920,73584,28864,74176,28200,74408,27536,74640,27024,74640, + 25504,74640,24648,73584,23792,72528,23792,70608,23792,70352,18480,70352,18480,74640,20672,77152,22864,79664,26512,79664, + 28048,79664,29344,79320,30640,78976,32688,77840,35104,76560,36080,76000,36800,75752,37520,75504,38160,75504,39520,75504, + 40376,76584,41232,77664,41232,79408,41232,79664,46544,79664,46448,75408,44264,72880,42080,70352,38512,70352,37056,70352, + 35800,70696,34544,71040,32336,72176,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712, + 24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632, + 34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232, + 12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,32144,80208,40464,68992,33968,68992, + 24192,80208,32144,80208,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744, + 34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,34304,64608, + 47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232,12896,7696, + 4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,36896,80208,44752,80208,35072,68992,28560,68992, + 36896,80208,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744,34304,5744, + 43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,34304,64608,47648,64608, + 55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232,12896,7696,4880,16624, + 4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,30560,80304,38560,80304,47520,68992,41616,68992,34560,76560, + 27504,68992,21600,68992,30560,80304,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712, + 24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632, + 34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232, + 12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,34384,72176,31968,73584,30912,74176, + 30248,74408,29584,74640,29072,74640,27552,74640,26696,73584,25840,72528,25840,70608,25840,70352,20528,70352,20528,74640, + 22720,77152,24912,79664,28560,79664,30096,79664,31392,79320,32688,78976,34736,77840,37152,76560,38128,76000,38848,75752, + 39568,75504,40208,75504,41568,75504,42424,76584,43280,77664,43280,79408,43280,79664,48592,79664,48496,75408,46312,72880, + 44128,70352,40560,70352,39104,70352,37848,70696,36592,71040,34384,72176,34304,57632,24944,57632,19440,50664,13936,43696, + 13936,31664,13936,19680,19440,12712,24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696, + 49112,50664,43648,57632,34304,57632,34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712, + 47648,-1232,34304,-1232,20912,-1232,12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608, + 38560,78976,47184,78976,47184,70352,38560,70352,38560,78976,21936,78976,30560,78976,30560,70352,21936,70352,21936,78976, + 61024,46752,41600,27248,61024,7824,55968,2672,36464,22192,16960,2672,11936,7824,31328,27248,11936,46752,16960,51888, + 36464,32384,55968,51888,61024,46752,51248,47264,20784,11312,23424,8592,26840,7168,30256,5744,34304,5744,43648,5744, + 49112,12712,54576,19680,54576,31664,54576,36416,53744,40328,52912,44240,51248,47264,47776,52064,45184,54784,41760,56208, + 38336,57632,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,26896,14768,22904,15600,18912,17248,16016, + 47776,52064,11568,9312,8240,13648,6560,19256,4880,24864,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608, + 39824,64608,44520,62968,49216,61328,52912,58144,59792,66256,64128,62480,56912,54064,60224,49680,61920,44032,63616,38384, + 63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,28864,-1232,24168,360,19472,1952,15600,5136,8720,-2976, + 4336,768,11568,9312,7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744, + 43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232, + 19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,29072,80208,37392,68992,30896,68992,21120,80208,29072,80208, + 7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704, + 47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104, + 7568,11440,7568,23840,7568,63456,33824,80208,41680,80208,32000,68992,25488,68992,33824,80208,7568,63456,16192,63456, + 16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912,47520,63456, + 56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440,7568,23840, + 7568,63456,27488,80304,35488,80304,44448,68992,38544,68992,31488,76560,24432,68992,18528,68992,27488,80304,7568,63456, + 16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912, + 47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440, + 7568,23840,7568,63456,35488,78976,44112,78976,44112,70352,35488,70352,35488,78976,18864,78976,27488,78976,27488,70352, + 18864,70352,18864,78976,-176,63456,9056,63456,26640,37360,44112,63456,53344,63456,30896,30224,30896,0,22272,0, + 22272,30224,-176,63456,28704,80208,36560,80208,26880,68992,20368,68992,28704,80208,8544,63456,17120,63456,17120,52240, + 27920,52240,38592,52240,44056,47456,49520,42672,49520,33328,49520,23968,44056,19168,38592,14368,27920,14368,17120,14368, + 17120,0,8544,0,8544,63456,17120,45184,17120,21424,27920,21424,33920,21424,37192,24528,40464,27632,40464,33328, + 40464,39008,37208,42096,33952,45184,27920,45184,17120,45184,7904,48320,7904,56816,12984,61472,18064,66128,27328,66128, + 36160,66128,40816,61200,45472,56272,45600,46752,39184,46416,35616,43968,32048,41520,32048,37440,32048,35440,33280,33720, + 34512,32000,37280,30224,39696,28640,46752,24144,48792,21128,50832,18112,50832,13856,50832,6544,46048,2656,41264,-1232, + 32304,-1232,29584,-1232,26696,-704,23808,-176,20704,848,20704,7824,24096,6544,27072,5928,30048,5312,32816,5312, + 37744,5312,40296,7328,42848,9344,42848,13216,42848,15888,41592,17680,40336,19472,36048,22096,32128,24432,28048,26944, + 26200,29816,24352,32688,24352,36544,24352,41952,27904,45608,31456,49264,37872,50496,37520,54864,34744,57248,31968,59632, + 27152,59632,21632,59632,18744,56680,15856,53728,15856,48160,15856,0,7904,0,7904,48320,29840,23920,20352,23920, + 16696,21760,13040,19600,13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528, + 37616,22192,37616,23920,29840,23920,45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232, + 21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048, + 37616,30816,37616,36208,34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440, + 13008,47088,17048,47920,21088,48752,24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,18672,69616,30656,53728, + 24160,53728,10304,69616,18672,69616,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760, + 18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,45440,27152,45440,0, + 37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856, + 5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112, + 20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,35232,48752, + 40336,43392,45440,38032,45440,27152,30736,69616,39200,69616,25344,53632,18832,53632,30736,69616,29840,23920,20352,23920, + 16696,21760,13040,19600,13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528, + 37616,22192,37616,23920,29840,23920,45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232, + 21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048, + 37616,30816,37616,36208,34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440, + 13008,47088,17048,47920,21088,48752,24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,21680,69616,27984,69616, + 38384,53632,32480,53632,24832,64048,17184,53632,11280,53632,21680,69616,29840,23920,20352,23920,16696,21760,13040,19600, + 13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920, + 29840,23920,45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232, + 9544,2872,5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208, + 34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920, + 21088,48752,24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,24656,58224,22240,60560,21312,61408,20608,61816, + 19904,62224,19344,62224,17728,62224,16968,60672,16208,59120,16112,55632,10800,55632,10896,61376,13064,64496,15232,67616, + 19088,67616,20704,67616,22064,67024,23424,66432,25008,65024,27424,62688,28352,61840,29056,61432,29760,61024,30320,61024, + 31936,61024,32696,62576,33456,64128,33552,67616,38864,67616,38768,61888,36600,58760,34432,55632,30576,55632,28960,55632, + 27600,56224,26240,56816,24656,58224,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760, + 18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,45440,27152,45440,0, + 37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856, + 5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112, + 20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,35232,48752, + 40336,43392,45440,38032,45440,27152,28832,65968,37456,65968,37456,57376,28832,57376,28832,65968,12208,65968,20832,65968, + 20832,57376,12208,57376,12208,65968,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760, + 18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,45440,27152,45440,0, + 37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856, + 5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112, + 20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,35232,48752, + 40336,43392,45440,38032,45440,27152,31296,64768,31296,67440,29424,69312,27552,71184,24832,71184,22064,71184,20216,69336, + 18368,67488,18368,64768,18368,62000,20216,60152,22064,58304,24832,58304,27552,58304,29424,60176,31296,62048,31296,64768, + 36480,64768,36480,59888,33096,56488,29712,53088,24832,53088,19952,53088,16568,56488,13184,59888,13184,64768,13184,69664, + 16568,73040,19952,76416,24832,76416,29712,76416,33096,73040,36480,69664,36480,64768,73008,28048,72976,34464,69472,38288, + 65968,42112,60144,42112,53632,42112,49704,38416,45776,34720,45184,28000,73008,28048,42288,40928,45440,44752,49944,46752, + 54448,48752,60048,48752,69664,48752,75272,42568,80880,36384,80880,25760,80880,21936,44928,21936,45440,13808,49768,9560, + 54096,5312,61888,5312,66304,5312,70552,6440,74800,7568,79056,9824,79056,2416,74800,640,70384,-296,65968,-1232, + 61456,-1232,54352,-1232,49088,1336,43824,3904,40544,8960,37440,3872,32848,1320,28256,-1232,22192,-1232,14160,-1232, + 9696,2744,5232,6720,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208, + 34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920, + 21088,48752,24912,48752,30944,48752,35472,46712,40000,44672,42288,40928,29840,23920,20352,23920,16696,21760,13040,19600, + 13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920, + 29840,23920,42464,45776,42464,38464,39136,40288,35800,41200,32464,42112,29072,42112,21456,42112,17248,37288,13040,32464, + 13040,23760,13040,15040,17248,10216,21456,5392,29072,5392,32464,5392,35800,6312,39136,7232,42464,9056,42464,1824, + 39184,304,35680,-464,32176,-1232,28224,-1232,17472,-1232,11136,5528,4800,12288,4800,23760,4800,35408,11200,42080, + 17600,48752,28736,48752,32336,48752,35784,48008,39232,47264,42464,45776,31472,0,33808,-2640,34960,-4872,36112,-7104, + 36112,-9136,36112,-12928,33560,-14856,31008,-16784,25984,-16784,24032,-16784,22184,-16528,20336,-16272,18512,-15760,18512,-10208, + 19952,-10928,21528,-11248,23104,-11568,25104,-11568,27600,-11568,28880,-10544,30160,-9520,30160,-7568,30160,-6288,29248,-4440, + 28336,-2592,26416,0,31472,0,48912,25760,48912,21936,12960,21936,13472,13856,17832,9624,22192,5392,29968,5392, + 34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232,18112,-1232, + 11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752,37744,48752,43328,42568,48912,36384, + 48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112,17744,38416,13808,34720,13216,28000, + 41104,28048,21744,69616,33728,53728,27232,53728,13376,69616,21744,69616,48912,25760,48912,21936,12960,21936,13472,13856, + 17832,9624,22192,5392,29968,5392,34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296, + 34048,-1232,29488,-1232,18112,-1232,11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752, + 37744,48752,43328,42568,48912,36384,48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112, + 17744,38416,13808,34720,13216,28000,41104,28048,33808,69616,42272,69616,28416,53632,21904,53632,33808,69616,48912,25760, + 48912,21936,12960,21936,13472,13856,17832,9624,22192,5392,29968,5392,34464,5392,38696,6496,42928,7600,47088,9824, + 47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232,18112,-1232,11456,5400,4800,12032,4800,23328,4800,35024, + 11112,41888,17424,48752,28128,48752,37744,48752,43328,42568,48912,36384,48912,25760,41104,28048,41008,34464,37504,38288, + 34000,42112,28224,42112,21680,42112,17744,38416,13808,34720,13216,28000,41104,28048,24752,69616,31056,69616,41456,53632, + 35552,53632,27904,64048,20256,53632,14352,53632,24752,69616,48912,25760,48912,21936,12960,21936,13472,13856,17832,9624, + 22192,5392,29968,5392,34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296,34048,-1232, + 29488,-1232,18112,-1232,11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752,37744,48752, + 43328,42568,48912,36384,48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112,17744,38416, + 13808,34720,13216,28000,41104,28048,31904,65968,40528,65968,40528,57376,31904,57376,31904,65968,15280,65968,23904,65968, + 23904,57376,15280,57376,15280,65968,6384,69616,18368,53728,11872,53728,-1984,69616,6384,69616,8208,47600,16016,47600, + 16016,0,8208,0,8208,47600,12112,48752,12112,48752,18448,69616,26912,69616,13056,53632,6544,53632,18448,69616, + 8208,47600,16016,47600,16016,0,8208,0,8208,47600,12112,48752,12112,48752,8208,47600,16016,47600,16016,0, + 8208,0,8208,47600,12112,48752,12112,48752,9392,69616,15696,69616,26096,53632,20192,53632,12544,64048,4896,53632, + -1008,53632,9392,69616,8208,47600,16016,47600,16016,0,8208,0,8208,47600,12112,48752,12112,48752,16544,65968, + 25168,65968,25168,57376,16544,57376,16544,65968,-80,65968,8544,65968,8544,57376,-80,57376,-80,65968,35616,38880, + 33488,39616,31616,39952,29744,40288,28000,40288,20912,40288,16976,35696,13040,31104,13040,22816,13040,14832,16744,10112, + 20448,5392,26640,5392,32816,5392,36512,10112,40208,14832,40208,22816,40208,28000,39056,32000,37904,36000,35616,38880, + 38288,48496,43648,42416,46072,36296,48496,30176,48496,22816,48496,11984,42456,5376,36416,-1232,26640,-1232,16832,-1232, + 10816,5376,4800,11984,4800,22816,4800,33440,10664,40056,16528,46672,25920,46672,26688,46672,27792,46560,28896,46448, + 30688,46240,23920,53888,10368,49344,8960,53552,20912,57456,13216,66128,22912,66128,28304,59968,42464,64688,43856,60560, + 31328,56400,38288,48496,47776,28736,47776,0,39952,0,39952,28480,39952,35232,37320,38592,34688,41952,29408,41952, + 23072,41952,19416,37912,15760,33872,15760,26896,15760,0,7904,0,7904,47600,15760,47600,15760,40208,18576,44496, + 22376,46624,26176,48752,31152,48752,39360,48752,43568,43672,47776,38592,47776,28736,27728,58224,25312,60560,24384,61408, + 23680,61816,22976,62224,22416,62224,20800,62224,20040,60672,19280,59120,19184,55632,13872,55632,13968,61376,16136,64496, + 18304,67616,22160,67616,23776,67616,25136,67024,26496,66432,28080,65024,30496,62688,31424,61840,32128,61432,32832,61024, + 33392,61024,35008,61024,35768,62576,36528,64128,36624,67616,41936,67616,41840,61888,39672,58760,37504,55632,33648,55632, + 32032,55632,30672,56224,29312,56816,27728,58224,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216, + 16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112, + 26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232, + 16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,20720,69616,32704,53728, + 26208,53728,12352,69616,20720,69616,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216,16680,10304, + 20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112,26640,42112, + 26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232, + 10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,32784,69616,41248,69616,27392,53632, + 20880,53632,32784,69616,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216,16680,10304,20320,5392, + 26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112,26640,42112,26640,48752, + 36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232,10600,5416, + 4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,23728,69616,30032,69616,40432,53632,34528,53632, + 26880,64048,19232,53632,13328,53632,23728,69616,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216, + 16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112, + 26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232, + 16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,26704,58224,24288,60560, + 23360,61408,22656,61816,21952,62224,21392,62224,19776,62224,19016,60672,18256,59120,18160,55632,12848,55632,12944,61376, + 15112,64496,17280,67616,21136,67616,22752,67616,24112,67024,25472,66432,27056,65024,29472,62688,30400,61840,31104,61432, + 31808,61024,32368,61024,33984,61024,34744,62576,35504,64128,35600,67616,40912,67616,40816,61888,38648,58760,36480,55632, + 32624,55632,31008,55632,29648,56224,28288,56816,26704,58224,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760, + 13040,15216,16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160, + 32896,42112,26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232, + 26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,30880,65968, + 39504,65968,39504,57376,30880,57376,30880,65968,14256,65968,22880,65968,22880,57376,14256,57376,14256,65968,31232,48240, + 41696,48240,41696,37776,31232,37776,31232,48240,31232,16784,41696,16784,41696,6368,31232,6368,31232,16784,9216,30896, + 63712,30896,63712,23680,9216,23680,9216,30896,38464,34048,17760,8880,19504,7104,21696,6248,23888,5392,26640,5392, + 32896,5392,36552,10328,40208,15264,40208,23760,40208,27120,39784,29600,39360,32080,38464,34048,35440,38640,33664,40368, + 31472,41240,29280,42112,26640,42112,20224,42112,16632,37120,13040,32128,13040,23168,13040,20096,13448,17760,13856,15424, + 14704,13472,35440,38640,9392,7056,7104,10320,5952,14512,4800,18704,4800,23760,4800,35488,10600,42120,16400,48752, + 26640,48752,30608,48752,33984,47664,37360,46576,40208,44368,46112,51504,50144,48160,43952,40544,46192,37280,47344,33072, + 48496,28864,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,22560,-1232,19144,-128,15728,976,13040,3152, + 7136,-4000,3056,-688,9392,7056,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568, + 25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312, + 36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752, + 20720,69616,32704,53728,26208,53728,12352,69616,20720,69616,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320, + 17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0, + 39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784, + 27072,48752,27072,48752,32784,69616,41248,69616,27392,53632,20880,53632,32784,69616,7392,18784,7392,47600,15216,47600, + 15216,19088,15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600, + 47264,47600,47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864, + 7392,8960,7392,18784,27072,48752,27072,48752,23728,69616,30032,69616,40432,53632,34528,53632,26880,64048,19232,53632, + 13328,53632,23728,69616,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568,25760,5568, + 32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312,36592,2976, + 32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752,30880,65968, + 39504,65968,39504,57376,30880,57376,30880,65968,14256,65968,22880,65968,22880,57376,14256,57376,14256,65968,28000,-4416, + 24688,-12928,21544,-15520,18400,-18112,13136,-18112,6880,-18112,6880,-11568,11472,-11568,14704,-11568,16488,-10032,18272,-8496, + 20448,-2800,21840,768,2592,47600,10880,47600,25760,10368,40624,47600,48912,47600,28000,-4416,31760,69616,40224,69616, + 26368,53632,19856,53632,31760,69616,15760,7136,15760,-18112,7904,-18112,7904,66128,15760,66128,15760,40368,18240,44624, + 22000,46688,25760,48752,30976,48752,39648,48752,45072,41864,50496,34976,50496,23760,50496,12544,45072,5656,39648,-1232, + 30976,-1232,25760,-1232,22000,832,18240,2896,15760,7136,42368,23760,42368,32384,38824,37296,35280,42208,29072,42208, + 22864,42208,19312,37296,15760,32384,15760,23760,15760,15136,19312,10224,22864,5312,29072,5312,35280,5312,38824,10224, + 42368,15136,42368,23760,28000,-4416,24688,-12928,21544,-15520,18400,-18112,13136,-18112,6880,-18112,6880,-11568,11472,-11568, + 14704,-11568,16488,-10032,18272,-8496,20448,-2800,21840,768,2592,47600,10880,47600,25760,10368,40624,47600,48912,47600, + 28000,-4416,29856,65968,38480,65968,38480,57376,29856,57376,29856,65968,13232,65968,21856,65968,21856,57376,13232,57376, + 13232,65968,17248,78160,42656,78160,42656,71872,17248,71872,17248,78160,29744,54992,18112,23424,41440,23424,29744,54992, + 24912,63456,34640,63456,58816,0,49888,0,44112,16272,15520,16272,9728,0,688,0,24912,63456,12128,64848, + 37536,64848,37536,58560,12128,58560,12128,64848,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208, + 15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,45440,27152, + 45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976, + 5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112, + 24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752, + 35232,48752,40336,43392,45440,38032,45440,27152,17680,82672,22688,82672,23152,79488,25216,77896,27280,76304,30976,76304, + 34624,76304,36664,77872,38704,79440,39264,82672,44272,82672,43856,76592,40496,73536,37136,70480,30976,70480,24816,70480, + 21456,73536,18096,76592,17680,82672,29744,54992,18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0, + 49888,0,44112,16272,15520,16272,9728,0,688,0,24912,63456,11536,66288,16544,66288,17008,63104,19072,61512, + 21136,59920,24832,59920,28480,59920,30520,61488,32560,63056,33120,66288,38128,66288,37712,60208,34352,57152,30992,54096, + 24832,54096,18672,54096,15312,57152,11952,60208,11536,66288,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368, + 13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920, + 45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872, + 5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160, + 30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752, + 24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,29744,54992,18112,23424,41440,23424,29744,54992,24912,63456, + 34640,63456,58816,0,49888,0,44112,16272,15520,16272,9728,0,688,0,24912,63456,50448,0,55504,0, + 53584,-2592,52672,-4464,51760,-6336,51760,-7648,51760,-9600,52928,-10584,54096,-11568,56400,-11568,57760,-11568,59072,-11248, + 60384,-10928,61712,-10288,61712,-15936,60096,-16368,58648,-16576,57200,-16784,55920,-16784,50736,-16784,48296,-14936,45856,-13088, + 45856,-9136,45856,-7104,46984,-4872,48112,-2640,50448,0,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368, + 13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920, + 45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872, + 5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160, + 30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752, + 24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,38160,0,43216,0,41296,-2592,40384,-4464,39472,-6336, + 39472,-7648,39472,-9600,40640,-10584,41808,-11568,44112,-11568,45472,-11568,46784,-11248,48096,-10928,49424,-10288,49424,-15936, + 47808,-16368,46360,-16576,44912,-16784,43632,-16784,38448,-16784,36008,-14936,33568,-13088,33568,-9136,33568,-7104,34696,-4872, + 35824,-2640,38160,0,56064,58560,56064,49520,51728,53552,46816,55552,41904,57552,36384,57552,25504,57552,19720,50896, + 13936,44240,13936,31664,13936,19120,19720,12472,25504,5824,36384,5824,41904,5824,46816,7824,51728,9824,56064,13856, + 56064,4880,51552,1824,46520,296,41488,-1232,35872,-1232,21456,-1232,13168,7584,4880,16400,4880,31664,4880,46960, + 13168,55784,21456,64608,35872,64608,41568,64608,46600,63096,51632,61584,56064,58560,36896,80208,44752,80208,35072,68992, + 28560,68992,36896,80208,42464,45776,42464,38464,39136,40288,35800,41200,32464,42112,29072,42112,21456,42112,17248,37288, + 13040,32464,13040,23760,13040,15040,17248,10216,21456,5392,29072,5392,32464,5392,35800,6312,39136,7232,42464,9056, + 42464,1824,39184,304,35680,-464,32176,-1232,28224,-1232,17472,-1232,11136,5528,4800,12288,4800,23760,4800,35408, + 11200,42080,17600,48752,28736,48752,32336,48752,35784,48008,39232,47264,42464,45776,33808,69616,42272,69616,28416,53632, + 21904,53632,33808,69616,31584,80304,39584,80304,48544,68992,42640,68992,35584,76560,28528,68992,22624,68992,31584,80304, + 56064,58560,56064,49520,51728,53552,46816,55552,41904,57552,36384,57552,25504,57552,19720,50896,13936,44240,13936,31664, + 13936,19120,19720,12472,25504,5824,36384,5824,41904,5824,46816,7824,51728,9824,56064,13856,56064,4880,51552,1824, + 46520,296,41488,-1232,35872,-1232,21456,-1232,13168,7584,4880,16400,4880,31664,4880,46960,13168,55784,21456,64608, + 35872,64608,41568,64608,46600,63096,51632,61584,56064,58560,42464,45776,42464,38464,39136,40288,35800,41200,32464,42112, + 29072,42112,21456,42112,17248,37288,13040,32464,13040,23760,13040,15040,17248,10216,21456,5392,29072,5392,32464,5392, + 35800,6312,39136,7232,42464,9056,42464,1824,39184,304,35680,-464,32176,-1232,28224,-1232,17472,-1232,11136,5528, + 4800,12288,4800,23760,4800,35408,11200,42080,17600,48752,28736,48752,32336,48752,35784,48008,39232,47264,42464,45776, + 25776,69616,32080,69616,42480,53632,36576,53632,28928,64048,21280,53632,15376,53632,25776,69616,31248,79072,39920,79072, + 39920,70352,31248,70352,31248,79072,56064,58560,56064,49520,51728,53552,46816,55552,41904,57552,36384,57552,25504,57552, + 19720,50896,13936,44240,13936,31664,13936,19120,19720,12472,25504,5824,36384,5824,41904,5824,46816,7824,51728,9824, + 56064,13856,56064,4880,51552,1824,46520,296,41488,-1232,35872,-1232,21456,-1232,13168,7584,4880,16400,4880,31664, + 4880,46960,13168,55784,21456,64608,35872,64608,41568,64608,46600,63096,51632,61584,56064,58560,24416,66128,32240,66128, + 32240,56224,24416,56224,24416,66128,28416,48752,28416,48752,42464,45776,42464,38464,39136,40288,35800,41200,32464,42112, + 29072,42112,21456,42112,17248,37288,13040,32464,13040,23760,13040,15040,17248,10216,21456,5392,29072,5392,32464,5392, + 35800,6312,39136,7232,42464,9056,42464,1824,39184,304,35680,-464,32176,-1232,28224,-1232,17472,-1232,11136,5528, + 4800,12288,4800,23760,4800,35408,11200,42080,17600,48752,28736,48752,32336,48752,35784,48008,39232,47264,42464,45776, + 56064,58560,56064,49520,51728,53552,46816,55552,41904,57552,36384,57552,25504,57552,19720,50896,13936,44240,13936,31664, + 13936,19120,19720,12472,25504,5824,36384,5824,41904,5824,46816,7824,51728,9824,56064,13856,56064,4880,51552,1824, + 46520,296,41488,-1232,35872,-1232,21456,-1232,13168,7584,4880,16400,4880,31664,4880,46960,13168,55784,21456,64608, + 35872,64608,41568,64608,46600,63096,51632,61584,56064,58560,30560,68992,21600,80304,27504,80304,34560,72736,41616,80304, + 47520,80304,38560,68992,30560,68992,42464,45776,42464,38464,39136,40288,35800,41200,32464,42112,29072,42112,21456,42112, + 17248,37288,13040,32464,13040,23760,13040,15040,17248,10216,21456,5392,29072,5392,32464,5392,35800,6312,39136,7232, + 42464,9056,42464,1824,39184,304,35680,-464,32176,-1232,28224,-1232,17472,-1232,11136,5528,4800,12288,4800,23760, + 4800,35408,11200,42080,17600,48752,28736,48752,32336,48752,35784,48008,39232,47264,42464,45776,24752,53632,14352,69616, + 20256,69616,27904,59200,35552,69616,41456,69616,31056,53632,24752,53632,27488,68992,18528,80304,24432,80304,31488,72736, + 38544,80304,44448,80304,35488,68992,27488,68992,17120,56400,17120,7056,27504,7056,40624,7056,46728,13008,52832,18960, + 52832,31792,52832,44544,46728,50472,40624,56400,27504,56400,17120,56400,8544,63456,26176,63456,44624,63456,53256,55784, + 61888,48112,61888,31792,61888,15392,53216,7696,44544,0,26176,0,8544,0,8544,63456,39520,40368,39520,66128, + 47344,66128,47344,0,39520,0,39520,7136,37056,2896,33296,832,29536,-1232,24272,-1232,15648,-1232,10224,5656, + 4800,12544,4800,23760,4800,34976,10224,41864,15648,48752,24272,48752,29536,48752,33296,46688,37056,44624,39520,40368, + 12880,23760,12880,15136,16424,10224,19968,5312,26176,5312,32384,5312,35952,10224,39520,15136,39520,23760,39520,32384, + 35952,37296,32384,42208,26176,42208,19968,42208,16424,37296,12880,32384,12880,23760,55296,66048,63760,66048,58784,50064, + 52272,50064,55296,66048,8960,63456,26640,63456,45056,63456,53680,55784,62304,48112,62304,31792,62304,15392,53656,7696, + 45008,0,26640,0,8960,0,8960,29744,432,29744,432,35872,8960,35872,8960,63456,17600,56400,17600,35872, + 31872,35872,31872,29744,17600,29744,17600,7056,27920,7056,41056,7056,47152,13008,53248,18960,53248,31792,53248,44544, + 47152,50472,41056,56400,27920,56400,17600,56400,39520,40368,39520,54576,25664,54576,25664,59888,39520,59888,39520,66128, + 47344,66128,47344,59888,53888,59888,53888,54576,47344,54576,47344,0,39520,0,39520,7136,37056,2896,33296,832, + 29536,-1232,24272,-1232,15648,-1232,10224,5656,4800,12544,4800,23760,4800,34976,10224,41864,15648,48752,24272,48752, + 29536,48752,33296,46688,37056,44624,39520,40368,12880,23760,12880,15136,16424,10224,19968,5312,26176,5312,32384,5312, + 35952,10224,39520,15136,39520,23760,39520,32384,35952,37296,32384,42208,26176,42208,19968,42208,16424,37296,12880,32384, + 12880,23760,8544,63456,48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232, + 49424,7232,49424,0,8544,0,8544,63456,16224,78160,41632,78160,41632,71872,16224,71872,16224,78160,15200,64848, + 40608,64848,40608,58560,15200,58560,15200,64848,48912,25760,48912,21936,12960,21936,13472,13856,17832,9624,22192,5392, + 29968,5392,34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232, + 18112,-1232,11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752,37744,48752,43328,42568, + 48912,36384,48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112,17744,38416,13808,34720, + 13216,28000,41104,28048,15120,80304,20128,80304,20688,78000,22792,76792,24896,75584,28416,75584,31904,75584,33960,76752, + 36016,77920,36704,80304,41712,80304,41296,75248,37896,72632,34496,70016,28416,70016,22288,70016,18912,72608,15536,75200, + 15120,80304,8544,63456,48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232, + 49424,7232,49424,0,8544,0,8544,63456,14608,68336,19616,68336,20080,65152,22144,63560,24208,61968,27904,61968, + 31552,61968,33592,63536,35632,65104,36192,68336,41200,68336,40784,62256,37424,59200,34064,56144,27904,56144,21744,56144, + 18384,59200,15024,62256,14608,68336,48912,25760,48912,21936,12960,21936,13472,13856,17832,9624,22192,5392,29968,5392, + 34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232,18112,-1232, + 11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752,37744,48752,43328,42568,48912,36384, + 48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112,17744,38416,13808,34720,13216,28000, + 41104,28048,24080,79072,32752,79072,32752,70352,24080,70352,24080,79072,8544,63456,48656,63456,48656,56224,17120,56224, + 17120,37440,47344,37440,47344,30224,17120,30224,17120,7232,49424,7232,49424,0,8544,0,8544,63456,24416,66128, + 32240,66128,32240,56224,24416,56224,24416,66128,28416,48752,28416,48752,48912,25760,48912,21936,12960,21936,13472,13856, + 17832,9624,22192,5392,29968,5392,34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296, + 34048,-1232,29488,-1232,18112,-1232,11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752, + 37744,48752,43328,42568,48912,36384,48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112, + 17744,38416,13808,34720,13216,28000,41104,28048,8544,63456,48656,63456,48656,56224,17120,56224,17120,37440,47344,37440, + 47344,30224,17120,30224,17120,7232,49424,7232,49424,0,8544,0,8544,63456,38160,0,43216,0,41296,-2592, + 40384,-4464,39472,-6336,39472,-7648,39472,-9600,40640,-10584,41808,-11568,44112,-11568,45472,-11568,46784,-11248,48096,-10928, + 49424,-10288,49424,-15936,47808,-16368,46360,-16576,44912,-16784,43632,-16784,38448,-16784,36008,-14936,33568,-13088,33568,-9136, + 33568,-7104,34696,-4872,35824,-2640,38160,0,48912,25760,48912,21936,12960,21936,13472,13856,17832,9624,22192,5392, + 29968,5392,34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232, + 18112,-1232,11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752,37744,48752,43328,42568, + 48912,36384,48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112,17744,38416,13808,34720, + 13216,28000,41104,28048,35088,0,40144,0,38224,-2592,37312,-4464,36400,-6336,36400,-7648,36400,-9600,37568,-10584, + 38736,-11568,41040,-11568,42400,-11568,43712,-11248,45024,-10928,46352,-10288,46352,-15936,44736,-16368,43288,-16576,41840,-16784, + 40560,-16784,35376,-16784,32936,-14936,30496,-13088,30496,-9136,30496,-7104,31624,-4872,32752,-2640,35088,0,8544,63456, + 48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232,49424,7232,49424,0, + 8544,0,8544,63456,24416,68992,15456,80304,21360,80304,28416,72736,35472,80304,41376,80304,32416,68992,24416,68992, + 48912,25760,48912,21936,12960,21936,13472,13856,17832,9624,22192,5392,29968,5392,34464,5392,38696,6496,42928,7600, + 47088,9824,47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232,18112,-1232,11456,5400,4800,12032,4800,23328, + 4800,35024,11112,41888,17424,48752,28128,48752,37744,48752,43328,42568,48912,36384,48912,25760,41104,28048,41008,34464, + 37504,38288,34000,42112,28224,42112,21680,42112,17744,38416,13808,34720,13216,28000,41104,28048,24752,53632,14352,69616, + 20256,69616,27904,59200,35552,69616,41456,69616,31056,53632,24752,53632,32608,80304,40608,80304,49568,68992,43664,68992, + 36608,76560,29552,68992,23648,68992,32608,80304,51808,9056,51808,26096,37776,26096,37776,33152,60304,33152,60304,5904, + 55328,2384,49336,576,43344,-1232,36544,-1232,21680,-1232,13280,7456,4880,16144,4880,31664,4880,47216,13280,55912, + 21680,64608,36544,64608,42752,64608,48344,63072,53936,61536,58656,58560,58656,49424,53888,53472,48536,55512,43184,57552, + 37280,57552,25632,57552,19784,51048,13936,44544,13936,31664,13936,18832,19784,12328,25632,5824,37280,5824,41824,5824, + 45392,6608,48960,7392,51808,9056,22704,69616,29008,69616,39408,53632,33504,53632,25856,64048,18208,53632,12304,53632, + 22704,69616,39520,24352,39520,32848,36016,37528,32512,42208,26176,42208,19888,42208,16384,37528,12880,32848,12880,24352, + 12880,15888,16384,11216,19888,6544,26176,6544,32512,6544,36016,11216,39520,15888,39520,24352,47344,5904,47344,-6240, + 41944,-12176,36544,-18112,25408,-18112,21296,-18112,17640,-17496,13984,-16880,10544,-15600,10544,-7984,13984,-9856,17344,-10752, + 20704,-11648,24176,-11648,31872,-11648,35696,-7632,39520,-3616,39520,4512,39520,8368,37104,4160,33320,2080,29536,0, + 24272,0,15520,0,10160,6672,4800,13344,4800,24352,4800,35408,10160,42080,15520,48752,24272,48752,29536,48752, + 33320,46664,37104,44576,39520,40368,39520,47600,47344,47600,47344,5904,51808,9056,51808,26096,37776,26096,37776,33152, + 60304,33152,60304,5904,55328,2384,49336,576,43344,-1232,36544,-1232,21680,-1232,13280,7456,4880,16144,4880,31664, + 4880,47216,13280,55912,21680,64608,36544,64608,42752,64608,48344,63072,53936,61536,58656,58560,58656,49424,53888,53472, + 48536,55512,43184,57552,37280,57552,25632,57552,19784,51048,13936,44544,13936,31664,13936,18832,19784,12328,25632,5824, + 37280,5824,41824,5824,45392,6608,48960,7392,51808,9056,20240,80304,25248,80304,25808,78000,27912,76792,30016,75584, + 33536,75584,37024,75584,39080,76752,41136,77920,41824,80304,46832,80304,46416,75248,43016,72632,39616,70016,33536,70016, + 27408,70016,24032,72608,20656,75200,20240,80304,39520,24352,39520,32848,36016,37528,32512,42208,26176,42208,19888,42208, + 16384,37528,12880,32848,12880,24352,12880,15888,16384,11216,19888,6544,26176,6544,32512,6544,36016,11216,39520,15888, + 39520,24352,47344,5904,47344,-6240,41944,-12176,36544,-18112,25408,-18112,21296,-18112,17640,-17496,13984,-16880,10544,-15600, + 10544,-7984,13984,-9856,17344,-10752,20704,-11648,24176,-11648,31872,-11648,35696,-7632,39520,-3616,39520,4512,39520,8368, + 37104,4160,33320,2080,29536,0,24272,0,15520,0,10160,6672,4800,13344,4800,24352,4800,35408,10160,42080, + 15520,48752,24272,48752,29536,48752,33320,46664,37104,44576,39520,40368,39520,47600,47344,47600,47344,5904,14608,68336, + 19616,68336,20080,65152,22144,63560,24208,61968,27904,61968,31552,61968,33592,63536,35632,65104,36192,68336,41200,68336, + 40784,62256,37424,59200,34064,56144,27904,56144,21744,56144,18384,59200,15024,62256,14608,68336,32272,79072,40944,79072, + 40944,70352,32272,70352,32272,79072,51808,9056,51808,26096,37776,26096,37776,33152,60304,33152,60304,5904,55328,2384, + 49336,576,43344,-1232,36544,-1232,21680,-1232,13280,7456,4880,16144,4880,31664,4880,47216,13280,55912,21680,64608, + 36544,64608,42752,64608,48344,63072,53936,61536,58656,58560,58656,49424,53888,53472,48536,55512,43184,57552,37280,57552, + 25632,57552,19784,51048,13936,44544,13936,31664,13936,18832,19784,12328,25632,5824,37280,5824,41824,5824,45392,6608, + 48960,7392,51808,9056,22368,66128,30192,66128,30192,56224,22368,56224,22368,66128,26368,48752,26368,48752,39520,24352, + 39520,32848,36016,37528,32512,42208,26176,42208,19888,42208,16384,37528,12880,32848,12880,24352,12880,15888,16384,11216, + 19888,6544,26176,6544,32512,6544,36016,11216,39520,15888,39520,24352,47344,5904,47344,-6240,41944,-12176,36544,-18112, + 25408,-18112,21296,-18112,17640,-17496,13984,-16880,10544,-15600,10544,-7984,13984,-9856,17344,-10752,20704,-11648,24176,-11648, + 31872,-11648,35696,-7632,39520,-3616,39520,4512,39520,8368,37104,4160,33320,2080,29536,0,24272,0,15520,0, + 10160,6672,4800,13344,4800,24352,4800,35408,10160,42080,15520,48752,24272,48752,29536,48752,33320,46664,37104,44576, + 39520,40368,39520,47600,47344,47600,47344,5904,33712,-8336,42688,-8336,35712,-21936,30240,-21936,33712,-8336,51808,9056, + 51808,26096,37776,26096,37776,33152,60304,33152,60304,5904,55328,2384,49336,576,43344,-1232,36544,-1232,21680,-1232, + 13280,7456,4880,16144,4880,31664,4880,47216,13280,55912,21680,64608,36544,64608,42752,64608,48344,63072,53936,61536, + 58656,58560,58656,49424,53888,53472,48536,55512,43184,57552,37280,57552,25632,57552,19784,51048,13936,44544,13936,31664, + 13936,18832,19784,12328,25632,5824,37280,5824,41824,5824,45392,6608,48960,7392,51808,9056,30512,53808,21536,53808, + 28512,67360,34000,67360,30512,53808,39520,24352,39520,32848,36016,37528,32512,42208,26176,42208,19888,42208,16384,37528, + 12880,32848,12880,24352,12880,15888,16384,11216,19888,6544,26176,6544,32512,6544,36016,11216,39520,15888,39520,24352, + 47344,5904,47344,-6240,41944,-12176,36544,-18112,25408,-18112,21296,-18112,17640,-17496,13984,-16880,10544,-15600,10544,-7984, + 13984,-9856,17344,-10752,20704,-11648,24176,-11648,31872,-11648,35696,-7632,39520,-3616,39520,4512,39520,8368,37104,4160, + 33320,2080,29536,0,24272,0,15520,0,10160,6672,4800,13344,4800,24352,4800,35408,10160,42080,15520,48752, + 24272,48752,29536,48752,33320,46664,37104,44576,39520,40368,39520,47600,47344,47600,47344,5904,28512,80304,36512,80304, + 45472,68992,39568,68992,32512,76560,25456,68992,19552,68992,28512,80304,8544,63456,17120,63456,17120,37440,48320,37440, + 48320,63456,56912,63456,56912,0,48320,0,48320,30224,17120,30224,17120,0,8544,0,8544,63456,8032,80304, + 16032,80304,24992,68992,19088,68992,12032,76560,4976,68992,-928,68992,8032,80304,47776,28736,47776,0,39952,0, + 39952,28480,39952,35232,37320,38592,34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896,15760,0, + 7904,0,7904,66128,15760,66128,15760,40208,18576,44496,22376,46624,26176,48752,31152,48752,39360,48752,43568,43672, + 47776,38592,47776,28736,15680,63456,24272,63456,24272,53936,55456,53936,55456,63456,64048,63456,64048,53936,71184,53936, + 71184,46960,64048,46960,64048,0,55456,0,55456,30224,24272,30224,24272,0,15680,0,15680,46960,8544,46960, + 8544,53936,15680,53936,15680,63456,24272,46960,24272,37440,55456,37440,55456,46960,24272,46960,50272,28736,50272,0, + 42464,0,42464,28480,42464,35232,39824,38592,37184,41952,31920,41952,25584,41952,21928,37912,18272,33872,18272,26896, + 18272,0,10416,0,10416,53968,5104,53968,5104,60944,10416,60944,10416,66128,18272,66128,18272,60944,33232,60944, + 33232,53968,18272,53968,18272,40208,21088,44496,24888,46624,28688,48752,33664,48752,41856,48752,46064,43672,50272,38592, + 50272,28736,12880,72176,10464,73584,9408,74176,8744,74408,8080,74640,7568,74640,6048,74640,5192,73584,4336,72528, + 4336,70608,4336,70352,-976,70352,-976,74640,1216,77152,3408,79664,7056,79664,8592,79664,9888,79320,11184,78976, + 13232,77840,15648,76560,16624,76000,17344,75752,18064,75504,18704,75504,20064,75504,20920,76584,21776,77664,21776,79408, + 21776,79664,27088,79664,26992,75408,24808,72880,22624,70352,19056,70352,17600,70352,16344,70696,15088,71040,12880,72176, + 8544,63456,17120,63456,17120,0,8544,0,8544,63456,12368,58224,9952,60560,9024,61408,8320,61816,7616,62224, + 7056,62224,5440,62224,4680,60672,3920,59120,3824,55632,-1488,55632,-1392,61376,776,64496,2944,67616,6800,67616, + 8416,67616,9776,67024,11136,66432,12720,65024,15136,62688,16064,61840,16768,61432,17472,61024,18032,61024,19648,61024, + 20408,62576,21168,64128,21264,67616,26576,67616,26480,61888,24312,58760,22144,55632,18288,55632,16672,55632,15312,56224, + 13952,56816,12368,58224,8208,47600,16016,47600,16016,0,8208,0,8208,47600,12112,48752,12112,48752,-160,78160, + 25248,78160,25248,71872,-160,71872,-160,78160,8544,63456,17120,63456,17120,0,8544,0,8544,63456,-160,64848, + 25248,64848,25248,58560,-160,58560,-160,64848,8208,47600,16016,47600,16016,0,8208,0,8208,47600,12112,48752, + 12112,48752,-240,80304,4768,80304,5328,78000,7432,76792,9536,75584,13056,75584,16544,75584,18600,76752,20656,77920, + 21344,80304,26352,80304,25936,75248,22536,72632,19136,70016,13056,70016,6928,70016,3552,72608,176,75200,-240,80304, + 8544,63456,17120,63456,17120,0,8544,0,8544,63456,-752,68336,4256,68336,4720,65152,6784,63560,8848,61968, + 12544,61968,16192,61968,18232,63536,20272,65104,20832,68336,25840,68336,25424,62256,22064,59200,18704,56144,12544,56144, + 6384,56144,3024,59200,-336,62256,-752,68336,8208,47600,16016,47600,16016,0,8208,0,8208,47600,12112,48752, + 12112,48752,12560,0,17616,0,15696,-2592,14784,-4464,13872,-6336,13872,-7648,13872,-9600,15040,-10584,16208,-11568, + 18512,-11568,19872,-11568,21184,-11248,22496,-10928,23824,-10288,23824,-15936,22208,-16368,20760,-16576,19312,-16784,18032,-16784, + 12848,-16784,10408,-14936,7968,-13088,7968,-9136,7968,-7104,9096,-4872,10224,-2640,12560,0,8544,63456,17120,63456, + 17120,0,8544,0,8544,63456,10512,0,15568,0,13648,-2592,12736,-4464,11824,-6336,11824,-7648,11824,-9600, + 12992,-10584,14160,-11568,16464,-11568,17824,-11568,19136,-11248,20448,-10928,21776,-10288,21776,-15936,20160,-16368,18712,-16576, + 17264,-16784,15984,-16784,10800,-16784,8360,-14936,5920,-13088,5920,-9136,5920,-7104,7048,-4872,8176,-2640,10512,0, + 8208,47600,16016,47600,16016,0,8208,0,8208,47600,8208,66128,16016,66128,16016,56224,8208,56224,8208,66128, + 8544,63456,17120,63456,17120,0,8544,0,8544,63456,8720,79072,17392,79072,17392,70352,8720,70352,8720,79072, + 8208,47600,16016,47600,16016,0,8208,0,8208,47600,12112,48752,12112,48752,34144,63456,42720,63456,42720,4416, + 42720,-7056,38368,-12240,34016,-17424,24368,-17424,21088,-17424,21088,-10208,23776,-10208,29472,-10208,31808,-7016,34144,-3824, + 34144,4416,34144,63456,8544,63456,17120,63456,17120,0,8544,0,8544,63456,32784,47600,40592,47600,40592,-848, + 40592,-9952,37128,-14032,33664,-18112,25984,-18112,23008,-18112,23008,-11472,25088,-11472,29552,-11472,31168,-9416,32784,-7360, + 32784,-848,32784,47600,32784,66128,40592,66128,40592,56224,32784,56224,32784,66128,8208,47600,16016,47600,16016,0, + 8208,0,8208,47600,8208,66128,16016,66128,16016,56224,8208,56224,8208,66128,9056,80304,17056,80304,26016,68992, + 20112,68992,13056,76560,6000,68992,96,68992,9056,80304,8544,63456,17120,63456,17120,4416,17120,-7056,12768,-12240, + 8416,-17424,-1232,-17424,-4512,-17424,-4512,-10208,-1824,-10208,3872,-10208,6208,-7016,8544,-3824,8544,4416,8544,63456, + 9392,69616,15696,69616,26096,53632,20192,53632,12544,64048,4896,53632,-1008,53632,9392,69616,8208,47600,16016,47600, + 16016,-848,16016,-9952,12552,-14032,9088,-18112,1408,-18112,-1568,-18112,-1568,-11472,512,-11472,4976,-11472,6592,-9416, + 8208,-7360,8208,-848,8208,47600,30640,-7312,39616,-7312,32640,-20912,27168,-20912,30640,-7312,8544,63456,17120,63456, + 17120,36640,45600,63456,56656,63456,25168,33872,58912,0,47600,0,17120,30560,17120,0,8544,0,8544,63456, + 26544,-7312,35520,-7312,28544,-20912,23072,-20912,26544,-7312,7904,66128,15760,66128,15760,27072,39104,47600,49088,47600, + 23840,25328,50144,0,39952,0,15760,23248,15760,0,7904,0,7904,66128,7904,47600,15760,47600,15760,26992, + 39104,47600,49088,47600,23840,25248,50144,0,39952,0,15760,23168,15760,0,7904,0,7904,47600,17440,81232, + 25296,81232,15616,70016,9104,70016,17440,81232,8544,63456,17120,63456,17120,7232,48032,7232,48032,0,8544,0, + 8544,63456,17440,81232,25296,81232,15616,70016,9104,70016,17440,81232,8208,66128,16016,66128,16016,0,8208,0, + 8208,66128,25520,-7312,34496,-7312,27520,-20912,22048,-20912,25520,-7312,8544,63456,17120,63456,17120,7232,48032,7232, + 48032,0,8544,0,8544,63456,9136,-7312,18112,-7312,11136,-20912,5664,-20912,9136,-7312,8208,66128,16016,66128, + 16016,0,8208,0,8208,66128,28672,62976,37136,62976,32160,46992,25648,46992,28672,62976,8544,63456,17120,63456, + 17120,7232,48032,7232,48032,0,8544,0,8544,63456,24576,66048,33040,66048,28064,50064,21552,50064,24576,66048, + 8208,66128,16016,66128,16016,0,8208,0,8208,66128,32864,40736,41824,40736,41824,29936,32864,29936,32864,40736, + 8544,63456,17120,63456,17120,7232,48032,7232,48032,0,8544,0,8544,63456,18528,40736,27488,40736,27488,29936, + 18528,29936,18528,40736,8208,66128,16016,66128,16016,0,8208,0,8208,66128,8960,63456,17600,63456,17600,37280, + 30896,46576,34304,41856,17600,30224,17600,7232,48496,7232,48496,0,8960,0,8960,24272,2672,19760,-592,24432, + 8960,31152,8960,63456,8464,66128,16272,66128,16272,40544,21584,44368,24816,39872,16272,33872,16272,0,8464,0, + 8464,28304,3232,24560,80,29072,8464,35056,8464,66128,32800,81232,40656,81232,30976,70016,24464,70016,32800,81232, + 8544,63456,20096,63456,48240,10368,48240,63456,56560,63456,56560,0,45008,0,16880,53088,16880,0,8544,0, + 8544,63456,30736,69616,39200,69616,25344,53632,18832,53632,30736,69616,47776,28736,47776,0,39952,0,39952,28480, + 39952,35232,37320,38592,34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896,15760,0,7904,0, + 7904,47600,15760,47600,15760,40208,18576,44496,22376,46624,26176,48752,31152,48752,39360,48752,43568,43672,47776,38592, + 47776,28736,29616,-7312,38592,-7312,31616,-20912,26144,-20912,29616,-7312,8544,63456,20096,63456,48240,10368,48240,63456, + 56560,63456,56560,0,45008,0,16880,53088,16880,0,8544,0,8544,63456,24496,-7312,33472,-7312,26496,-20912, + 21024,-20912,24496,-7312,47776,28736,47776,0,39952,0,39952,28480,39952,35232,37320,38592,34688,41952,29408,41952, + 23072,41952,19416,37912,15760,33872,15760,26896,15760,0,7904,0,7904,47600,15760,47600,15760,40208,18576,44496, + 22376,46624,26176,48752,31152,48752,39360,48752,43568,43672,47776,38592,47776,28736,8544,63456,20096,63456,48240,10368, + 48240,63456,56560,63456,56560,0,45008,0,16880,53088,16880,0,8544,0,8544,63456,28512,68992,19552,80304, + 25456,80304,32512,72736,39568,80304,45472,80304,36512,68992,28512,68992,47776,28736,47776,0,39952,0,39952,28480, + 39952,35232,37320,38592,34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896,15760,0,7904,0, + 7904,47600,15760,47600,15760,40208,18576,44496,22376,46624,26176,48752,31152,48752,39360,48752,43568,43672,47776,38592, + 47776,28736,24752,53632,14352,69616,20256,69616,27904,59200,35552,69616,41456,69616,31056,53632,24752,53632,62112,28736, + 62112,0,54288,0,54288,28480,54288,35232,51656,38592,49024,41952,43744,41952,37408,41952,33752,37912,30096,33872, + 30096,26896,30096,0,22240,0,22240,47600,30096,47600,30096,40208,32912,44496,36712,46624,40512,48752,45488,48752, + 53696,48752,57904,43672,62112,38592,62112,28736,12080,63456,21040,63456,21040,56992,14064,43440,8592,43440,12080,56992, + 12080,63456,46928,38032,46928,56224,33872,56224,26272,56224,21696,50808,17120,45392,17120,35952,17120,0,8544,0, + 8544,63456,17120,63456,17120,53216,20448,58912,24912,61760,29408,64608,35920,64608,45568,64608,50512,57824,55456,51040, + 55456,37952,55456,-848,55456,-9904,52016,-14032,48528,-18112,40848,-18112,37152,-18112,37152,-11472,39232,-11472,43568,-11472, + 45248,-9560,46928,-7648,46928,-848,46928,38032,47776,28736,47776,-848,47776,-9952,44288,-14032,40848,-18112,33152,-18112, + 22352,-18112,22352,-11472,32256,-11472,36720,-11472,38336,-9440,39952,-7360,39952,-848,39952,28480,39952,35232,37320,38592, + 34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896,15760,0,7904,0,7904,47600,15760,47600, + 15760,40208,18576,44496,22352,46624,26176,48752,31152,48752,39360,48752,43568,43696,47776,38592,47776,28736,21344,78160, + 46752,78160,46752,71872,21344,71872,21344,78160,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680, + 19440,12712,24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632, + 34304,57632,34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232, + 20912,-1232,12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,14176,64848,39584,64848, + 39584,58560,14176,58560,14176,64848,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216,16680,10304, + 20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112,26640,42112, + 26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232, + 10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,21264,80304,26272,80304,26832,78000, + 28936,76792,31040,75584,34560,75584,38048,75584,40104,76752,42160,77920,42848,80304,47856,80304,47440,75248,44040,72632, + 40640,70016,34560,70016,28432,70016,25056,72608,21680,75200,21264,80304,34304,57632,24944,57632,19440,50664,13936,43696, + 13936,31664,13936,19680,19440,12712,24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696, + 49112,50664,43648,57632,34304,57632,34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712, + 47648,-1232,34304,-1232,20912,-1232,12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608, + 13584,68336,18592,68336,19056,65152,21120,63560,23184,61968,26880,61968,30528,61968,32568,63536,34608,65104,35168,68336, + 40176,68336,39760,62256,36400,59200,33040,56144,26880,56144,20720,56144,17360,59200,14000,62256,13584,68336,26640,42112, + 20352,42112,16696,37208,13040,32304,13040,23760,13040,15216,16680,10304,20320,5392,26640,5392,32896,5392,36552,10328, + 40208,15264,40208,23760,40208,32208,36552,37160,32896,42112,26640,42112,26640,48752,36848,48752,42672,42120,48496,35488, + 48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488, + 10600,42120,16400,48752,26640,48752,45136,80208,53008,80208,43312,68992,36816,68992,45136,80208,30912,80208,38768,80208, + 29072,68992,22576,68992,30912,80208,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712, + 24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632, + 34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232, + 12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,39632,69616,47200,69616,36656,53632, + 30928,53632,39632,69616,25440,69616,32672,69616,23184,53632,17376,53632,25440,69616,26640,42112,20352,42112,16696,37208, + 13040,32304,13040,23760,13040,15216,16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760, + 40208,32208,36552,37160,32896,42112,26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064, + 42672,5416,36848,-1232,26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752, + 26640,48752,86784,63456,86784,56224,55248,56224,55248,37440,85472,37440,85472,30224,55248,30224,55248,7232,87552,7232, + 87552,0,42288,0,23888,0,14384,8072,4880,16144,4880,31792,4880,47296,14384,55376,23888,63456,42288,63456, + 86784,63456,46672,56224,41184,56224,27536,56224,20736,50128,13936,44032,13936,31792,13936,19504,20736,13368,27536,7232, + 41184,7232,46672,7232,46672,56224,76592,28048,76496,34512,73016,38312,69536,42112,63712,42112,57200,42112,53272,38416, + 49344,34720,48752,28000,76592,28048,84448,25760,84448,21936,48496,21936,49008,13856,53344,9624,57680,5392,65456,5392, + 69952,5392,74200,6496,78448,7600,82624,9824,82624,2416,78368,640,73952,-296,69536,-1232,65024,-1232,58224,-1232, + 53080,1104,47936,3440,44496,8080,41488,3408,37040,1088,32592,-1232,26640,-1232,16400,-1232,10600,5416,4800,12064, + 4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,32592,48752,37080,46392,41568,44032,44368,39440,47680,43984, + 52616,46368,57552,48752,63616,48752,73232,48752,78840,42568,84448,36384,84448,25760,26640,42112,20352,42112,16696,37208, + 13040,32304,13040,23760,13040,15216,16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760, + 40208,32208,36552,37160,32896,42112,26640,42112,30752,81232,38608,81232,28928,70016,22416,70016,30752,81232,38640,29744, + 41392,28816,44008,25752,46624,22688,49264,17344,57968,0,48752,0,40624,16272,37488,22656,34536,24736,31584,26816, + 26480,26816,17120,26816,17120,0,8544,0,8544,63456,27920,63456,38800,63456,44160,58904,49520,54352,49520,45184, + 49520,39184,46736,35232,43952,31280,38640,29744,17120,56400,17120,33872,27920,33872,34128,33872,37296,36744,40464,39616, + 40464,45184,40464,50752,37296,53576,34128,56400,27920,56400,17120,56400,30736,69616,39200,69616,25344,53632,18832,53632, + 30736,69616,35792,40288,34464,41056,32912,41416,31360,41776,29488,41776,22864,41776,19312,37464,15760,33152,15760,25072, + 15760,0,7904,0,7904,47600,15760,47600,15760,40208,18240,44544,22192,46648,26144,48752,31792,48752,32592,48752, + 33576,48640,34560,48528,35744,48320,35792,40288,30640,-7312,39616,-7312,32640,-20912,27168,-20912,30640,-7312,38640,29744, + 41392,28816,44008,25752,46624,22688,49264,17344,57968,0,48752,0,40624,16272,37488,22656,34536,24736,31584,26816, + 26480,26816,17120,26816,17120,0,8544,0,8544,63456,27920,63456,38800,63456,44160,58904,49520,54352,49520,45184, + 49520,39184,46736,35232,43952,31280,38640,29744,17120,56400,17120,33872,27920,33872,34128,33872,37296,36744,40464,39616, + 40464,45184,40464,50752,37296,53576,34128,56400,27920,56400,17120,56400,9136,-7312,18112,-7312,11136,-20912,5664,-20912, + 9136,-7312,35792,40288,34464,41056,32912,41416,31360,41776,29488,41776,22864,41776,19312,37464,15760,33152,15760,25072, + 15760,0,7904,0,7904,47600,15760,47600,15760,40208,18240,44544,22192,46648,26144,48752,31792,48752,32592,48752, + 33576,48640,34560,48528,35744,48320,35792,40288,38640,29744,41392,28816,44008,25752,46624,22688,49264,17344,57968,0, + 48752,0,40624,16272,37488,22656,34536,24736,31584,26816,26480,26816,17120,26816,17120,0,8544,0,8544,63456, + 27920,63456,38800,63456,44160,58904,49520,54352,49520,45184,49520,39184,46736,35232,43952,31280,38640,29744,17120,56400, + 17120,33872,27920,33872,34128,33872,37296,36744,40464,39616,40464,45184,40464,50752,37296,53576,34128,56400,27920,56400, + 17120,56400,23392,68992,14432,80304,20336,80304,27392,72736,34448,80304,40352,80304,31392,68992,23392,68992,35792,40288, + 34464,41056,32912,41416,31360,41776,29488,41776,22864,41776,19312,37464,15760,33152,15760,25072,15760,0,7904,0, + 7904,47600,15760,47600,15760,40208,18240,44544,22192,46648,26144,48752,31792,48752,32592,48752,33576,48640,34560,48528, + 35744,48320,35792,40288,19632,53632,9232,69616,15136,69616,22784,59200,30432,69616,36336,69616,25936,53632,19632,53632, + 30752,81232,38608,81232,28928,70016,22416,70016,30752,81232,46576,61376,46576,52992,41696,55328,37360,56480,33024,57632, + 28992,57632,21968,57632,18168,54912,14368,52192,14368,47168,14368,42960,16896,40816,19424,38672,26480,37360,31664,36288, + 41264,34464,45832,29856,50400,25248,50400,17504,50400,8288,44216,3528,38032,-1232,26096,-1232,21584,-1232,16512,-216, + 11440,800,6000,2800,6000,11648,11216,8720,16232,7232,21248,5744,26096,5744,33440,5744,37440,8632,41440,11520, + 41440,16880,41440,21552,38568,24184,35696,26816,29152,28128,23920,29152,14320,31072,10032,35152,5744,39232,5744,46496, + 5744,54912,11672,59760,17600,64608,28000,64608,32464,64608,37096,63800,41728,62992,46576,61376,30736,69616,39200,69616, + 25344,53632,18832,53632,30736,69616,38544,46192,38544,38800,35232,40496,31664,41352,28096,42208,24272,42208,18448,42208, + 15536,40424,12624,38640,12624,35056,12624,32336,14704,30792,16784,29248,23072,27840,25760,27248,34080,25456,37592,22208, + 41104,18960,41104,13136,41104,6496,35856,2632,30608,-1232,21424,-1232,17600,-1232,13456,-488,9312,256,4720,1744, + 4720,9824,9056,7568,13264,6440,17472,5312,21584,5312,27120,5312,30096,7200,33072,9088,33072,12544,33072,15728, + 30920,17424,28768,19120,21504,20704,18784,21328,11520,22864,8288,26032,5056,29200,5056,34720,5056,41440,9816,45096, + 14576,48752,23328,48752,27664,48752,31488,48112,35312,47472,38544,46192,24416,80304,32416,80304,41376,68992,35472,68992, + 28416,76560,21360,68992,15456,68992,24416,80304,46576,61376,46576,52992,41696,55328,37360,56480,33024,57632,28992,57632, + 21968,57632,18168,54912,14368,52192,14368,47168,14368,42960,16896,40816,19424,38672,26480,37360,31664,36288,41264,34464, + 45832,29856,50400,25248,50400,17504,50400,8288,44216,3528,38032,-1232,26096,-1232,21584,-1232,16512,-216,11440,800, + 6000,2800,6000,11648,11216,8720,16232,7232,21248,5744,26096,5744,33440,5744,37440,8632,41440,11520,41440,16880, + 41440,21552,38568,24184,35696,26816,29152,28128,23920,29152,14320,31072,10032,35152,5744,39232,5744,46496,5744,54912, + 11672,59760,17600,64608,28000,64608,32464,64608,37096,63800,41728,62992,46576,61376,20656,69616,26960,69616,37360,53632, + 31456,53632,23808,64048,16160,53632,10256,53632,20656,69616,38544,46192,38544,38800,35232,40496,31664,41352,28096,42208, + 24272,42208,18448,42208,15536,40424,12624,38640,12624,35056,12624,32336,14704,30792,16784,29248,23072,27840,25760,27248, + 34080,25456,37592,22208,41104,18960,41104,13136,41104,6496,35856,2632,30608,-1232,21424,-1232,17600,-1232,13456,-488, + 9312,256,4720,1744,4720,9824,9056,7568,13264,6440,17472,5312,21584,5312,27120,5312,30096,7200,33072,9088, + 33072,12544,33072,15728,30920,17424,28768,19120,21504,20704,18784,21328,11520,22864,8288,26032,5056,29200,5056,34720, + 5056,41440,9816,45096,14576,48752,23328,48752,27664,48752,31488,48112,35312,47472,38544,46192,46576,61376,46576,52992, + 41696,55328,37360,56480,33024,57632,28992,57632,21968,57632,18168,54912,14368,52192,14368,47168,14368,42960,16896,40816, + 19424,38672,26480,37360,31664,36288,41264,34464,45832,29856,50400,25248,50400,17504,50400,8288,44216,3528,38032,-1232, + 26096,-1232,21584,-1232,16512,-216,11440,800,6000,2800,6000,11648,11216,8720,16232,7232,21248,5744,26096,5744, + 33440,5744,37440,8632,41440,11520,41440,16880,41440,21552,38568,24184,35696,26816,29152,28128,23920,29152,14320,31072, + 10032,35152,5744,39232,5744,46496,5744,54912,11672,59760,17600,64608,28000,64608,32464,64608,37096,63800,41728,62992, + 46576,61376,31472,0,33808,-2640,34960,-4872,36112,-7104,36112,-9136,36112,-12928,33560,-14856,31008,-16784,25984,-16784, + 24032,-16784,22184,-16528,20336,-16272,18512,-15760,18512,-10208,19952,-10928,21528,-11248,23104,-11568,25104,-11568,27600,-11568, + 28880,-10544,30160,-9520,30160,-7568,30160,-6288,29248,-4440,28336,-2592,26416,0,31472,0,38544,46192,38544,38800, + 35232,40496,31664,41352,28096,42208,24272,42208,18448,42208,15536,40424,12624,38640,12624,35056,12624,32336,14704,30792, + 16784,29248,23072,27840,25760,27248,34080,25456,37592,22208,41104,18960,41104,13136,41104,6496,35856,2632,30608,-1232, + 21424,-1232,17600,-1232,13456,-488,9312,256,4720,1744,4720,9824,9056,7568,13264,6440,17472,5312,21584,5312, + 27120,5312,30096,7200,33072,9088,33072,12544,33072,15728,30920,17424,28768,19120,21504,20704,18784,21328,11520,22864, + 8288,26032,5056,29200,5056,34720,5056,41440,9816,45096,14576,48752,23328,48752,27664,48752,31488,48112,35312,47472, + 38544,46192,26352,0,28688,-2640,29840,-4872,30992,-7104,30992,-9136,30992,-12928,28440,-14856,25888,-16784,20864,-16784, + 18912,-16784,17064,-16528,15216,-16272,13392,-15760,13392,-10208,14832,-10928,16408,-11248,17984,-11568,19984,-11568,22480,-11568, + 23760,-10544,25040,-9520,25040,-7568,25040,-6288,24128,-4440,23216,-2592,21296,0,26352,0,46576,61376,46576,52992, + 41696,55328,37360,56480,33024,57632,28992,57632,21968,57632,18168,54912,14368,52192,14368,47168,14368,42960,16896,40816, + 19424,38672,26480,37360,31664,36288,41264,34464,45832,29856,50400,25248,50400,17504,50400,8288,44216,3528,38032,-1232, + 26096,-1232,21584,-1232,16512,-216,11440,800,6000,2800,6000,11648,11216,8720,16232,7232,21248,5744,26096,5744, + 33440,5744,37440,8632,41440,11520,41440,16880,41440,21552,38568,24184,35696,26816,29152,28128,23920,29152,14320,31072, + 10032,35152,5744,39232,5744,46496,5744,54912,11672,59760,17600,64608,28000,64608,32464,64608,37096,63800,41728,62992, + 46576,61376,23392,68992,14432,80304,20336,80304,27392,72736,34448,80304,40352,80304,31392,68992,23392,68992,38544,46192, + 38544,38800,35232,40496,31664,41352,28096,42208,24272,42208,18448,42208,15536,40424,12624,38640,12624,35056,12624,32336, + 14704,30792,16784,29248,23072,27840,25760,27248,34080,25456,37592,22208,41104,18960,41104,13136,41104,6496,35856,2632, + 30608,-1232,21424,-1232,17600,-1232,13456,-488,9312,256,4720,1744,4720,9824,9056,7568,13264,6440,17472,5312, + 21584,5312,27120,5312,30096,7200,33072,9088,33072,12544,33072,15728,30920,17424,28768,19120,21504,20704,18784,21328, + 11520,22864,8288,26032,5056,29200,5056,34720,5056,41440,9816,45096,14576,48752,23328,48752,27664,48752,31488,48112, + 35312,47472,38544,46192,20320,53632,9904,69616,15808,69616,23472,59200,31120,69616,37024,69616,26608,53632,20320,53632, + 23296,48752,23296,48752,28400,0,30736,-2640,31888,-4872,33040,-7104,33040,-9136,33040,-12928,30488,-14856,27936,-16784, + 22912,-16784,20960,-16784,19112,-16528,17264,-16272,15440,-15760,15440,-10208,16880,-10928,18456,-11248,20032,-11568,22032,-11568, + 24528,-11568,25808,-10544,27088,-9520,27088,-7568,27088,-6288,26176,-4440,25264,-2592,23344,0,28400,0,-256,63456, + 53424,63456,53424,56224,30896,56224,30896,0,22272,0,22272,56224,-256,56224,-256,63456,24304,0,26640,-2640, + 27792,-4872,28944,-7104,28944,-9136,28944,-12928,26392,-14856,23840,-16784,18816,-16784,16864,-16784,15016,-16528,13168,-16272, + 11344,-15760,11344,-10208,12784,-10928,14360,-11248,15936,-11568,17936,-11568,20432,-11568,21712,-10544,22992,-9520,22992,-7568, + 22992,-6288,22080,-4440,21168,-2592,19248,0,24304,0,15936,61120,15936,47600,32048,47600,32048,41520,15936,41520, + 15936,15680,15936,9856,17528,8200,19120,6544,24016,6544,32048,6544,32048,0,24016,0,14960,0,11520,3376, + 8080,6752,8080,15680,8080,41520,2336,41520,2336,47600,8080,47600,8080,61120,15936,61120,-256,63456,53424,63456, + 53424,56224,30896,56224,30896,0,22272,0,22272,56224,-256,56224,-256,63456,22368,68992,13408,80304,19312,80304, + 26368,72736,33424,80304,39328,80304,30368,68992,22368,68992,15936,61120,15936,47600,32048,47600,32048,41520,15936,41520, + 15936,15680,15936,9856,17528,8200,19120,6544,24016,6544,32048,6544,32048,0,24016,0,14960,0,11520,3376, + 8080,6752,8080,15680,8080,41520,2336,41520,2336,47600,8080,47600,8080,61120,15936,61120,24576,71168,33040,71168, + 28064,55184,21552,55184,24576,71168,-256,63456,53424,63456,53424,56224,30896,56224,30896,31744,42160,31744,42160,24528, + 30896,24528,30896,0,22272,0,22272,24528,11008,24528,11008,31744,22272,31744,22272,56224,-256,56224,-256,63456, + 15936,61120,15936,47600,32048,47600,32048,41520,15936,41520,15936,31616,32048,31616,32048,25584,15936,25584,15936,15680, + 15936,9856,17504,8208,19120,6544,24016,6544,32048,6544,32048,0,24016,0,14960,0,11520,3408,8080,6752, + 8080,15680,8080,25584,2336,25584,2336,31616,8080,31616,8080,41520,2336,41520,2336,47600,8080,47600,8080,61120, + 15936,61120,31312,72176,28896,73584,27840,74176,27176,74408,26512,74640,26000,74640,24480,74640,23624,73584,22768,72528, + 22768,70608,22768,70352,17456,70352,17456,74640,19648,77152,21840,79664,25488,79664,27024,79664,28320,79320,29616,78976, + 31664,77840,34080,76560,35056,76000,35776,75752,36496,75504,37136,75504,38496,75504,39352,76584,40208,77664,40208,79408, + 40208,79664,45520,79664,45424,75408,43240,72880,41056,70352,37488,70352,36032,70352,34776,70696,33520,71040,31312,72176, + 7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704, + 47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104, + 7568,11440,7568,23840,7568,63456,26704,58224,24288,60560,23360,61408,22656,61816,21952,62224,21392,62224,19776,62224, + 19016,60672,18256,59120,18160,55632,12848,55632,12944,61376,15112,64496,17280,67616,21136,67616,22752,67616,24112,67024, + 25472,66432,27056,65024,29472,62688,30400,61840,31104,61432,31808,61024,32368,61024,33984,61024,34744,62576,35504,64128, + 35600,67616,40912,67616,40816,61888,38648,58760,36480,55632,32624,55632,31008,55632,29648,56224,28288,56816,26704,58224, + 7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608, + 39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232, + 24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752,19296,78160,44704,78160,44704,71872, + 19296,71872,19296,78160,7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744, + 43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232, + 19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,14176,64848,39584,64848,39584,58560,14176,58560,14176,64848, + 7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608, + 39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232, + 24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752,18192,80304,23200,80304,23760,78000, + 25864,76792,27968,75584,31488,75584,34976,75584,37032,76752,39088,77920,39776,80304,44784,80304,44368,75248,40968,72632, + 37568,70016,31488,70016,25360,70016,21984,72608,18608,75200,18192,80304,7568,63456,16192,63456,16192,24912,16192,14704, + 19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840, + 56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,13584,68336, + 18592,68336,19056,65152,21120,63560,23184,61968,26880,61968,30528,61968,32568,63536,34608,65104,35168,68336,40176,68336, + 39760,62256,36400,59200,33040,56144,26880,56144,20720,56144,17360,59200,14000,62256,13584,68336,7392,18784,7392,47600, + 15216,47600,15216,19088,15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608, + 39440,47600,47264,47600,47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232, + 11640,3864,7392,8960,7392,18784,27072,48752,27072,48752,7568,63456,16192,63456,16192,24912,16192,14704,19888,10224, + 23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840,56144,11440, + 50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,38464,68864,38464,71536, + 36592,73408,34720,75280,32000,75280,29232,75280,27384,73432,25536,71584,25536,68864,25536,66096,27384,64248,29232,62400, + 32000,62400,34720,62400,36592,64272,38464,66144,38464,68864,43648,68864,43648,63984,40264,60584,36880,57184,32000,57184, + 27120,57184,23736,60584,20352,63984,20352,68864,20352,73760,23736,77136,27120,80512,32000,80512,36880,80512,40264,77136, + 43648,73760,43648,68864,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568,25760,5568, + 32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312,36592,2976, + 32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752,33344,62720, + 33344,65392,31472,67264,29600,69136,26880,69136,24112,69136,22264,67288,20416,65440,20416,62720,20416,59952,22264,58104, + 24112,56256,26880,56256,29600,56256,31472,58128,33344,60000,33344,62720,38528,62720,38528,57840,35144,54440,31760,51040, + 26880,51040,22000,51040,18616,54440,15232,57840,15232,62720,15232,67616,18616,70992,22000,74368,26880,74368,31760,74368, + 35144,70992,38528,67616,38528,62720,42064,80208,49936,80208,40240,68992,33744,68992,42064,80208,27840,80208,35696,80208, + 26000,68992,19504,68992,27840,80208,7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744, + 40128,5744,43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232, + 31872,-1232,19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,39632,69616,47200,69616,36656,53632,30928,53632, + 39632,69616,25440,69616,32672,69616,23184,53632,17376,53632,25440,69616,7392,18784,7392,47600,15216,47600,15216,19088, + 15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600, + 47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960, + 7392,18784,27072,48752,27072,48752,7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744, + 40128,5744,43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232, + 31872,-1232,19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,28944,0,34000,0,32080,-2592,31168,-4464, + 30256,-6336,30256,-7648,30256,-9600,31424,-10584,32592,-11568,34896,-11568,36256,-11568,37568,-11248,38880,-10928,40208,-10288, + 40208,-15936,38592,-16368,37144,-16576,35696,-16784,34416,-16784,29232,-16784,26792,-14936,24352,-13088,24352,-9136,24352,-7104, + 25480,-4872,26608,-2640,28944,0,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568, + 25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312, + 36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752, + 42256,0,47312,0,45392,-2592,44480,-4464,43568,-6336,43568,-7648,43568,-9600,44736,-10584,45904,-11568,48208,-11568, + 49568,-11568,50880,-11248,52192,-10928,53520,-10288,53520,-15936,51904,-16368,50456,-16576,49008,-16784,47728,-16784,42544,-16784, + 40104,-14936,37664,-13088,37664,-9136,37664,-7104,38792,-4872,39920,-2640,42256,0,38752,81328,46752,81328,55712,70016, + 49808,70016,42752,77584,35696,70016,29792,70016,38752,81328,2896,63456,11568,63456,24912,9824,38208,63456,47856,63456, + 61200,9824,74496,63456,83216,63456,67280,0,56480,0,43088,55088,29584,0,18784,0,2896,63456,31920,69616, + 38224,69616,48624,53632,42720,53632,35072,64048,27424,53632,21520,53632,31920,69616,3648,47600,11472,47600,21248,10448, + 30976,47600,40208,47600,49984,10448,59712,47600,67536,47600,55088,0,45856,0,35616,39008,25328,0,16112,0, + 3648,47600,22368,81328,30368,81328,39328,70016,33424,70016,26368,77584,19312,70016,13408,70016,22368,81328,-176,63456, + 9056,63456,26640,37360,44112,63456,53344,63456,30896,30224,30896,0,22272,0,22272,30224,-176,63456,22704,69616, + 29008,69616,39408,53632,33504,53632,25856,64048,18208,53632,12304,53632,22704,69616,28000,-4416,24688,-12928,21544,-15520, + 18400,-18112,13136,-18112,6880,-18112,6880,-11568,11472,-11568,14704,-11568,16488,-10032,18272,-8496,20448,-2800,21840,768, + 2592,47600,10880,47600,25760,10368,40624,47600,48912,47600,28000,-4416,-176,63456,9056,63456,26640,37360,44112,63456, + 53344,63456,30896,30224,30896,0,22272,0,22272,30224,-176,63456,30368,78976,38992,78976,38992,70352,30368,70352, + 30368,78976,13744,78976,22368,78976,22368,70352,13744,70352,13744,78976,30752,81232,38608,81232,28928,70016,22416,70016, + 30752,81232,4880,63456,54736,63456,54736,56912,14624,7232,55712,7232,55712,0,3904,0,3904,6544,44032,56224, + 4880,56224,4880,63456,30736,69616,39200,69616,25344,53632,18832,53632,30736,69616,4800,47600,41952,47600,41952,40464, + 12544,6240,41952,6240,41952,0,3744,0,3744,7136,33152,41360,4800,41360,4800,47600,25104,79072,33776,79072, + 33776,70352,25104,70352,25104,79072,4880,63456,54736,63456,54736,56912,14624,7232,55712,7232,55712,0,3904,0, + 3904,6544,44032,56224,4880,56224,4880,63456,18272,66128,26096,66128,26096,56224,18272,56224,18272,66128,22272,48752, + 22272,48752,4800,47600,41952,47600,41952,40464,12544,6240,41952,6240,41952,0,3744,0,3744,7136,33152,41360, + 4800,41360,4800,47600,4880,63456,54736,63456,54736,56912,14624,7232,55712,7232,55712,0,3904,0,3904,6544, + 44032,56224,4880,56224,4880,63456,25440,68992,16480,80304,22384,80304,29440,72736,36496,80304,42400,80304,33440,68992, + 25440,68992,4800,47600,41952,47600,41952,40464,12544,6240,41952,6240,41952,0,3744,0,3744,7136,33152,41360, + 4800,41360,4800,47600,19632,53632,9232,69616,15136,69616,22784,59200,30432,69616,36336,69616,25936,53632,19632,53632, + 17344,0,9472,0,9472,41520,2000,41520,2000,47600,9472,47600,9472,50912,9472,58864,13176,62496,16880,66128, + 24912,66128,32304,66128,32304,59632,24816,59632,20608,59632,18960,57920,17344,56192,17344,51808,17344,0,42368,23760, + 42368,32384,38848,37312,35280,42208,29072,42208,22864,42208,19296,37312,15760,32384,15760,23760,15760,15136,19296,10208, + 22864,5312,29072,5312,35280,5312,38848,10208,42368,15136,42368,23760,15760,40368,18240,44624,22016,46672,25760,48752, + 30976,48752,39648,48752,45056,41856,50496,34976,50496,23760,50496,12544,45056,5648,39648,-1232,30976,-1232,25760,-1232, + 22016,848,18240,2896,15760,7136,15760,0,7904,0,7904,54576,1360,54576,1360,59888,7904,59888,7904,66128, + 15760,66128,15760,59888,29584,59888,29584,54576,15760,54576,15760,40368,21376,30304,21376,7056,35152,7056,42080,7056, + 45416,9928,48752,12800,48752,18704,48752,24656,45416,27480,42080,30304,35152,30304,21376,30304,21376,56400,21376,37280, + 34080,37280,40368,37280,43456,39632,46544,41984,46544,46832,46544,51632,43456,54016,40368,56400,34080,56400,21376,56400, + 12800,63456,34720,63456,44544,63456,49856,59376,55168,55296,55168,47776,55168,41952,52448,38504,49728,35056,44448,34208, + 50784,32848,54296,28536,57808,24224,57808,17760,57808,9264,52024,4632,46240,0,35568,0,12800,0,12800,56448, + 7184,56448,4672,54424,2160,52400,2160,47936,2160,45856,-4464,45856,-4464,48832,-4464,56528,-384,59992,3696,63456, + 12800,63456,44496,18656,44496,24560,41160,27432,37824,30304,30896,30304,17120,30304,17120,7056,30896,7056,37824,7056, + 41160,9928,44496,12800,44496,18656,49088,63456,49088,56400,17120,56400,17120,37360,31328,37360,41984,37360,47768,32728, + 53552,28096,53552,18656,53552,9264,47960,4632,42368,0,31328,0,8544,0,8544,63456,49088,63456,15760,40368, + 18240,44624,22016,46672,25760,48752,30976,48752,39648,48752,45056,41856,50496,34976,50496,23760,50496,12544,45056,5648, + 39648,-1232,30976,-1232,25760,-1232,22016,848,18240,2896,15760,7136,15760,0,7904,0,7904,66128,43856,66128, + 43856,59072,15760,59120,15760,40368,42368,23760,42368,32384,38848,37312,35280,42208,29072,42208,22864,42208,19296,37312, + 15760,32384,15760,23760,15760,15136,19296,10208,22864,5312,29072,5312,35280,5312,38848,10208,42368,15136,42368,23760, + 44496,18656,44496,24560,41136,27456,37824,30304,30896,30304,17120,30304,17120,7056,30896,7056,37824,7056,41136,9952, + 44496,12800,44496,18656,17120,63456,17120,37360,31328,37360,41984,37360,47768,32728,53552,28096,53552,18656,53552,9264, + 47768,4632,41984,0,31328,0,8544,0,8544,46416,0,46416,13264,63456,17120,63456,15760,40368,18240,44624, + 22000,46688,25760,48752,30976,48752,39648,48752,45072,41864,50496,34976,50496,23760,50496,12544,45072,5656,39648,-1232, + 30976,-1232,25760,-1232,22000,832,18240,2896,15760,7136,15760,0,7904,0,7904,46416,0,46416,12320,66176, + 15760,66176,15760,40368,42368,23760,42368,32384,38824,37296,35280,42208,29072,42208,22864,42208,19312,37296,15760,32384, + 15760,23760,15760,15136,19312,10224,22864,5312,29072,5312,35280,5312,38824,10224,42368,15136,42368,23760,4880,58560, + 9312,61584,14344,63096,19376,64608,25072,64608,39488,64608,47776,55784,56064,46960,56064,31664,56064,16400,47776,7584, + 39488,-1232,25072,-1232,19472,-1232,14432,296,9392,1824,4880,4880,4880,13856,9216,9824,14128,7824,19040,5824, + 24560,5824,35440,5824,41224,12472,47008,19120,47008,31664,47008,44240,41224,50896,35440,57552,24560,57552,19040,57552, + 14128,55552,9216,53552,4880,49520,4880,58560,56064,58560,56064,49520,51728,53552,46816,55552,41904,57552,36384,57552, + 25504,57552,19720,50896,13936,44240,13936,31664,13936,19120,19720,12472,25504,5824,36384,5824,41904,5824,46816,7824, + 51728,9824,56064,13856,56064,4880,51552,1824,46520,296,41488,-1232,35872,-1232,21456,-1232,13168,7584,4880,16400, + 4880,31664,4880,46960,13168,55784,21456,64608,35872,64608,39952,64608,46576,63072,47136,62944,47648,62768,48320,71056, + 51856,75232,56192,80416,65840,80416,69104,80416,69104,73184,66432,73184,60736,73184,58400,70000,56064,66816,56064,58560, + 42464,48880,42464,38464,39136,40288,35800,41200,32464,42112,29072,42112,21456,42112,17248,37288,13040,32464,13040,23760, + 13040,15040,17248,10216,21456,5392,29072,5392,32464,5392,35800,6312,39136,7232,42464,9056,42464,1824,39184,304, + 35680,-464,32176,-1232,28224,-1232,17472,-1232,11136,5528,4800,12288,4800,23760,4800,35408,11200,42080,17600,48752, + 28736,48752,31744,48752,34720,48240,34720,48880,34720,57968,38144,62048,41568,66128,49264,66128,52192,66128,52192,59504, + 50144,59504,45680,59504,44072,57440,42464,55376,42464,48880,8960,63456,26640,63456,45056,63456,53680,55784,62304,48112, + 62304,31792,62304,15392,53656,7696,45008,0,26640,0,8960,0,8960,29744,432,29744,432,35872,8960,35872, + 8960,63456,17600,56400,17600,35872,31872,35872,31872,29744,17600,29744,17600,7056,27920,7056,41056,7056,47152,13008, + 53248,18960,53248,31792,53248,44544,47152,50472,41056,56400,27920,56400,17600,56400,21376,56400,21376,7056,31744,7056, + 44880,7056,50976,13008,57072,18960,57072,31792,57072,44544,50976,50472,44880,56400,31744,56400,21376,56400,12800,63456, + 30432,63456,48880,63456,57504,55784,66128,48112,66128,31792,66128,15392,57456,7696,48784,0,30432,0,12800,0, + 12800,56448,7184,56448,4672,54424,2160,52400,2160,47936,2160,45856,-4464,45856,-4464,48832,-4464,56528,-384,59992, + 3696,63456,12800,63456,17600,18656,17600,7056,31200,7056,44960,7056,44960,30304,31200,30304,24272,30304,20936,27432, + 17600,24560,17600,18656,17600,63456,53552,63456,53552,0,30768,0,20096,0,14320,4632,8544,9264,8544,18704, + 8544,28096,14320,32728,20096,37360,30768,37360,44960,37360,44960,56400,17600,56400,17600,63456,11440,59072,11440,66128, + 47344,66128,47344,0,39520,0,39520,7136,37056,2896,33296,832,29536,-1232,24272,-1232,15648,-1232,10224,5656, + 4800,12544,4800,23760,4800,34976,10224,41864,15648,48752,24272,48752,29536,48752,33296,46688,37056,44624,39520,40368, + 39520,59120,11440,59072,12880,23760,12880,15136,16424,10224,19968,5312,26176,5312,32384,5312,35952,10224,39520,15136, + 39520,23760,39520,32384,35952,37296,32384,42208,26176,42208,19968,42208,16424,37296,12880,32384,12880,23760,37184,2800, + 43856,-560,43856,-6544,43856,-18112,25120,-18112,15728,-18112,10624,-15136,10624,-8624,14960,-11600,25408,-11600,35872,-11600, + 35872,-6624,35872,-2720,24656,-688,15808,896,10832,5648,4800,11392,4800,22912,4800,34432,10624,41080,16448,47728, + 26608,47728,36800,47728,42648,41080,48496,34432,48448,22736,48448,16112,45152,10584,41856,5056,37184,2800,40208,22736, + 40240,31360,36608,36232,32976,41104,26688,41104,20400,41104,16744,36168,13088,31232,13088,22944,13088,14704,17088,10472, + 21088,6240,26432,5776,29152,5520,31328,4928,35536,6720,37872,11392,40208,16064,40208,22736,46448,63456,46448,0, + 5568,0,5568,7232,37872,7232,37872,30224,7648,30224,7648,37440,37872,37440,37872,56224,6336,56224,6336,63456, + 46448,63456,4976,33152,54576,33152,54576,44544,48728,51048,42880,57552,31232,57552,25328,57552,19976,55512,14624,53472, + 9856,49424,9856,58560,14576,61536,20168,63072,25760,64608,31968,64608,46832,64608,55224,55912,63616,47216,63616,31664, + 63616,16656,55632,7712,47648,-1232,34304,-1232,20320,-1232,12648,8096,4976,17424,4976,33152,14320,26096,14880,17808, + 20296,11776,25712,5744,34304,5744,42880,5744,48304,11776,53728,17808,54272,26096,14320,26096,20064,34208,14496,35616, + 11480,39248,8464,42880,8464,48160,8464,55712,14152,60160,19840,64608,29616,64608,33408,64608,37680,63928,41952,63248, + 46832,61888,46832,54224,41984,55840,37952,56608,33920,57376,30384,57376,23920,57376,20464,54760,17008,52144,17008,47264, + 17008,42496,20360,39968,23712,37440,30048,37440,37776,37440,37776,30384,30384,30384,23376,30384,19448,27216,15520,24048, + 15520,18448,15520,12368,19744,9184,23968,6000,32048,6000,36672,6000,40928,7056,45184,8112,48752,10208,48752,1920, + 44240,336,40016,-448,35792,-1232,31792,-1232,19888,-1232,13432,3912,6976,9056,6976,18448,6976,24560,10440,28728, + 13904,32896,20064,34208,8544,63456,45008,63456,45008,56224,17120,56224,17120,37520,42288,37520,42288,30304,17120,30304, + 17120,4416,17120,-7056,12768,-12240,8416,-17424,-1232,-17424,-4512,-17424,-4512,-10208,-1824,-10208,3872,-10208,6208,-7016, + 8544,-3824,8544,4416,8544,63456,32304,66128,32304,59632,24816,59632,20608,59632,18976,57928,17344,56224,17344,51808, + 17344,47600,30224,47600,30224,41520,17344,41520,17344,-2896,17344,-10832,13648,-14472,9952,-18112,1920,-18112,-5488,-18112, + -5488,-11600,2000,-11600,6208,-11600,7840,-9904,9472,-8208,9472,-3776,9472,41520,2000,41520,2000,47600,9472,47600, + 9472,50912,9472,58864,13176,62496,16880,66128,24912,66128,32304,66128,51808,9056,51808,26096,37776,26096,37776,33152, + 60304,33152,60304,5904,55328,2384,49336,576,43344,-1232,36544,-1232,21680,-1232,13280,7456,4880,16144,4880,31664, + 4880,47216,13280,55912,21680,64608,36544,64608,40416,64608,43880,64072,47344,63536,50240,62480,50240,70464,54512,75440, + 58784,80416,68432,80416,71696,80416,71696,73184,69024,73184,63328,73184,60992,70000,58656,66816,58656,58560,58656,49424, + 53888,53472,48536,55512,43184,57552,37280,57552,25632,57552,19784,51048,13936,44544,13936,31664,13936,18832,19784,12328, + 25632,5824,37280,5824,41824,5824,45392,6608,48960,7392,51808,9056,29872,-11008,32176,-11008,34048,-9648,35232,-8800, + 35232,-6000,35232,-3568,33920,-464,31744,4672,29872,8592,28000,4672,25840,-464,24528,-3568,24528,-6000,24528,-8800, + 25712,-9648,27584,-11008,29872,-11008,29872,26816,49984,63456,59408,63456,34688,17856,39104,9344,41952,1952,43904,-3104, + 43904,-5904,43904,-11808,40720,-14576,36464,-18272,29872,-18272,23296,-18272,19040,-14576,15856,-11808,15856,-5904,15856,-3104, + 17808,1952,20656,9344,25072,17856,336,63456,9776,63456,29872,26816,57632,6624,63968,6624,67536,10800,71232,15088, + 71232,21680,71232,31104,68080,35872,65456,39904,60304,41312,60304,47600,69824,46368,74464,40288,79184,34128,79184,22400, + 79184,11984,73064,5992,66944,0,57552,0,54576,0,46624,0,43288,4248,39952,8496,39952,17248,39952,28480, + 39952,35232,37320,38592,34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896,15760,0,7904,0, + 7904,66128,15760,66128,15760,40208,18576,44496,22376,46624,26176,48752,31152,48752,39360,48752,43568,43672,47776,38592, + 47776,28736,47776,17248,47776,11008,49392,8816,51008,6624,55456,6624,57632,6624,8544,63456,17120,63456,17120,21840, + 17120,13600,19464,10416,21808,7232,27504,7232,30176,7232,30176,0,26896,0,17248,0,12896,5184,8544,10368, + 8544,21840,8544,63456,8544,63456,17120,63456,17120,31744,25248,31744,25248,24528,17120,24528,17120,0,8544,0, + 8544,24528,432,24528,432,31744,8544,31744,8544,63456,64896,46576,57680,46576,57680,51728,57680,54016,56128,55720, + 54576,57424,52960,57424,49984,57424,48400,55936,25168,33872,58912,0,47600,0,17120,30560,17120,0,8544,0, + 8544,63456,17120,63456,17120,36640,43472,61248,47088,64608,51888,64608,57680,64608,61280,60688,64896,56816,64896,52144, + 64896,46576,7856,48880,7856,57968,11320,62048,14784,66128,22480,66128,30608,66128,30608,59504,23456,59504,18992,59504, + 17376,57440,15760,55376,15760,48880,15760,27072,39104,47600,49088,47600,23840,25328,50144,0,39952,0,15760,23248, + 15760,0,7904,0,7856,48880,8208,66128,16016,66128,16016,35872,23552,35872,23552,29744,16016,29744,16016,0, + 8208,0,8208,29744,432,29744,432,35872,8208,35872,8208,66128,2592,0,23456,45648,20448,53632,7696,49344, + 6288,53552,18912,57760,15728,66128,24224,66128,26432,60272,39776,64688,41184,60560,27968,56144,48912,0,40624,0, + 27280,35184,10880,0,2592,0,39696,9056,36768,3776,32688,1272,28608,-1232,23072,-1232,15648,-1232,11600,4000, + 7568,9184,7568,18784,7568,63456,16192,63456,16192,19216,16192,11312,17856,9056,20272,5744,25248,5744,31328,5744, + 34856,9776,38384,13808,38384,20784,38384,63456,47008,63456,47008,19216,47008,12320,49424,9008,51856,5744,56912,5744, + 62128,5744,65664,9776,69184,13856,69184,20784,69184,63456,77824,63456,77824,-80,69184,-80,69184,7312,66512,2928, + 62776,848,59040,-1232,53888,-1232,48704,-1232,45056,1408,41440,4032,39696,9056,8544,63456,20096,63456,48240,10368, + 48240,63456,56560,63456,56560,0,45008,0,16880,53088,16880,4416,16880,-7056,12520,-12240,8160,-17424,-1488,-17424, + -4512,-17424,-4512,-10208,-1824,-10208,3872,-10208,6208,-7016,8544,-3824,8544,4416,8544,63456,47776,28736,47776,-18112, + 39952,-18112,39952,28480,39952,35232,37320,38592,34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896, + 15760,0,7904,0,7904,47600,15760,47600,15760,40208,18576,44496,22352,46624,26176,48752,31152,48752,39360,48752, + 43568,43696,47776,38592,47776,28736,4880,31664,4880,46704,12896,55656,20912,64608,34256,64608,47648,64608,55632,55656, + 63616,46704,63616,31712,63616,16656,55632,7712,47648,-1232,34256,-1232,20912,-1232,12896,7696,4880,16624,4880,31664, + 34336,57632,25760,57632,20320,51600,14880,45568,14368,37280,54320,37280,53728,45568,48328,51600,42928,57632,34336,57632, + 13936,30176,14288,19248,19616,12496,24944,5744,34304,5744,43648,5744,48920,12480,54192,19216,54528,30176,13936,30176, + 34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744,34304,5744,43648,5744, + 49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,34304,64608,47648,64608,55632,55656, + 63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232,12896,7696,4880,16624,4880,31664, + 4880,46704,12896,55656,20912,64608,34304,64608,49872,55088,49872,60144,52480,58240,54344,57320,56208,56400,57536,56400, + 59488,56400,60464,57576,61440,58752,61440,61040,61440,62400,61120,63720,60800,65040,60160,66352,65824,66352,66240,64736, + 66456,63288,66672,61840,66672,60576,66672,55392,64824,52944,62976,50496,59024,50496,56976,50496,54744,51624,52512,52752, + 49872,55088,35536,41776,35536,46832,38144,44928,40008,44008,41872,43088,43200,43088,45152,43088,46128,44264,47104,45440, + 47104,47728,47104,49088,46784,50408,46464,51728,45824,53040,51488,53040,51904,51424,52120,49976,52336,48528,52336,47264, + 52336,42080,50488,39632,48640,37184,44688,37184,42640,37184,40408,38312,38176,39440,35536,41776,26640,42112,20352,42112, + 16696,37208,13040,32304,13040,23760,13040,15216,16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264, + 40208,23760,40208,32208,36552,37160,32896,42112,26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760, + 48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120, + 16400,48752,26640,48752,65488,0,65488,41600,65488,49856,63152,53040,60816,56224,55632,56224,55632,7728,47648,-1232, + 34256,-1232,20912,-1232,12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,39056,64608, + 43184,63456,55712,63456,65360,63456,69720,58272,74080,53088,74080,41600,74080,0,65488,0,34304,57632,24944,57632, + 19440,50664,13936,43696,13936,31712,13936,19680,19440,12712,24944,5744,34304,5744,41728,5744,47168,10112,47168,54656, + 41312,57632,34304,57632,50368,-18112,50368,30352,50368,36848,48752,38928,47136,40976,42672,40976,42672,5440,36848,-1232, + 26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,30896,48752, + 34384,47600,43568,47600,51248,47600,54736,43520,58176,39440,58176,30352,58176,-18112,50368,-18112,26640,42112,20352,42112, + 16696,37208,13040,32304,13040,23760,13040,15216,16680,10304,20320,5392,26640,5392,32128,5392,34848,7856,34848,39824, + 31280,42112,26640,42112,21376,56400,21376,32560,32176,32560,38160,32560,41432,35664,44704,38768,44704,44496,44704,50192, + 41432,53296,38160,56400,32176,56400,21376,56400,12800,63456,32176,63456,42848,63456,48304,58632,53760,53808,53760,44496, + 53760,35104,48304,30304,42848,25504,32176,25504,21376,25504,21376,0,12800,0,12800,56448,7184,56448,4672,54424, + 2160,52400,2160,47936,2160,45856,-4464,45856,-4464,48832,-4464,56528,-384,59992,3696,63456,12800,63456,15760,7136, + 15760,-18112,7856,-18112,7856,48880,7856,57968,11320,62048,14784,66128,22480,66128,33280,66128,33280,59504,23456,59504, + 18992,59504,17376,57440,15760,55376,15760,48880,15760,40368,18240,44624,22000,46688,25760,48752,30976,48752,39648,48752, + 45072,41864,50496,34976,50496,23760,50496,12544,45072,5656,39648,-1232,30976,-1232,25760,-1232,22000,832,18240,2896, + 15760,7136,42368,23760,42368,32384,38824,37296,35280,42208,29072,42208,22864,42208,19312,37296,15760,32384,15760,23760, + 15760,15136,19312,10224,22864,5312,29072,5312,35280,5312,38824,10224,42368,15136,42368,23760,38640,18528,41392,17600, + 44008,14536,46624,11472,49264,6128,57968,-11216,48752,-11216,40624,5056,37488,11440,34536,13520,31584,15600,26480,15600, + 17120,15600,17120,0,8544,0,8544,63456,17120,63456,17120,52240,27920,52240,38800,52240,44160,47688,49520,43136, + 49520,33952,49520,27968,46736,24016,43952,20064,38640,18528,17120,45184,17120,21424,27920,21424,33920,21424,37192,24528, + 40464,27632,40464,33320,40464,39008,37208,42096,33952,45184,27920,45184,17120,45184,8672,61376,18368,64608,28008,64608, + 37648,64608,43584,59760,49520,54912,49520,47072,49520,39232,45224,35152,40928,31072,31328,29152,26096,28128,19552,26816, + 16680,24184,13808,21552,13808,16536,13808,11520,17808,8632,21808,5744,29152,5744,38720,5744,49264,11648,49264,2800, + 38256,-1232,29152,-1232,17216,-1232,11008,3520,4848,8288,4848,17504,4848,25248,9416,29856,13984,34464,23584,36288, + 28768,37360,35824,38672,38384,40800,40880,42960,40880,47576,40880,52192,37104,54912,33280,57632,25824,57632,18368,57632, + 8672,52992,8672,61376,6800,46192,10032,47472,13856,48112,17680,48752,22016,48752,30768,48752,35528,45096,40288,41440, + 40288,34720,40288,29200,37056,26032,33824,22864,26560,21328,23840,20704,16576,19120,14432,17424,12288,15728,12288,12544, + 12288,9088,15264,7200,18240,5312,23760,5312,27888,5312,32088,6440,36288,7568,40624,9824,40624,1744,36048,256, + 31904,-488,27760,-1232,23920,-1232,14752,-1232,9504,2632,4256,6496,4256,13136,4256,18960,7760,22208,11264,25456, + 19600,27248,22272,27840,28560,29248,30640,30792,32720,32336,32720,35056,32720,38640,29808,40424,26896,42208,21088,42208, + 17248,42208,13680,41352,10112,40496,6800,38800,6800,46192,18400,7232,49424,7232,49424,0,8544,0,8544,7232, + 28896,33744,8544,56224,8544,63456,48656,63456,48656,56224,18400,56224,38768,33920,18400,7232,15936,48032,15936,-3776, + 15936,-8208,17576,-9904,19216,-11600,23424,-11600,30896,-11600,30896,-18112,23504,-18112,15472,-18112,11776,-14472,8080,-10832, + 8080,-2896,8080,48032,0,48032,-11472,48032,-11472,56944,-11472,66128,1408,66128,9088,66128,12576,62048,14832,59328, + 15600,54608,23712,54608,23712,48032,15936,48032,7648,54576,7312,56448,6592,57456,5184,59504,512,59504,-4768,59504, + -4880,56736,-5008,54576,48,54576,7648,54576,15936,61120,15936,47600,32048,47600,32048,41520,15936,41520,15936,15680, + 15936,9856,17528,8200,19120,6544,24016,6544,32048,6544,32048,-848,32048,-9952,28560,-14032,25072,-18112,17424,-18112, + 14448,-18112,14448,-11472,16496,-11472,20992,-11472,22608,-9440,24224,-7360,24224,-848,24224,0,15168,0,11624,3376, + 8080,6752,8080,15680,8080,41520,2336,41520,2336,47600,8080,47600,8080,61120,15936,61120,18272,63456,53424,63456, + 53424,56224,30896,56224,30896,0,22272,0,22272,56224,18272,56224,12672,56224,10160,54312,7648,52400,7648,47936, + 7648,45856,1024,45856,1024,48832,1024,56528,5104,59992,9184,63456,18272,63456,15936,51808,15936,47600,32048,47600, + 32048,41520,15936,41520,15936,15680,15936,9856,17528,8200,19120,6544,24016,6544,32048,6544,32048,0,24016,0, + 14960,0,11520,3376,8080,6752,8080,15680,8080,41520,2336,41520,2336,47600,8080,47600,8080,50912,8080,58864, + 11776,62496,15472,66128,23504,66128,30896,66128,30896,59632,23424,59632,19216,59632,17576,57912,15936,56192,15936,51808, + -256,63456,53424,63456,53424,56224,30896,56224,30896,4416,30896,-3824,33232,-7016,35568,-10208,41264,-10208,43952,-10208, + 43952,-17424,40624,-17424,30976,-17424,26624,-12240,22272,-7056,22272,4416,22272,56224,-256,56224,-256,63456,7568,64480, + 16192,64480,16192,25936,16192,15728,19888,11248,23584,6768,31872,6768,40128,6768,43824,11248,47520,15728,47520,25936, + 47520,64480,56144,64480,56144,24864,56144,12464,50000,6128,43856,-208,31872,-208,19840,-208,13704,6128,7568,12464, + 7568,24864,7568,64480,52944,55088,52944,60144,55552,58240,57416,57320,59280,56400,60608,56400,62560,56400,63536,57576, + 64512,58752,64512,61040,64512,62400,64192,63720,63872,65040,63232,66352,68896,66352,69312,64736,69528,63288,69744,61840, + 69744,60576,69744,55392,67896,52944,66048,50496,62096,50496,60048,50496,57816,51624,55584,52752,52944,55088,41680,41776, + 41680,46832,44288,44928,46152,44008,48016,43088,49344,43088,51296,43088,52272,44264,53248,45440,53248,47728,53248,49088, + 52928,50408,52608,51728,51968,53040,57632,53040,58048,51424,58264,49976,58480,48528,58480,47264,58480,42080,56632,39632, + 54784,37184,50832,37184,48784,37184,46552,38312,44320,39440,41680,41776,7392,18784,7392,47600,15216,47600,15216,19088, + 15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600, + 47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960, + 7392,18784,27072,48752,27072,48752,63200,55424,49600,55424,56448,49424,59464,43136,62480,36848,62480,28608,62480,15472, + 54296,7120,46112,-1232,33232,-1232,20272,-1232,12136,7144,4000,15520,4000,29024,4000,36848,7080,43184,10160,49520, + 16880,55424,3312,55424,3312,62992,28816,62992,28816,55424,21248,51296,17024,44240,12800,37184,12800,28608,12800,18448, + 18424,12264,24048,6080,33232,6080,42416,6080,48024,12240,53632,18400,53632,28608,53632,37184,49424,44240,45216,51296, + 37696,55424,37696,62992,63200,62992,63200,55424,30176,6000,39360,6000,44968,12160,50576,18320,50576,28512,50576,37104, + 46368,44160,43600,48784,38928,52480,38928,55376,46544,55328,53376,49344,56392,43056,59408,36768,59408,28512,59408,15392, + 51248,7008,43136,-1312,30176,-1312,26896,-1232,17040,-976,12928,3952,8544,9136,8544,20608,8544,63456,17120,63456, + 17120,20608,17120,12368,19464,9184,21808,6000,27504,6000,30176,6000,52656,57424,50240,57424,49344,56816,47776,55808, + 47040,54736,30896,30224,30896,0,22272,0,22272,30224,-176,63456,9056,63456,26640,37360,40848,58816,44672,64608, + 51600,64608,57376,64608,60992,60688,64608,56816,64608,52144,64608,46576,57376,46576,57376,51728,57376,54016,55824,55720, + 54272,57424,52656,57424,28000,-4416,24688,-12928,21544,-15520,18400,-18112,13136,-18112,6880,-18112,6880,-11568,11472,-11568, + 14704,-11568,16488,-10032,18272,-8496,20448,-2800,21840,768,2592,47600,10880,47600,25760,10368,37744,40288,38640,42496, + 40672,44672,44416,48752,50144,48752,55712,48752,59648,44688,63584,40624,63584,34928,63584,30096,56016,30096,56016,34928, + 56016,37408,54296,39192,52576,40976,50144,40976,47728,40976,45984,39184,45136,38336,44704,37280,28000,-4416,4880,63456, + 54736,63456,54736,56912,37744,35872,49680,35872,49680,29744,32816,29744,14624,7232,55712,7232,55712,0,3904,0, + 3904,6544,22656,29744,9952,29744,9952,35872,27584,35872,44032,56224,4880,56224,4880,63456,4800,47600,41952,47600, + 41952,40464,31280,28048,39520,28048,39520,21936,26016,21936,12544,6240,41952,6240,41952,0,3744,0,3744,7136, + 16448,21936,7440,21936,7440,28048,21712,28048,33152,41360,4800,41360,4800,47600,28896,4544,37056,4544,41264,7728, + 45520,10928,45520,17008,45520,22688,41600,25792,37648,28944,30640,28944,23248,28944,23248,35408,39616,56224,6800,56224, + 6800,63456,50320,63456,50320,56912,32848,36080,37360,36080,42800,33696,46960,31920,50624,27280,54064,22864,54064,17008, + 54064,7648,47600,2464,41136,-2672,29248,-2672,24176,-2672,18864,-1872,13520,-1104,7824,464,7824,8752,12320,6672, + 17728,5616,23072,4544,28896,4544,29072,4544,34896,4544,40240,5616,45648,6672,50144,8752,50144,464,44448,-1104, + 39104,-1872,33792,-2672,28736,-2672,16832,-2672,10368,2464,3904,7648,3904,17008,3904,22864,7360,27280,11008,31920, + 15168,33696,20608,36080,25120,36080,7648,56912,7648,63456,51168,63456,51168,56224,18368,56224,34720,35408,34720,28944, + 27328,28944,20320,28944,16368,25792,12448,22688,12448,17008,12448,10928,16704,7728,20912,4544,29072,4544,25632,20224, + 8160,40464,8160,47600,45312,47600,45312,41360,16960,41360,35232,20144,35232,13088,27840,13088,20832,13088,16880,9952, + 12960,6752,12960,1152,12960,-4928,17216,-8112,21424,-11312,29488,-11312,34128,-11312,38376,-10248,42624,-9184,46192,-7104, + 46192,-15392,41696,-16960,37440,-17760,33232,-18528,29248,-18528,17344,-18528,10880,-13384,4416,-8240,4416,1152,4416,7008, + 7856,11440,11520,16064,15680,17856,21120,20224,25632,20224,27152,-11648,30720,-11648,34000,-10752,37360,-9856,40800,-7984, + 40800,-15600,37104,-16960,33696,-17504,30048,-18112,25920,-18112,5520,-18112,5520,-6160,5520,3952,22784,6208,34848,7776, + 34848,11936,34848,17216,24864,17216,24864,17216,12544,17216,33152,41360,4800,41360,4800,47600,41952,47600,41952,40464, + 26896,22944,42496,22944,42496,13216,42496,1488,22784,-592,13168,-1616,13168,-5744,13168,-11648,27152,-11648,16704,7232, + 46672,7232,46672,0,6368,0,6368,7232,19728,20832,24608,25792,9952,25792,9952,31920,30432,31920,34464,36544, + 36048,39616,37696,42848,37696,45936,37696,51008,34176,54192,30608,57376,24912,57376,20864,57376,16400,55968,11904,54576, + 6800,51728,6800,60400,11984,62480,16488,63544,20992,64608,24736,64608,34592,64608,40456,59672,46320,54736,46320,46496, + 46320,42592,44880,39104,43568,36000,40416,31920,44832,31920,44832,25792,34800,25792,32768,23712,16704,7232,12496,17008, + 12496,4544,29032,4544,45568,4544,45568,17008,45568,22688,41632,25816,37696,28944,30688,28944,8544,28944,8544,63456, + 48032,63456,48032,56224,17120,56224,17120,36048,32896,36080,43776,36128,50656,27280,54096,22864,54096,16744,54096,10624, + 51600,6976,50400,5232,49552,4000,47648,2464,41184,-2672,29032,-2672,16880,-2672,10416,2464,3952,7600,3952,17008, + 12496,17008,4416,-7104,11648,-11312,20400,-11312,37648,-11312,37648,1152,37648,6848,33720,9968,29792,13088,22784,13088, + 7776,13088,7776,47600,41488,47600,41488,40368,15600,40368,15600,20224,24992,20224,29456,20224,34296,18120,39136,16016, + 42664,11512,46192,7008,46192,888,46192,-5232,43696,-8880,42496,-10624,41648,-11856,39744,-13392,33280,-18528,21376,-18528, + 13424,-18528,4416,-15392,4416,-7104,23168,42416,23072,37104,30304,35824,35056,30768,39648,25888,39648,18656,39648,10752, + 34976,5440,29152,-1232,17472,-1232,13856,-1232,10416,-464,6976,256,3744,1744,3744,9056,6848,7360,10416,6336, + 13728,5392,17120,5392,24736,5392,28944,10240,31360,13008,31408,18656,31408,22816,28944,26048,25280,30896,17120,30896, + 14496,30896,14576,42416,4848,42416,4848,49392,14576,49392,14576,61120,23168,61120,23168,49392,32976,49392,32976,42416, + 23168,42416,15760,-5184,15760,-18112,7904,-18112,7904,47600,15760,47600,15760,40368,17984,43184,23712,46672,27152,48752, + 36080,48752,43904,48752,47168,43984,50496,39184,50496,32688,50496,14624,15760,-5184,15760,2544,42368,19552,42368,30128, + 42368,35792,39952,38592,37568,41360,32464,41360,23120,41360,15760,31200,15760,2544,8544,63456,17120,63456,17120,-18112, + 8544,-18112,8544,63456,25952,63456,34528,63456,34528,-18112,25952,-18112,25952,63456,8544,63456,17120,63456,17120,-18112, + 8544,-18112,8544,63456,15760,63456,24352,63456,24352,37232,39264,37232,39264,30096,24352,30096,24352,19888,39264,19888, + 39264,12672,24352,12672,24352,-18112,15760,-18112,15760,12672,848,12672,848,19888,15760,19888,15760,30096,848,30096, + 848,37232,15760,37232,15760,63456,9040,10800,17664,10800,17664,0,9040,0,9040,10800,9040,63456,17664,63456, + 17664,35616,16816,20448,9936,20448,9040,35616,9040,63456,66320,63456,116176,63456,116176,56912,76064,7232,117152,7232, + 117152,0,65344,0,65344,6544,105472,56224,66320,56224,66320,63456,86880,68992,77920,80304,83824,80304,90880,72736, + 97936,80304,103840,80304,94880,68992,86880,68992,17120,56400,17120,7056,27504,7056,40624,7056,46728,13008,52832,18960, + 52832,31792,52832,44544,46728,50472,40624,56400,27504,56400,17120,56400,8544,63456,26176,63456,44624,63456,53256,55784, + 61888,48112,61888,31792,61888,15392,53216,7696,44544,0,26176,0,8544,0,8544,63456,68288,47600,105440,47600, + 105440,40464,76032,6240,105440,6240,105440,0,67232,0,67232,7136,96640,41360,68288,41360,68288,47600,83120,53632, + 72720,69616,78624,69616,86272,59200,93920,69616,99824,69616,89424,53632,83120,53632,17120,56400,17120,7056,27504,7056, + 40624,7056,46728,13008,52832,18960,52832,31792,52832,44544,46728,50472,40624,56400,27504,56400,17120,56400,8544,63456, + 26176,63456,44624,63456,53256,55784,61888,48112,61888,31792,61888,15392,53216,7696,44544,0,26176,0,8544,0, + 8544,63456,56000,47600,93152,47600,93152,40464,63744,6240,93152,6240,93152,0,54944,0,54944,7136,84352,41360, + 56000,41360,56000,47600,70832,53632,60432,69616,66336,69616,73984,59200,81632,69616,87536,69616,77136,53632,70832,53632, + 39520,40368,39520,66128,47344,66128,47344,0,39520,0,39520,7136,37056,2896,33296,832,29536,-1232,24272,-1232, + 15648,-1232,10224,5656,4800,12544,4800,23760,4800,34976,10224,41864,15648,48752,24272,48752,29536,48752,33296,46688, + 37056,44624,39520,40368,12880,23760,12880,15136,16424,10224,19968,5312,26176,5312,32384,5312,35952,10224,39520,15136, + 39520,23760,39520,32384,35952,37296,32384,42208,26176,42208,19968,42208,16424,37296,12880,32384,12880,23760,58720,63456, + 67296,63456,67296,4416,67296,-7056,62944,-12240,58592,-17424,48944,-17424,45664,-17424,45664,-10208,48352,-10208,54048,-10208, + 56384,-7016,58720,-3824,58720,4416,58720,63456,8544,63456,17120,63456,17120,7232,48032,7232,48032,0,8544,0, + 8544,63456,56336,47600,64144,47600,64144,-848,64144,-9952,60680,-14032,57216,-18112,49536,-18112,46560,-18112,46560,-11472, + 48640,-11472,53104,-11472,54720,-9416,56336,-7360,56336,-848,56336,47600,56336,66128,64144,66128,64144,56224,56336,56224, + 56336,66128,8544,63456,17120,63456,17120,7232,48032,7232,48032,0,8544,0,8544,63456,24592,47600,32400,47600, + 32400,-848,32400,-9952,28936,-14032,25472,-18112,17792,-18112,14816,-18112,14816,-11472,16896,-11472,21360,-11472,22976,-9416, + 24592,-7360,24592,-848,24592,47600,24592,66128,32400,66128,32400,56224,24592,56224,24592,66128,8208,66128,16016,66128, + 16016,0,8208,0,8208,66128,66912,63456,75488,63456,75488,4416,75488,-7056,71136,-12240,66784,-17424,57136,-17424, + 53856,-17424,53856,-10208,56544,-10208,62240,-10208,64576,-7016,66912,-3824,66912,4416,66912,63456,8544,63456,20096,63456, + 48240,10368,48240,63456,56560,63456,56560,0,45008,0,16880,53088,16880,0,8544,0,8544,63456,65552,47600, + 73360,47600,73360,-848,73360,-9952,69896,-14032,66432,-18112,58752,-18112,55776,-18112,55776,-11472,57856,-11472,62320,-11472, + 63936,-9416,65552,-7360,65552,-848,65552,47600,65552,66128,73360,66128,73360,56224,65552,56224,65552,66128,8544,63456, + 20096,63456,48240,10368,48240,63456,56560,63456,56560,0,45008,0,16880,53088,16880,0,8544,0,8544,63456, + 56336,47600,64144,47600,64144,-848,64144,-9952,60680,-14032,57216,-18112,49536,-18112,46560,-18112,46560,-11472,48640,-11472, + 53104,-11472,54720,-9416,56336,-7360,56336,-848,56336,47600,56336,66128,64144,66128,64144,56224,56336,56224,56336,66128, + 47776,28736,47776,0,39952,0,39952,28480,39952,35232,37320,38592,34688,41952,29408,41952,23072,41952,19416,37912, + 15760,33872,15760,26896,15760,0,7904,0,7904,47600,15760,47600,15760,40208,18576,44496,22376,46624,26176,48752, + 31152,48752,39360,48752,43568,43672,47776,38592,47776,28736,29744,54992,18112,23424,41440,23424,29744,54992,24912,63456, + 34640,63456,58816,0,49888,0,44112,16272,15520,16272,9728,0,688,0,24912,63456,25440,68992,16480,80304, + 22384,80304,29440,72736,36496,80304,42400,80304,33440,68992,25440,68992,29840,23920,20352,23920,16696,21760,13040,19600, + 13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920, + 29840,23920,45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232, + 9544,2872,5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208, + 34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920, + 21088,48752,24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,22704,53632,12304,69616,18208,69616,25856,59200, + 33504,69616,39408,69616,29008,53632,22704,53632,8544,63456,17120,63456,17120,0,8544,0,8544,63456,9056,68992, + 96,80304,6000,80304,13056,72736,20112,80304,26016,80304,17056,68992,9056,68992,8208,47600,16016,47600,16016,0, + 8208,0,8208,47600,12112,48752,12112,48752,9392,53632,-1008,69616,4896,69616,12544,59200,20192,69616,26096,69616, + 15696,53632,9392,53632,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744, + 34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,34304,64608, + 47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232,12896,7696, + 4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,30560,68992,21600,80304,27504,80304,34560,72736, + 41616,80304,47520,80304,38560,68992,30560,68992,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216, + 16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112, + 26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232, + 16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,23728,53632,13328,69616, + 19232,69616,26880,59200,34528,69616,40432,69616,30032,53632,23728,53632,7568,63456,16192,63456,16192,24912,16192,14704, + 19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840, + 56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,28512,68992, + 19552,80304,25456,80304,32512,72736,39568,80304,45472,80304,36512,68992,28512,68992,7392,18784,7392,47600,15216,47600, + 15216,19088,15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600, + 47264,47600,47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864, + 7392,8960,7392,18784,27072,48752,27072,48752,23728,53632,13328,69616,19232,69616,26880,59200,34528,69616,40432,69616, + 30032,53632,23728,53632,19296,89424,44704,89424,44704,83136,19296,83136,19296,89424,35488,77952,44112,77952,44112,69328, + 35488,69328,35488,77952,18864,77952,27488,77952,27488,69328,18864,69328,18864,77952,7568,63456,16192,63456,16192,24912, + 16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912,47520,63456,56144,63456, + 56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456, + 14176,78160,39584,78160,39584,71872,14176,71872,14176,78160,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320, + 17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0, + 39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784, + 27072,48752,27072,48752,30880,65968,39504,65968,39504,57376,30880,57376,30880,65968,14256,65968,22880,65968,22880,57376, + 14256,57376,14256,65968,7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744, + 43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232, + 19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,35872,90448,43728,90448,34048,79232,27536,79232,35872,90448, + 35488,77952,44112,77952,44112,69328,35488,69328,35488,77952,18864,77952,27488,77952,27488,69328,18864,69328,18864,77952, + 7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608, + 39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232, + 24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752,30752,77136,38608,77136,28928,65920, + 22416,65920,30752,77136,30368,64640,38992,64640,38992,56016,30368,56016,30368,64640,13744,64640,22368,64640,22368,56016, + 13744,56016,13744,64640,7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744, + 43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232, + 19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,27488,79232,18528,90544,24432,90544,31488,82976,38544,90544, + 44448,90544,35488,79232,27488,79232,35488,77952,44112,77952,44112,69328,35488,69328,35488,77952,18864,77952,27488,77952, + 27488,69328,18864,69328,18864,77952,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568, + 25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312, + 36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752, + 23392,65920,14432,77232,20336,77232,27392,69664,34448,77232,40352,77232,31392,65920,23392,65920,31392,64640,40016,64640, + 40016,56016,31392,56016,31392,64640,14768,64640,23392,64640,23392,56016,14768,56016,14768,64640,7568,63456,16192,63456, + 16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912,47520,63456, + 56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440,7568,23840, + 7568,63456,27024,90448,35344,79232,28848,79232,19072,90448,27024,90448,35488,77952,44112,77952,44112,69328,35488,69328, + 35488,77952,18864,77952,27488,77952,27488,69328,18864,69328,18864,77952,7392,18784,7392,47600,15216,47600,15216,19088, + 15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600, + 47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960, + 7392,18784,27072,48752,27072,48752,21904,77136,30224,65920,23728,65920,13952,77136,21904,77136,30368,64640,38992,64640, + 38992,56016,30368,56016,30368,64640,13744,64640,22368,64640,22368,56016,13744,56016,13744,64640,4800,21760,4800,25584, + 40752,25584,40240,33664,35888,37888,31536,42112,23760,42112,19248,42112,15024,41008,10800,39904,6624,37696,6624,45088, + 10832,46880,15256,47816,19680,48752,24224,48752,35616,48752,42264,42120,48912,35488,48912,24176,48912,12496,42600,5632, + 36288,-1232,25584,-1232,15984,-1232,10392,4952,4800,11136,4800,21760,12624,19472,12704,13040,16216,9216,19728,5392, + 25504,5392,32048,5392,35976,9096,39904,12800,40496,19504,12624,19472,29744,54992,18112,23424,41440,23424,29744,54992, + 24912,63456,34640,63456,58816,0,49888,0,44112,16272,15520,16272,9728,0,688,0,24912,63456,17248,89424, + 42656,89424,42656,83136,17248,83136,17248,89424,33440,77952,42064,77952,42064,69328,33440,69328,33440,77952,16816,77952, + 25440,77952,25440,69328,16816,69328,16816,77952,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208, + 15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,45440,27152, + 45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976, + 5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112, + 24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752, + 35232,48752,40336,43392,45440,38032,45440,27152,28832,65968,37456,65968,37456,57376,28832,57376,28832,65968,12208,65968, + 20832,65968,20832,57376,12208,57376,12208,65968,12128,78160,37536,78160,37536,71872,12128,71872,12128,78160,29744,54992, + 18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0,44112,16272,15520,16272,9728,0, + 688,0,24912,63456,25104,78048,33776,78048,33776,69328,25104,69328,25104,78048,17248,89424,42656,89424,42656,83136, + 17248,83136,17248,89424,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760,18528,5312, + 23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,45440,27152,45440,0,37616,0, + 37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856,5232,21888, + 10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112,20016,42112, + 16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,35232,48752,40336,43392, + 45440,38032,45440,27152,19984,64736,28656,64736,28656,56016,19984,56016,19984,64736,12128,76112,37536,76112,37536,69824, + 12128,69824,12128,76112,39776,78160,65184,78160,65184,71872,39776,71872,39776,78160,78416,63456,78416,56224,46928,56224, + 46928,37440,77136,37440,77136,30224,46928,30224,46928,7232,79216,7232,79216,0,38288,0,38288,16272,15856,16272, + 9056,0,336,0,26896,63456,78416,63456,32816,56736,18784,23424,38288,23424,38288,56736,32816,56736,29536,64848, + 54944,64848,54944,58560,29536,58560,29536,64848,73008,28048,72976,34464,69472,38288,65968,42112,60144,42112,53632,42112, + 49704,38416,45776,34720,45184,28000,73008,28048,42288,40928,45440,44752,49944,46752,54448,48752,60048,48752,69664,48752, + 75272,42568,80880,36384,80880,25760,80880,21936,44928,21936,45440,13808,49768,9560,54096,5312,61888,5312,66304,5312, + 70552,6440,74800,7568,79056,9824,79056,2416,74800,640,70384,-296,65968,-1232,61456,-1232,54352,-1232,49088,1336, + 43824,3904,40544,8960,37440,3872,32848,1320,28256,-1232,22192,-1232,14160,-1232,9696,2744,5232,6720,5232,13856, + 5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112, + 20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,30944,48752, + 35472,46712,40000,44672,42288,40928,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760, + 18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,60304,33152,60304,20480, + 65456,20480,65456,16752,60304,16752,60304,5904,55328,2384,49336,576,43344,-1232,36544,-1232,21680,-1232,13280,7456, + 4880,16144,4880,31664,4880,47216,13280,55912,21680,64608,36544,64608,42752,64608,48344,63072,53936,61536,58656,58560, + 58656,49424,53888,53472,48536,55512,43184,57552,37280,57552,25632,57552,19784,51048,13936,44544,13936,31664,13936,18832, + 19784,12328,25632,5824,37280,5824,41824,5824,45392,6608,48960,7392,51808,9056,51808,16752,41056,16752,41056,20480, + 51808,20480,51808,26096,37776,26096,37776,33152,60304,33152,39520,24352,39520,32848,36016,37528,32512,42208,26176,42208, + 19888,42208,16384,37528,12880,32848,12880,24352,12880,15888,16384,11216,19888,6544,26176,6544,32512,6544,36016,11216, + 39520,15888,39520,24352,47344,5904,47344,1232,46544,-2512,54144,-2512,54144,-5488,45728,-5488,44416,-9440,41952,-12160, + 36544,-18112,25408,-18112,21296,-18112,17640,-17496,13984,-16880,10544,-15600,10544,-7984,13984,-9856,17344,-10752,20704,-11648, + 24176,-11648,31872,-11648,35696,-7600,36592,-6624,37312,-5440,10288,-5440,10288,-2512,38592,-2512,39520,512,39520,4512, + 39520,8368,37104,4160,33320,2080,29536,0,24272,0,15520,0,10160,6672,4800,13344,4800,24352,4800,35408, + 10160,42080,15520,48752,24272,48752,29536,48752,33320,46664,37104,44576,39520,40368,39520,47600,47344,47600,47344,5904, + 51808,9056,51808,26096,37776,26096,37776,33152,60304,33152,60304,5904,55328,2384,49336,576,43344,-1232,36544,-1232, + 21680,-1232,13280,7456,4880,16144,4880,31664,4880,47216,13280,55912,21680,64608,36544,64608,42752,64608,48344,63072, + 53936,61536,58656,58560,58656,49424,53888,53472,48536,55512,43184,57552,37280,57552,25632,57552,19784,51048,13936,44544, + 13936,31664,13936,18832,19784,12328,25632,5824,37280,5824,41824,5824,45392,6608,48960,7392,51808,9056,31584,68992, + 22624,80304,28528,80304,35584,72736,42640,80304,48544,80304,39584,68992,31584,68992,21680,53632,11280,69616,17184,69616, + 24832,59200,32480,69616,38384,69616,27984,53632,21680,53632,39520,24352,39520,32848,36016,37528,32512,42208,26176,42208, + 19888,42208,16384,37528,12880,32848,12880,24352,12880,15888,16384,11216,19888,6544,26176,6544,32512,6544,36016,11216, + 39520,15888,39520,24352,47344,5904,47344,-6240,41944,-12176,36544,-18112,25408,-18112,21296,-18112,17640,-17496,13984,-16880, + 10544,-15600,10544,-7984,13984,-9856,17344,-10752,20704,-11648,24176,-11648,31872,-11648,35696,-7632,39520,-3616,39520,4512, + 39520,8368,37104,4160,33320,2080,29536,0,24272,0,15520,0,10160,6672,4800,13344,4800,24352,4800,35408, + 10160,42080,15520,48752,24272,48752,29536,48752,33320,46664,37104,44576,39520,40368,39520,47600,47344,47600,47344,5904, + 24416,68992,15456,80304,21360,80304,28416,72736,35472,80304,41376,80304,32416,68992,24416,68992,8544,63456,17120,63456, + 17120,36640,45600,63456,56656,63456,25168,33872,58912,0,47600,0,17120,30560,17120,0,8544,0,8544,63456, + 7904,66128,15760,66128,15760,27072,39104,47600,49088,47600,23840,25328,50144,0,39952,0,15760,23248,15760,0, + 7904,0,7904,66128,8032,68992,-928,80304,4976,80304,12032,72736,19088,80304,24992,80304,16032,68992,8032,68992, + 32016,0,37072,0,35152,-2592,34240,-4464,33328,-6336,33328,-7648,33328,-9600,34496,-10584,35664,-11568,37968,-11568, + 39328,-11568,40640,-11248,41952,-10928,43280,-10288,43280,-15936,41664,-16368,40216,-16576,38768,-16784,37488,-16784,32304,-16784, + 29864,-14936,27424,-13088,27424,-9136,27424,-7104,28552,-4872,29680,-2640,32016,0,34304,57632,24944,57632,19440,50664, + 13936,43696,13936,31664,13936,19680,19440,12712,24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664, + 54576,43696,49112,50664,43648,57632,34304,57632,34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656, + 55632,7712,47648,-1232,34304,-1232,20912,-1232,12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608, + 34304,64608,23824,0,28880,0,26960,-2592,26048,-4464,25136,-6336,25136,-7648,25136,-9600,26304,-10584,27472,-11568, + 29776,-11568,31136,-11568,32448,-11248,33760,-10928,35088,-10288,35088,-15936,33472,-16368,32024,-16576,30576,-16784,29296,-16784, + 24112,-16784,21672,-14936,19232,-13088,19232,-9136,19232,-7104,20360,-4872,21488,-2640,23824,0,26640,42112,20352,42112, + 16696,37208,13040,32304,13040,23760,13040,15216,16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264, + 40208,23760,40208,32208,36552,37160,32896,42112,26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760, + 48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120, + 16400,48752,26640,48752,21344,78160,46752,78160,46752,71872,21344,71872,21344,78160,32016,0,37072,0,35152,-2592, + 34240,-4464,33328,-6336,33328,-7648,33328,-9600,34496,-10584,35664,-11568,37968,-11568,39328,-11568,40640,-11248,41952,-10928, + 43280,-10288,43280,-15936,41664,-16368,40216,-16576,38768,-16784,37488,-16784,32304,-16784,29864,-14936,27424,-13088,27424,-9136, + 27424,-7104,28552,-4872,29680,-2640,32016,0,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680, + 19440,12712,24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632, + 34304,57632,34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232, + 20912,-1232,12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,14176,64848,39584,64848, + 39584,58560,14176,58560,14176,64848,23824,0,28880,0,26960,-2592,26048,-4464,25136,-6336,25136,-7648,25136,-9600, + 26304,-10584,27472,-11568,29776,-11568,31136,-11568,32448,-11248,33760,-10928,35088,-10288,35088,-15936,33472,-16368,32024,-16576, + 30576,-16784,29296,-16784,24112,-16784,21672,-14936,19232,-13088,19232,-9136,19232,-7104,20360,-4872,21488,-2640,23824,0, + 26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216,16680,10304,20320,5392,26640,5392,32896,5392, + 36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112,26640,42112,26640,48752,36848,48752,42672,42120, + 48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760, + 4800,35488,10600,42120,16400,48752,26640,48752,25440,68992,16480,80304,22384,80304,29440,72736,36496,80304,42400,80304, + 33440,68992,25440,68992,28896,4544,37056,4544,41264,7728,45520,10928,45520,17008,45520,22688,41600,25792,37648,28944, + 30640,28944,23248,28944,23248,35408,39616,56224,6800,56224,6800,63456,50320,63456,50320,56912,32848,36080,37360,36080, + 42800,33696,46960,31920,50624,27280,54064,22864,54064,17008,54064,7648,47600,2464,41136,-2672,29248,-2672,24176,-2672, + 18864,-1872,13520,-1104,7824,464,7824,8752,12320,6672,17728,5616,23072,4544,28896,4544,19632,53632,9232,69616, + 15136,69616,22784,59200,30432,69616,36336,69616,25936,53632,19632,53632,24304,20224,28816,20224,34256,17856,38416,16064, + 42080,11440,45520,7008,45520,1152,45520,-8240,39056,-13384,32592,-18528,20704,-18528,16704,-18528,12496,-17760,8240,-16960, + 3744,-15392,3744,-7104,7312,-9184,11560,-10248,15808,-11312,20448,-11312,28512,-11312,32720,-8112,36976,-4928,36976,1152, + 36976,6752,33072,9952,29120,13088,22096,13088,14704,13088,14704,20144,32976,41360,4640,41360,4640,47600,41776,47600, + 41776,40464,24304,20224,9392,53632,-1008,69616,4896,69616,12544,59200,20192,69616,26096,69616,15696,53632,9392,53632, + 8208,47600,16016,47600,16016,-848,16016,-9952,12552,-14032,9088,-18112,1408,-18112,-1568,-18112,-1568,-11472,512,-11472, + 4976,-11472,6592,-9416,8208,-7360,8208,-848,8208,47600,66320,63456,116176,63456,116176,56912,76064,7232,117152,7232, + 117152,0,65344,0,65344,6544,105472,56224,66320,56224,66320,63456,17120,56400,17120,7056,27504,7056,40624,7056, + 46728,13008,52832,18960,52832,31792,52832,44544,46728,50472,40624,56400,27504,56400,17120,56400,8544,63456,26176,63456, + 44624,63456,53256,55784,61888,48112,61888,31792,61888,15392,53216,7696,44544,0,26176,0,8544,0,8544,63456, + 68288,47600,105440,47600,105440,40464,76032,6240,105440,6240,105440,0,67232,0,67232,7136,96640,41360,68288,41360, + 68288,47600,17120,56400,17120,7056,27504,7056,40624,7056,46728,13008,52832,18960,52832,31792,52832,44544,46728,50472, + 40624,56400,27504,56400,17120,56400,8544,63456,26176,63456,44624,63456,53256,55784,61888,48112,61888,31792,61888,15392, + 53216,7696,44544,0,26176,0,8544,0,8544,63456,56000,47600,93152,47600,93152,40464,63744,6240,93152,6240, + 93152,0,54944,0,54944,7136,84352,41360,56000,41360,56000,47600,39520,40368,39520,66128,47344,66128,47344,0, + 39520,0,39520,7136,37056,2896,33296,832,29536,-1232,24272,-1232,15648,-1232,10224,5656,4800,12544,4800,23760, + 4800,34976,10224,41864,15648,48752,24272,48752,29536,48752,33296,46688,37056,44624,39520,40368,12880,23760,12880,15136, + 16424,10224,19968,5312,26176,5312,32384,5312,35952,10224,39520,15136,39520,23760,39520,32384,35952,37296,32384,42208, + 26176,42208,19968,42208,16424,37296,12880,32384,12880,23760 ); + + DejaVuSans_glyphAdvances:array[0..467] of Integer = ( + 27664,34896,40032,72928,55376,82704,67872,23920,33952,33952,43520,72928,27664,31408,27664,29328,55376,55376,55376,55376, + 55376,55376,55376,55376,55376,55376,29328,29328,72928,72928,72928,46192,87040,59536,59712,60768,67024,54992,50064,67440, + 65456,25664,25664,57072,48496,75104,65104,68512,52480,68512,60480,55248,53168,63712,59536,86064,59632,53168,59632,33952, + 29328,33952,72928,43520,43520,53344,55248,47856,55248,53552,30640,55248,55168,24176,24176,50400,24176,84784,55168,53248, + 55248,55248,35792,45344,34128,55168,51504,71184,51504,51504,45680,55376,29328,55376,72928,52240,52240,52240,52240,52240, + 52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240, + 52240,52240,52240,52240,52240,52240,52240,52240,27664,34896,55376,55376,55376,55376,29328,43520,43520,87040,41008,53248, + 72928,31408,87040,43520,43520,72928,34896,34896,43520,55376,55376,27664,43520,34896,41008,53248,84368,84368,84368,46192, + 59536,59536,59536,59536,59536,59536,84784,60768,54992,54992,54992,54992,25664,25664,25664,25664,67440,65104,68512,68512, + 68512,68512,68512,72928,68512,63712,63712,63712,63712,53168,52656,54832,53344,53344,53344,53344,53344,53344,85472,47856, + 53552,53552,53552,53552,24176,24176,24176,24176,53248,55168,53248,53248,53248,53248,53248,72928,53248,55168,55168,55168, + 55168,51504,55248,51504,59536,53344,59536,53344,59536,53344,60768,47856,60768,47856,60768,47856,60768,47856,67024,55248, + 67440,55248,54992,53552,54992,53552,54992,53552,54992,53552,54992,53552,67440,55248,67440,55248,67440,55248,67440,55248, + 65456,55168,79728,60480,25664,24176,25664,24176,25664,24176,25664,24176,25664,24176,51344,48368,25664,24176,57072,50400, + 50400,48496,24176,48496,24176,48496,32640,48496,29744,48912,24736,65104,55168,65104,55168,65104,55168,70800,65104,55168, + 68512,53248,68512,53248,68512,53248,93120,89040,60480,35792,60480,35792,60480,35792,55248,45344,55248,45344,55248,45344, + 55248,45344,53168,34128,53168,34128,53168,34128,63712,55168,63712,55168,63712,55168,63712,55168,63712,55168,63712,55168, + 86064,71184,53168,51504,53168,59632,45680,59632,45680,59632,45680,30640,55248,63968,59712,55248,59712,55248,61200,60768, + 47856,67440,71280,59712,55248,53248,54992,68512,53472,50064,30640,67440,59760,85632,30768,25664,64896,50400,24176,51504, + 84784,65104,55168,68512,79472,53248,82576,66080,56736,55248,60480,55248,45344,54992,29248,34128,53168,34128,53168,74672, + 55168,66512,62736,64720,63584,59632,45680,57968,57968,50272,45680,55376,57968,50272,44416,55248,25664,42848,39952,25712, + 123760,113056,100464,72720,68464,39744,81040,80416,69408,59536,53344,25664,24176,68512,53248,63712,55168,63712,55168,63712, + 55168,63712,55168,63712,55168,53552,59536,53344,59536,53344,84784,85472,67440,55248,67440,55248,57072,50400,68512,53248, + 68512,53248,57968,50272,24176,123760,113056,100464 ); + + DejaVuSans_descender_height:Integer = -21936; + DejaVuSans_font_height:Integer = 90544; + DejaVuSans_glyphCount:Integer = 468; + DejaVuSans_characterMap:array[0..499] of Smallint = ( + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7, + 8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, + 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, + 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67, + 68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87, + 88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107, + 108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, + 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147, + 148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167, + 168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187, + 188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, + 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227, + 228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247, + 248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267, + 268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287, + 288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307, + 308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327, + 328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347, + 348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367, + 368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387, + 388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407, + 408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427, + 428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447, + 448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467 ); diff --git a/source/packages/ultibounits/src/vgfonts/DejaVuSansMono.inc b/source/packages/ultibounits/src/vgfonts/DejaVuSansMono.inc new file mode 100644 index 0000000..4c5fcae --- /dev/null +++ b/source/packages/ultibounits/src/vgfonts/DejaVuSansMono.inc @@ -0,0 +1,2246 @@ +{Generated by font2openvg. See http://developer.hybrid.fi for more information.} + +{converted from font file DejaVuSansMono.ttf} +{font family name: DejaVu Sans Mono} +{font style name: Book} + +var + DejaVuSansMono_glyphInstructions:array[0..11523] of Byte = ( + 2,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, + 4,0,2,4,10,10,10,10,0,2,4,10,10,10,10,0,2,4,4,10, + 10,4,10,10,4,10,10,10,10,4,4,4,10,10,4,10,10,4,10,10, + 10,10,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,10,10,0,2,4,10,10,10,4, + 4,4,10,10,4,4,4,10,10,10,10,10,10,10,10,10,10,10,10,4, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,4,0,2,4, + 4,4,4,0,2,10,10,10,10,4,10,10,10,10,4,0,2,4,10,10, + 10,10,4,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,10,10,10,10, + 10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,10,10, + 10,10,10,10,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,0,2,4,4,4,4,10,10,10,10,10,10,10,10,4,10,10,10, + 10,10,10,10,10,4,0,2,4,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,4,4,4,0,2,4,4,10,10,4,10,10,10,10,10,10, + 4,10,10,10,10,10,10,4,10,10,4,4,0,2,4,4,4,4,0,2, + 10,10,10,10,10,10,10,10,0,2,4,4,10,10,10,10,10,10,10,10, + 4,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,4,0, + 2,4,4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,10,10, + 10,10,4,0,2,4,4,10,10,10,10,4,0,2,4,10,10,10,10,10, + 10,10,10,4,4,0,2,10,10,10,10,10,10,10,10,4,10,10,10,10, + 10,10,10,10,4,0,2,10,10,10,10,4,4,4,0,2,10,10,10,10, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,4, + 10,10,10,10,10,10,10,10,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10, + 10,10,10,10,10,10,0,2,4,4,10,10,10,10,4,0,2,4,10,10, + 10,10,4,4,4,4,0,2,10,10,10,10,10,10,10,10,10,10,4,4, + 4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,4,4,4,10,10, + 4,4,4,4,4,10,10,10,10,0,2,4,4,10,10,10,10,4,0,2, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,0,2, + 4,4,4,10,10,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10, + 10,10,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,10,10,10,10,10,10,4, + 4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10,4,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10, + 4,10,10,10,10,10,10,10,10,4,0,2,4,4,4,4,4,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, + 0,2,4,4,10,10,4,4,4,4,4,4,4,4,4,4,4,10,10,4, + 0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,10,10,10, + 10,4,4,10,10,10,10,10,10,10,10,4,4,4,0,2,4,4,4,10, + 10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,10,10,4, + 4,4,10,10,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,4,4,4,0,2,10,10,4,4,4,10,10,4,4,4,4,4,0,2, + 10,10,10,10,4,4,4,10,10,10,10,4,4,4,10,10,10,10,4,4, + 4,4,4,10,10,10,10,0,2,4,4,4,10,10,10,10,4,4,4,4, + 4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,4,10,10,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,4,4,4,4,4,0,2,10,10,10, + 10,4,4,4,4,4,10,10,10,10,4,0,2,4,10,10,10,10,10,10, + 4,10,10,10,10,10,10,4,10,10,10,10,10,4,4,10,10,10,10,10, + 10,0,2,4,4,4,4,4,10,10,4,4,4,10,10,4,4,4,4,4, + 4,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0, + 2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10, + 10,10,10,4,4,4,10,10,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,10,10,4,10,10,4,4,4,10,10, + 4,10,10,4,4,4,10,10,4,10,10,10,10,4,10,10,4,0,2,4, + 4,4,4,0,2,4,10,10,4,10,10,10,10,4,10,10,4,4,4,10, + 10,4,10,10,4,4,4,10,10,4,10,10,4,4,0,2,4,10,10,10, + 10,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,4,4,0,2,4,10,10,4,10,10,4,10,10,4,4,4,10,10, + 10,10,4,4,4,10,10,0,2,4,10,10,10,10,0,2,4,10,10,10, + 10,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,10,10,10,10,4, + 4,4,10,10,10,10,4,4,4,10,10,10,10,4,4,4,10,10,10,10, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4,10, + 10,10,10,10,4,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10, + 4,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4, + 0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,0,2,4, + 4,4,4,0,2,10,10,10,10,10,10,4,4,4,10,10,4,4,4,4, + 4,0,2,4,4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,10,10,10, + 10,10,10,4,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,10,10,10, + 10,4,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,4,4,0, + 2,4,4,4,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,0, + 2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4,4, + 4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,0,2,4,4,4,0,2,10,10,10,10,10,10,4,10,10,10,10, + 10,10,4,4,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,4,4,10,10,4,10,10,10,10,10,10,4,10,10, + 10,10,10,10,4,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4, + 4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,0,2,4, + 10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,4,4,10,10,10, + 10,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,0,2,10,10,10,10,10,10,10,10,4,4,4,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4, + 0,2,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 10,10,10,10,4,4,4,4,4,4,4,0,2,10,10,10,10,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,10, + 10,10,10,4,4,10,10,10,10,4,10,10,10,10,4,4,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10, + 10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4, + 4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,4,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,4, + 4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,4, + 0,2,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,4,4,4, + 10,10,10,10,10,10,4,4,4,0,2,4,4,4,10,10,10,10,10,10, + 10,10,4,4,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0, + 2,4,4,4,10,10,10,10,10,10,10,10,4,4,4,10,10,10,10,10, + 10,10,10,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,10,10, + 10,10,4,4,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,10,10,10,10,10,10,10,10,4,4,4,10,10, + 10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,10, + 10,10,10,4,0,2,4,4,4,10,10,10,10,4,4,4,4,0,2,10, + 10,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,4,10,10,10,10,10,10,10,10,4,4,4,0,2,4,10,10,10,10, + 10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10,10, + 10,4,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,10,10,10, + 10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10, + 10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,10,10, + 10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4,10, + 10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0, + 2,4,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10, + 10,4,4,10,10,10,10,4,10,10,10,10,10,10,0,2,4,10,10,10, + 10,4,10,10,10,10,4,10,10,10,10,4,10,10,10,10,0,2,4,10, + 10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4, + 10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,10,10,10,10,10,10,4,4,0,2,4,4,4,10, + 10,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,10,10,10,10,10,10,0,2,4,10,10,10,10,4,4,0,2,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,10,10,4,4,10, + 10,10,10,4,10,10,10,10,10,10,10,10,4,0,2,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,4, + 10,10,10,10,10,10,10,10,4,0,2,4,4,4,10,10,10,10,4,10, + 10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4, + 0,2,4,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10, + 4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4, + 4,4,4,4,4,0,2,4,4,4,10,10,10,10,4,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,10,10,10,10,10,10,10,10,10,10,10,10,4,4,4, + 4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,10,10,0,2, + 4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,10, + 10,10,10,4,10,10,10,10,4,10,10,10,10,4,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,4,10,10,10,10,4,10,10,10,10,4,10,10,10,10,4,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,4,4,4, + 10,10,10,10,10,10,4,4,4,0,2,4,4,4,10,10,10,10,4,4, + 4,4,4,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,0,2,4, + 4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4, + 4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10, + 10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10, + 4,4,4,10,10,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,4,4,4,10,10,4,4,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2, + 4,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10, + 4,4,10,10,10,10,4,10,10,10,10,10,10,0,2,4,10,10,10,10, + 4,10,10,10,10,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4, + 0,2,4,10,10,10,10,4,10,10,10,10,0,2,4,10,10,10,10,10, + 10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10, + 4,10,10,10,10,10,10,0,2,4,10,10,10,10,10,10,4,10,10,10, + 10,10,10,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,0,2, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,10,10,10, + 10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10, + 10,10,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,4, + 10,10,10,10,10,10,10,10,4,0,2,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,4,10,10,10,10,10,10,10,10,4,0,2,4,4,4, + 4,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10, + 4,10,10,10,10,10,10,10,10,4,0,2,4,4,4,4,4,4,4,0, + 2,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,4,0, + 2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,4,10,10,10,10, + 10,10,10,10,4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,4,10,10,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,10, + 10,4,10,10,10,10,10,10,10,10,4,0,2,4,4,4,4,4,4,4, + 0,2,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,4, + 0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,4,4,4,0,2, + 10,10,10,10,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,4,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,0,2,10,10,10,10,4,4,4,4,4,4,4, + 0,2,10,10,10,10,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,4,10,10,10,10,10,10,10,10,0,2,10,10, + 10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10, + 10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4, + 10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4, + 10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, + 0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,4,0,2,4,10,10,10,10,10,10, + 4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4, + 4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4, + 4,4,4,4,4,0,2,4,4,4,10,10,10,10,4,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,4,10, + 10,10,10,10,10,10,10,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,10,10, + 10,10,4,4,10,10,10,10,10,10,10,10,4,4,4,0,2,4,10,10, + 10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,4,10,10, + 10,10,10,10,10,10,4,4,4,4,4,0,2,4,10,10,10,10,4,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, + 10,10,10,10,4,4,10,10,10,10,10,10,10,10,4,4,4,0,2,4, + 4,4,4,0,2,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10, + 10,10,4,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,4,10,10,10,10,4,4,10,10,10,10, + 10,10,10,10,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,4,10,10,10,10,10,10,10,10,4,4,4,4,4,0,2,4, + 4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, + 10,10,10,10,4,4,10,10,10,10,10,10,10,10,4,4,4,0,2,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 0,2,4,4,4,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4, + 4,4,4,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 10,10,10,10,4,4,4,4,4,4,4,4,4,4,4,4,4,10,10,10, + 10,0,2,4,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,4, + 4,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,10,10,10,10,4,10,10,10,10,4,10,10,10,10,4,10,10,10, + 10,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10,4,10, + 10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10, + 10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,4,10,10,10,10,10,10,4,10, + 10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4, + 10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,10,10,4,4,4,10, + 10,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,10,10,10, + 10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,10,10,4,4,4,10,10,0,2,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4, + 4,0,2,4,4,4,4,0,2,10,10,4,4,4,10,10,4,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,0,2,4,4,4, + 4,0,2,10,10,4,4,4,10,10,4,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,4,4,0,2,4,4,4,4,0,2,10,10,4, + 4,4,10,10,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,10,10,4,4,4,10,10,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,10,10,4,4,4,10,10,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10, + 10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4, + 4,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4,4, + 10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4,4,0, + 2,4,10,10,4,4,4,10,10,4,10,10,10,10,4,4,4,4,4,10, + 10,10,10,0,2,4,10,10,4,4,4,10,10,4,10,10,10,10,4,4, + 4,4,4,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,4,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,0,2,4,4,10,10,10,10,4,4,4,4,4, + 4,4,4,4,0,2,10,10,10,10,4,4,4,0,2,10,10,10,10,10, + 10,4,4,0,2,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10, + 10,4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4,0, + 2,4,4,4,4,0,2,10,10,4,4,4,10,10,4,4,4,4,4,10, + 10,10,10,0,2,4,4,10,10,10,10,4,0,2,4,4,4,4,0,2, + 10,10,10,10,4,4,4,4,4,10,10,10,10,4,0,2,4,4,4,4, + 0,2,10,10,4,4,4,10,10,4,4,4,4,4,10,10,10,10,0,2, + 4,4,10,10,10,10,4,0,2,4,4,4,4,0,2,10,10,10,10,4, + 4,4,4,4,10,10,10,10,4,0,2,10,10,4,4,4,10,10,4,4, + 4,4,4,10,10,10,10,0,2,4,4,10,10,10,10,4,0,2,4,4, + 4,4,4,4,4,0,2,10,10,10,10,4,4,4,4,4,10,10,10,10, + 4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,10, + 10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,10,10,10,10,10,4,4,10,10,10,10, + 10,10,0,2,4,4,4,4,4,4,4,0,2,4,10,10,10,10,10,10, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,0,2,4,4,4,4,4,4,4,0,2,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,4,10,10,10,10,10,4,4,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,10, + 10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,4,10,10,10,10,10, + 10,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10, + 10,10,10,10,4,4,10,10,10,10,10,10,0,2,4,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10, + 10,10,0,2,4,4,4,4,4,4,4,0,2,4,10,10,10,10,10,10, + 4,10,10,10,10,10,10,4,10,10,10,10,10,4,4,10,10,10,10,10, + 10,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,4,10, + 10,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,0,2,10,10, + 10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4,10, + 10,4,4,4,10,10,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,10,10, + 4,4,4,10,10,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,4,4,10,10,4,4,4,10,10,4,4,4,4,4,4,4, + 4,4,4,0,2,4,10,10,10,10,4,4,10,10,10,10,4,10,10,10, + 10,4,4,10,10,10,10,0,2,4,4,4,10,10,10,10,10,10,10,10, + 4,4,4,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,4,10, + 10,10,10,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,0,2,4, + 4,4,10,10,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4, + 4,10,10,10,10,0,2,4,10,10,10,10,4,10,10,10,10,0,2,4, + 4,4,10,10,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,10, + 10,0,2,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,10,10,10,10, + 10,10,10,10,4,4,4,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,10,10,10,10,10,10,10,10,4,4, + 4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0, + 2,4,4,4,10,10,10,10,10,10,10,10,4,4,4,10,10,10,10,10, + 10,10,10,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0, + 2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,4,4,4,10, + 10,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,10,10,4,4,4,10,10, + 0,2,10,10,10,10,10,10,10,10,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,4,4,10, + 10,10,10,4,0,2,4,4,10,10,10,10,4,0,2,4,10,10,10,10, + 10,10,10,10,4,4,10,10,4,4,4,10,10,0,2,4,4,10,10,10, + 10,4,0,2,4,4,4,10,10,10,10,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10, + 10,10,0,2,4,4,10,10,10,10,4,0,2,4,10,10,10,10,4,4, + 4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,4, + 10,10,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,10, + 4,4,10,10,4,10,10,10,10,10,10,10,10,4,0,2,10,10,10,10, + 10,10,10,10,10,4,4,10,10,4,10,10,10,10,10,10,10,10,4,0, + 2,10,10,10,10,4,4,4,4,4,4,4,0,2,10,10,10,10,4,4, + 4,4,4,4,4,0,2,4,10,10,10,10,4,4,10,10,4,4,4,10, + 10,0,2,10,10,10,10,4,4,4,0,2,4,10,10,10,10,4,4,0, + 2,4,4,4,4,10,10,10,10,4,4,4,0,2,10,10,10,10,10,10, + 10,10,0,2,4,4,4,4,4,10,10,10,10,10,10,10,10,4,4,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,4,4,10,10, + 10,4,10,4,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,10,10,10,10,4, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,10,10,10, + 10,10,10,4,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,10,10,4,4, + 4,10,10,4,0,2,4,4,4,10,10,4,4,4,4,4,10,10,4,4, + 4,10,10,4,4,4,4,4,10,10,10,4,4,4,0,2,10,10,10,10, + 10,10,10,10,10,10,4,4,10,10,4,10,10,10,10,10,10,10,10,4, + 4,4,4,4,0,2,10,10,10,10,4,4,4,4,4,4,0,2,10,10, + 10,10,0,2,4,4,10,10,10,10,4,4,4,10,10,10,10,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4,4,10, + 10,4,4,4,10,10,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,4,4,4,10, + 10,10,4,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10,4,4, + 4,10,10,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,4, + 4,4,10,10,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10, + 10,10,10,4,4,4,10,10,10,10,4,4,4,10,10,10,10,4,4,4, + 4,4,10,10,10,10,0,2,4,4,4,4,4,4,4,4,10,10,4,4, + 10,10,4,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2, + 10,10,10,10,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,4,4,4,4,4,4,4,10,10,10,0,2,10,10,10,10,10,10, + 4,0,2,10,10,10,4,4,4,4,4,4,4,4,10,10,10,0,2,10, + 10,10,4,10,10,10,0,2,10,10,4,4,4,4,10,10,4,4,4,10, + 10,4,10,10,0,2,10,10,10,10,4,4,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,4,4,4,10,10,4,4, + 4,10,10,4,0,2,10,10,4,4,4,10,10,4,4,4,4,4,4,4, + 10,10,10,10,0,2,4,4,10,10,10,10,4,0,2,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10, + 10,10,4,0,2,10,10,10,10,10,10,4,4,10,10,10,10,10,4,10, + 10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,10,10,10,10,4,0,2,4,10,10,4, + 4,4,10,10,4,4,10,10,10,10,4,4,4,0,2,4,4,4,4,4, + 10,10,4,4,4,10,10,4,4,4,10,10,4,4,10,10,4,4,4,4, + 4,4,0,2,10,10,4,4,4,10,10,4,4,4,4,4,4,4,0,2, + 4,4,4,4,10,10,4,4,4,10,10,4,4,4,4,4,10,10,4,4, + 4,10,10,4,0,2,4,4,4,4,10,10,4,4,4,10,10,4,4,4, + 0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, + 4,10,10,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,10,10, + 0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, + 4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,10,10, + 10,10,10,10,10,10,4,4,4,4,10,10,10,10,10,10,10,10,4,4, + 0,2,10,10,4,4,4,10,10,10,10,10,10,4,10,10,10,10,0,2, + 4,4,4,4,4,4,4,4,10,10,10,4,4,4,10,10,10,0,2,10, + 10,4,4,4,10,10,4,4,4,4,4,10,10,10,4,4,4,10,10,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,0,2,10,10,10,10,10,10,4,4,4,4,4,4,4,4,10,10, + 10,10,10,10,10,4,0,2,4,10,10,10,10,10,10,10,4,4,4,4, + 4,4,4,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,10,0,2,10,10,4,10, + 10,10,10,10,10,10,4,4,4,4,4,4,10,10,10,10,0,2,10,10, + 10,10,10,4,4,4,4,4,4,4,4,4,4,4,4,4,10,10,10,10, + 10,4,0,2,10,10,10,10,4,4,4,4,4,4,4,10,10,10,10,10, + 10,10,4,10,10,0,2,10,10,10,10,4,4,4,4,4,4,4,10,10, + 10,10,10,10,4,10,0,2,10,10,4,4,4,4,4,4,4,4,4,4, + 4,4,10,10,10,10,10,4,10,10,10,0,2,4,4,4,4,4,10,10, + 10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,0,2,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,10, + 10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4, + 10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,10,10,10,10,10,10,10,10,4,4,4,10,10, + 10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,4,4,4, + 10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10, + 10,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10, + 10,10,10,10,10,4,4,4,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10, + 10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,10, + 10,10,10,4,4,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10, + 10,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4, + 4,4,4,4,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,10,10,10,10,10,10,4,4,0,2,4,4,4, + 10,10,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,10,10,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,10,10,10,10,10,10,4, + 4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10,4,10, + 10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,10,10,10,10,10,10,0,2,4,10,10,10,10,4,4, + 0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,10,10, + 4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,4,0,2,4,4, + 4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,4, + 10,10,10,10,10,10,10,10,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,10, + 10,10,10,4,4,10,10,10,10,10,10,10,10,4,4,4,0,2,4,4, + 4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4, + 0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,4,4,4,4,4, + 4,4,4,10,10,10,10,10,10,10,4,0,2,4,4,4,4,4,4,4, + 0,2,10,10,10,10,10,10,10,4,10,10,10,10,10,10,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 10,10,4,4,4,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0 ); + + DejaVuSansMono_glyphInstructionIndices:array[0..467] of Integer = ( + 0,0,14,26,62,104,154,198,204,216,228,248,262,270,276,282,288,318,331,354, + 385,403,427,456,465,503,532,544,558,567,579,588,619,660,675,706,726,744,758,770, + 794,808,822,838,852,860,875,887,907,927,952,979,1009,1019,1043,1052,1067,1081,1092,1104, + 1114,1120,1130,1139,1145,1151,1186,1211,1231,1256,1281,1301,1335,1353,1371,1391,1405,1419,1448,1466, + 1486,1511,1536,1552,1582,1602,1620,1629,1644,1658,1675,1687,1718,1724,1755,1775,1787,1799,1811,1823, + 1835,1847,1859,1871,1883,1895,1907,1919,1931,1943,1955,1967,1979,1991,2003,2015,2027,2039,2051,2063, + 2075,2087,2099,2111,2123,2135,2147,2159,2171,2171,2185,2215,2241,2281,2308,2320,2366,2378,2434,2472, + 2490,2498,2504,2567,2573,2595,2615,2636,2667,2673,2700,2714,2720,2736,2749,2775,2793,2830,2870,2925, + 2957,2978,2999,3023,3062,3089,3121,3145,3181,3201,3221,3244,3270,3290,3310,3333,3359,3385,3421,3447, + 3473,3502,3546,3578,3592,3630,3660,3690,3723,3759,3776,3798,3834,3875,3916,3960,4017,4064,4119,4174, + 4210,4241,4272,4306,4343,4361,4379,4400,4424,4459,4499,4525,4551,4580,4622,4654,4672,4710,4734,4758, + 4785,4815,4838,4863,4892,4913,4954,4981,5028,5059,5110,5136,5162,5191,5220,5246,5272,5301,5330,5357, + 5388,5414,5447,5467,5498,5524,5561,5581,5612,5642,5683,5706,5740,5773,5816,5852,5898,5928,5968,5998, + 6038,6061,6088,6116,6142,6180,6214,6234,6252,6278,6302,6332,6366,6386,6398,6428,6466,6491,6514,6534, + 6554,6568,6582,6602,6616,6636,6650,6670,6684,6704,6720,6742,6760,6784,6802,6826,6847,6874,6900,6924, + 6948,6974,7000,7032,7064,7096,7128,7154,7200,7233,7255,7288,7310,7346,7371,7407,7443,7482,7521,7567, + 7613,7652,7691,7717,7753,7772,7798,7816,7844,7892,7932,7962,7986,8022,8052,8096,8134,8170,8200,8240, + 8274,8298,8322,8342,8368,8391,8409,8427,8445,8463,8484,8505,8521,8556,8594,8616,8643,8664,8690,8710, + 8735,8760,8786,8811,8833,8860,8897,8911,8936,8967,8985,9015,9045,9063,9092,9108,9132,9154,9176,9200, + 9218,9247,9264,9282,9306,9342,9378,9402,9427,9454,9485,9514,9544,9574,9588,9614,9643,9659,9685,9701, + 9741,9775,9801,9819,9838,9861,9882,9903,9927,9951,9975,9997,10023,10046,10067,10092,10111,10117,10129,10151, + 10165,10177,10189,10201,10213,10225,10237,10249,10261,10273,10297,10341,10364,10385,10414,10443,10476,10503,10545,10581, + 10623,10659,10704,10743,10785,10821,10846,10879,10932,10959,11006,11036,11097,11109,11121,11154,11197,11220,11243,11279, + 11315,11357,11399,11432,11465,11488,11500,11512 ); + + DejaVuSansMono_glyphInstructionCounts:array[0..467] of Integer = ( + 0,14,12,36,42,50,44,6,12,12,20,14,8,6,6,6,30,13,23,31, + 18,24,29,9,38,29,12,14,9,12,9,31,41,15,31,20,18,14,12,24, + 14,14,16,14,8,15,12,20,20,25,27,30,10,24,9,15,14,11,12,10, + 6,10,9,6,6,35,25,20,25,25,20,34,18,18,20,14,14,29,18,20, + 25,25,16,30,20,18,9,15,14,17,12,31,6,31,20,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,0,14,30,26,40,27,12,46,12,56,38,18, + 8,6,63,6,22,20,21,31,6,27,14,6,16,13,26,18,37,40,55,32, + 21,21,24,39,27,32,24,36,20,20,23,26,20,20,23,26,26,36,26,26, + 29,44,32,14,38,30,30,33,36,17,22,36,41,41,44,57,47,55,55,36, + 31,31,34,37,18,18,21,24,35,40,26,26,29,42,32,18,38,24,24,27, + 30,23,25,29,21,41,27,47,31,51,26,26,29,29,26,26,29,29,27,31, + 26,33,20,31,26,37,20,31,30,41,23,34,33,43,36,46,30,40,30,40, + 23,27,28,26,38,34,20,18,26,24,30,34,20,12,30,38,25,23,20,20, + 14,14,20,14,20,14,20,14,20,16,22,18,24,18,24,21,27,26,24,24, + 26,26,32,32,32,32,26,46,33,22,33,22,36,25,36,36,39,39,46,46, + 39,39,26,36,19,26,18,28,48,40,30,24,36,30,44,38,36,30,40,34, + 24,24,20,26,23,18,18,18,18,21,21,16,35,38,22,27,21,26,20,25, + 25,26,25,22,27,37,14,25,31,18,30,30,18,29,16,24,22,22,24,18, + 29,17,18,24,36,36,24,25,27,31,29,30,30,14,26,29,16,26,16,40, + 34,26,18,19,23,21,21,24,24,24,22,26,23,21,25,19,6,12,22,14, + 12,12,12,12,12,12,12,12,12,24,44,23,21,29,29,33,27,42,36,42, + 36,45,39,42,36,25,33,53,27,47,30,61,12,12,33,43,23,23,36,36, + 42,42,33,33,23,12,12,12 ); + + DejaVuSansMono_glyphPointIndices:array[0..467] of Integer = ( + 0,0,12,22,56,119,200,273,278,297,316,335,348,355,360,365,370,421,433,471, + 525,541,580,631,639,706,757,767,779,787,797,805,850,921,934,978,1013,1037,1050,1061, + 1100,1113,1126,1149,1162,1169,1183,1194,1228,1254,1295,1332,1385,1394,1433,1441,1455,1468,1478,1489, + 1498,1503,1512,1520,1525,1530,1585,1624,1659,1698,1737,1760,1816,1841,1857,1879,1892,1909,1953,1978, + 2012,2051,2090,2113,2165,2188,2213,2221,2235,2248,2270,2281,2327,2332,2378,2413,2423,2433,2443,2453, + 2463,2473,2483,2493,2503,2513,2523,2533,2543,2553,2563,2573,2583,2593,2603,2613,2623,2633,2643,2653, + 2663,2673,2683,2693,2703,2713,2723,2733,2743,2743,2755,2799,2832,2894,2920,2930,3013,3023,3124,3179, + 3195,3202,3207,3310,3315,3353,3371,3403,3457,3462,3504,3521,3526,3553,3565,3604,3620,3653,3702,3777, + 3825,3843,3861,3882,3934,3957,4002,4024,4086,4104,4122,4143,4166,4184,4202,4223,4246,4278,4328,4367, + 4406,4448,4521,4565,4578,4637,4681,4725,4772,4821,4836,4864,4927,4987,5047,5110,5202,5267,5356,5446, + 5508,5552,5596,5643,5692,5708,5724,5743,5764,5819,5881,5920,5959,6001,6072,6116,6131,6190,6220,6250, + 6283,6318,6345,6384,6416,6434,6494,6526,6600,6640,6722,6762,6802,6845,6888,6928,6968,7011,7054,7086, + 7130,7162,7209,7227,7271,7303,7361,7379,7423,7463,7529,7550,7597,7644,7708,7766,7841,7885,7946,7990, + 8051,8072,8105,8131,8164,8216,8264,8282,8298,8330,8360,8400,8443,8461,8472,8508,8546,8577,8602,8620, + 8638,8651,8663,8685,8697,8719,8731,8753,8765,8787,8802,8827,8843,8873,8889,8919,8938,8971,9003,9038, + 9073,9112,9151,9204,9257,9301,9345,9377,9454,9496,9524,9566,9594,9639,9670,9728,9785,9846,9906,9986, + 10065,10126,10186,10222,10272,10289,10317,10334,10365,10443,10505,10549,10579,10637,10681,10754,10813,10862,10897,10963, + 11015,11037,11059,11077,11107,11127,11143,11159,11175,11191,11210,11229,11248,11297,11352,11380,11421,11448,11488,11523, + 11566,11609,11641,11676,11704,11745,11809,11822,11861,11915,11936,11974,12023,12047,12091,12110,12133,12160,12185,12212, + 12229,12273,12293,12318,12355,12416,12477,12511,12546,12583,12632,12671,12724,12776,12789,12825,12861,12880,12913,12932, + 12998,13050,13091,13120,13144,13175,13195,13215,13251,13287,13323,13357,13392,13427,13458,13492,13518,13523,13533,13554, + 13566,13576,13586,13596,13606,13616,13626,13636,13646,13656,13677,13740,13761,13780,13822,13864,13911,13944,13998,14038, + 14092,14132,14189,14232,14286,14326,14365,14393,14463,14486,14551,14578,14673,14683,14693,14740,14804,14825,14846,14907, + 14968,15034,15100,15144,15188,15213,15223,15233 ); + + DejaVuSansMono_glyphPoints:array[0..(15243 * 2) - 1] of Integer = ( + 21936,63456,30560,63456,30560,35616,29664,20448,22816,20448,21936,35616,21936,63456,21936,10800,30560,10800,30560,0, + 21936,0,21936,10800,38032,63456,38032,39872,30640,39872,30640,63456,38032,63456,21760,63456,21760,39872,14368,39872, + 14368,63456,21760,63456,29072,62480,24656,44832,35056,44832,39520,62480,46320,62480,41856,44832,52240,44832,52240,38288, + 40288,38288,36720,24096,47344,24096,47344,17600,35056,17600,30640,0,23840,0,28304,17600,17856,17600,13392,0, + 6624,0,11056,17600,80,17600,80,24096,12704,24096,16272,38288,4976,38288,4976,44832,17856,44832,22272,62480, + 29072,62480,33488,38288,23072,38288,19504,24096,29968,24096,33488,38288,29408,24656,29408,6208,34080,6336,36720,8800, + 39360,11264,39360,15520,39360,19472,36976,21656,34592,23840,29408,24656,25168,32720,25168,50272,20736,50112,18248,47728, + 15760,45344,15760,41360,15760,37696,18080,35568,20400,33440,25168,32720,29408,-12800,25168,-12800,25120,0,20784,208, + 16512,1184,12240,2160,8080,3904,8080,11568,12320,8928,16640,7528,20960,6128,25168,6032,25168,25504,16656,26816, + 12368,30688,8080,34560,8080,40928,8080,47600,12560,51576,17040,55552,25168,56144,25168,66128,29408,66128,29456,56144, + 32816,55936,36256,55296,39696,54656,43264,53552,43264,46192,39648,48032,36232,49024,32816,50016,29408,50192,29408,31872, + 38160,30560,42752,26440,47344,22320,47344,15760,47344,9216,42392,4840,37440,464,29456,80,29408,-12800,29584,13552, + 29584,10240,31816,7992,34048,5744,37360,5744,40624,5744,42904,8016,45184,10288,45184,13552,45184,16832,42888,19128, + 40592,21424,37360,21424,34048,21424,31816,19168,29584,16912,29584,13552,23840,13552,23840,19296,27752,23224,31664,27152, + 37360,27152,40080,27152,42520,26136,44960,25120,46928,23168,48880,21168,49944,18704,51008,16240,51008,13552,51008,7904, + 47048,3952,43088,0,37360,0,31584,0,27712,3888,23840,7776,23840,13552,5136,19760,3648,23840,47936,41600, + 49680,37520,5136,19760,7136,47264,7136,43904,9368,41672,11600,39440,14960,39440,18240,39440,20528,41712,22816,43984, + 22816,47264,22816,50528,20528,52808,18240,55088,14960,55088,11680,55088,9408,52832,7136,50576,7136,47264,1408,47264, + 1408,52992,5312,56928,9216,60864,14960,60864,17680,60864,20168,59840,22656,58816,24560,56912,26480,54992,27520,52504, + 28560,50016,28560,47264,28560,41568,24608,37632,20656,33696,14960,33696,9216,33696,5312,37608,1408,41520,1408,47264, + 23248,38544,40928,14784,42592,16880,43400,20064,44208,23248,44208,27664,44208,29024,44080,32000,44032,32304,51008,32304, + 51008,30640,51008,23808,49432,18640,47856,13472,44672,9728,51888,0,42848,0,39520,4640,36000,1664,32048,216, + 28096,-1232,23584,-1232,14400,-1232,8408,4488,2416,10208,2416,18864,2416,24688,5352,29664,8288,34640,14192,38880, + 12064,41952,11048,44880,10032,47808,10032,50832,10032,57200,14256,60904,18480,64608,25840,64608,28608,64608,31392,64096, + 34176,63584,37152,62608,37152,54832,34640,56480,31984,57264,29328,58048,26400,58048,22272,58048,19888,56120,17504,54192, + 17504,50912,17504,48400,18736,45664,19968,42928,23248,38544,17680,34128,13776,31024,11840,27560,9904,24096,9904,20192, + 9904,13776,14152,9544,18400,5312,24992,5312,26768,5312,28728,5824,30688,6336,32560,7312,33696,7952,34440,8440, + 35184,8928,35872,9472,17680,34128,29840,63456,29840,39872,22448,39872,22448,63456,29840,63456,37616,66048,31968,56352, + 29184,46728,26400,37104,26400,27328,26400,17600,29184,7952,31968,-1696,37616,-11472,30816,-11472,24400,-1360,21256,8224, + 18112,17808,18112,27328,18112,36800,21256,46408,24400,56016,30816,66048,37616,66048,14784,66048,21584,66048,28000,56016, + 31152,46408,34304,36800,34304,27328,34304,17760,31152,8160,28000,-1440,21584,-11472,14784,-11472,20448,-1616,23232,8032, + 26016,17680,26016,27328,26016,37024,23232,46672,20448,56320,14784,66048,45344,52992,30128,44752,45344,36464,42928,32304, + 28640,40928,28640,24912,23760,24912,23760,40928,9472,32304,7056,36464,22272,44752,7056,52992,9472,57200,23760,48576, + 23760,64608,28640,64608,28640,48576,42928,57200,45344,52992,29744,49760,29744,30896,48656,30896,48656,23680,29744,23680, + 29744,4800,22608,4800,22608,23680,3744,23680,3744,30896,22608,30896,22608,49760,29744,49760,21328,12880,32048,12880, + 32048,4080,23680,-12192,17120,-12192,21328,4080,21328,12880,15136,27328,37280,27328,37280,20352,15136,20352,15136,27328, + 20784,12960,31488,12960,31488,0,20784,0,20784,12960,37776,63456,45856,63456,12448,-8080,4336,-8080,37776,63456, + 20528,31872,20528,34208,22168,35912,23808,37616,26096,37616,28480,37616,30176,35912,31872,34208,31872,31872,31872,29488, + 30192,27832,28512,26176,26096,26176,23712,26176,22120,27792,20528,29408,20528,31872,26176,57808,20192,57808,17240,51344, + 14288,44880,14288,31664,14288,18480,17240,12024,20192,5568,26176,5568,32208,5568,35168,12024,38128,18480,38128,31664, + 38128,44880,35168,51344,32208,57808,26176,57808,26176,64608,36336,64608,41544,56272,46752,47936,46752,31664,46752,15424, + 41544,7096,36336,-1232,26176,-1232,16016,-1232,10832,7096,5648,15424,5648,31664,5648,47936,10832,56272,16016,64608, + 26176,64608,11472,7232,24816,7232,24816,55712,10448,52480,10448,60304,24736,63456,33328,63456,33328,7232,46496,7232, + 46496,0,11472,0,11472,7232,15856,7232,45008,7232,45008,0,6464,0,6464,7232,14400,15600,20352,22016, + 26304,28432,28560,31072,32816,36256,34304,39464,35792,42672,35792,46032,35792,51344,32664,54360,29536,57376,24096,57376, + 20224,57376,15976,55976,11728,54576,6976,51728,6976,60400,11344,62480,15576,63544,19808,64608,23920,64608,33232,64608, + 38904,59656,44576,54704,44576,46672,44576,42592,42688,38512,40800,34432,36544,29488,34176,26736,29648,21848,25120,16960, + 15856,7232,32976,33952,39232,32304,42544,28072,45856,23840,45856,17504,45856,8752,39968,3760,34080,-1232,23680,-1232, + 19296,-1232,14752,-424,10208,384,5824,1920,5824,10448,10160,8208,14368,7104,18576,6000,22736,6000,29792,6000, + 33576,9184,37360,12368,37360,18368,37360,23888,33576,27136,29792,30384,23328,30384,16784,30384,16784,37440,23328,37440, + 29248,37440,32560,40032,35872,42624,35872,47264,35872,52144,32792,54760,29712,57376,24016,57376,20224,57376,16192,56528, + 12160,55680,7728,53968,7728,61888,12880,63248,16896,63928,20912,64608,24016,64608,33280,64608,38824,59952,44368,55296, + 44368,47600,44368,42368,41456,38888,38544,35408,32976,33952,31232,55632,11216,22096,31232,22096,31232,55632,29840,63456, + 39776,63456,39776,22096,48240,22096,48240,15136,39776,15136,39776,0,31232,0,31232,15136,4336,15136,4336,23248, + 29840,63456,8800,63456,40928,63456,40928,56224,16624,56224,16624,40624,18448,41312,20296,41632,22144,41952,24016,41952, + 33872,41952,39656,36128,45440,30304,45440,20352,45440,10320,39384,4544,33328,-1232,22816,-1232,17760,-1232,13576,-552, + 9392,128,6080,1488,6080,10208,9984,8080,13936,7040,17888,6000,22016,6000,29120,6000,32960,9736,36800,13472, + 36800,20352,36800,27152,32832,30936,28864,34720,21760,34720,18320,34720,15048,33936,11776,33152,8800,31584,8800,63456, + 42112,62048,42112,54144,39440,55712,36424,56544,33408,57376,30128,57376,21968,57376,17760,51232,13552,45088,13552,33152, + 15600,37408,19208,39680,22816,41952,27504,41952,36672,41952,41712,36320,46752,30688,46752,20352,46752,10080,41568,4424, + 36384,-1232,26992,-1232,15936,-1232,10792,6696,5648,14624,5648,31664,5648,47728,11832,56168,18016,64608,29744,64608, + 32896,64608,36040,63944,39184,63280,42112,62048,26816,35232,21328,35232,18184,31280,15040,27328,15040,20352,15040,13392, + 18184,9440,21328,5488,26816,5488,32512,5488,35400,9248,38288,13008,38288,20352,38288,27760,35400,31496,32512,35232, + 26816,35232,5904,63456,45856,63456,45856,59792,23168,0,14192,0,36288,56224,5904,56224,5904,63456,26176,30128, + 20448,30128,17320,26920,14192,23712,14192,17856,14192,11984,17360,8736,20528,5488,26176,5488,31968,5488,35088,8696, + 38208,11904,38208,17856,38208,23680,35040,26904,31872,30128,26176,30128,18704,33696,13216,35104,10136,38928,7056,42752, + 7056,48160,7056,55712,12200,60160,17344,64608,26176,64608,35056,64608,40200,60160,45344,55712,45344,48160,45344,42752, + 42264,38928,39184,35104,33696,33696,40080,32304,43456,28056,46832,23808,46832,17040,46832,8464,41352,3616,35872,-1232, + 26176,-1232,16496,-1232,11032,3592,5568,8416,5568,16960,5568,23760,8944,28032,12320,32304,18704,33696,15600,47344, + 15600,42240,18320,39568,21040,36896,26176,36896,31360,36896,34080,39568,36800,42240,36800,47344,36800,52528,34104,55248, + 31408,57968,26176,57968,21040,57968,18320,55224,15600,52480,15600,47344,25328,28128,30816,28128,33936,32088,37056,36048, + 37056,43008,37056,49984,33936,53936,30816,57888,25328,57888,19632,57888,16744,54128,13856,50368,13856,43008,13856,35616, + 16728,31872,19600,28128,25328,28128,10032,1312,10032,9216,12704,7648,15720,6824,18736,6000,22016,6000,30176,6000, + 34360,12136,38544,18272,38544,30224,36544,25968,32936,23696,29328,21424,24656,21424,15472,21424,10432,27072,5392,32720, + 5392,43088,5392,53344,10560,58976,15728,64608,25168,64608,36208,64608,41352,56656,46496,48704,46496,31664,46496,15648, + 40312,7208,34128,-1232,22352,-1232,19248,-1232,16104,-576,12960,80,10032,1312,20784,45184,31488,45184,31488,32304, + 20784,32304,20784,45184,20784,12960,31488,12960,31488,0,20784,0,20784,12960,21328,12880,32048,12880,32048,4080, + 23680,-12192,17120,-12192,21328,4080,21328,12880,20784,45184,31488,45184,31488,32304,20784,32304,20784,45184,48656,40848, + 12544,27248,48656,13776,48656,6000,3744,23760,3744,30816,48656,48576,48656,40848,3744,22272,48656,22272,48656,14960, + 3744,14960,3744,22272,3744,39520,48656,39520,48656,32304,3744,32304,3744,39520,3744,40848,3744,48576,48656,30816, + 48656,23760,3744,6000,3744,13776,39872,27248,3744,40848,29072,17040,20992,17040,20992,23584,20992,27760,22288,30664, + 23584,33568,27152,37056,30976,40848,33616,43344,34616,45216,35616,47088,35616,49168,35616,52960,32832,55296,30048,57632, + 25408,57632,22096,57632,18312,56168,14528,54704,10368,51808,10368,59792,14368,62224,18424,63416,22480,64608,26896,64608, + 34800,64608,39504,60528,44208,56448,44208,49600,44208,46368,42784,43584,41360,40800,37360,36896,33616,33232,30688,30432, + 29880,28648,29072,26864,29072,24272,29072,22272,29072,17040,20704,10800,29328,10800,29328,0,20704,0,20704,10800, + 44112,23168,44112,28640,41392,31936,38672,35232,34128,35232,29584,35232,26840,31936,24096,28640,24096,23168,24096,17632, + 26840,14344,29584,11056,34128,11056,38672,11056,41392,14344,44112,17632,44112,23168,50064,5744,43952,5744,43952,10448, + 42368,7776,39584,6328,36800,4880,33328,4880,26480,4880,21992,10024,17504,15168,17504,23168,17504,31152,21992,36296, + 26480,41440,33328,41440,36720,41440,39568,39952,42416,38464,43952,35872,43952,38544,43952,45184,40208,49216,36464,53248, + 30304,53248,19840,53248,13664,45112,7488,36976,7488,23072,7488,9088,14496,800,21504,-7488,33152,-7488,35440,-7488, + 37736,-7056,40032,-6624,42464,-5744,44496,-11472,41824,-12544,39208,-13048,36592,-13552,34128,-13552,18960,-13552,10056,-3656, + 1152,6240,1152,23072,1152,39648,9136,49464,17120,59280,30560,59280,39440,59280,44752,53632,50064,47984,50064,38464, + 50064,5744,26176,55888,17120,23424,35232,23424,26176,55888,20992,63456,31408,63456,50832,0,41952,0,37280,16528, + 15040,16528,10448,0,1568,0,20992,63456,15680,30304,15680,7056,25840,7056,33328,7056,36512,9672,39696,12288, + 39696,18272,39696,24480,36336,27392,32976,30304,25840,30304,15680,30304,15680,56400,15680,37280,25664,37280,31872,37280, + 34656,39656,37440,42032,37440,47344,37440,52144,34704,54272,31968,56400,25664,56400,15680,56400,7056,63456,25840,63456, + 35568,63456,40840,59248,46112,55040,46112,47344,46112,41520,43328,38160,40544,34800,34976,33952,41232,33024,44776,28624, + 48320,24224,48320,17424,48320,8800,42672,4400,37024,0,25840,0,7056,0,7056,63456,45600,2256,42336,512, + 38888,-360,35440,-1232,31584,-1232,19376,-1232,12640,7392,5904,16016,5904,31664,5904,47216,12688,55912,19472,64608, + 31584,64608,35440,64608,38888,63736,42336,62864,45600,61120,45600,52320,42464,54912,38848,56272,35232,57632,31584,57632, + 23200,57632,19040,51168,14880,44704,14880,31664,14880,18656,19040,12200,23200,5744,31584,5744,35312,5744,38904,7104, + 42496,8464,45600,11056,45600,2256,18528,7056,29360,7056,33656,12392,37952,17728,37952,31664,37952,45728,33680,51064, + 29408,56400,18528,56400,14448,56400,14448,7056,18528,7056,18704,63456,33232,63456,40120,55720,47008,47984,47008,31664, + 47008,15424,40120,7712,33232,0,18704,0,5824,0,5824,63456,18704,63456,8368,63456,46032,63456,46032,56224, + 16960,56224,16960,37440,44752,37440,44752,30224,16960,30224,16960,7232,46832,7232,46832,0,8368,0,8368,63456, + 9904,63456,47264,63456,47264,56224,18528,56224,18528,37520,44576,37520,44576,30304,18528,30304,18528,0,9904,0, + 9904,63456,46928,5232,43472,2048,39160,408,34848,-1232,29840,-1232,17760,-1232,11048,7416,4336,16064,4336,31664, + 4336,47216,11136,55912,17936,64608,30048,64608,34048,64608,37704,63480,41360,62352,44752,60048,44752,51248,41312,54528, + 37696,56080,34080,57632,30048,57632,21680,57632,17488,51152,13296,44672,13296,31664,13296,18448,17360,12096,21424,5744, + 29840,5744,32688,5744,34832,6400,36976,7056,38720,8464,38720,25504,29488,25504,29488,32560,46928,32560,46928,5232, + 5824,63456,14448,63456,14448,37440,37952,37440,37952,63456,46576,63456,46576,0,37952,0,37952,30224,14448,30224, + 14448,0,5824,0,5824,63456,8544,63456,43776,63456,43776,56224,30480,56224,30480,7232,43776,7232,43776,0, + 8544,0,8544,7232,21840,7232,21840,56224,8544,56224,8544,63456,4640,2592,4640,12624,8496,9184,12624,7464, + 16752,5744,21168,5744,27248,5744,29648,8904,32048,12064,32048,20704,32048,56224,15856,56224,15856,63456,40624,63456, + 40624,20704,40624,8720,36144,3744,31664,-1232,21168,-1232,17088,-1232,13048,-296,9008,640,4640,2592,5824,63456, + 14448,63456,14448,35232,41264,63456,51344,63456,26640,37520,52064,0,41696,0,20992,31792,14448,24816,14448,0, + 5824,0,5824,63456,9136,63456,17760,63456,17760,7232,48400,7232,48400,0,9136,0,9136,63456,3648,63456, + 15136,63456,26096,31152,37152,63456,48656,63456,48656,0,40720,0,40720,56064,29408,22608,22912,22608,11568,56064, + 11568,0,3648,0,3648,63456,5904,63456,16784,63456,38208,11216,38208,63456,46496,63456,46496,0,35616,0, + 14192,52240,14192,0,5904,0,5904,63456,38464,31664,38464,45648,35592,51640,32720,57632,26176,57632,19680,57632, + 16808,51640,13936,45648,13936,31664,13936,17728,16808,11736,19680,5744,26176,5744,32720,5744,35592,11712,38464,17680, + 38464,31664,47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232,15424,-1232,10200,6888,4976,15008,4976,31664, + 4976,48288,10224,56448,15472,64608,26176,64608,36928,64608,42176,56448,47424,48288,47424,31664,16960,56400,16960,32560, + 26896,32560,32848,32560,36184,35704,39520,38848,39520,44496,39520,50144,36208,53272,32896,56400,26896,56400,16960,56400, + 8368,63456,26896,63456,37520,63456,43008,58632,48496,53808,48496,44496,48496,35104,43032,30304,37568,25504,26896,25504, + 16960,25504,16960,0,8368,0,8368,63456,27840,-1152,27536,-1152,26984,-1192,26432,-1232,26096,-1232,15472,-1232, + 10224,6928,4976,15088,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608,36928,64608,42176,56448,47424,48288, + 47424,31664,47424,19168,44512,11536,41600,3904,35696,848,44208,-7232,37776,-11472,27840,-1152,38464,31664,38464,45648, + 35592,51640,32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728,16808,11736,19680,5744, + 26176,5744,32720,5744,35592,11712,38464,17680,38464,31664,32304,29968,35616,29120,37952,26760,40288,24400,43776,17344, + 52400,0,43184,0,35616,16016,32336,22864,29728,24840,27120,26816,22912,26816,14704,26816,14704,0,6080,0, + 6080,63456,23760,63456,34208,63456,39776,58736,45344,54016,45344,45088,45344,38800,41928,34824,38512,30848,32304,29968, + 14704,56400,14704,33872,24096,33872,30256,33872,33272,36632,36288,39392,36288,45088,36288,50576,33080,53488,29872,56400, + 23760,56400,14704,56400,43008,61280,43008,52576,39104,55088,35168,56360,31232,57632,27248,57632,21168,57632,17640,54808, + 14112,51984,14112,47168,14112,42960,16424,40752,18736,38544,25072,37056,29584,36048,38512,33952,42592,29496,46672,25040, + 46672,17344,46672,8288,41056,3528,35440,-1232,24736,-1232,20272,-1232,15768,-272,11264,688,6720,2592,6720,11728, + 11600,8624,15960,7184,20320,5744,24736,5744,31232,5744,34848,8656,38464,11568,38464,16784,38464,21552,35976,24056, + 33488,26560,27328,27920,22736,28992,13904,30976,9904,35016,5904,39056,5904,45856,5904,54352,11624,59480,17344,64608, + 26816,64608,30480,64608,34512,63776,38544,62944,43008,61280,2000,63456,50400,63456,50400,56224,30560,56224,30560,0, + 21936,0,21936,56224,2000,56224,2000,63456,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832, + 15392,11856,16016,10800,17376,8288,19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800, + 37024,11856,37272,13808,37520,15760,37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416, + 40720,3744,37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368, + 7480,10560,6240,14752,6240,24352,26176,7232,41104,63456,49984,63456,31408,0,20992,0,2416,63456,11312,63456, + 26176,7232,0,63456,8368,63456,14448,11936,21680,46032,30640,46032,37952,11856,44032,63456,52400,63456,42928,0, + 34800,0,26176,37696,17600,0,9472,0,0,63456,3648,63456,12880,63456,26816,39520,41008,63456,50240,63456, + 31232,33616,51600,0,42368,0,26816,27328,10032,0,768,0,22016,33616,3648,63456,1568,63456,10704,63456, + 26176,35440,41600,63456,50832,63456,30480,28480,30480,0,21840,0,21840,28480,1568,63456,7568,63456,48752,63456, + 48752,56912,15600,7232,49680,7232,49680,0,6624,0,6624,6544,38880,56224,7568,56224,7568,63456,19680,66128, + 37696,66128,37696,60048,27504,60048,27504,-5392,37696,-5392,37696,-11472,19680,-11472,19680,66128,12448,63456,45856,-8080, + 37776,-8080,4336,63456,12448,63456,32720,66128,32720,-11472,14704,-11472,14704,-5392,24912,-5392,24912,60048,14704,60048, + 14704,66128,32720,66128,29968,63456,49344,39776,41776,39776,26176,56560,10624,39776,3056,39776,22448,63456,29968,63456, + 52400,-17120,52400,-20528,0,-20528,0,-17120,52400,-17120,20272,69616,32208,53632,25664,53632,11856,69616,20272,69616, + 29840,23920,27248,23920,20400,23920,16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312, + 29712,5312,33408,9800,37104,14288,37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056, + 34640,2800,30832,784,27024,-1232,21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928, + 16320,30048,26640,30048,37152,30048,37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968, + 13008,39824,9136,37616,9136,45440,13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264, + 42032,41776,43648,39648,44328,36528,45008,33408,45008,27152,39008,23760,39008,32848,36120,37480,33232,42112,27584,42112, + 21888,42112,18952,37464,16016,32816,16016,23760,16016,14752,18952,10072,21888,5392,27584,5392,33232,5392,36120,10024, + 39008,14656,39008,23760,16016,41520,17888,45008,21184,46880,24480,48752,28816,48752,37408,48752,42336,42144,47264,35536, + 47264,23920,47264,12160,42312,5464,37360,-1232,28736,-1232,24480,-1232,21232,616,17984,2464,16016,6000,16016,0, + 8208,0,8208,66128,16016,66128,16016,41520,45088,2416,41952,592,38616,-320,35280,-1232,31792,-1232,20736,-1232, + 14512,5400,8288,12032,8288,23760,8288,35488,14512,42120,20736,48752,31792,48752,35232,48752,38504,47856,41776,46960, + 45088,45088,45088,36896,41984,39648,38864,40880,35744,42112,31792,42112,24432,42112,20480,37352,16528,32592,16528,23760, + 16528,14960,20504,10176,24480,5392,31792,5392,35872,5392,39104,6648,42336,7904,45088,10544,45088,2416,36464,41520, + 36464,66128,44288,66128,44288,0,36464,0,36464,6000,34512,2464,31256,616,28000,-1232,23760,-1232,15136,-1232, + 10184,5464,5232,12160,5232,23920,5232,35536,10200,42144,15168,48752,23760,48752,28048,48752,31320,46904,34592,45056, + 36464,41520,13472,23760,13472,14656,16360,10024,19248,5392,24912,5392,30560,5392,33512,10072,36464,14752,36464,23760, + 36464,32816,33512,37464,30560,42112,24912,42112,19248,42112,16360,37480,13472,32848,13472,23760,47264,25760,47264,21936, + 13392,21936,13392,21680,13392,13904,17448,9648,21504,5392,28896,5392,32640,5392,36720,6584,40800,7776,45440,10208, + 45440,2416,40976,592,36832,-320,32688,-1232,28816,-1232,17728,-1232,11480,5416,5232,12064,5232,23760,5232,35152, + 11352,41952,17472,48752,27664,48752,36768,48752,42016,42584,47264,36416,47264,25760,39440,28048,39264,34928,36184,38520, + 33104,42112,27328,42112,21680,42112,18024,38376,14368,34640,13680,28000,39440,28048,45184,66128,45184,59632,36288,59632, + 32080,59632,30448,57912,28816,56192,28816,51808,28816,47600,45184,47600,45184,41520,28816,41520,28816,0,20992,0, + 20992,41520,8288,41520,8288,47600,20992,47600,20992,50912,20992,58736,24584,62432,28176,66128,35792,66128,45184,66128, + 36464,24176,36464,32976,33592,37544,30720,42112,25248,42112,19504,42112,16488,37544,13472,32976,13472,24176,13472,15392, + 16512,10776,19552,6160,25328,6160,30720,6160,33592,10792,36464,15424,36464,24176,44288,3056,44288,-7648,39232,-13176, + 34176,-18704,24352,-18704,21120,-18704,17592,-18104,14064,-17504,10544,-16368,10544,-8624,14704,-10576,18104,-11512,21504,-12448, + 24352,-12448,30688,-12448,33576,-9008,36464,-5568,36464,1920,36464,2256,36464,7568,34592,3568,31360,1616,28128,-336, + 23504,-336,15168,-336,10200,6336,5232,13008,5232,24176,5232,35408,10200,42080,15168,48752,23504,48752,28096,48752, + 31280,46920,34464,45088,36464,41264,36464,47424,44288,47424,44288,3056,44672,29488,44672,0,36800,0,36800,29488, + 36800,35920,34552,38936,32304,41952,27504,41952,22016,41952,19064,38064,16112,34176,16112,26896,16112,0,8288,0, + 8288,66128,16112,66128,16112,40464,18192,44544,21760,46648,25328,48752,30224,48752,37488,48752,41080,43968,44672,39184, + 44672,29488,10880,47600,30896,47600,30896,6080,46416,6080,46416,0,7568,0,7568,6080,23072,6080,23072,41520, + 10880,41520,10880,47600,23072,66128,30896,66128,30896,56224,23072,56224,23072,66128,25504,-848,25504,41520,12032,41520, + 12032,47600,33328,47600,33328,-848,33328,-9136,29520,-13624,25712,-18112,18704,-18112,7904,-18112,7904,-11472,17856,-11472, + 21680,-11472,23592,-8816,25504,-6160,25504,-848,25504,66128,33328,66128,33328,56224,25504,56224,25504,66128,10032,66128, + 18112,66128,18112,27840,38640,47600,48160,47600,29408,29664,51088,0,41520,0,23920,24560,18112,19088,18112,0, + 10032,0,10032,66128,27152,17248,27152,11984,29088,9304,31024,6624,34800,6624,43952,6624,43952,0,34048,0, + 27024,0,23184,4504,19344,9008,19344,17248,19344,60480,6800,60480,6800,66592,27152,66592,27152,17248,28736,42752, + 30176,45808,32408,47280,34640,48752,37776,48752,43520,48752,45880,44312,48240,39872,48240,27584,48240,0,41104,0, + 41104,27248,41104,37312,39976,39760,38848,42208,35872,42208,32464,42208,31216,39592,29968,36976,29968,27248,29968,0, + 22816,0,22816,27248,22816,37440,21608,39824,20400,42208,17248,42208,14160,42208,12944,39592,11728,36976,11728,27248, + 11728,0,4640,0,4640,47600,11728,47600,11728,43520,13136,46064,15240,47408,17344,48752,20016,48752,23248,48752, + 25392,47264,27536,45776,28736,42752,44672,29488,44672,0,36800,0,36800,29488,36800,35920,34552,38936,32304,41952, + 27504,41952,22016,41952,19064,38064,16112,34176,16112,26896,16112,0,8288,0,8288,47600,16112,47600,16112,40464, + 18192,44544,21760,46648,25328,48752,30224,48752,37488,48752,41080,43968,44672,39184,44672,29488,26176,42112,20224,42112, + 17168,37480,14112,32848,14112,23760,14112,14704,17168,10048,20224,5392,26176,5392,32176,5392,35232,10048,38288,14704, + 38288,23760,38288,32848,35232,37480,32176,42112,26176,42112,26176,48752,36080,48752,41328,42336,46576,35920,46576,23760, + 46576,11568,41352,5168,36128,-1232,26176,-1232,16272,-1232,11048,5168,5824,11568,5824,23760,5824,35920,11048,42336, + 16272,48752,26176,48752,15936,6000,15936,-18112,8080,-18112,8080,47600,15936,47600,15936,41520,17888,45056,21144,46904, + 24400,48752,28640,48752,37280,48752,42184,42080,47088,35408,47088,23584,47088,11984,42160,5376,37232,-1232,28640,-1232, + 24304,-1232,21056,616,17808,2464,15936,6000,38880,23760,38880,32848,36016,37480,33152,42112,27504,42112,21808,42112, + 18872,37464,15936,32816,15936,23760,15936,14752,18872,10072,21808,5392,27504,5392,33152,5392,36016,10024,38880,14656, + 38880,23760,14112,23584,14112,14496,16976,9864,19840,5232,25504,5232,31152,5232,34064,9880,36976,14528,36976,23584, + 36976,32640,34064,37296,31152,41952,25504,41952,19840,41952,16976,37320,14112,32688,14112,23584,36976,5904,35056,2384, + 31808,488,28560,-1408,24272,-1408,15728,-1408,10776,5200,5824,11808,5824,23424,5824,35232,10752,41904,15680,48576, + 24272,48576,28512,48576,31768,46728,35024,44880,36976,41360,36976,47424,44832,47424,44832,-18272,36976,-18272,36976,5904, + 49088,37776,46576,39744,43984,40632,41392,41520,38288,41520,30976,41520,27112,36928,23248,32336,23248,23680,23248,0, + 15392,0,15392,47600,23248,47600,23248,38288,25200,43344,29264,46048,33328,48752,38880,48752,41776,48752,44288,48024, + 46800,47296,49088,45776,49088,37776,41360,45936,41360,38288,38000,40240,34600,41224,31200,42208,27664,42208,22352,42208, + 19736,40488,17120,38768,17120,35232,17120,32048,19080,30472,21040,28896,28816,27408,31968,26816,37776,25712,40776,22400, + 43776,19088,43776,13776,43776,6720,38760,2744,33744,-1232,24816,-1232,21296,-1232,17424,-488,13552,256,9056,1744, + 9056,9824,13424,7568,17424,6440,21424,5312,24992,5312,30176,5312,33024,7416,35872,9520,35872,13296,35872,18736, + 25456,20832,25120,20912,22192,21504,15424,22816,12320,25944,9216,29072,9216,34464,9216,41312,13848,45032,18480,48752, + 27072,48752,30896,48752,34424,48048,37952,47344,41360,45936,26096,61120,26096,47600,43856,47600,43856,41520,26096,41520, + 26096,15680,26096,10416,28096,8328,30096,6240,35056,6240,43856,6240,43856,0,34304,0,25504,0,21888,3528, + 18272,7056,18272,15680,18272,41520,5568,41520,5568,47600,18272,47600,18272,61120,26096,61120,8288,18016,8288,47520, + 16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568,30944,5568,33872,9456,36800,13344,36800,20608, + 36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024,31128,896,27536,-1232,22736,-1232,15424,-1232, + 11856,3552,8288,8336,8288,18016,4256,47600,12368,47600,26176,7648,40032,47600,48160,47600,31232,0,21168,0, + 4256,47600,0,47600,7728,47600,16016,9136,22816,33696,29488,33696,36384,9136,44672,47600,52400,47600,41264,0, + 33792,0,26176,26096,18608,0,11136,0,0,47600,47520,47600,30480,24816,49168,0,40128,0,26176,19088, + 12288,0,3232,0,21936,24816,4880,47600,13552,47600,26176,30384,38720,47600,47520,47600,36464,15296,34512,10320, + 31488,2208,27280,-9008,25840,-11472,23888,-14784,20952,-16448,18016,-18112,14112,-18112,7824,-18112,7824,-11568,12448,-11568, + 15888,-11568,17848,-9568,19808,-7568,22816,768,4416,47600,12704,47600,26816,10368,40720,47600,49008,47600,36464,15296, + 9648,47680,44208,47680,44208,40544,16880,6368,44208,6368,44208,0,8624,0,8624,7232,35952,41440,9648,41440, + 9648,47680,43008,-8080,43008,-14192,40288,-14192,29712,-14192,26120,-11048,22528,-7904,22528,1488,22528,11648,22528,18064, + 20256,20528,17984,22992,12032,22992,9392,22992,9392,29072,12032,29072,18016,29072,20272,31496,22528,33920,22528,40288, + 22528,50496,22528,59888,26120,63008,29712,66128,40288,66128,43008,66128,43008,60048,40032,60048,34080,60048,32280,58200, + 30480,56352,30480,50320,30480,39776,30480,33104,28544,30088,26608,27072,21936,26016,26640,24864,28560,21848,30480,18832, + 30480,12192,30480,1664,30480,-4416,32280,-6248,34080,-8080,40032,-8080,43008,-8080,29840,66512,29840,-20528,22528,-20528, + 22528,66512,29840,66512,9392,-8080,12288,-8080,18272,-8080,20104,-6208,21936,-4336,21936,1664,21936,12192,21936,18832, + 23848,21848,25760,24864,30480,26016,25792,27072,23864,30088,21936,33104,21936,39776,21936,50320,21936,56320,20104,58184, + 18272,60048,12288,60048,9392,60048,9392,66128,12032,66128,22608,66128,26176,63008,29744,59888,29744,50496,29744,40288, + 29744,33920,32024,31496,34304,29072,40288,29072,43008,29072,43008,22992,40288,22992,34304,22992,32024,20528,29744,18064, + 29744,11648,29744,1488,29744,-7904,26176,-11048,22608,-14192,12032,-14192,9392,-14192,9392,-8080,48656,33152,48656,25760, + 45472,23248,42432,22080,39392,20912,36048,20912,32208,20912,27408,23072,26480,23504,26016,23680,22736,25072,20552,25584, + 18368,26096,16192,26096,12832,26096,9840,24840,6848,23584,3744,20912,3744,28304,7056,30848,10160,32000,13264,33152, + 16784,33152,19040,33152,21168,32680,23296,32208,26432,30896,26944,30688,27840,30256,32768,27920,36720,27920,39696,27920, + 42608,29216,45520,30512,48656,33152,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,21936,52656,21936,63456,30560,63456,30560,52656,21936,52656,21936,0,21936,27840, + 22816,43008,29664,43008,30560,27840,30560,0,21936,0,45088,45776,45088,38464,42240,40160,39480,41096,36720,42032, + 34048,42208,34048,5232,36720,5440,39504,6400,42288,7360,45088,9056,45088,1744,41984,432,39224,-296,36464,-1024, + 34048,-1152,34048,-13296,29664,-13296,29664,-1152,20096,-208,14576,6440,9056,13088,9056,23760,9056,34384,14640,41120, + 20224,47856,29664,48656,29664,60864,34048,60864,34048,48656,36464,48528,39224,47808,41984,47088,45088,45776,29664,5392, + 29664,42112,24048,41600,20648,36592,17248,31584,17248,23760,17248,15936,20648,10944,24048,5952,29664,5392,46416,62128, + 46416,54320,43776,56192,41080,57120,38384,58048,35536,58048,29840,58048,27136,54248,24432,50448,24432,42288,24432,33072, + 40208,33072,40208,26992,24432,26992,24432,7232,47264,7232,47264,0,5904,0,5904,7232,15936,7232,15936,26992, + 7488,26992,7488,33072,15936,33072,15936,43184,15936,53968,20592,59288,25248,64608,34720,64608,37488,64608,40400,63984, + 43312,63360,46416,62128,36896,27328,36896,31152,34256,33768,31616,36384,27760,36384,23920,36384,21264,33768,18608,31152, + 18608,27328,18608,23424,21264,20768,23920,18112,27760,18112,31616,18112,34256,20784,36896,23456,36896,27328,35872,39264, + 42928,46320,46752,42368,39696,35312,40976,33232,41592,31256,42208,29280,42208,27248,42208,25120,41568,23184,40928,21248, + 39616,19344,46752,12288,42752,8288,35696,15392,33744,14064,31808,13432,29872,12800,27760,12800,25712,12800,23672,13416, + 21632,14032,19600,15216,12624,8288,8720,12112,15760,19168,14448,21328,13832,23304,13216,25280,13216,27248,13216,29360, + 13872,31344,14528,33328,15856,35232,8720,42288,12704,46320,19760,39184,21712,40496,23648,41136,25584,41776,27760,41776, + 29712,41776,31704,41160,33696,40544,35872,39264,1568,63456,10704,63456,26176,35440,41600,63456,50832,63456,36800,39616, + 47520,39616,47520,34896,34128,34896,30480,28480,30480,26992,47520,26992,47520,22272,30480,22272,30480,0,21840,0, + 21840,22272,4880,22272,4880,26992,21840,26992,21840,28480,18016,34896,4880,34896,4880,39616,15216,39616,1568,63456, + 29840,60864,29840,28640,22528,28640,22528,60864,29840,60864,29840,17344,29840,-14880,22528,-14880,22528,17344,29840,17344, + 39776,62128,39776,55168,36256,56816,33216,57648,30176,58480,27760,58480,23632,58480,21360,56784,19088,55088,19088,52064, + 19088,48240,27792,43344,28896,42720,29488,42368,38512,37312,41272,34040,44032,30768,44032,26480,44032,22656,42096,19680, + 40160,16704,36208,14448,38800,12240,40032,9920,41264,7600,41264,4880,41264,-1152,36928,-4720,32592,-8288,25248,-8288, + 22144,-8288,18848,-7672,15552,-7056,11856,-5824,11856,1152,15552,-512,18696,-1336,21840,-2160,24272,-2160,28608,-2160, + 31008,-376,33408,1408,33408,4640,33408,8960,24016,14192,22992,14784,13904,19888,11184,23144,8464,26400,8464,30720, + 8464,34592,10440,37632,12416,40672,16272,42752,13728,44624,12472,47008,11216,49392,11216,52320,11216,57840,15472,61224, + 19728,64608,26816,64608,29872,64608,33128,63984,36384,63360,39776,62128,20608,39776,17984,37872,16688,35960,15392,34048, + 15392,32048,15392,28816,18384,25944,21376,23072,31872,17424,34512,19344,35784,21256,37056,23168,37056,25168,37056,28384, + 34016,31280,30976,34176,20608,39776,13552,65968,22192,65968,22192,57376,13552,57376,13552,65968,30224,65968,38800,65968, + 38800,57376,30224,57376,30224,65968,36720,45520,36720,40928,34256,42112,31896,42688,29536,43264,27072,43264,22096,43264, + 19232,40096,16368,36928,16368,31488,16368,25888,19344,22864,22320,19840,27840,19840,30224,19840,32408,20376,34592,20912, + 36720,22016,36720,17600,34512,16624,32088,16152,29664,15680,27072,15680,19424,15680,15024,19928,10624,24176,10624,31488, + 10624,38848,15048,43136,19472,47424,27072,47424,29664,47424,32088,46960,34512,46496,36720,45520,26176,53344,21680,53344, + 17832,51768,13984,50192,10800,47008,7600,43824,5968,39912,4336,36000,4336,31488,4336,27072,5968,23184,7600,19296, + 10800,16112,14032,12880,17872,11264,21712,9648,26176,9648,30688,9648,34536,11264,38384,12880,41600,16112,44832,19344, + 46432,23184,48032,27024,48032,31488,48032,36000,46416,39912,44800,43824,41600,47008,38416,50192,34568,51768,30720,53344, + 26176,53344,26176,57712,31584,57712,36216,55800,40848,53888,44672,50064,48496,46192,50448,41520,52400,36848,52400,31488, + 52400,26176,50464,21544,48528,16912,44672,13040,40800,9184,36168,7248,31536,5312,26176,5312,20864,5312,16232,7248, + 11600,9184,7728,13040,3872,16912,1936,21544,0,26176,0,31488,0,36848,1952,41520,3904,46192,7728,50064, + 11568,53888,16200,55800,20832,57712,26176,57712,29072,46928,22944,46928,20312,45480,17680,44032,17680,40720,17680,38000, + 19528,36360,21376,34720,24432,34720,28896,34720,31680,37760,34464,40800,34464,45680,34464,46928,29072,46928,40544,49520, + 40544,30480,34464,30480,34464,35232,32384,32464,29600,31064,26816,29664,23328,29664,17856,29664,14664,32552,11472,35440, + 11472,40368,11472,45856,15448,48832,19424,51808,26736,51808,34464,51808,34464,51984,34464,55808,31936,57760,29408,59712, + 24432,59712,22272,59712,19616,58968,16960,58224,14112,56816,14112,62224,17008,63408,19872,64008,22736,64608,25408,64608, + 33232,64608,36888,60952,40544,57296,40544,49520,12448,25168,40848,25168,40848,19936,12448,19936,12448,25168,24992,45008, + 24992,36896,12192,25504,24992,14112,24992,6000,5056,23760,5056,27248,24992,45008,44288,45008,44288,36896,31488,25504, + 44288,14112,44288,6000,24352,23760,24352,27248,44288,45008,3744,36640,48656,36640,48656,15760,41520,15760,41520,29328, + 3744,29328,3744,36640,15136,27328,37280,27328,37280,20352,15136,20352,15136,27328,25504,46752,31744,46752,34808,44672, + 37872,42592,37872,38288,37872,35280,36000,33304,34128,31328,30720,30720,31536,30512,32768,29088,34000,27664,35616,25168, + 40464,17248,34384,17248,29840,24656,27760,28048,26464,28944,25168,29840,23248,29840,20912,29840,20912,17248,15392,17248, + 15392,46752,25504,46752,25248,43184,20912,43184,20912,33328,25248,33328,29072,33328,30640,34472,32208,35616,32208,38288, + 32208,40928,30640,42056,29072,43184,25248,43184,26176,57712,31584,57712,36216,55800,40848,53888,44672,50064,48496,46192, + 50448,41520,52400,36848,52400,31488,52400,26176,50464,21544,48528,16912,44672,13040,40800,9184,36168,7248,31536,5312, + 26176,5312,20864,5312,16232,7248,11600,9184,7728,13040,3872,16912,1936,21544,0,26176,0,31488,0,36848, + 1952,41520,3904,46192,7728,50064,11568,53888,16200,55800,20832,57712,26176,57712,26176,53344,21680,53344,17832,51768, + 13984,50192,10800,47008,7600,43824,5968,39912,4336,36000,4336,31488,4336,27072,5968,23184,7600,19296,10800,16112, + 14032,12880,17872,11264,21712,9648,26176,9648,30688,9648,34536,11264,38384,12880,41600,16112,44832,19344,46432,23184, + 48032,27024,48032,31488,48032,36000,46416,39912,44800,43824,41600,47008,38416,50192,34568,51768,30720,53344,26176,53344, + 13472,64848,38880,64848,38880,58560,13472,58560,13472,64848,26176,64608,28944,64608,31432,63560,33920,62512,35792,60560, + 37696,58656,38696,56232,39696,53808,39696,51008,39696,45392,35744,41504,31792,37616,26096,37616,20352,37616,16528,41440, + 12704,45264,12704,51008,12704,56688,16616,60648,20528,64608,26176,64608,26176,59120,22816,59120,20464,56760,18112,54400, + 18112,51008,18112,47600,20424,45304,22736,43008,26096,43008,29488,43008,31896,45344,34304,47680,34304,51008,34304,54352, + 31920,56736,29536,59120,26176,59120,3744,7232,48656,7232,48656,0,3744,0,3744,7232,29744,49760,29744,35792, + 48656,35792,48656,28560,29744,28560,29744,14448,22608,14448,22608,28560,3744,28560,3744,35792,22608,35792,22608,49760, + 29744,49760,20528,33232,37952,33232,37952,28384,13680,28384,13680,33072,23504,42672,27792,46800,29512,49392,31232,51984, + 31232,54144,31232,56736,29112,58352,26992,59968,23504,59968,21424,59968,19024,59200,16624,58432,13936,56912,13936,62224, + 16704,63408,19272,64008,21840,64608,24352,64608,30384,64608,34040,61776,37696,58944,37696,54400,37696,51984,36128,49456, + 34560,46928,29488,41952,20528,33232,31072,47600,35056,46704,37160,44408,39264,42112,39264,38720,39264,33440,35232,30600, + 31200,27760,23680,27760,21200,27760,18784,28200,16368,28640,13856,29488,13856,34640,16784,33488,19184,32936,21584,32384, + 23504,32384,27792,32384,30304,34104,32816,35824,32816,38720,32816,41856,30472,43472,28128,45088,23504,45088,20704,45088, + 20704,49680,23840,49680,27792,49680,29880,51024,31968,52368,31968,54912,31968,57296,29928,58632,27888,59968,24176,59968, + 22320,59968,19936,59456,17552,58944,15040,57968,15040,63120,17984,63840,20464,64224,22944,64608,25072,64608,31232,64608, + 34808,62096,38384,59584,38384,55376,38384,52368,36512,50384,34640,48400,31072,47600,32128,69616,40544,69616,26736,53632, + 20192,53632,32128,69616,8288,-18192,8288,47600,16112,47600,16112,18016,16112,11984,18656,8776,21200,5568,25920,5568, + 31328,5568,34064,9184,36800,12800,36800,19840,36800,47600,44672,47600,44672,10880,44672,8368,45352,7184,46032,6000, + 47424,6000,47808,6000,48424,6208,49040,6416,50240,6976,50240,688,48624,-304,47176,-768,45728,-1232,44288,-1232, + 41648,-1232,40056,448,38464,2128,37952,5488,36000,2080,33176,424,30352,-1232,26560,-1232,22656,-1232,19952,384, + 17248,2000,15392,5392,15392,-18192,8288,-18192,24736,63456,43776,63456,43776,-8368,37776,-8368,37776,58224,29664,58224, + 29664,-8368,23680,-8368,23680,27584,14528,28304,9520,33000,4512,37696,4512,45520,4512,53600,10056,58528,15600,63456, + 24736,63456,20784,36720,31488,36720,31488,23760,20784,23760,20784,36720,29744,0,32128,-2640,33256,-4872,34384,-7104, + 34384,-9136,34384,-12928,31832,-14856,29280,-16784,24272,-16784,22352,-16784,20504,-16528,18656,-16272,16784,-15760,16784,-10208, + 18240,-10928,19832,-11248,21424,-11568,23424,-11568,25888,-11568,27184,-10544,28480,-9520,28480,-7568,28480,-6288,27544,-4440, + 26608,-2592,24736,0,29744,0,15392,33072,24096,33072,24096,59040,14624,57296,14624,62224,24352,63872,30224,63872, + 30224,33072,38880,33072,38880,28384,15392,28384,15392,33072,26176,59632,21840,59632,19400,56312,16960,52992,16960,47088, + 16960,41184,19400,37912,21840,34640,26176,34640,30480,34640,32960,37976,35440,41312,35440,47088,35440,52992,33000,56312, + 30560,59632,26176,59632,26176,64608,33408,64608,37720,59848,42032,55088,42032,47088,42032,39136,37736,34400,33440,29664, + 26176,29664,18960,29664,14664,34400,10368,39136,10368,47088,10368,55088,14680,59848,18992,64608,26176,64608,11728,25168, + 40464,25168,40464,19936,11728,19936,11728,25168,27504,45008,47424,27248,47424,23760,27504,6000,27504,14112,40288,25504, + 27504,36896,27504,45008,8208,45008,28128,27248,28128,23760,8208,6000,8208,14112,20992,25504,8208,36896,8208,45008, + 35008,23936,41888,23936,41888,1072,46832,1072,46832,-3648,41888,-3648,41888,-11552,36032,-11552,36032,-3648,19584,-3648, + 19584,1504,35008,23936,36032,18624,24384,1072,36032,1072,36032,18624,4128,39216,12832,39216,12832,65184,3360,63440, + 3360,68368,13088,70016,18960,70016,18960,39216,27616,39216,27616,34528,4128,34528,4128,39216,2160,21424,1152,26016, + 46192,37152,47344,32560,2160,21424,4128,39216,12832,39216,12832,65184,3360,63440,3360,68368,13088,70016,18960,70016, + 18960,39216,27616,39216,27616,34528,4128,34528,4128,39216,2160,21424,1152,26016,46192,37152,47344,32560,2160,21424, + 28720,-6704,46144,-6704,46144,-11552,21872,-11552,21872,-6864,31696,2736,35984,6864,37704,9456,39424,12048,39424,14208, + 39424,16800,37304,18416,35184,20032,31696,20032,29616,20032,27216,19264,24816,18496,22128,16976,22128,22288,24896,23472, + 27464,24072,30032,24672,32544,24672,38576,24672,42232,21840,45888,19008,45888,14464,45888,12048,44320,9520,42752,6992, + 37680,2016,28720,-6704,35008,23936,41888,23936,41888,1072,46832,1072,46832,-3648,41888,-3648,41888,-11552,36032,-11552, + 36032,-3648,19584,-3648,19584,1504,35008,23936,36032,18624,24384,1072,36032,1072,36032,18624,21856,53744,25840,52848, + 27944,50552,30048,48256,30048,44864,30048,39584,26016,36744,21984,33904,14464,33904,11984,33904,9568,34344,7152,34784, + 4640,35632,4640,40784,7568,39632,9968,39080,12368,38528,14288,38528,18576,38528,21088,40248,23600,41968,23600,44864, + 23600,48000,21256,49616,18912,51232,14288,51232,11488,51232,11488,55824,14624,55824,18576,55824,20664,57168,22752,58512, + 22752,61056,22752,63440,20712,64776,18672,66112,14960,66112,13104,66112,10720,65600,8336,65088,5824,64112,5824,69264, + 8768,69984,11248,70368,13728,70752,15856,70752,22016,70752,25592,68240,29168,65728,29168,61520,29168,58512,27296,56528, + 25424,54544,21856,53744,2160,21424,1152,26016,46192,37152,47344,32560,2160,21424,23328,46416,31408,46416,31408,39872, + 31408,35696,30112,32784,28816,29872,25248,26400,21424,22608,18784,20096,17784,18232,16784,16368,16784,14288,16784,10496, + 19568,8160,22352,5824,26992,5824,30304,5824,34088,7288,37872,8752,42032,11648,42032,3648,38032,1232,33976,40, + 29920,-1152,25504,-1152,17600,-1152,12904,2928,8208,7008,8208,13856,8208,17088,9632,19872,11056,22656,15040,26560, + 18784,30224,21632,32944,22440,34728,23248,36512,23248,39184,23248,39232,23248,39392,23328,40368,23328,41184,23328,46416, + 31664,52656,23072,52656,23072,63456,31664,63456,31664,52656,26176,55888,17120,23424,35232,23424,26176,55888,20992,63456, + 31408,63456,50832,0,41952,0,37280,16528,15040,16528,10448,0,1568,0,20992,63456,23840,80208,32208,68992, + 25664,68992,16016,80208,23840,80208,26176,55888,17120,23424,35232,23424,26176,55888,20992,63456,31408,63456,50832,0, + 41952,0,37280,16528,15040,16528,10448,0,1568,0,20992,63456,28560,80208,36464,80208,26736,68992,20192,68992, + 28560,80208,26176,55888,17120,23424,35232,23424,26176,55888,20992,63456,31408,63456,50832,0,41952,0,37280,16528, + 15040,16528,10448,0,1568,0,20992,63456,22192,80304,30224,80304,39184,68992,33232,68992,26176,76560,19168,68992, + 13216,68992,22192,80304,26176,55888,17120,23424,35232,23424,26176,55888,20992,63456,31408,63456,50832,0,41952,0, + 37280,16528,15040,16528,10448,0,1568,0,20992,63456,26016,72176,23584,73584,22528,74176,21864,74408,21200,74640, + 20704,74640,19216,74640,18360,73584,17504,72528,17504,70608,17504,70352,12192,70352,12192,74640,14384,77152,16576,79664, + 20192,79664,21712,79664,23008,79320,24304,78976,26400,77840,28816,76560,29744,76000,30488,75752,31232,75504,31872,75504, + 33200,75504,34048,76584,34896,77664,34896,79408,34896,79664,40208,79664,40128,75408,37960,72880,35792,70352,32208,70352, + 30768,70352,29496,70696,28224,71040,26016,72176,26176,55888,17120,23424,35232,23424,26176,55888,20992,63456,31408,63456, + 50832,0,41952,0,37280,16528,15040,16528,10448,0,1568,0,20992,63456,13552,78976,22192,78976,22192,70352, + 13552,70352,13552,78976,30224,78976,38800,78976,38800,70352,30224,70352,30224,78976,32640,69104,32640,71776,30752,73672, + 28864,75568,26176,75568,23456,75568,21608,73720,19760,71872,19760,69104,19760,66432,21632,64560,23504,62688,26176,62688, + 28864,62688,30752,64560,32640,66432,32640,69104,26176,55712,17120,23424,35232,23424,26176,55712,19760,59456,17296,60864, + 15912,63432,14528,66000,14528,69104,14528,73952,17928,77376,21328,80800,26176,80800,31024,80800,34448,77376,37872,73952, + 37872,69104,37872,66000,36512,63496,35152,60992,32640,59456,50832,0,41952,0,37280,16528,15040,16528,10448,0, + 1568,0,19760,59456,49344,63456,49344,56224,34976,56224,34976,37440,48032,37440,48032,30224,34976,30224,34976,7232, + 50144,7232,50144,0,27072,0,27072,16272,12112,16272,7824,0,0,0,17424,63456,49344,63456,22528,56224, + 13936,23424,27072,23424,27072,56224,22528,56224,33840,0,36224,-2640,37352,-4872,38480,-7104,38480,-9136,38480,-12928, + 35928,-14856,33376,-16784,28368,-16784,26448,-16784,24600,-16528,22752,-16272,20880,-15760,20880,-10208,22336,-10928,23928,-11248, + 25520,-11568,27520,-11568,29984,-11568,31280,-10544,32576,-9520,32576,-7568,32576,-6288,31640,-4440,30704,-2592,28832,0, + 33840,0,45600,2256,42336,512,38888,-360,35440,-1232,31584,-1232,19376,-1232,12640,7392,5904,16016,5904,31664, + 5904,47216,12688,55912,19472,64608,31584,64608,35440,64608,38888,63736,42336,62864,45600,61120,45600,52320,42464,54912, + 38848,56272,35232,57632,31584,57632,23200,57632,19040,51168,14880,44704,14880,31664,14880,18656,19040,12200,23200,5744, + 31584,5744,35312,5744,38904,7104,42496,8464,45600,11056,45600,2256,8368,63456,46032,63456,46032,56224,16960,56224, + 16960,37440,44752,37440,44752,30224,16960,30224,16960,7232,46832,7232,46832,0,8368,0,8368,63456,24864,80208, + 33232,68992,26688,68992,17040,80208,24864,80208,8368,63456,46032,63456,46032,56224,16960,56224,16960,37440,44752,37440, + 44752,30224,16960,30224,16960,7232,46832,7232,46832,0,8368,0,8368,63456,29584,80208,37488,80208,27760,68992, + 21216,68992,29584,80208,8368,63456,46032,63456,46032,56224,16960,56224,16960,37440,44752,37440,44752,30224,16960,30224, + 16960,7232,46832,7232,46832,0,8368,0,8368,63456,23216,80304,31248,80304,40208,68992,34256,68992,27200,76560, + 20192,68992,14240,68992,23216,80304,8368,63456,46032,63456,46032,56224,16960,56224,16960,37440,44752,37440,44752,30224, + 16960,30224,16960,7232,46832,7232,46832,0,8368,0,8368,63456,14576,78976,23216,78976,23216,70352,14576,70352, + 14576,78976,31248,78976,39824,78976,39824,70352,31248,70352,31248,78976,8544,63456,43776,63456,43776,56224,30480,56224, + 30480,7232,43776,7232,43776,0,8544,0,8544,7232,21840,7232,21840,56224,8544,56224,8544,63456,23840,80208, + 32208,68992,25664,68992,16016,80208,23840,80208,8544,63456,43776,63456,43776,56224,30480,56224,30480,7232,43776,7232, + 43776,0,8544,0,8544,7232,21840,7232,21840,56224,8544,56224,8544,63456,28560,80208,36464,80208,26736,68992, + 20192,68992,28560,80208,8544,63456,43776,63456,43776,56224,30480,56224,30480,7232,43776,7232,43776,0,8544,0, + 8544,7232,21840,7232,21840,56224,8544,56224,8544,63456,22192,80304,30224,80304,39184,68992,33232,68992,26176,76560, + 19168,68992,13216,68992,22192,80304,8544,63456,43776,63456,43776,56224,30480,56224,30480,7232,43776,7232,43776,0, + 8544,0,8544,7232,21840,7232,21840,56224,8544,56224,8544,63456,13552,78976,22192,78976,22192,70352,13552,70352, + 13552,78976,30224,78976,38800,78976,38800,70352,30224,70352,30224,78976,18528,63456,33072,63456,39952,55720,46832,47984, + 46832,31664,46832,15424,39928,7712,33024,0,18528,0,5648,0,5648,30128,336,30128,336,36464,5648,36464, + 5648,63456,18528,63456,18528,7056,29360,7056,33656,12392,37952,17728,37952,31664,37952,45728,33680,51064,29408,56400, + 18528,56400,14448,56400,14448,36464,25664,36464,25664,30128,14448,30128,14448,7056,18528,7056,5904,63456,16784,63456, + 38208,11216,38208,63456,46496,63456,46496,0,35616,0,14192,52240,14192,0,5904,0,5904,63456,26016,73200, + 23584,74608,22528,75200,21864,75432,21200,75664,20704,75664,19216,75664,18360,74608,17504,73552,17504,71632,17504,71376, + 12192,71376,12192,75664,14384,78176,16576,80688,20192,80688,21712,80688,23008,80344,24304,80000,26400,78864,28816,77584, + 29744,77024,30488,76776,31232,76528,31872,76528,33200,76528,34048,77608,34896,78688,34896,80432,34896,80688,40208,80688, + 40128,76432,37960,73904,35792,71376,32208,71376,30768,71376,29496,71720,28224,72064,26016,73200,38464,31664,38464,45648, + 35592,51640,32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728,16808,11736,19680,5744, + 26176,5744,32720,5744,35592,11712,38464,17680,38464,31664,47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232, + 15424,-1232,10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608,36928,64608,42176,56448, + 47424,48288,47424,31664,23840,80208,32208,68992,25664,68992,16016,80208,23840,80208,38464,31664,38464,45648,35592,51640, + 32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728,16808,11736,19680,5744,26176,5744, + 32720,5744,35592,11712,38464,17680,38464,31664,47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232,15424,-1232, + 10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608,36928,64608,42176,56448,47424,48288, + 47424,31664,28560,80208,36464,80208,26736,68992,20192,68992,28560,80208,38464,31664,38464,45648,35592,51640,32720,57632, + 26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728,16808,11736,19680,5744,26176,5744,32720,5744, + 35592,11712,38464,17680,38464,31664,47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232,15424,-1232,10200,6888, + 4976,15008,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608,36928,64608,42176,56448,47424,48288,47424,31664, + 22192,80304,30224,80304,39184,68992,33232,68992,26176,76560,19168,68992,13216,68992,22192,80304,38464,31664,38464,45648, + 35592,51640,32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728,16808,11736,19680,5744, + 26176,5744,32720,5744,35592,11712,38464,17680,38464,31664,47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232, + 15424,-1232,10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608,36928,64608,42176,56448, + 47424,48288,47424,31664,26016,72176,23584,73584,22528,74176,21864,74408,21200,74640,20704,74640,19216,74640,18360,73584, + 17504,72528,17504,70608,17504,70352,12192,70352,12192,74640,14384,77152,16576,79664,20192,79664,21712,79664,23008,79320, + 24304,78976,26400,77840,28816,76560,29744,76000,30488,75752,31232,75504,31872,75504,33200,75504,34048,76584,34896,77664, + 34896,79408,34896,79664,40208,79664,40128,75408,37960,72880,35792,70352,32208,70352,30768,70352,29496,70696,28224,71040, + 26016,72176,38464,31664,38464,45648,35592,51640,32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664, + 13936,17728,16808,11736,19680,5744,26176,5744,32720,5744,35592,11712,38464,17680,38464,31664,47424,31664,47424,15088, + 42176,6928,36928,-1232,26176,-1232,15424,-1232,10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608, + 26176,64608,36928,64608,42176,56448,47424,48288,47424,31664,13552,78976,22192,78976,22192,70352,13552,70352,13552,78976, + 30224,78976,38800,78976,38800,70352,30224,70352,30224,78976,6368,12448,21248,27248,6368,42112,11312,47088,26176,32208, + 41104,47088,46032,42112,31152,27248,45936,12448,41008,7392,26176,22272,11392,7392,6368,12448,15760,12880,17040,9568, + 19824,7656,22608,5744,26176,5744,32720,5744,35592,11712,38464,17680,38464,31664,38464,36336,38248,39224,38032,42112, + 37616,44032,15760,12880,14368,20016,35792,50576,34720,54016,32280,55824,29840,57632,26176,57632,19504,57632,16720,51424, + 13936,45216,13936,29152,13936,25760,14048,23608,14160,21456,14368,20016,43856,52992,45600,49552,46512,44072,47424,38592, + 47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232,21040,-1232,17216,488,13392,2208,10800,5648,4720,-2976, + 336,0,7904,10704,6544,13808,5760,19376,4976,24944,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608, + 31072,64608,34744,62864,38416,61120,40848,57712,46752,66256,51008,63120,43856,52992,6240,24352,6240,63456,14880,63456, + 14880,20448,14880,15808,15136,13832,15392,11856,16016,10800,17376,8288,19952,7016,22528,5744,26176,5744,29872,5744, + 32424,7016,34976,8288,36384,10800,37024,11856,37272,13808,37520,15760,37520,20352,37520,63456,46112,63456,46112,24352, + 46112,14624,44904,10520,43696,6416,40720,3744,37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0, + 14496,1232,11648,3744,8720,6368,7480,10560,6240,14752,6240,24352,23840,80208,32208,68992,25664,68992,16016,80208, + 23840,80208,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832,15392,11856,16016,10800,17376,8288, + 19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800,37024,11856,37272,13808,37520,15760, + 37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416,40720,3744,37904,1232,34296,0, + 30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368,7480,10560,6240,14752,6240,24352, + 28560,80208,36464,80208,26736,68992,20192,68992,28560,80208,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808, + 15136,13832,15392,11856,16016,10800,17376,8288,19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288, + 36384,10800,37024,11856,37272,13808,37520,15760,37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520, + 43696,6416,40720,3744,37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744, + 8720,6368,7480,10560,6240,14752,6240,24352,22192,80304,30224,80304,39184,68992,33232,68992,26176,76560,19168,68992, + 13216,68992,22192,80304,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832,15392,11856,16016,10800, + 17376,8288,19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800,37024,11856,37272,13808, + 37520,15760,37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416,40720,3744,37904,1232, + 34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368,7480,10560,6240,14752, + 6240,24352,13552,78976,22192,78976,22192,70352,13552,70352,13552,78976,30224,78976,38800,78976,38800,70352,30224,70352, + 30224,78976,1568,63456,10704,63456,26176,35440,41600,63456,50832,63456,30480,28480,30480,0,21840,0,21840,28480, + 1568,63456,28560,80208,36464,80208,26736,68992,20192,68992,28560,80208,17120,44928,17120,22608,27072,22608,33792,22608, + 37128,25416,40464,28224,40464,33792,40464,39360,37128,42144,33792,44928,27072,44928,17120,44928,8544,63456,17120,63456, + 17120,51984,27920,51984,38976,51984,44248,47520,49520,43056,49520,33792,49520,24480,44248,20040,38976,15600,27920,15600, + 17120,15600,17120,0,8544,0,8544,63456,7984,48320,7984,57376,12448,61752,16912,66128,26096,66128,34768,66128, + 39232,61432,43696,56736,43776,47552,37184,46960,33616,44328,30048,41696,30048,37440,30048,35360,31216,33720,32384,32080, + 35232,30304,37696,28736,44112,24784,46472,21296,48832,17808,48832,12880,48832,6336,44072,2552,39312,-1232,30976,-1232, + 28048,-1232,25184,-704,22320,-176,19504,848,19504,7824,22736,6496,25560,5864,28384,5232,30896,5232,35488,5232, + 38208,7288,40928,9344,40928,12800,40928,15808,39544,17824,38160,19840,33072,22992,30224,24656,26304,27024,24376,29856, + 22448,32688,22448,36048,22448,41488,25888,45120,29328,48752,35952,50240,35872,54784,33296,57208,30720,59632,25920,59632, + 20784,59632,18360,56848,15936,54064,15936,48160,15936,0,7984,0,7984,48320,29840,23920,27248,23920,20400,23920, + 16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312,33408,9800,37104,14288, + 37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800,30832,784,27024,-1232, + 21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048,26640,30048,37152,30048, + 37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824,9136,37616,9136,45440, + 13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776,43648,39648,44328,36528, + 45008,33408,45008,27152,20272,69616,32208,53632,25664,53632,11856,69616,20272,69616,29840,23920,27248,23920,20400,23920, + 16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312,33408,9800,37104,14288, + 37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800,30832,784,27024,-1232, + 21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048,26640,30048,37152,30048, + 37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824,9136,37616,9136,45440, + 13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776,43648,39648,44328,36528, + 45008,33408,45008,27152,32128,69616,40544,69616,26736,53632,20192,53632,32128,69616,29840,23920,27248,23920,20400,23920, + 16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312,33408,9800,37104,14288, + 37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800,30832,784,27024,-1232, + 21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048,26640,30048,37152,30048, + 37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824,9136,37616,9136,45440, + 13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776,43648,39648,44328,36528, + 45008,33408,45008,27152,23072,69616,29328,69616,39776,53632,33872,53632,26176,64048,18528,53632,12624,53632,23072,69616, + 29840,23920,27248,23920,20400,23920,16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312, + 29712,5312,33408,9800,37104,14288,37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056, + 34640,2800,30832,784,27024,-1232,21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928, + 16320,30048,26640,30048,37152,30048,37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968, + 13008,39824,9136,37616,9136,45440,13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264, + 42032,41776,43648,39648,44328,36528,45008,33408,45008,27152,26016,58224,23584,60560,22688,61408,21992,61816,21296,62224, + 20704,62224,19088,62224,18320,60648,17552,59072,17472,55632,12192,55632,12240,61328,14408,64472,16576,67616,20448,67616, + 22096,67616,23456,67024,24816,66432,26400,65024,28816,62688,29712,61840,30408,61432,31104,61024,31664,61024,33328,61024, + 34088,62600,34848,64176,34896,67616,40208,67616,40160,61920,37992,58776,35824,55632,31968,55632,30304,55632,28944,56224, + 27584,56816,26016,58224,29840,23920,27248,23920,20400,23920,16936,21520,13472,19120,13472,14368,13472,10080,16064,7696, + 18656,5312,23248,5312,29712,5312,33408,9800,37104,14288,37152,22192,37152,23920,29840,23920,45008,27152,45008,0, + 37152,0,37152,7056,34640,2800,30832,784,27024,-1232,21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856, + 5648,21808,10984,25928,16320,30048,26640,30048,37152,30048,37152,31280,37104,36976,34256,39544,31408,42112,25168,42112, + 21168,42112,17088,40968,13008,39824,9136,37616,9136,45440,13472,47088,17448,47920,21424,48752,25168,48752,31072,48752, + 35256,47008,39440,45264,42032,41776,43648,39648,44328,36528,45008,33408,45008,27152,13552,65968,22192,65968,22192,57376, + 13552,57376,13552,65968,30224,65968,38800,65968,38800,57376,30224,57376,30224,65968,29840,23920,27248,23920,20400,23920, + 16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312,33408,9800,37104,14288, + 37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800,30832,784,27024,-1232, + 21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048,26640,30048,37152,30048, + 37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824,9136,37616,9136,45440, + 13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776,43648,39648,44328,36528, + 45008,33408,45008,27152,37872,64768,37872,59888,34488,56488,31104,53088,26176,53088,21296,53088,17912,56488,14528,59888, + 14528,64768,14528,69664,17912,73040,21296,76416,26176,76416,31104,76416,34488,73040,37872,69664,37872,64768,32640,64768, + 32640,67440,30768,69312,28896,71184,26176,71184,23456,71184,21608,69336,19760,67488,19760,64768,19760,62000,21608,60152, + 23456,58304,26176,58304,28896,58304,30768,60176,32640,62048,32640,64768,23072,18784,23072,21840,20992,21840,13808,21840, + 11264,19928,8720,18016,8720,13216,8720,9440,10608,7376,12496,5312,16016,5312,19936,5312,21504,8136,23072,10960, + 23072,18784,44032,27920,44032,30128,44032,36544,42392,39376,40752,42208,37056,42208,33360,42208,31744,39312,30128,36416, + 30128,29744,30128,27920,44032,27920,51008,21840,30128,21840,30096,21200,30072,20464,30048,19728,30048,18272,30048,11440, + 32192,8376,34336,5312,39104,5312,42464,5312,45200,6400,47936,7488,50064,9648,50064,2336,47728,592,44920,-320, + 42112,-1232,39104,-1232,34432,-1232,31264,512,28096,2256,26736,5568,25072,2160,22248,464,19424,-1232,15296,-1232, + 8672,-1232,5208,2424,1744,6080,1744,13040,1744,20320,5992,24120,10240,27920,18368,27920,23328,27920,23328,31664, + 23328,36768,21224,39488,19120,42208,15136,42208,12752,42208,9944,41288,7136,40368,4512,38720,4512,45856,7776,47344, + 10584,48048,13392,48752,15936,48752,19808,48752,22440,47408,25072,46064,26640,43344,28048,45936,30856,47344,33664,48752, + 37440,48752,44832,48752,47920,43712,51008,38672,51008,25664,51008,21840,33840,0,36224,-2640,37352,-4872,38480,-7104, + 38480,-9136,38480,-12928,35928,-14856,33376,-16784,28368,-16784,26448,-16784,24600,-16528,22752,-16272,20880,-15760,20880,-10208, + 22336,-10928,23928,-11248,25520,-11568,27520,-11568,29984,-11568,31280,-10544,32576,-9520,32576,-7568,32576,-6288,31640,-4440, + 30704,-2592,28832,0,33840,0,45088,2416,41952,592,38616,-320,35280,-1232,31792,-1232,20736,-1232,14512,5400, + 8288,12032,8288,23760,8288,35488,14512,42120,20736,48752,31792,48752,35232,48752,38504,47856,41776,46960,45088,45088, + 45088,36896,41984,39648,38864,40880,35744,42112,31792,42112,24432,42112,20480,37352,16528,32592,16528,23760,16528,14960, + 20504,10176,24480,5392,31792,5392,35872,5392,39104,6648,42336,7904,45088,10544,45088,2416,47264,25760,47264,21936, + 13392,21936,13392,21680,13392,13904,17448,9648,21504,5392,28896,5392,32640,5392,36720,6584,40800,7776,45440,10208, + 45440,2416,40976,592,36832,-320,32688,-1232,28816,-1232,17728,-1232,11480,5416,5232,12064,5232,23760,5232,35152, + 11352,41952,17472,48752,27664,48752,36768,48752,42016,42584,47264,36416,47264,25760,39440,28048,39264,34928,36184,38520, + 33104,42112,27328,42112,21680,42112,18024,38376,14368,34640,13680,28000,39440,28048,21296,69616,33232,53632,26688,53632, + 12880,69616,21296,69616,47264,25760,47264,21936,13392,21936,13392,21680,13392,13904,17448,9648,21504,5392,28896,5392, + 32640,5392,36720,6584,40800,7776,45440,10208,45440,2416,40976,592,36832,-320,32688,-1232,28816,-1232,17728,-1232, + 11480,5416,5232,12064,5232,23760,5232,35152,11352,41952,17472,48752,27664,48752,36768,48752,42016,42584,47264,36416, + 47264,25760,39440,28048,39264,34928,36184,38520,33104,42112,27328,42112,21680,42112,18024,38376,14368,34640,13680,28000, + 39440,28048,33152,69616,41568,69616,27760,53632,21216,53632,33152,69616,47264,25760,47264,21936,13392,21936,13392,21680, + 13392,13904,17448,9648,21504,5392,28896,5392,32640,5392,36720,6584,40800,7776,45440,10208,45440,2416,40976,592, + 36832,-320,32688,-1232,28816,-1232,17728,-1232,11480,5416,5232,12064,5232,23760,5232,35152,11352,41952,17472,48752, + 27664,48752,36768,48752,42016,42584,47264,36416,47264,25760,39440,28048,39264,34928,36184,38520,33104,42112,27328,42112, + 21680,42112,18024,38376,14368,34640,13680,28000,39440,28048,24096,69616,30352,69616,40800,53632,34896,53632,27200,64048, + 19552,53632,13648,53632,24096,69616,47264,25760,47264,21936,13392,21936,13392,21680,13392,13904,17448,9648,21504,5392, + 28896,5392,32640,5392,36720,6584,40800,7776,45440,10208,45440,2416,40976,592,36832,-320,32688,-1232,28816,-1232, + 17728,-1232,11480,5416,5232,12064,5232,23760,5232,35152,11352,41952,17472,48752,27664,48752,36768,48752,42016,42584, + 47264,36416,47264,25760,39440,28048,39264,34928,36184,38520,33104,42112,27328,42112,21680,42112,18024,38376,14368,34640, + 13680,28000,39440,28048,14576,65968,23216,65968,23216,57376,14576,57376,14576,65968,31248,65968,39824,65968,39824,57376, + 31248,57376,31248,65968,10880,47600,30896,47600,30896,6080,46416,6080,46416,0,7568,0,7568,6080,23072,6080, + 23072,41520,10880,41520,10880,47600,20272,69616,32208,53632,25664,53632,11856,69616,20272,69616,10880,47600,30896,47600, + 30896,6080,46416,6080,46416,0,7568,0,7568,6080,23072,6080,23072,41520,10880,41520,10880,47600,32128,69616, + 40544,69616,26736,53632,20192,53632,32128,69616,10880,47600,30896,47600,30896,6080,46416,6080,46416,0,7568,0, + 7568,6080,23072,6080,23072,41520,10880,41520,10880,47600,23072,69616,29328,69616,39776,53632,33872,53632,26176,64048, + 18528,53632,12624,53632,23072,69616,10880,47600,30896,47600,30896,6080,46416,6080,46416,0,7568,0,7568,6080, + 23072,6080,23072,41520,10880,41520,10880,47600,14576,65968,23216,65968,23216,57376,14576,57376,14576,65968,31248,65968, + 39824,65968,39824,57376,31248,57376,31248,65968,30480,56400,38848,47392,42712,39312,46576,31232,46576,22736,46576,11344, + 41248,5056,35920,-1232,26176,-1232,16496,-1232,11160,5056,5824,11344,5824,22736,5824,34000,11160,40288,16496,46576, + 26016,46576,27456,46576,28200,46536,28944,46496,29584,46416,28176,48320,26648,50216,25120,52112,23504,53968,11648,50064, + 10368,54224,20448,57632,12704,66128,22016,66128,27408,59968,39696,63968,41104,59792,30480,56400,33696,39008,32208,39568, + 30472,39848,28736,40128,26816,40128,20608,40128,17360,35664,14112,31200,14112,22736,14112,14400,17256,9896,20400,5392, + 26176,5392,32000,5392,35144,9896,38288,14400,38288,22736,38288,27408,37056,31728,35824,36048,33696,39008,44672,29488, + 44672,0,36800,0,36800,29488,36800,35920,34552,38936,32304,41952,27504,41952,22016,41952,19064,38064,16112,34176, + 16112,26896,16112,0,8288,0,8288,47600,16112,47600,16112,40464,18192,44544,21760,46648,25328,48752,30224,48752, + 37488,48752,41080,43968,44672,39184,44672,29488,26016,58224,23584,60560,22688,61408,21992,61816,21296,62224,20704,62224, + 19088,62224,18320,60648,17552,59072,17472,55632,12192,55632,12240,61328,14408,64472,16576,67616,20448,67616,22096,67616, + 23456,67024,24816,66432,26400,65024,28816,62688,29712,61840,30408,61432,31104,61024,31664,61024,33328,61024,34088,62600, + 34848,64176,34896,67616,40208,67616,40160,61920,37992,58776,35824,55632,31968,55632,30304,55632,28944,56224,27584,56816, + 26016,58224,26176,42112,20224,42112,17168,37480,14112,32848,14112,23760,14112,14704,17168,10048,20224,5392,26176,5392, + 32176,5392,35232,10048,38288,14704,38288,23760,38288,32848,35232,37480,32176,42112,26176,42112,26176,48752,36080,48752, + 41328,42336,46576,35920,46576,23760,46576,11568,41352,5168,36128,-1232,26176,-1232,16272,-1232,11048,5168,5824,11568, + 5824,23760,5824,35920,11048,42336,16272,48752,26176,48752,20272,69616,32208,53632,25664,53632,11856,69616,20272,69616, + 26176,42112,20224,42112,17168,37480,14112,32848,14112,23760,14112,14704,17168,10048,20224,5392,26176,5392,32176,5392, + 35232,10048,38288,14704,38288,23760,38288,32848,35232,37480,32176,42112,26176,42112,26176,48752,36080,48752,41328,42336, + 46576,35920,46576,23760,46576,11568,41352,5168,36128,-1232,26176,-1232,16272,-1232,11048,5168,5824,11568,5824,23760, + 5824,35920,11048,42336,16272,48752,26176,48752,32128,69616,40544,69616,26736,53632,20192,53632,32128,69616,26176,42112, + 20224,42112,17168,37480,14112,32848,14112,23760,14112,14704,17168,10048,20224,5392,26176,5392,32176,5392,35232,10048, + 38288,14704,38288,23760,38288,32848,35232,37480,32176,42112,26176,42112,26176,48752,36080,48752,41328,42336,46576,35920, + 46576,23760,46576,11568,41352,5168,36128,-1232,26176,-1232,16272,-1232,11048,5168,5824,11568,5824,23760,5824,35920, + 11048,42336,16272,48752,26176,48752,23072,69616,29328,69616,39776,53632,33872,53632,26176,64048,18528,53632,12624,53632, + 23072,69616,26176,42112,20224,42112,17168,37480,14112,32848,14112,23760,14112,14704,17168,10048,20224,5392,26176,5392, + 32176,5392,35232,10048,38288,14704,38288,23760,38288,32848,35232,37480,32176,42112,26176,42112,26176,48752,36080,48752, + 41328,42336,46576,35920,46576,23760,46576,11568,41352,5168,36128,-1232,26176,-1232,16272,-1232,11048,5168,5824,11568, + 5824,23760,5824,35920,11048,42336,16272,48752,26176,48752,26016,58224,23584,60560,22688,61408,21992,61816,21296,62224, + 20704,62224,19088,62224,18320,60648,17552,59072,17472,55632,12192,55632,12240,61328,14408,64472,16576,67616,20448,67616, + 22096,67616,23456,67024,24816,66432,26400,65024,28816,62688,29712,61840,30408,61432,31104,61024,31664,61024,33328,61024, + 34088,62600,34848,64176,34896,67616,40208,67616,40160,61920,37992,58776,35824,55632,31968,55632,30304,55632,28944,56224, + 27584,56816,26016,58224,26176,42112,20224,42112,17168,37480,14112,32848,14112,23760,14112,14704,17168,10048,20224,5392, + 26176,5392,32176,5392,35232,10048,38288,14704,38288,23760,38288,32848,35232,37480,32176,42112,26176,42112,26176,48752, + 36080,48752,41328,42336,46576,35920,46576,23760,46576,11568,41352,5168,36128,-1232,26176,-1232,16272,-1232,11048,5168, + 5824,11568,5824,23760,5824,35920,11048,42336,16272,48752,26176,48752,13552,65968,22192,65968,22192,57376,13552,57376, + 13552,65968,30224,65968,38800,65968,38800,57376,30224,57376,30224,65968,20992,16784,31408,16784,31408,6368,20992,6368, + 20992,16784,20992,48240,31408,48240,31408,37776,20992,37776,20992,48240,3744,30896,48656,30896,48656,23680,3744,23680, + 3744,30896,37280,33152,17600,9392,19120,7392,21272,6392,23424,5392,26176,5392,32176,5392,35232,10048,38288,14704, + 38288,23760,38288,25968,38032,28328,37776,30688,37280,33152,34720,38128,33232,40160,31128,41136,29024,42112,26176,42112, + 20272,42112,17104,37568,13936,33024,13936,24432,13936,22400,14232,19936,14528,17472,15136,14448,34720,38128,9216,7648, + 7568,10672,6696,14816,5824,18960,5824,23760,5824,35920,11048,42336,16272,48752,26176,48752,30432,48752,33792,47584, + 37152,46416,39696,44032,45936,51504,49888,48240,42928,39952,44704,37152,45640,33048,46576,28944,46576,23760,46576,11568, + 41352,5168,36128,-1232,26176,-1232,21808,-1232,18472,24,15136,1280,12704,3824,5904,-4080,2000,-848,9216,7648, + 8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568,30944,5568,33872,9456, + 36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024,31128,896,27536,-1232, + 22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,20272,69616,32208,53632,25664,53632,11856,69616,20272,69616, + 8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568,30944,5568,33872,9456, + 36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024,31128,896,27536,-1232, + 22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,32128,69616,40544,69616,26736,53632,20192,53632,32128,69616, + 8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568,30944,5568,33872,9456, + 36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024,31128,896,27536,-1232, + 22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,23072,69616,29328,69616,39776,53632,33872,53632,26176,64048, + 18528,53632,12624,53632,23072,69616,8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568, + 25408,5568,30944,5568,33872,9456,36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136, + 34720,3024,31128,896,27536,-1232,22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,13552,65968,22192,65968, + 22192,57376,13552,57376,13552,65968,30224,65968,38800,65968,38800,57376,30224,57376,30224,65968,36464,15296,34512,10320, + 31488,2208,27280,-9008,25840,-11472,23888,-14784,20952,-16448,18016,-18112,14112,-18112,7824,-18112,7824,-11568,12448,-11568, + 15888,-11568,17848,-9568,19808,-7568,22816,768,4416,47600,12704,47600,26816,10368,40720,47600,49008,47600,36464,15296, + 32128,69616,40544,69616,26736,53632,20192,53632,32128,69616,15936,6000,15936,-18112,8080,-18112,8080,66592,15936,66592, + 15936,41520,17888,45056,21144,46904,24400,48752,28640,48752,37280,48752,42184,42080,47088,35408,47088,23584,47088,11984, + 42160,5376,37232,-1232,28640,-1232,24304,-1232,21056,616,17808,2464,15936,6000,38880,23760,38880,32848,36016,37480, + 33152,42112,27504,42112,21808,42112,18872,37464,15936,32816,15936,23760,15936,14752,18872,10072,21808,5392,27504,5392, + 33152,5392,36016,10024,38880,14656,38880,23760,36464,15296,34512,10320,31488,2208,27280,-9008,25840,-11472,23888,-14784, + 20952,-16448,18016,-18112,14112,-18112,7824,-18112,7824,-11568,12448,-11568,15888,-11568,17848,-9568,19808,-7568,22816,768, + 4416,47600,12704,47600,26816,10368,40720,47600,49008,47600,36464,15296,13552,65968,22192,65968,22192,57376,13552,57376, + 13552,65968,30224,65968,38800,65968,38800,57376,30224,57376,30224,65968,13472,78208,38880,78208,38880,71904,13472,71904, + 13472,78208,26176,55888,17120,23424,35232,23424,26176,55888,20992,63456,31408,63456,50832,0,41952,0,37280,16528, + 15040,16528,10448,0,1568,0,20992,63456,13472,64848,38880,64848,38880,58560,13472,58560,13472,64848,29840,23920, + 27248,23920,20400,23920,16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312, + 33408,9800,37104,14288,37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800, + 30832,784,27024,-1232,21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048, + 26640,30048,37152,30048,37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824, + 9136,37616,9136,45440,13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776, + 43648,39648,44328,36528,45008,33408,45008,27152,12880,80800,17936,80800,18448,78496,20568,77288,22688,76080,26176,76080, + 29712,76080,31768,77248,33824,78416,34464,80800,39520,80800,39056,75728,35680,73120,32304,70512,26176,70512,20064,70512, + 16704,73104,13344,75696,12880,80800,26176,55888,17120,23424,35232,23424,26176,55888,20992,63456,31408,63456,50832,0, + 41952,0,37280,16528,15040,16528,10448,0,1568,0,20992,63456,12880,68336,17936,68336,18400,65104,20440,63536, + 22480,61968,26176,61968,29792,61968,31832,63536,33872,65104,34464,68336,39520,68336,39056,62256,35696,59200,32336,56144, + 26176,56144,20064,56144,16704,59200,13344,62256,12880,68336,29840,23920,27248,23920,20400,23920,16936,21520,13472,19120, + 13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312,33408,9800,37104,14288,37152,22192,37152,23920, + 29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800,30832,784,27024,-1232,21584,-1232,14320,-1232, + 9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048,26640,30048,37152,30048,37152,31280,37104,36976, + 34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824,9136,37616,9136,45440,13472,47088,17448,47920, + 21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776,43648,39648,44328,36528,45008,33408,45008,27152, + 41904,0,46960,0,45040,-2592,44128,-4464,43216,-6336,43216,-7648,43216,-9600,44384,-10584,45552,-11568,47840,-11568, + 49200,-11568,50520,-11248,51840,-10928,53152,-10288,53152,-15936,51536,-16368,50096,-16576,48656,-16784,47376,-16784,42192,-16784, + 39752,-14936,37312,-13088,37312,-9136,37312,-7104,38432,-4872,39552,-2640,41904,0,26176,55888,17120,23424,35232,23424, + 26176,55888,20992,63456,31408,63456,50832,0,41952,0,37280,16528,15040,16528,10448,0,1568,0,20992,63456, + 36784,0,41840,0,39920,-2592,39008,-4464,38096,-6336,38096,-7648,38096,-9600,39264,-10584,40432,-11568,42720,-11568, + 44080,-11568,45400,-11248,46720,-10928,48032,-10288,48032,-15936,46416,-16368,44976,-16576,43536,-16784,42256,-16784,37072,-16784, + 34632,-14936,32192,-13088,32192,-9136,32192,-7104,33312,-4872,34432,-2640,36784,0,29840,23920,27248,23920,20400,23920, + 16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312,33408,9800,37104,14288, + 37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800,30832,784,27024,-1232, + 21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048,26640,30048,37152,30048, + 37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824,9136,37616,9136,45440, + 13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776,43648,39648,44328,36528, + 45008,33408,45008,27152,45600,2256,42336,512,38888,-360,35440,-1232,31584,-1232,19376,-1232,12640,7392,5904,16016, + 5904,31664,5904,47216,12688,55912,19472,64608,31584,64608,35440,64608,38888,63736,42336,62864,45600,61120,45600,52320, + 42464,54912,38848,56272,35232,57632,31584,57632,23200,57632,19040,51168,14880,44704,14880,31664,14880,18656,19040,12200, + 23200,5744,31584,5744,35312,5744,38904,7104,42496,8464,45600,11056,45600,2256,32656,80208,40560,80208,30832,68992, + 24288,68992,32656,80208,45088,2416,41952,592,38616,-320,35280,-1232,31792,-1232,20736,-1232,14512,5400,8288,12032, + 8288,23760,8288,35488,14512,42120,20736,48752,31792,48752,35232,48752,38504,47856,41776,46960,45088,45088,45088,36896, + 41984,39648,38864,40880,35744,42112,31792,42112,24432,42112,20480,37352,16528,32592,16528,23760,16528,14960,20504,10176, + 24480,5392,31792,5392,35872,5392,39104,6648,42336,7904,45088,10544,45088,2416,36224,69616,44640,69616,30832,53632, + 24288,53632,36224,69616,27312,81328,35344,81328,44304,70016,38352,70016,31296,77584,24288,70016,18336,70016,27312,81328, + 45600,2256,42336,512,38888,-360,35440,-1232,31584,-1232,19376,-1232,12640,7392,5904,16016,5904,31664,5904,47216, + 12688,55912,19472,64608,31584,64608,35440,64608,38888,63736,42336,62864,45600,61120,45600,52320,42464,54912,38848,56272, + 35232,57632,31584,57632,23200,57632,19040,51168,14880,44704,14880,31664,14880,18656,19040,12200,23200,5744,31584,5744, + 35312,5744,38904,7104,42496,8464,45600,11056,45600,2256,27168,69616,33424,69616,43872,53632,37968,53632,30272,64048, + 22624,53632,16720,53632,27168,69616,45088,2416,41952,592,38616,-320,35280,-1232,31792,-1232,20736,-1232,14512,5400, + 8288,12032,8288,23760,8288,35488,14512,42120,20736,48752,31792,48752,35232,48752,38504,47856,41776,46960,45088,45088, + 45088,36896,41984,39648,38864,40880,35744,42112,31792,42112,24432,42112,20480,37352,16528,32592,16528,23760,16528,14960, + 20504,10176,24480,5392,31792,5392,35872,5392,39104,6648,42336,7904,45088,10544,45088,2416,24880,79568,33584,79568, + 33584,70848,24880,70848,24880,79568,45600,2256,42336,512,38888,-360,35440,-1232,31584,-1232,19376,-1232,12640,7392, + 5904,16016,5904,31664,5904,47216,12688,55912,19472,64608,31584,64608,35440,64608,38888,63736,42336,62864,45600,61120, + 45600,52320,42464,54912,38848,56272,35232,57632,31584,57632,23200,57632,19040,51168,14880,44704,14880,31664,14880,18656, + 19040,12200,23200,5744,31584,5744,35312,5744,38904,7104,42496,8464,45600,11056,45600,2256,24880,65968,33584,65968, + 33584,57296,24880,57296,24880,65968,45088,2416,41952,592,38616,-320,35280,-1232,31792,-1232,20736,-1232,14512,5400, + 8288,12032,8288,23760,8288,35488,14512,42120,20736,48752,31792,48752,35232,48752,38504,47856,41776,46960,45088,45088, + 45088,36896,41984,39648,38864,40880,35744,42112,31792,42112,24432,42112,20480,37352,16528,32592,16528,23760,16528,14960, + 20504,10176,24480,5392,31792,5392,35872,5392,39104,6648,42336,7904,45088,10544,45088,2416,45600,2256,42336,512, + 38888,-360,35440,-1232,31584,-1232,19376,-1232,12640,7392,5904,16016,5904,31664,5904,47216,12688,55912,19472,64608, + 31584,64608,35440,64608,38888,63736,42336,62864,45600,61120,45600,52320,42464,54912,38848,56272,35232,57632,31584,57632, + 23200,57632,19040,51168,14880,44704,14880,31664,14880,18656,19040,12200,23200,5744,31584,5744,35312,5744,38904,7104, + 42496,8464,45600,11056,45600,2256,26288,68992,17312,80304,23264,80304,30272,72736,37328,80304,43280,80304,34320,68992, + 26288,68992,45088,2416,41952,592,38616,-320,35280,-1232,31792,-1232,20736,-1232,14512,5400,8288,12032,8288,23760, + 8288,35488,14512,42120,20736,48752,31792,48752,35232,48752,38504,47856,41776,46960,45088,45088,45088,36896,41984,39648, + 38864,40880,35744,42112,31792,42112,24432,42112,20480,37352,16528,32592,16528,23760,16528,14960,20504,10176,24480,5392, + 31792,5392,35872,5392,39104,6648,42336,7904,45088,10544,45088,2416,27168,53632,16720,69616,22624,69616,30272,59200, + 37968,69616,43872,69616,33424,53632,27168,53632,18528,7056,29360,7056,33656,12392,37952,17728,37952,31664,37952,45728, + 33680,51064,29408,56400,18528,56400,14448,56400,14448,7056,18528,7056,18704,63456,33232,63456,40120,55720,47008,47984, + 47008,31664,47008,15424,40120,7712,33232,0,18704,0,5824,0,5824,63456,18704,63456,19120,68992,10144,80304, + 16096,80304,23104,72736,30160,80304,36112,80304,27152,68992,19120,68992,47696,66544,56112,66544,51312,50560,44768,50560, + 47696,66544,36464,41520,36464,66128,44288,66128,44288,0,36464,0,36464,6000,34512,2464,31256,616,28000,-1232, + 23760,-1232,15136,-1232,10184,5464,5232,12160,5232,23920,5232,35536,10200,42144,15168,48752,23760,48752,28048,48752, + 31320,46904,34592,45056,36464,41520,13472,23760,13472,14656,16360,10024,19248,5392,24912,5392,30560,5392,33512,10072, + 36464,14752,36464,23760,36464,32816,33512,37464,30560,42112,24912,42112,19248,42112,16360,37480,13472,32848,13472,23760, + 18528,63456,33072,63456,39952,55720,46832,47984,46832,31664,46832,15424,39928,7712,33024,0,18528,0,5648,0, + 5648,30128,336,30128,336,36464,5648,36464,5648,63456,18528,63456,18528,7056,29360,7056,33656,12392,37952,17728, + 37952,31664,37952,45728,33680,51064,29408,56400,18528,56400,14448,56400,14448,36464,25664,36464,25664,30128,14448,30128, + 14448,7056,18528,7056,36464,41520,36464,54656,23504,54656,23504,59792,36464,59792,36464,66128,44288,66128,44288,59792, + 52400,59792,52400,54656,44288,54656,44288,0,36464,0,36464,6000,34512,2464,31256,616,28000,-1232,23760,-1232, + 15136,-1232,10184,5464,5232,12160,5232,23920,5232,35536,10200,42144,15168,48752,23760,48752,28048,48752,31320,46904, + 34592,45056,36464,41520,13472,23760,13472,14656,16360,10024,19248,5392,24912,5392,30560,5392,33512,10072,36464,14752, + 36464,23760,36464,32816,33512,37464,30560,42112,24912,42112,19248,42112,16360,37480,13472,32848,13472,23760,14496,78208, + 39904,78208,39904,71904,14496,71904,14496,78208,8368,63456,46032,63456,46032,56224,16960,56224,16960,37440,44752,37440, + 44752,30224,16960,30224,16960,7232,46832,7232,46832,0,8368,0,8368,63456,14496,64848,39904,64848,39904,58560, + 14496,58560,14496,64848,47264,25760,47264,21936,13392,21936,13392,21680,13392,13904,17448,9648,21504,5392,28896,5392, + 32640,5392,36720,6584,40800,7776,45440,10208,45440,2416,40976,592,36832,-320,32688,-1232,28816,-1232,17728,-1232, + 11480,5416,5232,12064,5232,23760,5232,35152,11352,41952,17472,48752,27664,48752,36768,48752,42016,42584,47264,36416, + 47264,25760,39440,28048,39264,34928,36184,38520,33104,42112,27328,42112,21680,42112,18024,38376,14368,34640,13680,28000, + 39440,28048,13904,80800,18960,80800,19472,78496,21592,77288,23712,76080,27200,76080,30736,76080,32792,77248,34848,78416, + 35488,80800,40544,80800,40080,75728,36704,73120,33328,70512,27200,70512,21088,70512,17728,73104,14368,75696,13904,80800, + 8368,63456,46032,63456,46032,56224,16960,56224,16960,37440,44752,37440,44752,30224,16960,30224,16960,7232,46832,7232, + 46832,0,8368,0,8368,63456,13904,68336,18960,68336,19424,65104,21464,63536,23504,61968,27200,61968,30816,61968, + 32856,63536,34896,65104,35488,68336,40544,68336,40080,62256,36720,59200,33360,56144,27200,56144,21088,56144,17728,59200, + 14368,62256,13904,68336,47264,25760,47264,21936,13392,21936,13392,21680,13392,13904,17448,9648,21504,5392,28896,5392, + 32640,5392,36720,6584,40800,7776,45440,10208,45440,2416,40976,592,36832,-320,32688,-1232,28816,-1232,17728,-1232, + 11480,5416,5232,12064,5232,23760,5232,35152,11352,41952,17472,48752,27664,48752,36768,48752,42016,42584,47264,36416, + 47264,25760,39440,28048,39264,34928,36184,38520,33104,42112,27328,42112,21680,42112,18024,38376,14368,34640,13680,28000, + 39440,28048,22832,79568,31536,79568,31536,70848,22832,70848,22832,79568,8368,63456,46032,63456,46032,56224,16960,56224, + 16960,37440,44752,37440,44752,30224,16960,30224,16960,7232,46832,7232,46832,0,8368,0,8368,63456,22832,65968, + 31536,65968,31536,57296,22832,57296,22832,65968,47264,25760,47264,21936,13392,21936,13392,21680,13392,13904,17448,9648, + 21504,5392,28896,5392,32640,5392,36720,6584,40800,7776,45440,10208,45440,2416,40976,592,36832,-320,32688,-1232, + 28816,-1232,17728,-1232,11480,5416,5232,12064,5232,23760,5232,35152,11352,41952,17472,48752,27664,48752,36768,48752, + 42016,42584,47264,36416,47264,25760,39440,28048,39264,34928,36184,38520,33104,42112,27328,42112,21680,42112,18024,38376, + 14368,34640,13680,28000,39440,28048,35760,0,40816,0,38896,-2592,37984,-4464,37072,-6336,37072,-7648,37072,-9600, + 38240,-10584,39408,-11568,41696,-11568,43056,-11568,44376,-11248,45696,-10928,47008,-10288,47008,-15936,45392,-16368,43952,-16576, + 42512,-16784,41232,-16784,36048,-16784,33608,-14936,31168,-13088,31168,-9136,31168,-7104,32288,-4872,33408,-2640,35760,0, + 8368,63456,46032,63456,46032,56224,16960,56224,16960,37440,44752,37440,44752,30224,16960,30224,16960,7232,46832,7232, + 46832,0,8368,0,8368,63456,32688,0,37744,0,35824,-2592,34912,-4464,34000,-6336,34000,-7648,34000,-9600, + 35168,-10584,36336,-11568,38624,-11568,39984,-11568,41304,-11248,42624,-10928,43936,-10288,43936,-15936,42320,-16368,40880,-16576, + 39440,-16784,38160,-16784,32976,-16784,30536,-14936,28096,-13088,28096,-9136,28096,-7104,29216,-4872,30336,-2640,32688,0, + 47264,25760,47264,21936,13392,21936,13392,21680,13392,13904,17448,9648,21504,5392,28896,5392,32640,5392,36720,6584, + 40800,7776,45440,10208,45440,2416,40976,592,36832,-320,32688,-1232,28816,-1232,17728,-1232,11480,5416,5232,12064, + 5232,23760,5232,35152,11352,41952,17472,48752,27664,48752,36768,48752,42016,42584,47264,36416,47264,25760,39440,28048, + 39264,34928,36184,38520,33104,42112,27328,42112,21680,42112,18024,38376,14368,34640,13680,28000,39440,28048,8368,63456, + 46032,63456,46032,56224,16960,56224,16960,37440,44752,37440,44752,30224,16960,30224,16960,7232,46832,7232,46832,0, + 8368,0,8368,63456,24240,68992,15264,80304,21216,80304,28224,72736,35280,80304,41232,80304,32272,68992,24240,68992, + 47264,25760,47264,21936,13392,21936,13392,21680,13392,13904,17448,9648,21504,5392,28896,5392,32640,5392,36720,6584, + 40800,7776,45440,10208,45440,2416,40976,592,36832,-320,32688,-1232,28816,-1232,17728,-1232,11480,5416,5232,12064, + 5232,23760,5232,35152,11352,41952,17472,48752,27664,48752,36768,48752,42016,42584,47264,36416,47264,25760,39440,28048, + 39264,34928,36184,38520,33104,42112,27328,42112,21680,42112,18024,38376,14368,34640,13680,28000,39440,28048,24096,53632, + 13648,69616,19552,69616,27200,59200,34896,69616,40800,69616,30352,53632,24096,53632,22192,80304,30224,80304,39184,68992, + 33232,68992,26176,76560,19168,68992,13216,68992,22192,80304,46928,5232,43472,2048,39160,408,34848,-1232,29840,-1232, + 17760,-1232,11048,7416,4336,16064,4336,31664,4336,47216,11136,55912,17936,64608,30048,64608,34048,64608,37704,63480, + 41360,62352,44752,60048,44752,51248,41312,54528,37696,56080,34080,57632,30048,57632,21680,57632,17488,51152,13296,44672, + 13296,31664,13296,18448,17360,12096,21424,5744,29840,5744,32688,5744,34832,6400,36976,7056,38720,8464,38720,25504, + 29488,25504,29488,32560,46928,32560,46928,5232,23072,69616,29328,69616,39776,53632,33872,53632,26176,64048,18528,53632, + 12624,53632,23072,69616,36464,24176,36464,32976,33592,37544,30720,42112,25248,42112,19504,42112,16488,37544,13472,32976, + 13472,24176,13472,15392,16512,10776,19552,6160,25328,6160,30720,6160,33592,10792,36464,15424,36464,24176,44288,3056, + 44288,-7648,39232,-13176,34176,-18704,24352,-18704,21120,-18704,17592,-18104,14064,-17504,10544,-16368,10544,-8624,14704,-10576, + 18104,-11512,21504,-12448,24352,-12448,30688,-12448,33576,-9008,36464,-5568,36464,1920,36464,2256,36464,7568,34592,3568, + 31360,1616,28128,-336,23504,-336,15168,-336,10200,6336,5232,13008,5232,24176,5232,35408,10200,42080,15168,48752, + 23504,48752,28096,48752,31280,46920,34464,45088,36464,41264,36464,47424,44288,47424,44288,3056,14928,80800,19984,80800, + 20496,78496,22616,77288,24736,76080,28224,76080,31760,76080,33816,77248,35872,78416,36512,80800,41568,80800,41104,75728, + 37728,73120,34352,70512,28224,70512,22112,70512,18752,73104,15392,75696,14928,80800,46928,5232,43472,2048,39160,408, + 34848,-1232,29840,-1232,17760,-1232,11048,7416,4336,16064,4336,31664,4336,47216,11136,55912,17936,64608,30048,64608, + 34048,64608,37704,63480,41360,62352,44752,60048,44752,51248,41312,54528,37696,56080,34080,57632,30048,57632,21680,57632, + 17488,51152,13296,44672,13296,31664,13296,18448,17360,12096,21424,5744,29840,5744,32688,5744,34832,6400,36976,7056, + 38720,8464,38720,25504,29488,25504,29488,32560,46928,32560,46928,5232,12880,68336,17936,68336,18400,65104,20440,63536, + 22480,61968,26176,61968,29792,61968,31832,63536,33872,65104,34464,68336,39520,68336,39056,62256,35696,59200,32336,56144, + 26176,56144,20064,56144,16704,59200,13344,62256,12880,68336,36464,24176,36464,32976,33592,37544,30720,42112,25248,42112, + 19504,42112,16488,37544,13472,32976,13472,24176,13472,15392,16512,10776,19552,6160,25328,6160,30720,6160,33592,10792, + 36464,15424,36464,24176,44288,3056,44288,-7648,39232,-13176,34176,-18704,24352,-18704,21120,-18704,17592,-18104,14064,-17504, + 10544,-16368,10544,-8624,14704,-10576,18104,-11512,21504,-12448,24352,-12448,30688,-12448,33576,-9008,36464,-5568,36464,1920, + 36464,2256,36464,7568,34592,3568,31360,1616,28128,-336,23504,-336,15168,-336,10200,6336,5232,13008,5232,24176, + 5232,35408,10200,42080,15168,48752,23504,48752,28096,48752,31280,46920,34464,45088,36464,41264,36464,47424,44288,47424, + 44288,3056,23856,79568,32560,79568,32560,70848,23856,70848,23856,79568,46928,5232,43472,2048,39160,408,34848,-1232, + 29840,-1232,17760,-1232,11048,7416,4336,16064,4336,31664,4336,47216,11136,55912,17936,64608,30048,64608,34048,64608, + 37704,63480,41360,62352,44752,60048,44752,51248,41312,54528,37696,56080,34080,57632,30048,57632,21680,57632,17488,51152, + 13296,44672,13296,31664,13296,18448,17360,12096,21424,5744,29840,5744,32688,5744,34832,6400,36976,7056,38720,8464, + 38720,25504,29488,25504,29488,32560,46928,32560,46928,5232,21808,65968,30512,65968,30512,57296,21808,57296,21808,65968, + 36464,24176,36464,32976,33592,37544,30720,42112,25248,42112,19504,42112,16488,37544,13472,32976,13472,24176,13472,15392, + 16512,10776,19552,6160,25328,6160,30720,6160,33592,10792,36464,15424,36464,24176,44288,3056,44288,-7648,39232,-13176, + 34176,-18704,24352,-18704,21120,-18704,17592,-18104,14064,-17504,10544,-16368,10544,-8624,14704,-10576,18104,-11512,21504,-12448, + 24352,-12448,30688,-12448,33576,-9008,36464,-5568,36464,1920,36464,2256,36464,7568,34592,3568,31360,1616,28128,-336, + 23504,-336,15168,-336,10200,6336,5232,13008,5232,24176,5232,35408,10200,42080,15168,48752,23504,48752,28096,48752, + 31280,46920,34464,45088,36464,41264,36464,47424,44288,47424,44288,3056,26448,-9392,36608,-9392,28672,-24064,22464,-24064, + 26448,-9392,46928,5232,43472,2048,39160,408,34848,-1232,29840,-1232,17760,-1232,11048,7416,4336,16064,4336,31664, + 4336,47216,11136,55912,17936,64608,30048,64608,34048,64608,37704,63480,41360,62352,44752,60048,44752,51248,41312,54528, + 37696,56080,34080,57632,30048,57632,21680,57632,17488,51152,13296,44672,13296,31664,13296,18448,17360,12096,21424,5744, + 29840,5744,32688,5744,34832,6400,36976,7056,38720,8464,38720,25504,29488,25504,29488,32560,46928,32560,46928,5232, + 31120,54416,20960,54416,28912,69072,35104,69072,31120,54416,36464,24176,36464,32976,33592,37544,30720,42112,25248,42112, + 19504,42112,16488,37544,13472,32976,13472,24176,13472,15392,16512,10776,19552,6160,25328,6160,30720,6160,33592,10792, + 36464,15424,36464,24176,44288,3056,44288,-7648,39232,-13176,34176,-18704,24352,-18704,21120,-18704,17592,-18104,14064,-17504, + 10544,-16368,10544,-8624,14704,-10576,18104,-11512,21504,-12448,24352,-12448,30688,-12448,33576,-9008,36464,-5568,36464,1920, + 36464,2256,36464,7568,34592,3568,31360,1616,28128,-336,23504,-336,15168,-336,10200,6336,5232,13008,5232,24176, + 5232,35408,10200,42080,15168,48752,23504,48752,28096,48752,31280,46920,34464,45088,36464,41264,36464,47424,44288,47424, + 44288,3056,22192,80304,30224,80304,39184,68992,33232,68992,26176,76560,19168,68992,13216,68992,22192,80304,5824,63456, + 14448,63456,14448,37440,37952,37440,37952,63456,46576,63456,46576,0,37952,0,37952,30224,14448,30224,14448,0, + 5824,0,5824,63456,22192,80304,30224,80304,39184,68992,33232,68992,26176,76560,19168,68992,13216,68992,22192,80304, + 44672,29488,44672,0,36800,0,36800,29488,36800,35920,34552,38936,32304,41952,27504,41952,22016,41952,19064,38064, + 16112,34176,16112,26896,16112,0,8288,0,8288,66128,16112,66128,16112,40464,18192,44544,21760,46648,25328,48752, + 30224,48752,37488,48752,41080,43968,44672,39184,44672,29488,5824,63456,14400,63456,14400,53936,37952,53936,37952,63456, + 46544,63456,46544,53936,52272,53936,52272,46960,46544,46960,46544,0,37952,0,37952,30224,14400,30224,14400,0, + 5824,0,5824,46960,128,46960,128,53936,5824,53936,5824,63456,14400,46960,14400,37440,37952,37440,37952,46960, + 14400,46960,44672,29488,44672,0,36800,0,36800,29488,36800,35920,34552,38936,32304,41952,27504,41952,22016,41952, + 19064,38064,16112,34176,16112,26896,16112,0,8288,0,8288,53968,2976,53968,2976,60944,8288,60944,8288,66128, + 16112,66128,16112,60944,31104,60944,31104,53968,16112,53968,16112,40464,18192,44544,21760,46648,25328,48752,30224,48752, + 37488,48752,41080,43968,44672,39184,44672,29488,26016,72176,23584,73584,22528,74176,21864,74408,21200,74640,20704,74640, + 19216,74640,18360,73584,17504,72528,17504,70608,17504,70352,12192,70352,12192,74640,14384,77152,16576,79664,20192,79664, + 21712,79664,23008,79320,24304,78976,26400,77840,28816,76560,29744,76000,30488,75752,31232,75504,31872,75504,33200,75504, + 34048,76584,34896,77664,34896,79408,34896,79664,40208,79664,40128,75408,37960,72880,35792,70352,32208,70352,30768,70352, + 29496,70696,28224,71040,26016,72176,8544,63456,43776,63456,43776,56224,30480,56224,30480,7232,43776,7232,43776,0, + 8544,0,8544,7232,21840,7232,21840,56224,8544,56224,8544,63456,26016,58224,23584,60560,22688,61408,21992,61816, + 21296,62224,20704,62224,19088,62224,18320,60648,17552,59072,17472,55632,12192,55632,12240,61328,14408,64472,16576,67616, + 20448,67616,22096,67616,23456,67024,24816,66432,26400,65024,28816,62688,29712,61840,30408,61432,31104,61024,31664,61024, + 33328,61024,34088,62600,34848,64176,34896,67616,40208,67616,40160,61920,37992,58776,35824,55632,31968,55632,30304,55632, + 28944,56224,27584,56816,26016,58224,10880,47600,30896,47600,30896,6080,46416,6080,46416,0,7568,0,7568,6080, + 23072,6080,23072,41520,10880,41520,10880,47600,13472,78208,38880,78208,38880,71904,13472,71904,13472,78208,8544,63456, + 43776,63456,43776,56224,30480,56224,30480,7232,43776,7232,43776,0,8544,0,8544,7232,21840,7232,21840,56224, + 8544,56224,8544,63456,13472,64848,38880,64848,38880,58560,13472,58560,13472,64848,10880,47600,30896,47600,30896,6080, + 46416,6080,46416,0,7568,0,7568,6080,23072,6080,23072,41520,10880,41520,10880,47600,12880,80800,17936,80800, + 18448,78496,20568,77288,22688,76080,26176,76080,29712,76080,31768,77248,33824,78416,34464,80800,39520,80800,39056,75728, + 35680,73120,32304,70512,26176,70512,20064,70512,16704,73104,13344,75696,12880,80800,8544,63456,43776,63456,43776,56224, + 30480,56224,30480,7232,43776,7232,43776,0,8544,0,8544,7232,21840,7232,21840,56224,8544,56224,8544,63456, + 12880,68336,17936,68336,18400,65104,20440,63536,22480,61968,26176,61968,29792,61968,31832,63536,33872,65104,34464,68336, + 39520,68336,39056,62256,35696,59200,32336,56144,26176,56144,20064,56144,16704,59200,13344,62256,12880,68336,10880,47600, + 30896,47600,30896,6080,46416,6080,46416,0,7568,0,7568,6080,23072,6080,23072,41520,10880,41520,10880,47600, + 8544,63456,43776,63456,43776,56224,30480,56224,30480,7232,43776,7232,43776,0,8544,0,8544,7232,21840,7232, + 21840,56224,8544,56224,8544,63456,25520,0,30576,0,28656,-2592,27744,-4464,26832,-6336,26832,-7648,26832,-9600, + 28000,-10584,29168,-11568,31456,-11568,32816,-11568,34136,-11248,35456,-10928,36768,-10288,36768,-15936,35152,-16368,33712,-16576, + 32272,-16784,30992,-16784,25808,-16784,23368,-14936,20928,-13088,20928,-9136,20928,-7104,22048,-4872,23168,-2640,25520,0, + 10880,47600,30896,47600,30896,6080,46416,6080,46416,0,7568,0,7568,6080,23072,6080,23072,41520,10880,41520, + 10880,47600,23072,66128,30896,66128,30896,56224,23072,56224,23072,66128,25520,0,30576,0,28656,-2592,27744,-4464, + 26832,-6336,26832,-7648,26832,-9600,28000,-10584,29168,-11568,31456,-11568,32816,-11568,34136,-11248,35456,-10928,36768,-10288, + 36768,-15936,35152,-16368,33712,-16576,32272,-16784,30992,-16784,25808,-16784,23368,-14936,20928,-13088,20928,-9136,20928,-7104, + 22048,-4872,23168,-2640,25520,0,21808,79568,30512,79568,30512,70848,21808,70848,21808,79568,8544,63456,43776,63456, + 43776,56224,30480,56224,30480,7232,43776,7232,43776,0,8544,0,8544,7232,21840,7232,21840,56224,8544,56224, + 8544,63456,10880,47600,30896,47600,30896,6080,46416,6080,46416,0,7568,0,7568,6080,23072,6080,23072,41520, + 10880,41520,10880,47600,27712,2720,27712,12752,30304,9312,33112,7592,35920,5872,38928,5872,43056,5872,44704,9008, + 46320,12192,46320,20832,46320,56352,35312,56352,35312,63584,52192,63584,52192,20832,52192,8848,49136,3872,46064,-1104, + 38928,-1104,36160,-1104,33408,-176,30688,768,27712,2720,-48,63456,25664,63456,25664,56224,15984,56224,15984,7232, + 25664,7232,25664,0,-48,0,-48,7232,9648,7232,9648,56224,-48,56224,-48,63456,41616,-1312,41616,41056, + 28144,41056,28144,47136,49440,47136,49440,-1312,49440,-9600,45632,-14088,41824,-18576,34816,-18576,24016,-18576,24016,-11936, + 33968,-11936,37792,-11936,39704,-9280,41616,-6624,41616,-1312,41616,65664,49440,65664,49440,55760,41616,55760,41616,65664, + 2560,47600,18960,47600,18960,6080,31712,6080,31712,0,-160,0,-160,6080,12544,6080,12544,41520,2560,41520, + 2560,47600,12544,66128,18960,66128,18960,56224,12544,56224,12544,66128,24240,80304,32272,80304,41232,68992,35280,68992, + 28224,76560,21216,68992,15264,68992,24240,80304,4640,2592,4640,12624,8496,9184,12624,7464,16752,5744,21168,5744, + 27248,5744,29648,8904,32048,12064,32048,20704,32048,56224,15856,56224,15856,63456,40624,63456,40624,20704,40624,8720, + 36144,3744,31664,-1232,21168,-1232,17088,-1232,13048,-296,9008,640,4640,2592,23072,69616,29328,69616,39776,53632, + 33872,53632,26176,64048,18528,53632,12624,53632,23072,69616,25504,-848,25504,41520,12032,41520,12032,47600,33328,47600, + 33328,-848,33328,-9136,29520,-13624,25712,-18112,18704,-18112,7904,-18112,7904,-11472,17856,-11472,21680,-11472,23592,-8816, + 25504,-6160,25504,-848,25424,-8368,35584,-8368,27648,-23040,21440,-23040,25424,-8368,5824,63456,14448,63456,14448,35232, + 41264,63456,51344,63456,26640,37520,52064,0,41696,0,20992,31792,14448,24816,14448,0,5824,0,5824,63456, + 27472,-8368,37632,-8368,29696,-23040,23488,-23040,27472,-8368,10032,66128,18112,66128,18112,27840,38640,47600,48160,47600, + 29408,29664,51088,0,41520,0,23920,24560,18112,19088,18112,0,10032,0,10032,66128,10032,47600,18112,47600, + 18112,27840,38640,47600,48160,47600,29408,29664,51088,0,41520,0,23920,24560,18112,19088,18112,0,10032,0, + 10032,47600,17296,81232,25200,81232,15472,70016,8928,70016,17296,81232,9136,63456,17760,63456,17760,7232,48400,7232, + 48400,0,9136,0,9136,63456,24464,81232,32368,81232,22640,70016,16096,70016,24464,81232,27152,17248,27152,11984, + 29088,9304,31024,6624,34800,6624,43952,6624,43952,0,34048,0,27024,0,23184,4504,19344,9008,19344,17248, + 19344,60480,6800,60480,6800,66592,27152,66592,27152,17248,25424,-8368,35584,-8368,27648,-23040,21440,-23040,25424,-8368, + 9136,63456,17760,63456,17760,7232,48400,7232,48400,0,9136,0,9136,63456,21328,-8368,31488,-8368,23552,-23040, + 17344,-23040,21328,-8368,27152,17248,27152,11984,29088,9304,31024,6624,34800,6624,43952,6624,43952,0,34048,0, + 27024,0,23184,4504,19344,9008,19344,17248,19344,60480,6800,60480,6800,66592,27152,66592,27152,17248,30288,63472, + 38704,63472,33904,47488,27360,47488,30288,63472,9136,63456,17760,63456,17760,7232,48400,7232,48400,0,9136,0, + 9136,63456,40528,66544,48944,66544,44144,50560,37600,50560,40528,66544,27152,17248,27152,11984,29088,9304,31024,6624, + 34800,6624,43952,6624,43952,0,34048,0,27024,0,23184,4504,19344,9008,19344,17248,19344,60480,6800,60480, + 6800,66592,27152,66592,27152,17248,36144,42864,46848,42864,46848,29904,36144,29904,36144,42864,9136,63456,17760,63456, + 17760,7232,48400,7232,48400,0,9136,0,9136,63456,41264,42864,51968,42864,51968,29904,41264,29904,41264,42864, + 27152,17248,27152,11984,29088,9304,31024,6624,34800,6624,43952,6624,43952,0,34048,0,27024,0,23184,4504, + 19344,9008,19344,17248,19344,60480,6800,60480,6800,66592,27152,66592,27152,17248,9136,63456,17760,63456,17760,37280, + 31152,46576,34464,41856,17760,30224,17760,7232,48400,7232,48400,0,9136,0,9136,24272,2976,19760,-432,24432, + 9136,31152,9136,63456,27152,17248,27152,11984,29088,9304,31024,6624,34800,6624,43952,6624,43952,0,34048,0, + 27024,0,23184,4504,19344,9008,19344,17248,19344,29664,6624,20784,3232,25504,19344,36720,19344,60480,6800,60480, + 6800,66592,27152,66592,27152,42032,40544,51344,43952,46672,27152,34976,27152,17248,29584,80208,37488,80208,27760,68992, + 21216,68992,29584,80208,5904,63456,16784,63456,38208,11216,38208,63456,46496,63456,46496,0,35616,0,14192,52240, + 14192,0,5904,0,5904,63456,33152,69616,41568,69616,27760,53632,21216,53632,33152,69616,44672,29488,44672,0, + 36800,0,36800,29488,36800,35920,34552,38936,32304,41952,27504,41952,22016,41952,19064,38064,16112,34176,16112,26896, + 16112,0,8288,0,8288,47600,16112,47600,16112,40464,18192,44544,21760,46648,25328,48752,30224,48752,37488,48752, + 41080,43968,44672,39184,44672,29488,23376,-8368,33536,-8368,25600,-23040,19392,-23040,23376,-8368,5904,63456,16784,63456, + 38208,11216,38208,63456,46496,63456,46496,0,35616,0,14192,52240,14192,0,5904,0,5904,63456,23376,-8368, + 33536,-8368,25600,-23040,19392,-23040,23376,-8368,44672,29488,44672,0,36800,0,36800,29488,36800,35920,34552,38936, + 32304,41952,27504,41952,22016,41952,19064,38064,16112,34176,16112,26896,16112,0,8288,0,8288,47600,16112,47600, + 16112,40464,18192,44544,21760,46648,25328,48752,30224,48752,37488,48752,41080,43968,44672,39184,44672,29488,5904,63456, + 16784,63456,38208,11216,38208,63456,46496,63456,46496,0,35616,0,14192,52240,14192,0,5904,0,5904,63456, + 24240,68992,15264,80304,21216,80304,28224,72736,35280,80304,41232,80304,32272,68992,24240,68992,44672,29488,44672,0, + 36800,0,36800,29488,36800,35920,34552,38936,32304,41952,27504,41952,22016,41952,19064,38064,16112,34176,16112,26896, + 16112,0,8288,0,8288,47600,16112,47600,16112,40464,18192,44544,21760,46648,25328,48752,30224,48752,37488,48752, + 41080,43968,44672,39184,44672,29488,23072,53632,12624,69616,18528,69616,26176,59200,33872,69616,39776,69616,29328,53632, + 23072,53632,49792,29488,49792,0,41920,0,41920,29488,41920,35920,39672,38936,37424,41952,32624,41952,27136,41952, + 24184,38064,21232,34176,21232,26896,21232,0,13408,0,13408,47600,21232,47600,21232,40464,23312,44544,26880,46648, + 30448,48752,35344,48752,42608,48752,46200,43968,49792,39184,49792,29488,5408,66128,16128,66128,16128,57376,7744,41104, + 1248,41104,5408,57376,5408,66128,46112,42464,46112,-848,46112,-9136,42336,-13600,38512,-18112,31488,-18112,22784,-18112, + 22784,-11472,29872,-11472,33696,-11472,35616,-8848,37488,-6208,37488,0,37488,42880,37488,50528,35024,54120,32560,57712, + 27280,57712,21296,57712,18064,53080,14832,48448,14832,39824,14832,0,6240,0,6240,63456,14832,63456,14832,55040, + 17120,59760,21032,62224,24944,64688,30304,64688,38256,64688,42184,59144,46112,53600,46112,42464,44672,29488,44672,-848, + 44672,-9136,40880,-13600,37056,-18112,30048,-18112,21328,-18112,21328,-11472,29200,-11472,33024,-11472,34928,-8848,36800,-6208, + 36800,-848,36800,29488,36800,35920,34552,38936,32304,41952,27504,41952,22016,41952,19040,38080,16112,34176,16112,26896, + 16112,0,8288,0,8288,47600,16112,47600,16112,40464,18192,44544,21760,46672,25328,48752,30224,48752,37488,48752, + 41056,43952,44672,39184,44672,29488,13472,78208,38880,78208,38880,71904,13472,71904,13472,78208,38464,31664,38464,45648, + 35592,51640,32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728,16808,11736,19680,5744, + 26176,5744,32720,5744,35592,11712,38464,17680,38464,31664,47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232, + 15424,-1232,10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608,36928,64608,42176,56448, + 47424,48288,47424,31664,13472,64848,38880,64848,38880,58560,13472,58560,13472,64848,26176,42112,20224,42112,17168,37480, + 14112,32848,14112,23760,14112,14704,17168,10048,20224,5392,26176,5392,32176,5392,35232,10048,38288,14704,38288,23760, + 38288,32848,35232,37480,32176,42112,26176,42112,26176,48752,36080,48752,41328,42336,46576,35920,46576,23760,46576,11568, + 41352,5168,36128,-1232,26176,-1232,16272,-1232,11048,5168,5824,11568,5824,23760,5824,35920,11048,42336,16272,48752, + 26176,48752,12880,80800,17936,80800,18448,78496,20568,77288,22688,76080,26176,76080,29712,76080,31768,77248,33824,78416, + 34464,80800,39520,80800,39056,75728,35680,73120,32304,70512,26176,70512,20064,70512,16704,73104,13344,75696,12880,80800, + 38464,31664,38464,45648,35592,51640,32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728, + 16808,11736,19680,5744,26176,5744,32720,5744,35592,11712,38464,17680,38464,31664,47424,31664,47424,15088,42176,6928, + 36928,-1232,26176,-1232,15424,-1232,10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608, + 36928,64608,42176,56448,47424,48288,47424,31664,12880,68336,17936,68336,18400,65104,20440,63536,22480,61968,26176,61968, + 29792,61968,31832,63536,33872,65104,34464,68336,39520,68336,39056,62256,35696,59200,32336,56144,26176,56144,20064,56144, + 16704,59200,13344,62256,12880,68336,26176,42112,20224,42112,17168,37480,14112,32848,14112,23760,14112,14704,17168,10048, + 20224,5392,26176,5392,32176,5392,35232,10048,38288,14704,38288,23760,38288,32848,35232,37480,32176,42112,26176,42112, + 26176,48752,36080,48752,41328,42336,46576,35920,46576,23760,46576,11568,41352,5168,36128,-1232,26176,-1232,16272,-1232, + 11048,5168,5824,11568,5824,23760,5824,35920,11048,42336,16272,48752,26176,48752,36544,80704,44448,80704,34720,69488, + 28176,69488,36544,80704,22992,80704,30896,80704,21168,69488,14624,69488,22992,80704,38464,31664,38464,45648,35592,51640, + 32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728,16808,11736,19680,5744,26176,5744, + 32720,5744,35592,11712,38464,17680,38464,31664,47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232,15424,-1232, + 10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608,36928,64608,42176,56448,47424,48288, + 47424,31664,22736,69616,29968,69616,20448,53632,14624,53632,22736,69616,36896,69616,44496,69616,33952,53632,28224,53632, + 36896,69616,26176,42112,20224,42112,17168,37480,14112,32848,14112,23760,14112,14704,17168,10048,20224,5392,26176,5392, + 32176,5392,35232,10048,38288,14704,38288,23760,38288,32848,35232,37480,32176,42112,26176,42112,26176,48752,36080,48752, + 41328,42336,46576,35920,46576,23760,46576,11568,41352,5168,36128,-1232,26176,-1232,16272,-1232,11048,5168,5824,11568, + 5824,23760,5824,35920,11048,42336,16272,48752,26176,48752,51728,7232,51728,0,26016,0,13472,0,8264,7080, + 3056,14160,3056,31664,3056,49392,8240,56424,13424,63456,26016,63456,51248,63456,51248,56224,36048,56224,36048,37440, + 49984,37440,49984,30224,36048,30224,36048,7232,51728,7232,25072,56224,17552,56224,14600,51336,11648,46448,11648,31664, + 11648,16960,14600,12096,17552,7232,25072,7232,27664,7232,27664,56224,25072,56224,44496,27920,44496,28384,44536,29192, + 44576,30000,44576,30384,44576,36544,42880,39416,41184,42288,37520,42288,33824,42288,32192,39376,30560,36464,30560,29744, + 30560,27920,44496,27920,15856,5232,20192,5232,21936,8800,23680,12368,23680,22528,23680,34896,21976,38592,20272,42288, + 15856,42288,11472,42288,9776,38736,8080,35184,8080,23760,8080,12320,9776,8776,11472,5232,15856,5232,51424,21840, + 30560,21840,30560,18272,30560,11344,32664,8288,34768,5232,39520,5232,42928,5232,45712,6360,48496,7488,50496,9648, + 50496,2336,47984,512,45328,-360,42672,-1232,39520,-1232,35360,-1232,32240,192,29120,1616,27072,4416,24864,1536, + 22144,152,19424,-1232,15856,-1232,7824,-1232,4208,4632,592,10496,592,23760,592,37024,4208,42888,7824,48752, + 15856,48752,19632,48752,22352,47432,25072,46112,27072,43344,28640,45984,31408,47368,34176,48752,37872,48752,45312,48752, + 48368,43712,51424,38672,51424,25664,51424,21840,25488,80208,33392,80208,23664,68992,17120,68992,25488,80208,32304,29968, + 35616,29120,37952,26760,40288,24400,43776,17344,52400,0,43184,0,35616,16016,32336,22864,29728,24840,27120,26816, + 22912,26816,14704,26816,14704,0,6080,0,6080,63456,23760,63456,34208,63456,39776,58736,45344,54016,45344,45088, + 45344,38800,41928,34824,38512,30848,32304,29968,14704,56400,14704,33872,24096,33872,30256,33872,33272,36632,36288,39392, + 36288,45088,36288,50576,33080,53488,29872,56400,23760,56400,14704,56400,41344,69616,49760,69616,35952,53632,29408,53632, + 41344,69616,49088,37776,46576,39744,43984,40632,41392,41520,38288,41520,30976,41520,27112,36928,23248,32336,23248,23680, + 23248,0,15392,0,15392,47600,23248,47600,23248,38288,25200,43344,29264,46048,33328,48752,38880,48752,41776,48752, + 44288,48024,46800,47296,49088,45776,49088,37776,26448,-8368,36608,-8368,28672,-23040,22464,-23040,26448,-8368,32304,29968, + 35616,29120,37952,26760,40288,24400,43776,17344,52400,0,43184,0,35616,16016,32336,22864,29728,24840,27120,26816, + 22912,26816,14704,26816,14704,0,6080,0,6080,63456,23760,63456,34208,63456,39776,58736,45344,54016,45344,45088, + 45344,38800,41928,34824,38512,30848,32304,29968,14704,56400,14704,33872,24096,33872,30256,33872,33272,36632,36288,39392, + 36288,45088,36288,50576,33080,53488,29872,56400,23760,56400,14704,56400,16208,-8368,26368,-8368,18432,-23040,12224,-23040, + 16208,-8368,49088,37776,46576,39744,43984,40632,41392,41520,38288,41520,30976,41520,27112,36928,23248,32336,23248,23680, + 23248,0,15392,0,15392,47600,23248,47600,23248,38288,25200,43344,29264,46048,33328,48752,38880,48752,41776,48752, + 44288,48024,46800,47296,49088,45776,49088,37776,32304,29968,35616,29120,37952,26760,40288,24400,43776,17344,52400,0, + 43184,0,35616,16016,32336,22864,29728,24840,27120,26816,22912,26816,14704,26816,14704,0,6080,0,6080,63456, + 23760,63456,34208,63456,39776,58736,45344,54016,45344,45088,45344,38800,41928,34824,38512,30848,32304,29968,14704,56400, + 14704,33872,24096,33872,30256,33872,33272,36632,36288,39392,36288,45088,36288,50576,33080,53488,29872,56400,23760,56400, + 14704,56400,20144,68992,11168,80304,17120,80304,24128,72736,31184,80304,37136,80304,28176,68992,20144,68992,49088,37776, + 46576,39744,43984,40632,41392,41520,38288,41520,30976,41520,27112,36928,23248,32336,23248,23680,23248,0,15392,0, + 15392,47600,23248,47600,23248,38288,25200,43344,29264,46048,33328,48752,38880,48752,41776,48752,44288,48024,46800,47296, + 49088,45776,49088,37776,27168,53632,16720,69616,22624,69616,30272,59200,37968,69616,43872,69616,33424,53632,27168,53632, + 29584,80208,37488,80208,27760,68992,21216,68992,29584,80208,43008,61280,43008,52576,39104,55088,35168,56360,31232,57632, + 27248,57632,21168,57632,17640,54808,14112,51984,14112,47168,14112,42960,16424,40752,18736,38544,25072,37056,29584,36048, + 38512,33952,42592,29496,46672,25040,46672,17344,46672,8288,41056,3528,35440,-1232,24736,-1232,20272,-1232,15768,-272, + 11264,688,6720,2592,6720,11728,11600,8624,15960,7184,20320,5744,24736,5744,31232,5744,34848,8656,38464,11568, + 38464,16784,38464,21552,35976,24056,33488,26560,27328,27920,22736,28992,13904,30976,9904,35016,5904,39056,5904,45856, + 5904,54352,11624,59480,17344,64608,26816,64608,30480,64608,34512,63776,38544,62944,43008,61280,33152,69616,41568,69616, + 27760,53632,21216,53632,33152,69616,41360,45936,41360,38288,38000,40240,34600,41224,31200,42208,27664,42208,22352,42208, + 19736,40488,17120,38768,17120,35232,17120,32048,19080,30472,21040,28896,28816,27408,31968,26816,37776,25712,40776,22400, + 43776,19088,43776,13776,43776,6720,38760,2744,33744,-1232,24816,-1232,21296,-1232,17424,-488,13552,256,9056,1744, + 9056,9824,13424,7568,17424,6440,21424,5312,24992,5312,30176,5312,33024,7416,35872,9520,35872,13296,35872,18736, + 25456,20832,25120,20912,22192,21504,15424,22816,12320,25944,9216,29072,9216,34464,9216,41312,13848,45032,18480,48752, + 27072,48752,30896,48752,34424,48048,37952,47344,41360,45936,22192,80304,30224,80304,39184,68992,33232,68992,26176,76560, + 19168,68992,13216,68992,22192,80304,43008,61280,43008,52576,39104,55088,35168,56360,31232,57632,27248,57632,21168,57632, + 17640,54808,14112,51984,14112,47168,14112,42960,16424,40752,18736,38544,25072,37056,29584,36048,38512,33952,42592,29496, + 46672,25040,46672,17344,46672,8288,41056,3528,35440,-1232,24736,-1232,20272,-1232,15768,-272,11264,688,6720,2592, + 6720,11728,11600,8624,15960,7184,20320,5744,24736,5744,31232,5744,34848,8656,38464,11568,38464,16784,38464,21552, + 35976,24056,33488,26560,27328,27920,22736,28992,13904,30976,9904,35016,5904,39056,5904,45856,5904,54352,11624,59480, + 17344,64608,26816,64608,30480,64608,34512,63776,38544,62944,43008,61280,23072,69616,29328,69616,39776,53632,33872,53632, + 26176,64048,18528,53632,12624,53632,23072,69616,41360,45936,41360,38288,38000,40240,34600,41224,31200,42208,27664,42208, + 22352,42208,19736,40488,17120,38768,17120,35232,17120,32048,19080,30472,21040,28896,28816,27408,31968,26816,37776,25712, + 40776,22400,43776,19088,43776,13776,43776,6720,38760,2744,33744,-1232,24816,-1232,21296,-1232,17424,-488,13552,256, + 9056,1744,9056,9824,13424,7568,17424,6440,21424,5312,24992,5312,30176,5312,33024,7416,35872,9520,35872,13296, + 35872,18736,25456,20832,25120,20912,22192,21504,15424,22816,12320,25944,9216,29072,9216,34464,9216,41312,13848,45032, + 18480,48752,27072,48752,30896,48752,34424,48048,37952,47344,41360,45936,29744,0,32128,-2640,33256,-4872,34384,-7104, + 34384,-9136,34384,-12928,31832,-14856,29280,-16784,24272,-16784,22352,-16784,20504,-16528,18656,-16272,16784,-15760,16784,-10208, + 18240,-10928,19832,-11248,21424,-11568,23424,-11568,25888,-11568,27184,-10544,28480,-9520,28480,-7568,28480,-6288,27544,-4440, + 26608,-2592,24736,0,29744,0,43008,61280,43008,52576,39104,55088,35168,56360,31232,57632,27248,57632,21168,57632, + 17640,54808,14112,51984,14112,47168,14112,42960,16424,40752,18736,38544,25072,37056,29584,36048,38512,33952,42592,29496, + 46672,25040,46672,17344,46672,8288,41056,3528,35440,-1232,24736,-1232,20272,-1232,15768,-272,11264,688,6720,2592, + 6720,11728,11600,8624,15960,7184,20320,5744,24736,5744,31232,5744,34848,8656,38464,11568,38464,16784,38464,21552, + 35976,24056,33488,26560,27328,27920,22736,28992,13904,30976,9904,35016,5904,39056,5904,45856,5904,54352,11624,59480, + 17344,64608,26816,64608,30480,64608,34512,63776,38544,62944,43008,61280,29744,0,32128,-2640,33256,-4872,34384,-7104, + 34384,-9136,34384,-12928,31832,-14856,29280,-16784,24272,-16784,22352,-16784,20504,-16528,18656,-16272,16784,-15760,16784,-10208, + 18240,-10928,19832,-11248,21424,-11568,23424,-11568,25888,-11568,27184,-10544,28480,-9520,28480,-7568,28480,-6288,27544,-4440, + 26608,-2592,24736,0,29744,0,41360,45936,41360,38288,38000,40240,34600,41224,31200,42208,27664,42208,22352,42208, + 19736,40488,17120,38768,17120,35232,17120,32048,19080,30472,21040,28896,28816,27408,31968,26816,37776,25712,40776,22400, + 43776,19088,43776,13776,43776,6720,38760,2744,33744,-1232,24816,-1232,21296,-1232,17424,-488,13552,256,9056,1744, + 9056,9824,13424,7568,17424,6440,21424,5312,24992,5312,30176,5312,33024,7416,35872,9520,35872,13296,35872,18736, + 25456,20832,25120,20912,22192,21504,15424,22816,12320,25944,9216,29072,9216,34464,9216,41312,13848,45032,18480,48752, + 27072,48752,30896,48752,34424,48048,37952,47344,41360,45936,43008,61280,43008,52576,39104,55088,35168,56360,31232,57632, + 27248,57632,21168,57632,17640,54808,14112,51984,14112,47168,14112,42960,16424,40752,18736,38544,25072,37056,29584,36048, + 38512,33952,42592,29496,46672,25040,46672,17344,46672,8288,41056,3528,35440,-1232,24736,-1232,20272,-1232,15768,-272, + 11264,688,6720,2592,6720,11728,11600,8624,15960,7184,20320,5744,24736,5744,31232,5744,34848,8656,38464,11568, + 38464,16784,38464,21552,35976,24056,33488,26560,27328,27920,22736,28992,13904,30976,9904,35016,5904,39056,5904,45856, + 5904,54352,11624,59480,17344,64608,26816,64608,30480,64608,34512,63776,38544,62944,43008,61280,22192,68992,13216,80304, + 19168,80304,26176,72736,33232,80304,39184,80304,30224,68992,22192,68992,41360,45936,41360,38288,38000,40240,34600,41224, + 31200,42208,27664,42208,22352,42208,19736,40488,17120,38768,17120,35232,17120,32048,19080,30472,21040,28896,28816,27408, + 31968,26816,37776,25712,40776,22400,43776,19088,43776,13776,43776,6720,38760,2744,33744,-1232,24816,-1232,21296,-1232, + 17424,-488,13552,256,9056,1744,9056,9824,13424,7568,17424,6440,21424,5312,24992,5312,30176,5312,33024,7416, + 35872,9520,35872,13296,35872,18736,25456,20832,25120,20912,22192,21504,15424,22816,12320,25944,9216,29072,9216,34464, + 9216,41312,13848,45032,18480,48752,27072,48752,30896,48752,34424,48048,37952,47344,41360,45936,23072,53632,12624,69616, + 18528,69616,26176,59200,33872,69616,39776,69616,29328,53632,23072,53632,29744,0,32128,-2640,33256,-4872,34384,-7104, + 34384,-9136,34384,-12928,31832,-14856,29280,-16784,24272,-16784,22352,-16784,20504,-16528,18656,-16272,16784,-15760,16784,-10208, + 18240,-10928,19832,-11248,21424,-11568,23424,-11568,25888,-11568,27184,-10544,28480,-9520,28480,-7568,28480,-6288,27544,-4440, + 26608,-2592,24736,0,29744,0,2000,63456,50400,63456,50400,56224,30560,56224,30560,0,21936,0,21936,56224, + 2000,56224,2000,63456,34864,0,37248,-2640,38376,-4872,39504,-7104,39504,-9136,39504,-12928,36952,-14856,34400,-16784, + 29392,-16784,27472,-16784,25624,-16528,23776,-16272,21904,-15760,21904,-10208,23360,-10928,24952,-11248,26544,-11568,28544,-11568, + 31008,-11568,32304,-10544,33600,-9520,33600,-7568,33600,-6288,32664,-4440,31728,-2592,29856,0,34864,0,26096,61120, + 26096,47600,43856,47600,43856,41520,26096,41520,26096,15680,26096,10416,28096,8328,30096,6240,35056,6240,43856,6240, + 43856,0,34304,0,25504,0,21888,3528,18272,7056,18272,15680,18272,41520,5568,41520,5568,47600,18272,47600, + 18272,61120,26096,61120,2000,63456,50400,63456,50400,56224,30560,56224,30560,0,21936,0,21936,56224,2000,56224, + 2000,63456,22192,68992,13216,80304,19168,80304,26176,72736,33232,80304,39184,80304,30224,68992,22192,68992,26096,61120, + 26096,47600,43856,47600,43856,41520,26096,41520,26096,15680,26096,10416,28096,8328,30096,6240,35056,6240,43856,6240, + 43856,0,34304,0,25504,0,21888,3528,18272,7056,18272,15680,18272,41520,5568,41520,5568,47600,18272,47600, + 18272,61120,26096,61120,34384,70640,42800,70640,38000,54656,31456,54656,34384,70640,2000,63456,50400,63456,50400,56224, + 30560,56224,30560,31744,41824,31744,41824,24528,30560,24528,30560,0,21936,0,21936,24528,10672,24528,10672,31744, + 21936,31744,21936,56224,2000,56224,2000,63456,26096,61120,26096,47600,43856,47600,43856,41520,26096,41520,26096,31616, + 35824,31616,35824,25584,26096,25584,26096,15680,26096,10416,28096,8328,30096,6240,35056,6240,43856,6240,43856,0, + 34304,0,25504,0,21888,3528,18272,7056,18272,15680,18272,25584,8544,25584,8544,31616,18272,31616,18272,41520, + 5568,41520,5568,47600,18272,47600,18272,61120,26096,61120,26016,72176,23584,73584,22528,74176,21864,74408,21200,74640, + 20704,74640,19216,74640,18360,73584,17504,72528,17504,70608,17504,70352,12192,70352,12192,74640,14384,77152,16576,79664, + 20192,79664,21712,79664,23008,79320,24304,78976,26400,77840,28816,76560,29744,76000,30488,75752,31232,75504,31872,75504, + 33200,75504,34048,76584,34896,77664,34896,79408,34896,79664,40208,79664,40128,75408,37960,72880,35792,70352,32208,70352, + 30768,70352,29496,70696,28224,71040,26016,72176,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832, + 15392,11856,16016,10800,17376,8288,19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800, + 37024,11856,37272,13808,37520,15760,37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416, + 40720,3744,37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368, + 7480,10560,6240,14752,6240,24352,26016,58224,23584,60560,22688,61408,21992,61816,21296,62224,20704,62224,19088,62224, + 18320,60648,17552,59072,17472,55632,12192,55632,12240,61328,14408,64472,16576,67616,20448,67616,22096,67616,23456,67024, + 24816,66432,26400,65024,28816,62688,29712,61840,30408,61432,31104,61024,31664,61024,33328,61024,34088,62600,34848,64176, + 34896,67616,40208,67616,40160,61920,37992,58776,35824,55632,31968,55632,30304,55632,28944,56224,27584,56816,26016,58224, + 8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568,30944,5568,33872,9456, + 36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024,31128,896,27536,-1232, + 22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,13472,78208,38880,78208,38880,71904,13472,71904,13472,78208, + 6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832,15392,11856,16016,10800,17376,8288,19952,7016, + 22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800,37024,11856,37272,13808,37520,15760,37520,20352, + 37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416,40720,3744,37904,1232,34296,0,30688,-1232, + 26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368,7480,10560,6240,14752,6240,24352,13472,64848, + 38880,64848,38880,58560,13472,58560,13472,64848,8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584, + 20656,5568,25408,5568,30944,5568,33872,9456,36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0, + 36800,7136,34720,3024,31128,896,27536,-1232,22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,12880,80800, + 17936,80800,18448,78496,20568,77288,22688,76080,26176,76080,29712,76080,31768,77248,33824,78416,34464,80800,39520,80800, + 39056,75728,35680,73120,32304,70512,26176,70512,20064,70512,16704,73104,13344,75696,12880,80800,6240,24352,6240,63456, + 14880,63456,14880,20448,14880,15808,15136,13832,15392,11856,16016,10800,17376,8288,19952,7016,22528,5744,26176,5744, + 29872,5744,32424,7016,34976,8288,36384,10800,37024,11856,37272,13808,37520,15760,37520,20352,37520,63456,46112,63456, + 46112,24352,46112,14624,44904,10520,43696,6416,40720,3744,37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232, + 18104,0,14496,1232,11648,3744,8720,6368,7480,10560,6240,14752,6240,24352,12880,68336,17936,68336,18400,65104, + 20440,63536,22480,61968,26176,61968,29792,61968,31832,63536,33872,65104,34464,68336,39520,68336,39056,62256,35696,59200, + 32336,56144,26176,56144,20064,56144,16704,59200,13344,62256,12880,68336,8288,18016,8288,47520,16112,47520,16112,18016, + 16112,11600,18384,8584,20656,5568,25408,5568,30944,5568,33872,9456,36800,13344,36800,20608,36800,47520,44672,47520, + 44672,0,36800,0,36800,7136,34720,3024,31128,896,27536,-1232,22736,-1232,15424,-1232,11856,3552,8288,8336, + 8288,18016,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832,15392,11856,16016,10800,17376,8288, + 19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800,37024,11856,37272,13808,37520,15760, + 37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416,40720,3744,37904,1232,34296,0, + 30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368,7480,10560,6240,14752,6240,24352, + 37872,79104,37872,74224,34488,70824,31104,67424,26176,67424,21296,67424,17912,70824,14528,74224,14528,79104,14528,84000, + 17912,87376,21296,90752,26176,90752,31104,90752,34488,87376,37872,84000,37872,79104,32640,79104,32640,81776,30768,83648, + 28896,85520,26176,85520,23456,85520,21608,83672,19760,81824,19760,79104,19760,76336,21608,74488,23456,72640,26176,72640, + 28896,72640,30768,74512,32640,76384,32640,79104,8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584, + 20656,5568,25408,5568,30944,5568,33872,9456,36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0, + 36800,7136,34720,3024,31128,896,27536,-1232,22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,38896,62720, + 38896,57840,35512,54440,32128,51040,27200,51040,22320,51040,18936,54440,15552,57840,15552,62720,15552,67616,18936,70992, + 22320,74368,27200,74368,32128,74368,35512,70992,38896,67616,38896,62720,33664,62720,33664,65392,31792,67264,29920,69136, + 27200,69136,24480,69136,22632,67288,20784,65440,20784,62720,20784,59952,22632,58104,24480,56256,27200,56256,29920,56256, + 31792,58128,33664,60000,33664,62720,36544,80704,44448,80704,34720,69488,28176,69488,36544,80704,22992,80704,30896,80704, + 21168,69488,14624,69488,22992,80704,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832,15392,11856, + 16016,10800,17376,8288,19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800,37024,11856, + 37272,13808,37520,15760,37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416,40720,3744, + 37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368,7480,10560, + 6240,14752,6240,24352,22736,69616,29968,69616,20448,53632,14624,53632,22736,69616,36896,69616,44496,69616,33952,53632, + 28224,53632,36896,69616,8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568, + 30944,5568,33872,9456,36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024, + 31128,896,27536,-1232,22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,6240,24352,6240,63456,14880,63456, + 14880,20448,14880,15808,15136,13832,15392,11856,16016,10800,17376,8288,19952,7016,22528,5744,26176,5744,29872,5744, + 32424,7016,34976,8288,36384,10800,37024,11856,37272,13808,37520,15760,37520,20352,37520,63456,46112,63456,46112,24352, + 46112,14624,44904,10520,43696,6416,40720,3744,37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0, + 14496,1232,11648,3744,8720,6368,7480,10560,6240,14752,6240,24352,23472,-1024,28528,-1024,26608,-3616,25696,-5488, + 24784,-7360,24784,-8672,24784,-10624,25952,-11608,27120,-12592,29408,-12592,30768,-12592,32088,-12272,33408,-11952,34720,-11312, + 34720,-16960,33104,-17392,31664,-17600,30224,-17808,28944,-17808,23760,-17808,21320,-15960,18880,-14112,18880,-10160,18880,-8128, + 20000,-5896,21120,-3664,23472,-1024,8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568, + 25408,5568,30944,5568,33872,9456,36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136, + 34720,3024,31128,896,27536,-1232,22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,39856,0,44912,0, + 42992,-2592,42080,-4464,41168,-6336,41168,-7648,41168,-9600,42336,-10584,43504,-11568,45792,-11568,47152,-11568,48472,-11248, + 49792,-10928,51104,-10288,51104,-15936,49488,-16368,48048,-16576,46608,-16784,45328,-16784,40144,-16784,37704,-14936,35264,-13088, + 35264,-9136,35264,-7104,36384,-4872,37504,-2640,39856,0,22192,81328,30224,81328,39184,70016,33232,70016,26176,77584, + 19168,70016,13216,70016,22192,81328,0,63456,8368,63456,14448,11936,21680,46032,30640,46032,37952,11856,44032,63456, + 52400,63456,42928,0,34800,0,26176,37696,17600,0,9472,0,0,63456,23072,69616,29328,69616,39776,53632, + 33872,53632,26176,64048,18528,53632,12624,53632,23072,69616,0,47600,7728,47600,16016,9136,22816,33696,29488,33696, + 36384,9136,44672,47600,52400,47600,41264,0,33792,0,26176,26096,18608,0,11136,0,0,47600,22192,81328, + 30224,81328,39184,70016,33232,70016,26176,77584,19168,70016,13216,70016,22192,81328,1568,63456,10704,63456,26176,35440, + 41600,63456,50832,63456,30480,28480,30480,0,21840,0,21840,28480,1568,63456,24096,69616,30352,69616,40800,53632, + 34896,53632,27200,64048,19552,53632,13648,53632,24096,69616,36464,15296,34512,10320,31488,2208,27280,-9008,25840,-11472, + 23888,-14784,20952,-16448,18016,-18112,14112,-18112,7824,-18112,7824,-11568,12448,-11568,15888,-11568,17848,-9568,19808,-7568, + 22816,768,4416,47600,12704,47600,26816,10368,40720,47600,49008,47600,36464,15296,1568,63456,10704,63456,26176,35440, + 41600,63456,50832,63456,30480,28480,30480,0,21840,0,21840,28480,1568,63456,13552,78976,22192,78976,22192,70352, + 13552,70352,13552,78976,30224,78976,38800,78976,38800,70352,30224,70352,30224,78976,29584,80208,37488,80208,27760,68992, + 21216,68992,29584,80208,7568,63456,48752,63456,48752,56912,15600,7232,49680,7232,49680,0,6624,0,6624,6544, + 38880,56224,7568,56224,7568,63456,36224,69616,44640,69616,30832,53632,24288,53632,36224,69616,9648,47680,44208,47680, + 44208,40544,16880,6368,44208,6368,44208,0,8624,0,8624,7232,35952,41440,9648,41440,9648,47680,23856,79568, + 32560,79568,32560,70848,23856,70848,23856,79568,7568,63456,48752,63456,48752,56912,15600,7232,49680,7232,49680,0, + 6624,0,6624,6544,38880,56224,7568,56224,7568,63456,21808,65968,30512,65968,30512,57296,21808,57296,21808,65968, + 9648,47680,44208,47680,44208,40544,16880,6368,44208,6368,44208,0,8624,0,8624,7232,35952,41440,9648,41440, + 9648,47680,7568,63456,48752,63456,48752,56912,15600,7232,49680,7232,49680,0,6624,0,6624,6544,38880,56224, + 7568,56224,7568,63456,22192,68992,13216,80304,19168,80304,26176,72736,33232,80304,39184,80304,30224,68992,22192,68992, + 9648,47680,44208,47680,44208,40544,16880,6368,44208,6368,44208,0,8624,0,8624,7232,35952,41440,9648,41440, + 9648,47680,23072,53632,12624,69616,18528,69616,26176,59200,33872,69616,39776,69616,29328,53632,23072,53632,28816,51808, + 28816,0,20992,0,20992,41520,8288,41520,8288,47600,20992,47600,20992,50912,20992,58736,24584,62432,28176,66128, + 35792,66128,45184,66128,45184,59632,36288,59632,32080,59632,30448,57912,28816,56192,28816,51808,16016,41520,17888,45008, + 21184,46880,24480,48752,28816,48752,37408,48752,42336,42144,47264,35536,47264,23920,47264,12160,42312,5464,37360,-1232, + 28736,-1232,24480,-1232,21232,616,17984,2464,16016,6000,16016,0,8208,0,8208,53968,2976,53968,2976,60944, + 8208,60944,8208,66128,16016,66128,16016,60944,16112,60944,31104,60944,31104,53968,16112,53968,16016,53968,16016,41520, + 39008,14656,39008,32848,36120,37480,33232,42112,27584,42112,21888,42112,18952,37464,16016,32816,16016,23760,16016,14752, + 18952,10072,21888,5392,27584,5392,33232,5392,36120,10024,39008,14656,45704,7328,22944,30304,22944,7056,28048,7056, + 35536,7056,38720,9672,41904,12288,41904,18272,41904,24480,38544,27392,35184,30304,28048,30304,22944,30304,22944,56400, + 22944,37280,27888,37280,34080,37280,36864,39656,39648,42032,39648,47344,39648,52144,36912,54272,34176,56400,27888,56400, + 22944,56400,14368,63456,28048,63456,37776,63456,43048,59248,48320,55040,48320,47344,48320,41520,45536,38160,42752,34800, + 37184,33952,43440,33024,46984,28624,50528,24224,50528,17424,50528,8800,44880,4400,39232,0,28048,0,14368,0, + 14368,56400,11728,56400,9608,54552,7488,52704,7488,47936,7488,45856,848,45856,848,48832,848,55584,4440,59520, + 8032,63456,14368,63456,15680,30304,15680,7056,25840,7056,33328,7056,36512,9672,39696,12288,39696,18272,39696,24480, + 36336,27392,32976,30304,25840,30304,15680,30304,45392,56400,15680,56400,15680,37280,25664,37280,41776,36640,46064,28512, + 48320,24272,48320,17424,48320,8800,42672,4416,37024,0,25840,0,7056,0,7056,63456,45392,63456,45392,56400, + 16016,41520,17888,45008,21184,46880,24480,48752,28816,48752,37408,48752,42336,42144,47264,35536,47264,23920,47264,12160, + 42312,5464,37360,-1232,28736,-1232,24480,-1232,21232,616,17984,2464,16016,6000,16016,0,8208,0,8208,66128, + 40160,66128,40160,58304,16016,58304,16016,41520,39008,14656,39008,32848,36120,37480,33232,42112,27584,42112,21888,42112, + 18952,37464,16016,32816,16016,23760,16016,14752,18952,10072,21888,5392,27584,5392,33232,5392,36120,10024,39008,14656, + 45704,7328,17728,30304,17728,7056,27888,7056,35360,7056,38544,9696,41728,12288,41728,18272,41728,24480,38384,27376, + 35024,30304,27888,30304,17728,30304,17728,37280,27712,37280,43824,36640,48112,28512,50368,24272,50368,17424,50368,8800, + 44704,4416,39056,0,27888,0,9088,0,9088,40288,2048,49984,17728,63456,17728,37280,41568,14656,41568,32848, + 38680,37480,35792,42112,30176,42112,24480,42112,21504,37488,18608,32816,18608,23760,18608,14752,21504,10080,24480,5392, + 30176,5392,35792,5392,38680,10024,41568,14656,31024,29832,18608,41520,20480,45008,23752,46880,27024,48752,31360,48752, + 39952,48752,44880,42160,49808,35536,49808,23920,49808,12160,44880,5440,39952,-1232,31280,-1232,27024,-1232,23808,592, + 20576,2464,18608,6000,18608,0,10800,0,10800,40288,2544,49984,18608,66128,18608,41520,5904,61120,9184,62864, + 12624,63736,16064,64608,19936,64608,32048,64608,38824,55912,45600,47216,45600,31664,45600,16016,38864,7392,32128,-1232, + 19936,-1232,16064,-1232,12624,-360,9184,512,5904,2256,5904,11056,9008,8464,12600,7104,16192,5744,19936,5744, + 28304,5744,32472,12200,36640,18656,36640,31664,36640,44704,32472,51168,28304,57632,19936,57632,16272,57632,12664,56272, + 9056,54912,5904,52320,5904,61120,42240,2256,38976,512,35528,-360,32080,-1232,28224,-1232,16016,-1232,9280,7392, + 2544,16016,2544,31664,2544,44320,9328,53016,16112,61712,28224,61712,32048,61712,35408,60864,36384,63024,38160,65152, + 41984,69664,49008,69664,49856,69664,49856,63024,46288,63024,44112,60400,42240,58144,42240,52400,42240,49424,39104,52016, + 35488,53376,31872,54736,28224,54736,19840,54736,15680,48280,11520,41824,11520,31664,11520,18656,15680,12200,19840,5744, + 28224,5744,31968,5744,35552,7104,39136,8464,42240,11056,42240,2256,40800,2416,37648,592,34312,-320,30976,-1232, + 27504,-1232,16448,-1232,10224,5400,4000,12032,4000,23760,4000,35488,10224,42120,16448,48752,27504,48752,30480,48752, + 33328,48064,34128,52912,36720,55936,40544,60432,47552,60432,48400,60432,48400,53808,44576,53808,42672,51168,40800,48528, + 40800,43184,40800,36896,37696,39648,34576,40880,31456,42112,27504,42112,20144,42112,16192,37352,12240,32592,12240,23760, + 12240,14960,16216,10176,20192,5392,27504,5392,31584,5392,34808,6648,38032,7904,40800,10544,40800,2416,18528,63456, + 33072,63456,39952,55720,46832,47984,46832,31664,46832,15424,39928,7712,33024,0,18528,0,5648,0,5648,30128, + 336,30128,336,36464,5648,36464,5648,63456,18528,63456,18528,7056,29360,7056,33656,12392,37952,17728,37952,31664, + 37952,45728,33680,51064,29408,56400,18528,56400,14448,56400,14448,36464,25664,36464,25664,30128,14448,30128,14448,7056, + 18528,7056,13856,63456,23760,63456,38288,63456,45176,55720,52064,47984,52064,31664,52064,15424,45176,7712,38288,0, + 23760,0,13856,0,13856,56400,11568,56400,9008,54400,6976,52784,6976,47936,6976,45856,336,45856,336,48832, + 336,56528,4416,59992,8496,63456,13856,63456,23584,7056,34432,7056,38720,12392,43008,17728,43008,31664,43008,45728, + 38736,51064,34464,56400,23584,56400,22480,56400,22480,7056,23584,7056,38208,30304,28048,30304,20912,30304,17552,27392, + 14192,24480,14192,18272,14192,12288,17384,9672,20576,7056,28048,7056,38208,7056,38208,30304,8496,56400,8496,63456, + 46832,63456,46832,0,28048,0,16880,0,11224,4400,5568,8800,5568,17424,5568,24272,7824,28512,12112,36640, + 28224,37280,38208,37280,38208,56400,8496,56400,14912,32848,14912,14656,17808,10024,20704,5392,26352,5392,32048,5392, + 34976,10072,37904,14752,37904,23760,37904,32816,34976,37464,32048,42112,26352,42112,20704,42112,17808,37480,14912,32848, + 13776,66128,13776,58304,13776,66128,45728,66128,45728,0,37904,0,37904,6000,35952,2464,32704,616,29456,-1232, + 25200,-1232,16576,-1232,11624,5464,6672,12160,6672,23920,6672,35536,11600,42144,16528,48752,25120,48752,29456,48752, + 32752,46880,36048,45008,37904,41520,37904,58304,13776,58304,26176,5392,32128,5392,35192,10024,38256,14656,38256,23760, + 38256,32816,35192,37464,32128,42112,26176,42112,20192,42112,17128,37464,14064,32816,14064,23760,14064,14656,17128,10024, + 20192,5392,26176,5392,38160,2160,38976,1792,40672,80,43312,-2512,43312,-6416,43312,-12192,38288,-15680,33232,-19168, + 24864,-19168,20528,-19168,18400,-18656,11984,-17120,11984,-9776,14784,-10800,17760,-11440,20960,-12064,24048,-12064,24432,-12064, + 24864,-12064,26224,-12032,29328,-11936,31872,-10112,33536,-8928,34688,-7904,34688,-5952,34688,-4544,34128,-3744,33408,-2720, + 31664,-1824,30640,-1280,26176,-1232,16192,-1104,11056,5184,5776,11600,5776,23760,5776,35952,11008,42352,16240,48752, + 26176,48752,36080,48752,41312,42352,46544,35952,46544,23760,46544,11600,41312,5184,40000,3568,38160,2160,46832,63456, + 46832,0,8368,0,8368,7232,38256,7232,38256,30224,10448,30224,10448,37440,38256,37440,38256,56224,9184,56224, + 9184,63456,46832,63456,4976,31664,4976,35184,38416,35184,38416,35536,38416,45776,35488,51704,32560,57632,26176,57632, + 22528,57632,18912,56272,15296,54912,12160,52320,12160,61120,15424,62864,18872,63736,22320,64608,26176,64608,36928,64608, + 42176,56448,47424,48288,47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232,15424,-1232,10200,6888,4976,15008, + 4976,31664,14112,27376,14112,16832,17088,11288,20064,5744,26352,5744,32640,5744,35320,11160,38000,16576,38384,27376, + 14112,27376,18704,33952,13136,35408,10224,38848,7312,42288,7312,47520,7312,55200,12856,59904,18400,64608,27664,64608, + 30768,64608,34784,63928,38800,63248,43952,61888,43952,53968,39520,55680,35488,56528,31456,57376,27664,57376,21968,57376, + 18888,54760,15808,52144,15808,47264,15808,42624,19128,40032,22448,37440,28352,37440,34896,37440,34896,30384,28352,30384, + 21888,30384,18104,27136,14320,23888,14320,18368,14320,12368,18104,9184,21888,6000,28944,6000,33104,6000,37312,7104, + 41520,8208,45856,10448,45856,1920,41488,384,36936,-424,32384,-1232,28000,-1232,17600,-1232,11712,3760,5824,8752, + 5824,17504,5824,23840,9136,28072,12448,32304,18704,33952,16144,63456,49728,63456,49728,56224,24784,56224,24784,37520, + 47040,37520,47040,30304,24784,30304,24784,-848,24784,-9136,20992,-13600,17168,-18112,10160,-18112,2672,-18112,2672,-11472, + 8544,-11472,12368,-11472,14288,-8848,16144,-6208,16144,-848,16144,63456,45184,66128,45184,59632,36288,59632,36208,59632, + 32080,59632,30432,57888,28816,56192,28816,51808,28816,47600,45184,47600,45184,41520,28816,41520,28816,-848,28816,-9952, + 25376,-14032,21888,-18112,14192,-18112,11216,-18112,11216,-11472,13296,-11472,17760,-11472,19376,-9440,20992,-7360,20992,-848, + 20912,41520,8288,41520,8288,47600,20864,47600,20864,50912,20864,58560,24560,62480,26144,64128,28688,65024,31664,66128, + 35792,66128,36160,66128,36288,66128,45184,66128,44800,5232,41312,2048,37016,408,32720,-1232,27712,-1232,15648,-1232, + 8928,7416,2208,16064,2208,31664,2208,47216,9008,55912,15808,64608,27888,64608,31872,64608,35536,63488,36256,63248, + 36976,62992,37616,64096,38512,65152,42336,69664,49392,69664,50192,69664,50192,63024,46624,63024,44448,60400,42624,58096, + 42592,52400,42592,51248,39184,54528,35576,56080,31968,57632,27888,57632,19552,57632,15344,51152,11136,44672,11136,31664, + 11136,18448,15216,12096,19296,5744,27712,5744,30512,5744,32680,6400,34848,7056,36544,8464,36544,25504,27376,25504, + 27376,32560,44800,32560,44800,5232,31024,27632,44800,8544,44800,-8240,44800,-18272,27120,-18272,8416,-18272,8416,-8240, + 8416,7360,20912,27920,1184,57504,10368,57504,26176,33920,41984,57504,51248,57504,31024,27632,25504,21040,17088,8240, + 17088,-5520,17088,-11392,26272,-11392,34928,-11392,34928,-5520,34928,8288,25504,21040,32080,29488,32080,17248,32048,17248, + 32048,10752,33488,8672,35104,6464,37440,6624,38256,6720,40544,9824,42544,12624,42544,19248,42544,36720,49648,36720, + 49648,19248,49648,9568,46416,4784,43184,0,36640,0,31232,0,28096,4080,24992,8160,24992,17248,24992,29488, + 24992,35920,22976,38936,20960,41952,18144,41952,15136,41952,12480,38064,9824,34176,9824,26896,9824,0,2768,0, + 2768,66128,9824,66128,9824,40464,13088,46160,13808,46672,17008,48752,20608,48752,25632,48752,28856,43968,32080,39184, + 32080,29488,21840,56224,8544,56224,8544,63456,43776,63456,43776,56224,30480,56224,30480,17888,30480,12496,32336,9904, + 34256,7264,38080,7264,45936,7264,45984,0,36768,0,29536,0,25632,4512,21840,8848,21840,17248,21840,56224, + 8544,63456,43776,63456,43776,56224,30480,56224,30480,31744,30560,31744,41824,31744,41824,24528,30560,24528,30480,24528, + 30480,7232,43776,7232,43776,0,8544,0,8544,7232,21840,7232,21840,24528,10672,24528,10672,31744,21840,31744, + 21840,56224,8544,56224,8544,63456,27504,50144,34336,57376,38800,57888,39696,58016,40544,58016,45904,58016,49808,53808, + 51808,51632,47296,46800,45904,48368,43984,50528,41440,50528,40720,50528,39904,50368,37104,49728,32464,44832,25504,37520, + 50912,0,40544,0,19840,31792,13296,24816,13296,0,4672,0,4672,63456,13296,63456,13296,35232,27504,50144, + 10032,42592,10032,48880,10032,57168,13808,61632,17632,66128,24656,66128,33360,66128,33360,59504,25504,59504,21680,59504, + 19760,56864,17888,54224,17888,48880,18112,48880,18112,27840,38640,47600,48160,47600,29408,29664,51088,0,41520,0, + 23920,24560,18112,19088,18112,0,10032,0,10032,42592,27152,17248,27152,11984,29088,9304,31024,6624,34800,6624, + 43952,6624,43952,0,34048,0,27024,0,23184,4504,19344,9008,19344,17248,19344,25584,9648,25584,9648,31616, + 19344,31616,19344,60480,6800,60480,6800,66592,27152,66592,27152,31616,27536,31616,36928,31616,36928,25584,27536,25584, + 27152,25584,27152,17248,24608,51552,39392,61840,42800,57168,27024,46192,48160,0,40032,0,26400,29920,12368,0, + 4256,0,22320,38800,20864,41952,5488,31280,2080,36000,18448,47296,11056,63456,19168,63456,24608,51552,24144,4848, + 22688,1792,20464,320,18240,-1152,15088,-1152,9344,-1152,6992,3288,4640,7728,4640,20016,4640,63456,11776,63456, + 11776,20352,11776,10288,12904,7840,14032,5392,17008,5392,20400,5392,21656,8008,22912,10624,22912,20352,22912,63456, + 30048,63456,30048,20352,30048,10160,31256,7776,32464,5392,35616,5392,38720,5392,39928,8008,41136,10624,41136,20352, + 41136,63456,48240,63456,48240,0,41136,0,41136,4080,39744,1536,37640,192,35536,-1152,32848,-1152,29616,-1152, + 27472,336,25328,1824,24144,4848,8080,63456,17856,63456,37152,11216,37152,63456,44576,63456,44576,0,34800,0, + 15552,52240,15552,-848,15552,-9136,12112,-13600,8672,-18112,2384,-18112,1232,-18112,1232,-11472,4672,-11472,6368,-8848, + 8080,-6240,8080,-848,8080,63456,44672,29488,44672,-18272,36800,-18272,36800,29488,36800,35920,34552,38936,32304,41952, + 27504,41952,22016,41952,19064,38064,16112,34176,16112,26896,16112,0,8288,0,8288,47600,16112,47600,16112,40464, + 18192,44544,21760,46648,25328,48752,30224,48752,37488,48752,41080,43968,44672,39184,44672,29488,47424,31664,47424,15088, + 42176,6928,36928,-1232,26176,-1232,15424,-1232,10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608, + 26176,64608,36928,64608,42176,56448,47424,48288,47424,31664,38416,35184,38080,46416,35616,51632,32720,57632,26176,57632, + 19680,57632,16832,51632,14320,46416,13984,35184,38416,35184,14032,27376,14400,16752,16832,11728,19680,5744,26176,5744, + 32720,5744,35616,11728,38000,16704,38384,27376,14032,27376,34192,54464,34192,59520,36784,57616,38656,56704,40528,55792, + 41840,55792,43792,55792,44768,56960,45744,58128,45744,60416,45744,61776,45432,63096,45120,64416,44480,65728,50128,65728, + 50560,64112,50768,62672,50976,61232,50976,59952,50976,54768,49128,52320,47280,49872,43328,49872,41296,49872,39064,51000, + 36832,52128,34192,54464,33344,31664,33344,45648,30472,51640,27600,57632,21056,57632,14560,57632,11688,51640,8816,45648, + 8816,31664,8816,17728,11688,11736,14560,5744,21056,5744,27600,5744,30472,11712,33344,17680,33344,31664,42304,31664, + 42304,15088,37056,6928,31808,-1232,21056,-1232,10304,-1232,5080,6888,-144,15008,-144,31664,-144,48288,5104,56448, + 10352,64608,21056,64608,31808,64608,37056,56448,42304,48288,42304,31664,34192,37056,34192,42112,36784,40208,38656,39296, + 40528,38384,41840,38384,43792,38384,44768,39552,45744,40720,45744,43008,45744,44368,45432,45688,45120,47008,44480,48320, + 50128,48320,50560,46704,50768,45264,50976,43824,50976,42544,50976,37360,49128,34912,47280,32464,43328,32464,41296,32464, + 39064,33592,36832,34720,34192,37056,22080,42112,16128,42112,13072,37480,10016,32848,10016,23760,10016,14704,13072,10048, + 16128,5392,22080,5392,28080,5392,31136,10048,34192,14704,34192,23760,34192,32848,31136,37480,28080,42112,22080,42112, + 22080,48752,31984,48752,37232,42336,42480,35920,42480,23760,42480,11568,37256,5168,32032,-1232,22080,-1232,12176,-1232, + 6952,5168,1728,11568,1728,23760,1728,35920,6952,42336,12176,48752,22080,48752,1920,31664,1920,60224,16112,64000, + 18368,64608,20992,64608,29744,64608,34464,57888,40720,63456,50496,63456,50496,0,43056,0,43056,52240,35408,45440, + 35408,6928,30688,-1232,21000,-1232,11312,-1232,6616,6888,1920,15008,1920,31664,29456,51632,26864,57632,20992,57632, + 15136,57632,12560,51640,9984,45648,9984,31664,9984,17728,12560,11736,15136,5744,20992,5744,26864,5744,29456,11728, + 29456,51632,3648,23760,3648,42288,14288,47168,17680,48752,21968,48752,30896,48752,35616,42336,35616,40496,40976,45184, + 50784,45184,50784,-18272,43312,-18272,43312,33952,35616,27280,35616,5184,30944,-1232,21968,-1232,12032,-1232,7312,6752, + 3648,12960,3648,23760,11136,23760,11136,6976,20272,5520,21088,5392,21968,5392,27376,5392,30128,10032,30128,37488, + 27376,42112,21968,42112,13216,42112,11520,29968,11136,27152,11136,23760,50016,44496,50016,29712,36768,26432,33104,25504, + 28432,25504,24480,25504,24480,0,15888,0,15888,56400,13600,56400,11056,54400,9008,52784,9008,47936,9008,45856, + 2384,45856,2384,48832,2384,56528,6464,60016,10544,63456,15888,63456,28432,63456,45728,63456,49216,51040,50016,48112, + 50016,44496,28432,32560,37408,32560,40128,39232,41056,41600,41056,44496,41056,50144,37744,53272,34432,56400,28432,56400, + 24480,56400,24480,32560,28432,32560,15936,23760,15936,7824,24816,5696,26048,5392,27504,5392,33152,5392,36016,10024, + 38880,14656,38880,23760,38880,41520,28224,42112,27840,42112,27504,42112,18400,42112,16448,30512,15936,27536,15936,23760, + 15936,41520,19808,48496,28048,48752,28352,48752,28640,48752,37280,48752,42184,42080,47088,35408,47088,23584,47088,11984, + 42160,5376,37232,-1232,28640,-1232,24304,-1232,21056,616,17808,2464,15936,6000,15936,-18112,8080,-18112,8080,43600, + 8080,56448,16704,59792,19376,60864,22688,60864,31408,60864,31408,54224,23552,54224,16368,54224,15984,44832,15936,44240, + 15936,43600,15936,41520,32304,18736,35616,17888,37952,15552,40240,13216,43776,6128,52400,-11216,43184,-11216,35616,4800, + 32336,11648,29728,13624,27120,15600,22912,15600,14704,15600,14704,0,6080,0,6080,63456,14704,63456,14704,52240, + 23760,52240,34208,52240,39776,47520,45344,42800,45344,33872,45344,27584,41928,23608,38512,19632,32304,18736,14704,45184, + 14704,22656,24096,22656,30256,22656,33272,25416,36288,28176,36288,33872,36288,39360,33080,42272,29872,45184,23760,45184, + 14704,45184,9568,61280,14032,62944,18064,63776,22096,64608,25760,64608,35232,64608,40952,59480,46672,54352,46672,45856, + 46672,39056,42672,35016,38672,30976,29840,28992,25248,27920,19088,26560,16600,24056,14112,21552,14112,16784,14112,11568, + 17720,8656,21328,5744,27840,5744,32256,5744,36616,7184,40976,8624,45856,11728,45856,2592,41312,688,36808,-272, + 32304,-1232,27840,-1232,17120,-1232,11512,3528,5904,8288,5904,17344,5904,25040,9984,29496,14064,33952,22992,36048, + 27504,37056,33824,38544,36144,40752,38464,42960,38464,47168,38464,51984,34936,54808,31408,57632,25328,57632,21328,57632, + 17400,56360,13472,55088,9568,52576,9568,61280,11472,45936,14880,47344,18408,48048,21936,48752,25760,48752,34336,48752, + 38968,45032,43600,41312,43600,34464,43600,29072,40504,25944,37408,22816,30640,21504,27712,20912,27376,20832,16960,18736, + 16960,13296,16960,9520,19808,7416,22656,5312,27840,5312,31408,5312,35400,6440,39392,7568,43776,9824,43776,1744, + 39264,256,35400,-488,31536,-1232,28000,-1232,19088,-1232,14072,2744,9056,6720,9056,13776,9056,19088,12048,22400, + 15040,25712,20864,26816,24016,27408,31792,28896,33744,30472,35696,32048,35696,35232,35696,38768,33088,40488,30480,42208, + 25168,42208,21632,42208,18232,41224,14832,40240,11472,38288,11472,45936,33408,31744,14064,7232,48160,7232,48160,0, + 5104,0,5104,7232,24400,31744,5104,56224,5104,63456,48160,63456,48160,56224,14064,56224,33408,31744,24144,54576, + 23840,56480,23072,57456,21680,59504,17008,59504,11728,59504,11600,56736,11472,54576,16528,54576,24144,54576,32512,48032, + 32432,-3776,32432,-8160,34080,-9904,35664,-11600,39904,-11600,47392,-11600,47392,-18112,40000,-18112,31712,-18112,28256,-14448, + 24560,-10544,24560,-2896,24560,48032,16496,48032,5008,48032,5008,56944,5008,66128,17888,66128,25584,66128,29072,62048, + 31328,59328,32080,54608,40208,54608,40208,48032,32512,48032,26096,61120,26096,47600,43856,47600,43856,41520,26096,41520, + 26096,15680,26096,10416,28096,8328,30096,6240,35056,6240,43856,6240,43856,0,43856,-848,43856,-9136,40080,-13600, + 36256,-18112,29248,-18112,20528,-18112,20528,-11472,28384,-11472,32208,-11472,34128,-8848,36000,-6208,36000,-848,36000,0, + 34304,0,25504,0,21888,3528,18272,7056,18272,15680,18272,41520,5568,41520,5568,47600,18272,47600,18272,61120, + 26096,61120,19248,56400,13680,56736,10704,54400,8624,52784,8624,47936,8624,45856,2000,45856,2000,48832,2000,56528, + 6080,59992,10160,63456,19248,63456,50400,63456,50400,56224,30560,56224,30560,0,21936,0,21936,56224,19248,56400, + 26096,47600,43856,47600,43856,41520,26096,41520,26096,15680,26096,10416,28096,8328,30096,6240,35056,6240,43856,6240, + 43856,0,34304,0,25504,0,21888,3528,18272,7056,18272,15680,18272,41520,5568,41520,5568,47600,18240,47600, + 18240,48880,18240,57168,22016,61632,25840,66128,32848,66128,41568,66128,41568,59504,33696,59504,29872,59504,27968,56864, + 26096,54224,26096,48880,26096,47600,2000,63456,50400,63456,50400,56224,30560,56224,30560,-848,30560,-6208,32432,-8848, + 34336,-11472,38160,-11472,46032,-11472,46032,-18112,36544,-18112,29536,-18112,25712,-13600,21936,-9136,21936,-848,21936,56224, + 2000,56224,2000,63456,35216,55488,35216,60544,37808,58640,39680,57728,41552,56816,42864,56816,44816,56816,45792,57984, + 46768,59152,46768,61440,46768,62800,46456,64120,46144,65440,45504,66752,51152,66752,51584,65136,51792,63696,52000,62256, + 52000,60976,52000,55792,50152,53344,48304,50896,44352,50896,42320,50896,40088,52024,37856,53152,35216,55488,96,24352, + 96,63456,8736,63456,8736,20448,8736,15808,8992,13832,9248,11856,9872,10800,11232,8288,13808,7016,16384,5744, + 20032,5744,23728,5744,26280,7016,28832,8288,30240,10800,30880,11856,31128,13808,31376,15760,31376,20352,31376,63456, + 39968,63456,39968,24352,39968,14624,38760,10520,37552,6416,34576,3744,31760,1232,28152,0,24544,-1232,20032,-1232, + 15568,-1232,11960,0,8352,1232,5504,3744,2576,6368,1336,10560,96,14752,96,24352,34192,37056,34192,42112, + 36784,40208,38656,39296,40528,38384,41840,38384,43792,38384,44768,39552,45744,40720,45744,43008,45744,44368,45432,45688, + 45120,47008,44480,48320,50128,48320,50560,46704,50768,45264,50976,43824,50976,42544,50976,37360,49128,34912,47280,32464, + 43328,32464,41296,32464,39064,33592,36832,34720,34192,37056,2144,18016,2144,47520,9968,47520,9968,18016,9968,11600, + 12240,8584,14512,5568,19264,5568,24800,5568,27728,9456,30656,13344,30656,20608,30656,47520,38528,47520,38528,0, + 30656,0,30656,7136,28576,3024,24984,896,21392,-1232,16592,-1232,9280,-1232,5712,3552,2144,8336,2144,18016, + 49264,62048,49264,54736,38848,54736,44080,49040,46416,42920,48752,36800,48752,28816,48752,15600,42632,7800,36512,0, + 26304,0,16016,0,9880,7776,3744,15552,3744,28816,3744,36800,6104,42944,8464,49088,13680,54736,3152,54736, + 3152,62048,22816,62048,22816,54736,17728,51504,14880,44512,12032,37520,12032,28096,12032,18320,15856,12688,19680,7056, + 26224,7056,32768,7056,36568,12688,40368,18320,40368,28096,40368,37520,37528,44512,34688,51504,29584,54736,29584,62048, + 49264,62048,21504,0,14288,0,10368,4512,6544,8848,6544,17248,6544,63456,15216,63456,15216,17888,15216,12544, + 17088,9904,18960,7264,22784,7264,29328,7264,33152,12896,36976,18528,36976,28304,36976,37744,34128,44736,31280,51728, + 26176,54960,35440,54960,40624,49264,42968,43144,45312,37024,45312,29024,45312,15808,39184,7984,32944,0,21504,0, + 37184,48448,26736,28480,26736,0,18960,0,18960,28480,720,63456,8928,63456,22864,35440,31328,52480,35536,60992, + 40160,62768,42112,63536,44032,63536,47424,63536,50624,61120,51680,60304,48656,54608,48240,54992,46800,56320,45088,56320, + 43904,56320,42592,55632,40416,54608,37184,48448,26432,-4416,22992,-13040,19968,-15520,16832,-18112,11568,-18112,5312,-18112, + 5312,-11568,9904,-11568,13136,-11568,14920,-10032,16704,-8496,18864,-2800,20272,768,1024,47600,9312,47600,24176,10368, + 36048,40080,38160,45440,41600,47168,43440,48112,45600,48112,47680,48112,50016,47264,52064,46544,49808,40288,48624,40720, + 47424,41184,46496,41184,44672,41184,43984,39440,26432,-4416,7568,63456,48752,63456,48752,56912,31968,31744,41824,31744, + 41824,24528,30560,24528,27152,24528,15600,7232,49680,7232,49680,0,6624,0,6624,6544,18320,24528,10672,24528, + 10672,31744,22992,31744,38880,56224,7568,56224,7568,63456,9440,47680,43984,47680,43984,40544,32512,26176,45776,26176, + 45776,19216,30720,19216,26944,19216,16656,6368,43984,6368,43984,0,8416,0,8416,7232,17984,19216,6624,19216, + 6624,26176,23552,26176,35744,41440,9440,41440,9440,47680,9696,18480,9696,12416,13936,9216,18144,6032,26200,6032, + 34256,6032,38512,9216,42752,12416,42752,18480,42752,24176,38848,27280,34848,30432,27888,30432,20480,30432,20480,37488, + 36208,56224,4848,56224,4848,63456,46064,63456,46064,56320,30096,37568,34512,37568,40032,35184,44208,33360,47856,28768, + 51248,24352,51248,18480,51248,9088,44792,3952,38336,-1184,26432,-1184,14032,-1184,7568,3952,1104,9088,1104,18480, + 9696,18480,42752,18480,51248,18480,51248,9088,44792,3952,38336,-1184,25920,-1184,14032,-1184,7568,3952,1104,9088, + 1104,18480,1104,24352,4592,28768,8208,33360,12416,35184,17888,37568,22352,37568,6368,56320,6368,63456,47520,63456, + 47520,56224,16240,56224,31968,37488,31968,30432,24560,30432,17504,30432,13600,27280,9696,24176,9696,18480,9696,12416, + 13936,9216,18144,6032,26200,6032,34256,6032,38512,9216,42752,12416,42752,18480,26528,20224,9056,40464,9056,47600, + 46192,47600,46192,41360,17856,41360,36128,20144,36128,13088,28736,13088,21712,13088,17760,9952,13856,6752,13856,1152, + 13856,-4928,18112,-8112,22320,-11312,30384,-11312,35024,-11312,39272,-10248,43520,-9184,47088,-7104,47088,-15392,42592,-16960, + 38336,-17760,34128,-18528,30128,-18528,18240,-18528,11776,-13384,5312,-8240,5312,1152,5312,7008,8752,11440,12416,16064, + 16576,17856,22016,20224,26528,20224,29712,-11648,33280,-11648,36544,-10752,39904,-9856,43344,-7984,43344,-15600,39648,-16960, + 36256,-17504,32592,-18112,28480,-18112,8080,-18112,8080,-6160,8080,3952,25328,6208,37408,7776,37408,11936,37408,17216, + 27408,17216,27408,17216,15088,17216,35696,41360,7360,41360,7360,47600,44496,47600,44496,40464,29456,22944,45056,22944, + 45056,13216,45056,1488,25328,-592,15728,-1616,15728,-5744,15728,-11648,29712,-11648,6976,60400,15808,64608,23920,64608, + 33232,64608,38904,59656,44576,54704,44576,46672,44576,42592,42672,38512,41232,35360,38416,31744,41824,31744,41824,24528, + 32048,24528,29664,21840,15856,7232,45008,7232,45008,0,6464,0,6464,7232,22688,24528,10672,24528,10672,31744, + 29120,31744,33568,37280,34848,40848,35792,43392,35792,46032,35792,53888,29408,56448,26992,57376,24096,57376,16400,57376, + 6976,51728,6976,60400,26176,6032,39616,6032,42208,14496,42752,16320,42752,18480,42752,24176,38848,27280,34848,30432, + 27888,30432,9136,30432,9136,63456,48400,63456,48400,56224,17760,56224,17760,37568,30096,37568,34560,37568,40032,35184, + 44240,33360,47856,28768,51248,24480,51248,18480,51248,9088,44792,3952,38336,-1184,26432,-1184,8160,-1184,2976,9696, + 1104,13552,1104,18480,9696,18480,9696,10800,16400,7776,20272,6032,26176,6032,22016,-11312,35232,-11312,37904,-3024, + 38544,-1104,38544,1152,38544,6848,34640,9952,30688,13088,23680,13088,10928,13088,10928,47600,42880,47600,42880,39776, + 18736,39776,18736,20192,25888,20224,30256,20272,35824,17856,40032,16016,43648,11440,47088,7008,47088,1152,47088,-8240, + 40632,-13384,34176,-18528,22272,-18528,14320,-18528,5312,-15392,5312,-7104,12544,-11312,22016,-11312,35920,18656,35920,23504, + 32768,26864,28992,30896,21632,30896,18992,30896,18992,42416,9264,42416,9264,49392,18992,49392,18992,61120,27584,61120, + 27584,49392,37408,49392,37408,42416,27584,42416,27584,37104,34592,35872,39184,31200,44160,26144,44160,18656,44160,10800, + 39488,5440,33616,-1232,21968,-1232,14704,-1232,8240,1744,8240,9056,14880,5392,21632,5392,29248,5392,33440,10240, + 35872,13008,35920,18656,13168,-5184,13168,-18112,5312,-18112,5312,47600,13168,47600,13168,40368,15392,43184,21120,46672, + 24560,48752,33488,48752,41312,48752,44576,43984,47904,39184,47904,32688,47904,14624,13168,-5184,13168,2544,39776,19552, + 39776,30128,39776,35792,37360,38592,34976,41360,29872,41360,20528,41360,13168,31200,13168,2544,21936,63456,30512,63456, + 30512,0,21936,0,21936,63456,13744,63456,22320,63456,22320,0,13744,0,13744,63456,30128,63456,38704,63456, + 38704,0,30128,0,30128,63456,21936,63456,30512,63456,30512,46288,45392,46288,45392,39136,30512,39136,30512,28944, + 45392,28944,45392,21712,30512,21712,30512,0,21936,0,21936,21712,6976,21712,6976,28944,21936,28944,21936,39136, + 6976,39136,6976,46288,21936,46288,21936,63456,21936,63456,30560,63456,30560,35616,29664,20448,22816,20448,21936,35616, + 21936,63456,21936,10800,30560,10800,30560,0,21936,0,21936,10800,4416,-15392,4416,61376,47936,61376,47936,-15392, + 4416,-15392,9312,-10544,43088,-10544,43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392, + 4416,-15392,9312,-10544,43088,-10544,43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392, + 4416,-15392,9312,-10544,43088,-10544,43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392, + 4416,-15392,9312,-10544,43088,-10544,43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392, + 4416,-15392,9312,-10544,43088,-10544,43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392, + 4416,-15392,9312,-10544,43088,-10544,43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392, + 4416,-15392,9312,-10544,43088,-10544,43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392, + 4416,-15392,9312,-10544,43088,-10544,43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392, + 4416,-15392,9312,-10544,43088,-10544,43088,56480,9312,56480,9312,-10544,26176,55888,17120,23424,35232,23424,26176,55888, + 20992,63456,31408,63456,50832,0,41952,0,37280,16528,15040,16528,10448,0,1568,0,20992,63456,22192,68992, + 13216,80304,19168,80304,26176,72736,33232,80304,39184,80304,30224,68992,22192,68992,29840,23920,27248,23920,20400,23920, + 16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312,33408,9800,37104,14288, + 37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800,30832,784,27024,-1232, + 21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048,26640,30048,37152,30048, + 37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824,9136,37616,9136,45440, + 13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776,43648,39648,44328,36528, + 45008,33408,45008,27152,23072,53632,12624,69616,18528,69616,26176,59200,33872,69616,39776,69616,29328,53632,23072,53632, + 8544,63456,43776,63456,43776,56224,30480,56224,30480,7232,43776,7232,43776,0,8544,0,8544,7232,21840,7232, + 21840,56224,8544,56224,8544,63456,22192,68992,13216,80304,19168,80304,26176,72736,33232,80304,39184,80304,30224,68992, + 22192,68992,10880,47600,30896,47600,30896,6080,46416,6080,46416,0,7568,0,7568,6080,23072,6080,23072,41520, + 10880,41520,10880,47600,23072,53632,12624,69616,18528,69616,26176,59200,33872,69616,39776,69616,29328,53632,23072,53632, + 38464,31664,38464,45648,35592,51640,32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728, + 16808,11736,19680,5744,26176,5744,32720,5744,35592,11712,38464,17680,38464,31664,47424,31664,47424,15088,42176,6928, + 36928,-1232,26176,-1232,15424,-1232,10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608, + 36928,64608,42176,56448,47424,48288,47424,31664,22192,68992,13216,80304,19168,80304,26176,72736,33232,80304,39184,80304, + 30224,68992,22192,68992,26176,42112,20224,42112,17168,37480,14112,32848,14112,23760,14112,14704,17168,10048,20224,5392, + 26176,5392,32176,5392,35232,10048,38288,14704,38288,23760,38288,32848,35232,37480,32176,42112,26176,42112,26176,48752, + 36080,48752,41328,42336,46576,35920,46576,23760,46576,11568,41352,5168,36128,-1232,26176,-1232,16272,-1232,11048,5168, + 5824,11568,5824,23760,5824,35920,11048,42336,16272,48752,26176,48752,23072,53632,12624,69616,18528,69616,26176,59200, + 33872,69616,39776,69616,29328,53632,23072,53632,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832, + 15392,11856,16016,10800,17376,8288,19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800, + 37024,11856,37272,13808,37520,15760,37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416, + 40720,3744,37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368, + 7480,10560,6240,14752,6240,24352,22192,68992,13216,80304,19168,80304,26176,72736,33232,80304,39184,80304,30224,68992, + 22192,68992,8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568,30944,5568, + 33872,9456,36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024,31128,896, + 27536,-1232,22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,23072,53632,12624,69616,18528,69616,26176,59200, + 33872,69616,39776,69616,29328,53632,23072,53632,13552,73856,22192,73856,22192,65232,13552,65232,13552,73856,30224,73856, + 38800,73856,38800,65232,30224,65232,30224,73856,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832, + 15392,11856,16016,10800,17376,8288,19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800, + 37024,11856,37272,13808,37520,15760,37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416, + 40720,3744,37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368, + 7480,10560,6240,14752,6240,24352,13472,83280,38880,83280,38880,76992,13472,76992,13472,83280,13552,65968,22192,65968, + 22192,57376,13552,57376,13552,65968,30224,65968,38800,65968,38800,57376,30224,57376,30224,65968,8288,18016,8288,47520, + 16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568,30944,5568,33872,9456,36800,13344,36800,20608, + 36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024,31128,896,27536,-1232,22736,-1232,15424,-1232, + 11856,3552,8288,8336,8288,18016,13472,78160,38880,78160,38880,71872,13472,71872,13472,78160,13552,73856,22192,73856, + 22192,65232,13552,65232,13552,73856,30224,73856,38800,73856,38800,65232,30224,65232,30224,73856,6240,24352,6240,63456, + 14880,63456,14880,20448,14880,15808,15136,13832,15392,11856,16016,10800,17376,8288,19952,7016,22528,5744,26176,5744, + 29872,5744,32424,7016,34976,8288,36384,10800,37024,11856,37272,13808,37520,15760,37520,20352,37520,63456,46112,63456, + 46112,24352,46112,14624,44904,10520,43696,6416,40720,3744,37904,1232,34296,0,30688,-1232,26176,-1232,21712,-1232, + 18104,0,14496,1232,11648,3744,8720,6368,7480,10560,6240,14752,6240,24352,28560,86352,36464,86352,26736,75136, + 20192,75136,28560,86352,13552,65968,22192,65968,22192,57376,13552,57376,13552,65968,30224,65968,38800,65968,38800,57376, + 30224,57376,30224,65968,8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568, + 30944,5568,33872,9456,36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024, + 31128,896,27536,-1232,22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,32128,82928,40544,82928,26736,66944, + 20192,66944,32128,82928,13552,73856,22192,73856,22192,65232,13552,65232,13552,73856,30224,73856,38800,73856,38800,65232, + 30224,65232,30224,73856,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832,15392,11856,16016,10800, + 17376,8288,19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800,37024,11856,37272,13808, + 37520,15760,37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416,40720,3744,37904,1232, + 34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368,7480,10560,6240,14752, + 6240,24352,22192,75136,13216,86448,19168,86448,26176,78880,33232,86448,39184,86448,30224,75136,22192,75136,13552,65968, + 22192,65968,22192,57376,13552,57376,13552,65968,30224,65968,38800,65968,38800,57376,30224,57376,30224,65968,8288,18016, + 8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568,30944,5568,33872,9456,36800,13344, + 36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024,31128,896,27536,-1232,22736,-1232, + 15424,-1232,11856,3552,8288,8336,8288,18016,23072,66944,12624,82928,18528,82928,26176,72512,33872,82928,39776,82928, + 29328,66944,23072,66944,13552,73856,22192,73856,22192,65232,13552,65232,13552,73856,30224,73856,38800,73856,38800,65232, + 30224,65232,30224,73856,6240,24352,6240,63456,14880,63456,14880,20448,14880,15808,15136,13832,15392,11856,16016,10800, + 17376,8288,19952,7016,22528,5744,26176,5744,29872,5744,32424,7016,34976,8288,36384,10800,37024,11856,37272,13808, + 37520,15760,37520,20352,37520,63456,46112,63456,46112,24352,46112,14624,44904,10520,43696,6416,40720,3744,37904,1232, + 34296,0,30688,-1232,26176,-1232,21712,-1232,18104,0,14496,1232,11648,3744,8720,6368,7480,10560,6240,14752, + 6240,24352,23840,86352,32208,75136,25664,75136,16016,86352,23840,86352,20272,82928,32208,66944,25664,66944,11856,82928, + 20272,82928,8288,18016,8288,47520,16112,47520,16112,18016,16112,11600,18384,8584,20656,5568,25408,5568,30944,5568, + 33872,9456,36800,13344,36800,20608,36800,47520,44672,47520,44672,0,36800,0,36800,7136,34720,3024,31128,896, + 27536,-1232,22736,-1232,15424,-1232,11856,3552,8288,8336,8288,18016,13552,65968,22192,65968,22192,57376,13552,57376, + 13552,65968,30224,65968,38800,65968,38800,57376,30224,57376,30224,65968,5184,21760,5184,25584,39056,25584,39056,25840, + 39056,33616,35000,37864,30944,42112,23552,42112,19808,42112,15728,40928,11648,39744,7008,37312,7008,45088,11472,46928, + 15616,47840,19760,48752,23632,48752,34720,48752,40968,42096,47216,35440,47216,23760,47216,12368,41096,5568,34976,-1232, + 24784,-1232,15680,-1232,10432,4928,5184,11088,5184,21760,13008,19504,13008,12624,16176,9008,19344,5392,25120,5392, + 30768,5392,34424,9136,38080,12880,38768,19504,13008,19504,13552,73856,22192,73856,22192,65232,13552,65232,13552,73856, + 30224,73856,38800,73856,38800,65232,30224,65232,30224,73856,13472,83280,38880,83280,38880,76992,13472,76992,13472,83280, + 26176,55888,17120,23424,35232,23424,26176,55888,20992,63456,31408,63456,50832,0,41952,0,37280,16528,15040,16528, + 10448,0,1568,0,20992,63456,13472,78160,38880,78160,38880,71872,13472,71872,13472,78160,29840,23920,27248,23920, + 20400,23920,16936,21520,13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312,33408,9800, + 37104,14288,37152,22192,37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800,30832,784, + 27024,-1232,21584,-1232,14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048,26640,30048, + 37152,30048,37152,31280,37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824,9136,37616, + 9136,45440,13472,47088,17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776,43648,39648, + 44328,36528,45008,33408,45008,27152,13552,65968,22192,65968,22192,57376,13552,57376,13552,65968,30224,65968,38800,65968, + 38800,57376,30224,57376,30224,65968,13472,83280,38880,83280,38880,76992,13472,76992,13472,83280,21808,74448,30512,74448, + 30512,65728,21808,65728,21808,74448,26176,55888,17120,23424,35232,23424,26176,55888,20992,63456,31408,63456,50832,0, + 41952,0,37280,16528,15040,16528,10448,0,1568,0,20992,63456,13472,78160,38880,78160,38880,71872,13472,71872, + 13472,78160,21808,65968,30512,65968,30512,57296,21808,57296,21808,65968,29840,23920,27248,23920,20400,23920,16936,21520, + 13472,19120,13472,14368,13472,10080,16064,7696,18656,5312,23248,5312,29712,5312,33408,9800,37104,14288,37152,22192, + 37152,23920,29840,23920,45008,27152,45008,0,37152,0,37152,7056,34640,2800,30832,784,27024,-1232,21584,-1232, + 14320,-1232,9984,2872,5648,6976,5648,13856,5648,21808,10984,25928,16320,30048,26640,30048,37152,30048,37152,31280, + 37104,36976,34256,39544,31408,42112,25168,42112,21168,42112,17088,40968,13008,39824,9136,37616,9136,45440,13472,47088, + 17448,47920,21424,48752,25168,48752,31072,48752,35256,47008,39440,45264,42032,41776,43648,39648,44328,36528,45008,33408, + 45008,27152,20640,78208,46048,78208,46048,71904,20640,71904,20640,78208,49344,63456,49344,56224,34976,56224,34976,37440, + 48032,37440,48032,30224,34976,30224,34976,7232,50144,7232,50144,0,27072,0,27072,16272,12112,16272,7824,0, + 0,0,17424,63456,49344,63456,22528,56224,13936,23424,27072,23424,27072,56224,22528,56224,13472,64848,38880,64848, + 38880,58560,13472,58560,13472,64848,23072,18784,23072,21840,20992,21840,13808,21840,11264,19928,8720,18016,8720,13216, + 8720,9440,10608,7376,12496,5312,16016,5312,19936,5312,21504,8136,23072,10960,23072,18784,44032,27920,44032,30128, + 44032,36544,42392,39376,40752,42208,37056,42208,33360,42208,31744,39312,30128,36416,30128,29744,30128,27920,44032,27920, + 51008,21840,30128,21840,30096,21200,30072,20464,30048,19728,30048,18272,30048,11440,32192,8376,34336,5312,39104,5312, + 42464,5312,45200,6400,47936,7488,50064,9648,50064,2336,47728,592,44920,-320,42112,-1232,39104,-1232,34432,-1232, + 31264,512,28096,2256,26736,5568,25072,2160,22248,464,19424,-1232,15296,-1232,8672,-1232,5208,2424,1744,6080, + 1744,13040,1744,20320,5992,24120,10240,27920,18368,27920,23328,27920,23328,31664,23328,36768,21224,39488,19120,42208, + 15136,42208,12752,42208,9944,41288,7136,40368,4512,38720,4512,45856,7776,47344,10584,48048,13392,48752,15936,48752, + 19808,48752,22440,47408,25072,46064,26640,43344,28048,45936,30856,47344,33664,48752,37440,48752,44832,48752,47920,43712, + 51008,38672,51008,25664,51008,21840,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,22192,68992,13216,80304,19168,80304,26176,72736,33232,80304,39184,80304,30224,68992, + 22192,68992,46928,5232,43472,2048,39160,408,34848,-1232,29840,-1232,17760,-1232,11048,7416,4336,16064,4336,31664, + 4336,47216,11136,55912,17936,64608,30048,64608,34048,64608,37704,63480,41360,62352,44752,60048,44752,51248,41312,54528, + 37696,56080,34080,57632,30048,57632,21680,57632,17488,51152,13296,44672,13296,31664,13296,18448,17360,12096,21424,5744, + 29840,5744,32688,5744,34832,6400,36976,7056,38720,8464,38720,25504,29488,25504,29488,32560,46928,32560,46928,5232, + 23072,53632,12624,69616,18528,69616,26176,59200,33872,69616,39776,69616,29328,53632,23072,53632,36464,24176,36464,32976, + 33592,37544,30720,42112,25248,42112,19504,42112,16488,37544,13472,32976,13472,24176,13472,15392,16512,10776,19552,6160, + 25328,6160,30720,6160,33592,10792,36464,15424,36464,24176,44288,3056,44288,-7648,39232,-13176,34176,-18704,24352,-18704, + 21120,-18704,17592,-18104,14064,-17504,10544,-16368,10544,-8624,14704,-10576,18104,-11512,21504,-12448,24352,-12448,30688,-12448, + 33576,-9008,36464,-5568,36464,1920,36464,2256,36464,7568,34592,3568,31360,1616,28128,-336,23504,-336,15168,-336, + 10200,6336,5232,13008,5232,24176,5232,35408,10200,42080,15168,48752,23504,48752,28096,48752,31280,46920,34464,45088, + 36464,41264,36464,47424,44288,47424,44288,3056,22192,68992,13216,80304,19168,80304,26176,72736,33232,80304,39184,80304, + 30224,68992,22192,68992,5824,63456,14448,63456,14448,35232,41264,63456,51344,63456,26640,37520,52064,0,41696,0, + 20992,31792,14448,24816,14448,0,5824,0,5824,63456,22192,68992,13216,80304,19168,80304,26176,72736,33232,80304, + 39184,80304,30224,68992,22192,68992,10032,66128,18112,66128,18112,27840,38640,47600,48160,47600,29408,29664,51088,0, + 41520,0,23920,24560,18112,19088,18112,0,10032,0,10032,66128,23472,-1024,28528,-1024,26608,-3616,25696,-5488, + 24784,-7360,24784,-8672,24784,-10624,25952,-11608,27120,-12592,29408,-12592,30768,-12592,32088,-12272,33408,-11952,34720,-11312, + 34720,-16960,33104,-17392,31664,-17600,30224,-17808,28944,-17808,23760,-17808,21320,-15960,18880,-14112,18880,-10160,18880,-8128, + 20000,-5896,21120,-3664,23472,-1024,38464,31664,38464,45648,35592,51640,32720,57632,26176,57632,19680,57632,16808,51640, + 13936,45648,13936,31664,13936,17728,16808,11736,19680,5744,26176,5744,32720,5744,35592,11712,38464,17680,38464,31664, + 47424,31664,47424,15088,42176,6928,36928,-1232,26176,-1232,15424,-1232,10200,6888,4976,15008,4976,31664,4976,48288, + 10224,56448,15472,64608,26176,64608,36928,64608,42176,56448,47424,48288,47424,31664,23472,-1024,28528,-1024,26608,-3616, + 25696,-5488,24784,-7360,24784,-8672,24784,-10624,25952,-11608,27120,-12592,29408,-12592,30768,-12592,32088,-12272,33408,-11952, + 34720,-11312,34720,-16960,33104,-17392,31664,-17600,30224,-17808,28944,-17808,23760,-17808,21320,-15960,18880,-14112,18880,-10160, + 18880,-8128,20000,-5896,21120,-3664,23472,-1024,26176,42112,20224,42112,17168,37480,14112,32848,14112,23760,14112,14704, + 17168,10048,20224,5392,26176,5392,32176,5392,35232,10048,38288,14704,38288,23760,38288,32848,35232,37480,32176,42112, + 26176,42112,26176,48752,36080,48752,41328,42336,46576,35920,46576,23760,46576,11568,41352,5168,36128,-1232,26176,-1232, + 16272,-1232,11048,5168,5824,11568,5824,23760,5824,35920,11048,42336,16272,48752,26176,48752,13472,78208,38880,78208, + 38880,71904,13472,71904,13472,78208,23472,-1024,28528,-1024,26608,-3616,25696,-5488,24784,-7360,24784,-8672,24784,-10624, + 25952,-11608,27120,-12592,29408,-12592,30768,-12592,32088,-12272,33408,-11952,34720,-11312,34720,-16960,33104,-17392,31664,-17600, + 30224,-17808,28944,-17808,23760,-17808,21320,-15960,18880,-14112,18880,-10160,18880,-8128,20000,-5896,21120,-3664,23472,-1024, + 38464,31664,38464,45648,35592,51640,32720,57632,26176,57632,19680,57632,16808,51640,13936,45648,13936,31664,13936,17728, + 16808,11736,19680,5744,26176,5744,32720,5744,35592,11712,38464,17680,38464,31664,47424,31664,47424,15088,42176,6928, + 36928,-1232,26176,-1232,15424,-1232,10200,6888,4976,15008,4976,31664,4976,48288,10224,56448,15472,64608,26176,64608, + 36928,64608,42176,56448,47424,48288,47424,31664,13472,64848,38880,64848,38880,58560,13472,58560,13472,64848,23472,-1024, + 28528,-1024,26608,-3616,25696,-5488,24784,-7360,24784,-8672,24784,-10624,25952,-11608,27120,-12592,29408,-12592,30768,-12592, + 32088,-12272,33408,-11952,34720,-11312,34720,-16960,33104,-17392,31664,-17600,30224,-17808,28944,-17808,23760,-17808,21320,-15960, + 18880,-14112,18880,-10160,18880,-8128,20000,-5896,21120,-3664,23472,-1024,26176,42112,20224,42112,17168,37480,14112,32848, + 14112,23760,14112,14704,17168,10048,20224,5392,26176,5392,32176,5392,35232,10048,38288,14704,38288,23760,38288,32848, + 35232,37480,32176,42112,26176,42112,26176,48752,36080,48752,41328,42336,46576,35920,46576,23760,46576,11568,41352,5168, + 36128,-1232,26176,-1232,16272,-1232,11048,5168,5824,11568,5824,23760,5824,35920,11048,42336,16272,48752,26176,48752, + 22192,68992,13216,80304,19168,80304,26176,72736,33232,80304,39184,80304,30224,68992,22192,68992,9696,18480,9696,12416, + 13936,9216,18144,6032,26200,6032,34256,6032,38512,9216,42752,12416,42752,18480,42752,24176,38848,27280,34848,30432, + 27888,30432,20480,30432,20480,37488,36208,56224,4848,56224,4848,63456,46064,63456,46064,56320,30096,37568,34512,37568, + 40032,35184,44208,33360,47856,28768,51248,24352,51248,18480,51248,9088,44792,3952,38336,-1184,26432,-1184,14032,-1184, + 7568,3952,1104,9088,1104,18480,9696,18480,23072,53632,12624,69616,18528,69616,26176,59200,33872,69616,39776,69616, + 29328,53632,23072,53632,25888,20224,30384,20224,35824,17856,40000,16064,43648,11440,47088,7008,47088,1152,47088,-8240, + 40632,-13384,34176,-18528,22272,-18528,18272,-18528,14064,-17760,9824,-16960,5312,-15392,5312,-7104,8880,-9184,13128,-10248, + 17376,-11312,22016,-11312,30096,-11312,34304,-8112,38544,-4928,38544,1152,38544,6752,34640,9952,30688,13088,23680,13088, + 16272,13088,16272,20144,34560,41360,6208,41360,6208,47600,43344,47600,43344,40464,25888,20224,24096,53632,13648,69616, + 19552,69616,27200,59200,34896,69616,40800,69616,30352,53632,24096,53632,25504,-848,25504,41520,12032,41520,12032,47600, + 33328,47600,33328,-848,33328,-9136,29520,-13624,25712,-18112,18704,-18112,7904,-18112,7904,-11472,17856,-11472,21680,-11472, + 23592,-8816,25504,-6160,25504,-848,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544,4416,-15392,4416,61376,47936,61376,47936,-15392,4416,-15392,9312,-10544,43088,-10544, + 43088,56480,9312,56480,9312,-10544 ); + + DejaVuSansMono_glyphAdvances:array[0..467] of Integer = ( + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52416,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400,52400, + 52400,52400,52400,52400,52400,52400,52400,52400 ); + + DejaVuSansMono_descender_height:Integer = -24064; + DejaVuSansMono_font_height:Integer = 90752; + DejaVuSansMono_glyphCount:Integer = 468; + DejaVuSansMono_characterMap:array[0..499] of Smallint = ( + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7, + 8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, + 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, + 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67, + 68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87, + 88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107, + 108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, + 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147, + 148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167, + 168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187, + 188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, + 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227, + 228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247, + 248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267, + 268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287, + 288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307, + 308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327, + 328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347, + 348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367, + 368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387, + 388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407, + 408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427, + 428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447, + 448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467 ); diff --git a/source/packages/ultibounits/src/vgfonts/DejaVuSerif.inc b/source/packages/ultibounits/src/vgfonts/DejaVuSerif.inc new file mode 100644 index 0000000..e3c6eff --- /dev/null +++ b/source/packages/ultibounits/src/vgfonts/DejaVuSerif.inc @@ -0,0 +1,2698 @@ +{Generated by font2openvg. See http://developer.hybrid.fi for more information.} + +{converted from font file DejaVuSerif.ttf} +{font family name: DejaVu Serif} +{font style name: Book} + +var + DejaVuSerif_glyphInstructions:array[0..13959] of Byte = ( + 2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,10,10,10,10,4,0,2,10,10,10,10,4,0, + 2,4,4,10,10,4,10,10,10,10,4,4,4,10,10,4,4,10,10,4, + 10,10,10,10,4,4,4,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,4,10,10, + 10,10,10,10,0,2,4,4,10,10,10,10,10,10,10,10,10,10,10,10, + 4,4,10,10,10,10,10,10,4,10,10,4,4,4,4,4,10,10,4,4, + 4,0,2,4,4,4,4,0,2,10,10,10,10,4,10,10,10,10,4,0, + 2,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,10,10,4,4,10,10,4,0,2,4,4,4,4, + 0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,10,10,4, + 4,4,4,4,4,4,4,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,10,10,10,10,4,4,10,10,10,10,10,10,4,4,4,10,10, + 10,10,10,10,4,4,0,2,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,0,2,4,4,4,10,10,10,10,10,10,10, + 10,4,4,10,10,10,10,10,10,10,10,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,10,10,4,4, + 10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,10,10,10,10,4,4,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,4,4,10,10,4,0,2,10,10,10,10,10,10, + 10,10,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4, + 4,0,2,10,10,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,4,0,2,4,10,10,10,10,10,10,10,10,0, + 2,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,0,2,4,10,10,10,10,4,4,0,2,4,10,10,10,10,4,4, + 0,2,4,4,4,4,4,4,10,10,10,10,10,10,10,10,4,0,2,10, + 10,10,10,10,10,10,10,10,10,4,4,10,10,10,10,10,10,10,10,4, + 0,2,4,10,10,10,10,4,4,0,2,4,4,4,4,4,4,10,10,10, + 10,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10, + 10,10,4,4,4,4,4,10,10,10,10,10,10,10,10,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,10,10,10,10,4,4,4,4,4,4,4,10,10,10,10, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2, + 4,10,10,10,10,4,4,0,2,4,4,4,4,4,4,10,10,10,10,4, + 4,4,4,4,0,2,10,10,10,10,10,10,10,10,10,10,10,10,4,4, + 10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,4,4,4,4, + 4,10,10,4,4,4,4,4,4,4,4,4,4,4,10,10,10,10,0,2, + 4,10,10,10,10,4,4,0,2,4,4,10,10,10,10,10,10,4,10,10, + 10,10,10,10,4,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,10,10,10,10,4,4,4,4,4,4,4,10,10,10,10, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4, + 4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,10,10,10,10,10,10,0,2,4,4,4,4,4,10,10,10,10,10,10, + 4,4,10,10,10,10,4,4,10,10,10,10,0,2,4,4,4,4,4,10, + 10,10,10,10,10,10,10,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,4,0,2,10,10,10,10,10,10,10,10,4,4,10,10,10,10,10,10, + 10,10,4,0,2,4,4,4,4,10,10,10,10,10,10,10,10,4,4,4, + 4,4,0,2,4,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10, + 10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4, + 10,10,10,10,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,10, + 10,10,10,4,0,2,4,10,10,10,10,4,4,10,10,10,10,4,10,10, + 10,10,10,10,10,10,4,4,4,4,0,2,10,10,10,10,10,10,10,10, + 4,0,2,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4, + 4,10,10,10,10,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0, + 2,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,10,10,10,10,4,4,10,10,10,10,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2, + 10,10,10,10,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4, + 4,4,10,10,10,10,4,4,4,4,4,4,4,4,4,4,4,10,10,10, + 10,0,2,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4, + 4,10,10,10,10,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,10,10,10,10, + 0,2,4,4,4,4,10,10,10,10,10,10,10,10,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,10,10,10,10,10,10,10,10,4,4, + 4,4,0,2,10,10,10,10,10,10,10,10,4,0,2,4,4,10,10,10, + 10,4,4,4,4,4,4,4,4,4,4,4,10,10,10,10,0,2,4,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,4,4,10,10,10,10,10, + 10,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4, + 10,10,10,10,4,10,10,10,10,4,0,2,4,4,4,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,10,10,10,10,4,4,10,10,10,10,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,10,10,4,10,10,4,4,4,10, + 10,4,10,10,4,4,4,10,10,4,10,10,10,10,4,10,10,4,0,2, + 4,4,4,4,0,2,4,10,10,4,10,10,10,10,4,10,10,4,4,4, + 10,10,4,10,10,4,4,4,10,10,4,10,10,4,4,0,2,4,10,10, + 10,4,10,10,10,10,4,10,10,10,4,10,10,10,10,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,4,4,0,2,10,10,10,10,4,0,2,10,10, + 4,4,4,10,10,10,10,4,4,4,10,10,4,4,10,10,4,10,10,4, + 0,2,4,10,10,10,10,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,10,10,10,10,4,0,2,4,4,4,10,10,10,10,4,4, + 4,10,10,10,10,4,4,4,10,10,10,10,4,4,4,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 0,2,10,10,10,4,10,10,10,10,0,2,4,4,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,4,4,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,4,4, + 10,10,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,4,10,10,10,10,10,10,4,4, + 10,10,10,10,4,4,10,10,10,10,0,2,4,4,10,10,10,10,10,10, + 0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,0,2,4,4,4,4,0,2, + 4,10,10,10,10,4,4,0,2,10,10,4,4,4,4,4,10,10,4,4, + 4,4,4,4,4,4,4,4,4,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, + 4,10,10,10,10,10,4,4,4,4,4,4,4,4,4,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,10,10,10,10,4,4,10,10,10, + 10,10,10,4,4,4,10,10,10,10,10,10,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4,4,4, + 4,4,4,10,10,10,10,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10, + 10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4, + 0,2,4,4,4,4,4,4,4,0,2,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,10,4,4, + 4,4,4,4,4,4,4,10,10,10,10,10,10,0,2,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,10,10,10,10,4,4,10,10,10,10,10,10,4,4,4, + 10,10,10,10,10,10,4,4,0,2,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,10,10,4,4,4,10,10,10,10,10, + 10,4,4,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,10, + 10,10,10,4,10,10,10,10,4,10,10,10,10,4,10,10,10,4,0,2, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,0,2,4,4, + 4,10,10,10,10,10,10,10,10,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,10,10,10,10,10,10,10,10,10,10,4,4,10,10,10,10,10, + 10,10,10,4,0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10, + 10,10,0,2,4,10,10,10,10,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,4,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10,10, + 10,4,10,10,10,10,4,10,10,10,10,4,10,10,10,4,0,2,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4,4,4,4, + 0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,0,2,4,10,10,10,10,4,10,10,10,10,4,10,10,10,10,4,10, + 10,10,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10, + 4,0,2,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,4, + 4,0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4,4, + 10,10,10,10,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,10, + 10,10,10,4,4,4,4,4,4,4,10,10,10,10,4,0,2,4,4,4, + 4,0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4,4, + 10,10,10,10,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,10,10,10,10,4,4,4,4,4,4,4,10,10,10,10,4,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,0,2,4,10,10,10,10,4,4,0,2,4,4, + 4,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,0,2,10, + 10,10,10,4,4,4,4,4,10,10,10,10,4,10,10,10,10,4,10,10, + 10,10,10,10,4,4,10,10,10,10,10,10,4,10,10,10,10,0,2,4, + 4,10,10,10,10,10,10,0,2,4,4,4,4,4,10,10,10,10,10,10, + 4,4,10,10,10,10,4,4,10,10,10,10,0,2,4,4,4,4,0,2, + 4,4,10,10,10,10,10,10,0,2,4,4,4,4,4,10,10,10,10,10, + 10,4,4,10,10,10,10,4,4,10,10,10,10,0,2,4,4,4,4,0, + 2,4,4,10,10,10,10,10,10,0,2,4,4,4,4,4,10,10,10,10, + 10,10,4,4,10,10,10,10,4,4,10,10,10,10,0,2,4,4,4,4, + 4,4,4,0,2,4,4,10,10,10,10,10,10,0,2,4,4,4,4,4, + 10,10,10,10,10,10,4,4,10,10,10,10,4,4,10,10,10,10,0,2, + 4,10,10,10,10,4,10,10,10,10,4,10,10,10,10,4,10,10,10,10, + 0,2,4,4,10,10,10,10,10,10,0,2,4,4,4,4,4,10,10,10, + 10,10,10,4,4,10,10,10,10,4,4,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,10, + 10,10,10,10,10,0,2,4,4,4,4,4,10,10,10,10,10,10,4,4, + 10,10,10,10,4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,4,4,10,10,10,10,4,4,10,10,10,10, + 10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10, + 10,4,0,2,10,10,10,10,10,10,10,10,4,4,10,10,10,10,10,10, + 10,10,4,0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,0, + 2,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10, + 10,10,4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,4,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4,0, + 2,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10, + 10,10,4,0,2,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10, + 4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,10,10,10,10,4,4,4,10,10,4,10,10,4, + 4,4,0,2,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4, + 4,4,10,10,10,10,4,4,4,4,0,2,4,10,10,10,10,4,10,10, + 10,10,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10, + 4,10,10,10,10,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 4,0,2,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,4,0, + 2,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,4,4,0, + 2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,10,10,10, + 10,4,4,4,4,4,10,10,10,10,4,4,4,0,2,4,4,4,4,0, + 2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10, + 4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 10,10,10,10,4,4,4,4,4,10,10,10,10,4,4,4,0,2,10,10, + 10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,10,10,10,10,4,4,10, + 10,10,10,0,2,4,4,4,4,0,2,4,10,10,10,10,10,10,10,10, + 0,2,4,4,4,4,10,10,10,10,10,10,10,10,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,10,10, + 10,10,4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,0,2,4,4,10,10,10,10,10,10,0,2,4,4,4,4,4, + 10,10,10,10,10,10,4,4,10,10,10,10,4,4,10,10,10,10,0,2, + 4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10, + 4,10,10,10,10,0,2,4,4,10,10,10,10,10,10,0,2,4,4,4, + 4,4,10,10,10,10,10,10,4,4,10,10,10,10,4,4,10,10,10,10, + 0,2,4,4,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,10, + 10,10,10,10,10,0,2,4,4,4,4,4,10,10,10,10,10,10,4,4, + 10,10,10,10,4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10, + 10,10,4,4,10,10,10,10,10,10,10,10,4,0,2,4,4,4,4,0, + 2,10,10,10,10,10,10,10,10,4,4,10,10,10,10,10,10,10,10,4, + 0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,10,10,4,4,10,10,10,10,10,10,10,10,4,0,2, + 4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,4,4,10, + 10,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,10,10,4,4,10,10,10,10,10,10,10,10, + 4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,4,4,10,10,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10, + 10,10,10,10,4,4,10,10,10,10,10,10,10,10,4,0,2,4,4,4, + 4,4,4,4,0,2,10,10,10,10,10,10,10,10,4,4,10,10,10,10, + 10,10,10,10,4,0,2,4,4,4,4,4,4,4,0,2,4,10,10,10, + 10,4,4,0,2,4,4,4,4,4,4,10,10,10,10,4,0,2,4,4, + 4,4,4,4,4,0,2,4,4,4,4,10,10,10,10,10,10,10,10,4, + 4,4,4,4,0,2,4,10,10,10,10,10,10,10,10,0,2,4,4,4, + 4,0,2,4,10,10,10,10,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,10,10,10,10,4,0,2,4,4,4,4,10,10,10, + 10,10,10,10,10,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,4,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,4,0,2,4,10,10,10,10,4,10, + 10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10,4,10,10,10, + 10,0,2,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10,10,4, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4,10, + 10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,10,10,10, + 10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10, + 4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4, + 4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,4,4,4,4,4,10,10,10,10,10,10,10,10,4,4,0, + 2,4,4,4,4,4,4,4,0,2,4,10,10,10,10,4,4,10,10,10, + 10,4,10,10,10,10,10,10,10,10,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,4,4,4,4,4, + 10,10,10,10,10,10,10,10,4,4,0,2,4,10,10,10,10,4,10,10, + 10,10,0,2,4,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10, + 10,10,10,10,4,4,4,4,0,2,10,10,10,10,10,10,10,10,4,0, + 2,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,4,4,4,4,4,10,10,10,10, + 10,10,10,10,4,4,0,2,10,10,10,10,10,10,10,10,0,2,4,10, + 10,10,10,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,4,4, + 4,4,0,2,10,10,10,10,10,10,10,10,4,0,2,10,10,4,4,10, + 10,4,0,2,10,10,10,10,10,10,10,10,4,4,4,4,4,10,10,10, + 10,10,10,10,10,4,4,0,2,10,10,4,4,10,10,4,0,2,4,10, + 10,10,10,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,4,4, + 4,4,0,2,10,10,10,10,10,10,10,10,4,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4, + 4,10,10,10,10,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4, + 4,10,10,10,10,4,4,4,4,0,2,4,10,10,10,10,4,10,10,10, + 10,4,10,10,10,10,4,10,10,10,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,4,10,10,10,10,4,10,10,10,10,4,10,10, + 10,10,4,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4, + 10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,10,10,10,10,10,4,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,0, + 2,4,4,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0, + 2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,4,4,10,10,10,10,4,4,4,4,4,4,4, + 10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4, + 4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,4,4, + 4,4,10,10,10,10,4,4,10,10,10,10,4,0,2,4,4,4,4,4, + 4,4,0,2,4,4,10,10,10,10,4,4,4,4,4,4,4,10,10,10, + 10,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,10,10,10,10, + 4,4,10,10,10,10,4,0,2,10,10,4,4,10,10,4,0,2,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,10,10,4,4,10,10,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4, + 4,4,4,4,4,4,4,4,0,2,10,10,4,4,10,10,4,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,4,4,10, + 10,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4,4, + 10,10,10,10,4,4,4,4,0,2,10,10,4,4,10,10,4,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,10,10,4,4,10,10,4,0,2,4,4,4,4,4,4,4,10,10,10, + 10,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,0,2,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,10,10,10,10, + 4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,0,2,4,4,4, + 4,4,4,4,0,2,10,10,4,4,10,10,4,0,2,4,4,4,4,4, + 4,4,10,10,10,10,4,4,4,4,4,4,4,10,10,10,10,4,4,4, + 4,0,2,4,4,4,4,4,4,4,10,10,10,10,4,10,10,10,10,4, + 4,10,10,10,10,4,10,10,10,10,4,4,4,4,0,2,4,4,4,4, + 4,4,4,10,10,10,10,4,10,10,10,10,4,4,10,10,10,10,4,10, + 10,10,10,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0, + 2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,4,10,10,10,10,4,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,0,2,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0, + 2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, + 10,10,10,10,10,0,2,4,4,10,10,10,10,4,0,2,4,10,10,10, + 10,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0, + 2,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10,10,4,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 4,0,2,4,4,4,4,0,2,10,10,4,4,4,4,4,10,10,4,4, + 4,4,4,4,4,4,4,4,4,10,10,10,10,0,2,4,10,10,10,10, + 4,4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,4,4,4,4, + 4,4,4,4,4,4,4,10,10,10,10,0,2,10,10,4,4,10,10,4, + 0,2,10,10,4,4,4,4,4,10,10,4,4,4,4,4,4,4,4,4, + 4,4,10,10,10,10,0,2,4,10,10,10,10,4,4,0,2,10,10,4, + 4,10,10,4,0,2,4,4,10,10,10,10,4,4,4,4,4,4,4,4, + 4,4,4,10,10,10,10,0,2,10,10,4,4,4,4,4,10,10,4,4, + 4,4,4,4,4,4,4,4,4,10,10,10,10,0,2,4,10,10,10,10, + 4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,4, + 4,4,4,4,4,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,4,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,0,2,4,4,4,4,0,2,4,4,10,10,10,10,10,10,4,10,10, + 10,10,10,10,4,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0, + 2,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,10,10,4,10, + 10,10,10,10,10,4,4,10,10,10,10,10,10,4,10,10,10,10,10,10, + 0,2,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,4,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,0,2,4,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,4, + 10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,0,2,4,4,10,10,10,10,10,10,4, + 10,10,10,10,10,10,4,4,10,10,10,10,10,10,4,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,4,10,10,10,10, + 10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2, + 4,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,4,10,10,10, + 10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0, + 2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10, + 10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,4, + 4,10,10,10,10,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,4,4,4,10,10,10,10,4,10,10,10,10,4, + 0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,10,10,10,10,4,10,10, + 10,10,0,2,4,10,10,10,10,4,10,10,10,10,4,10,10,10,10,4, + 10,10,10,4,0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4, + 4,4,4,10,10,10,10,4,0,2,4,10,10,10,10,4,10,10,10,10, + 4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,4,4,4,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4,4,10, + 10,10,10,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,4,4,4,0,2,4,10,10,10, + 10,4,10,10,10,10,0,2,4,4,4,4,4,4,10,10,10,10,4,4, + 4,4,4,4,4,10,10,10,10,4,0,2,4,10,10,10,10,4,10,10, + 10,10,0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,10, + 10,10,10,4,4,4,0,2,4,4,4,4,4,4,10,10,10,10,4,4, + 4,4,4,4,4,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4, + 0,2,4,4,4,4,0,2,4,4,4,4,4,4,10,10,10,10,4,4, + 4,4,4,4,4,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4, + 4,4,0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,10, + 10,10,10,4,4,4,0,2,4,4,4,4,4,4,10,10,10,10,4,4, + 4,4,4,4,4,10,10,10,10,4,0,2,4,4,10,10,10,10,10,4, + 10,10,10,10,10,10,0,2,4,4,4,4,4,4,10,10,10,10,4,4, + 4,4,4,10,10,10,10,4,4,4,0,2,4,4,10,10,10,10,10,4, + 10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0, + 2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,10,10,10,10,4,4,10,10,10,10,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,10, + 10,10,10,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4, + 4,4,4,4,4,10,10,10,10,10,10,10,10,4,4,4,4,0,2,10, + 10,10,10,10,10,10,10,4,0,2,10,10,4,4,10,10,4,10,10,10, + 10,10,10,10,10,4,4,4,4,0,2,4,10,10,10,10,4,4,0,2, + 4,10,10,10,10,4,4,0,2,4,10,10,10,10,4,4,0,2,4,4, + 4,4,4,4,4,10,10,10,10,4,4,4,4,4,4,0,2,10,10,10, + 10,10,10,10,10,4,0,2,4,4,4,4,4,10,10,10,10,10,10,10, + 10,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10,4,4,0,2, + 4,4,4,10,10,10,10,4,4,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,4,0,2,4,10,10,10,10,10,10,10,10,4,4,4,4,4, + 4,4,4,0,2,10,10,10,10,10,10,10,10,10,10,4,4,10,10,10, + 10,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,4,4,10,10,10,10,4,4,10,10,10,10,10,10,10,10,4,0, + 2,10,10,10,10,10,10,10,10,10,10,10,10,4,4,10,10,10,10,4, + 4,10,10,10,10,10,10,10,10,4,0,2,4,10,10,10,10,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,10,10,10,10,4, + 0,2,10,10,4,4,10,10,4,10,10,10,10,4,4,4,4,0,2,4, + 10,10,10,10,4,4,0,2,4,4,10,10,10,10,4,0,2,4,4,4, + 4,4,4,10,10,10,10,4,4,4,4,4,4,4,0,2,4,10,10,10, + 10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,10,10,10,10,10, + 10,10,10,4,4,4,4,4,0,2,10,10,10,10,10,10,4,4,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10, + 10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,0,2,10,10,4,10,10,10,10,10,10,10, + 10,10,10,10,10,4,4,10,10,0,2,4,10,10,10,10,0,2,4,4, + 10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,10,10,10,10, + 10,10,10,10,10,10,10,0,2,10,4,4,10,10,10,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,10,10,0,2,4,10,10,10, + 10,10,4,4,4,4,4,10,10,10,10,4,4,10,10,10,10,10,4,4, + 4,4,4,10,10,10,10,4,0,2,10,10,4,4,4,10,10,10,10,10, + 10,10,4,4,4,4,4,10,10,10,10,10,10,10,10,10,4,4,10,10, + 0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,10,10,10,10, + 0,2,10,10,10,10,0,2,4,4,4,4,4,4,4,10,10,10,10,4, + 10,10,10,10,10,10,4,4,10,10,10,10,10,10,10,10,4,10,10,10, + 10,4,4,4,4,0,2,10,10,4,4,4,10,10,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,10,10,10,4,4,10,10,10,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,10,10,10, + 10,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,0,2,10,10,10,10,4,4,10,10,10,10, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,0,2,10,10,10,10,4,4,4,4,4,4,4,10,10,10,10,4, + 4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4,4,4,4,4, + 4,10,10,10,10,0,2,4,4,10,10,10,10,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4,4, + 4,10,10,10,10,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4, + 0,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10, + 4,10,10,0,2,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4,4, + 10,10,10,10,10,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10,10, + 10,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10, + 10,10,10,4,4,4,4,4,4,4,10,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,4,4,4,4, + 4,4,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,0,2,4,10,10,10,10,4,4,4,4,4,4,4,4,10, + 10,4,4,10,10,0,2,4,10,10,10,10,4,4,0,2,4,10,10,10, + 10,10,10,10,10,0,2,10,10,10,10,4,4,10,10,10,10,4,10,10, + 10,10,10,10,10,10,4,4,4,4,4,4,4,0,2,4,4,4,4,4, + 4,4,10,10,10,10,10,10,4,4,4,4,4,10,10,4,4,4,4,4, + 4,4,4,0,2,4,10,10,10,10,4,4,0,2,10,10,10,10,10,10, + 4,10,10,10,10,10,10,4,4,10,10,10,10,10,10,4,10,10,10,10, + 10,10,4,4,0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4, + 4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,4,0,2,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,0, + 2,10,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10,10,10,10, + 10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,10,10,10,10,4, + 4,10,10,10,10,4,4,10,10,10,10,4,10,10,10,4,0,2,4,4, + 4,4,4,4,4,4,4,4,4,4,10,10,4,4,10,10,0,2,4,4, + 4,4,10,10,10,10,4,10,10,10,10,4,4,4,4,4,10,10,10,10, + 4,4,10,10,10,10,4,0,2,10,10,10,10,4,4,4,4,4,4,4, + 4,4,4,4,10,10,10,10,4,4,0,2,4,4,4,4,4,4,10,10, + 10,10,4,4,4,4,4,4,4,10,10,10,10,4,0,2,4,4,10,10, + 10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,4,4,4,0,2,4,4,10,10, + 10,10,10,4,10,10,10,10,10,10,0,2,4,10,10,10,10,10,10,10, + 10,4,4,4,4,10,10,10,10,10,10,10,10,10,10,10,10,4,4,4, + 0,2,10,10,4,4,4,4,4,4,4,10,10,10,10,10,10,4,4,10, + 10,10,10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,10,10,10,4,4,10,10,10,4,4,0,2,4,10,10,10,10,4,4, + 10,10,10,10,4,4,4,4,4,4,4,4,4,10,10,10,10,4,4,10, + 10,10,10,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, + 4,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,4,4,10,10,10,10,10,10,4,4,4,4,4,4, + 4,4,4,4,4,0,2,10,10,10,10,10,10,4,4,10,10,10,10,10, + 10,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, + 4,4,4,4,10,10,10,10,10,4,4,10,10,10,10,10,0,2,4,4, + 10,10,10,10,10,4,4,4,10,4,4,4,4,4,4,4,4,4,10,4, + 4,4,10,10,10,10,10,0,2,10,10,10,10,10,10,4,4,10,10,10, + 10,10,10,4,4,4,4,4,4,4,4,4,4,4,10,0,2,4,10,10, + 10,10,10,10,4,4,10,10,10,10,10,10,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,10,10,10,10,10,10,4,4,10, + 10,10,10,10,10,4,4,4,4,4,4,0,2,10,10,10,10,4,4,4, + 4,4,4,4,4,4,4,4,0,2,10,10,10,10,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, + 4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,10,10,10,10,4, + 4,0,2,4,4,4,4,4,4,10,10,10,10,4,0,2,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0, + 2,4,10,10,10,10,4,4,0,2,4,4,4,4,4,4,10,10,10,10, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,0,2,4,4,4,4,10,10,10,10,10,10,10,10, + 4,4,4,4,4,0,2,4,10,10,10,10,10,10,10,10,0,2,4,4, + 10,10,10,10,4,4,4,4,4,4,4,10,10,10,10,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,10,10,10,10,4,4,10,10,10,10,4,0,2, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,4,4,4,4,10,10,10,10,4,4,10,10,10,10, + 4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4,4,10,10,10, + 10,4,4,4,4,4,4,4,10,10,10,10,0,2,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,4,4,4,4,10,10,10,10,4,4,10,10,10,10, + 4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,10, + 10,10,10,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,10, + 10,10,10,4,4,4,4,4,4,4,10,10,10,10,4,4,4,4,0,2, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,0,2,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,10,10, + 0,2,4,4,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10,4, + 4,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4, + 4,4,0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4, + 4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4, + 4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,4,4,4,0, + 2,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2, + 10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4, + 4,4,10,10,10,10,4,4,4,4,4,4,4,10,10,10,10,4,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4, + 4,10,10,10,10,4,4,4,0,2,4,4,4,4,4,4,10,10,10,10, + 4,4,4,4,4,4,4,10,10,10,10,4,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4, + 4,10,10,10,10,4,4,4,0,2,4,4,4,4,4,4,10,10,10,10, + 4,4,4,4,4,4,4,10,10,10,10,4,0,2,10,10,10,10,10,10, + 10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4, + 4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4, + 0,2,4,4,4,4,4,4,10,10,10,10,4,4,4,4,4,4,4,10, + 10,10,10,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10, + 10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,4,4,10,10, + 10,10,4,4,4,4,4,10,10,10,10,4,4,4,0,2,4,4,10,10, + 10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2, + 10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, + 4,4,4,4,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,10,10,10, + 10,10,10,0,2,4,4,4,4,4,10,10,10,10,10,10,4,4,10,10, + 10,10,4,4,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10, + 10,10,10,10,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10, + 10,10,10,0,2,4,4,10,10,10,10,10,10,0,2,4,4,4,4,4, + 10,10,10,10,10,10,4,4,10,10,10,10,4,4,10,10,10,10,0,2, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,0,2,4,4,4,4,0,2,4,4,10,10,10,10,10,10, + 0,2,10,10,10,10,10,10,4,4,10,10,10,10,4,4,10,10,10,10, + 10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10, + 10,4,0,2,10,10,10,10,10,10,10,10,4,4,4,4,4,4,4,4, + 4,4,4,4,4,10,10,10,10,10,10,10,10,4,4,0,2,4,4,4, + 10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,4,4,10,10,10, + 10,4,10,10,10,10,10,10,10,10,4,4,4,4,4,4,4,4,0,2, + 4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,4,4,4, + 4,4,10,10,10,10,10,10,10,10,4,4,0,2,4,4,4,4,4,4, + 4,0,2,4,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,10, + 10,10,10,4,4,4,4,0,2,10,10,10,10,10,10,10,10,4,0,2, + 4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4, + 4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,10, + 4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10, + 10,10,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,10, + 10,10,10,10,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, + 10,0,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4, + 4,4,4,0,2,4,4,10,10,10,10,10,4,10,10,10,10,10,10,0, + 2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, + 2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, + 4,10,10,10,10,10,10,4,4,10,10,10,10,10,10,0,2,4,4,4, + 4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,10,10,10, + 10,10,10,4,4,10,10,10,10,10,10,0,2,4,4,4,4,10,10,10, + 10,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,0,2,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10, + 4,4,0,2,4,4,4,4,4,4,10,10,10,10,4,0,2,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10,4,4, + 0,2,4,4,4,4,4,4,10,10,10,10,4,0,2,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,10,10,10,10,10, + 10,10,10,4,4,4,4,4,0,2,4,10,10,10,10,10,10,10,10,0 ); + + DejaVuSerif_glyphInstructionIndices:array[0..467] of Integer = ( + 0,0,18,30,66,110,156,202,208,220,232,252,266,275,281,291,297,317,330,354, + 387,409,435,465,476,514,544,564,583,592,604,613,642,700,723,758,781,803,829,853, + 878,908,922,941,968,984,1011,1033,1059,1085,1113,1148,1180,1198,1222,1239,1262,1292,1315,1331, + 1341,1347,1357,1366,1372,1378,1413,1443,1464,1494,1518,1545,1582,1610,1632,1659,1687,1699,1742,1770, + 1790,1822,1854,1877,1909,1931,1955,1972,1995,2025,2052,2068,2099,2105,2136,2156,2168,2180,2192,2204, + 2216,2228,2240,2252,2264,2276,2288,2300,2312,2324,2336,2348,2360,2372,2384,2396,2408,2420,2432,2444, + 2456,2468,2480,2492,2504,2516,2528,2540,2552,2552,2570,2601,2630,2670,2709,2721,2769,2789,2846,2887, + 2905,2913,2919,2990,2996,3018,3038,3062,3095,3101,3131,3147,3157,3173,3186,3212,3230,3271,3314,3375, + 3404,3433,3462,3494,3539,3582,3622,3662,3701,3733,3765,3800,3846,3866,3886,3909,3943,3973,4017,4049, + 4081,4116,4164,4210,4224,4262,4292,4322,4355,4399,4428,4458,4498,4539,4580,4624,4681,4736,4791,4843, + 4880,4910,4940,4973,5017,5035,5053,5074,5106,5143,5193,5219,5245,5274,5316,5356,5382,5420,5450,5480, + 5513,5557,5590,5622,5669,5698,5739,5774,5821,5860,5911,5940,5967,5999,6029,6062,6093,6125,6155,6186, + 6222,6252,6290,6322,6352,6390,6426,6462,6496,6538,6578,6613,6646,6680,6726,6763,6812,6847,6894,6928, + 6974,7013,7050,7094,7130,7166,7200,7220,7238,7264,7288,7318,7356,7380,7392,7425,7474,7502,7528,7564, + 7601,7629,7651,7669,7694,7715,7737,7755,7781,7803,7827,7847,7875,7909,7940,7977,8008,8045,8082,8115, + 8148,8180,8206,8244,8276,8314,8346,8380,8422,8463,8492,8536,8568,8612,8644,8682,8720,8761,8802,8850, + 8898,8939,8980,9014,9052,9079,9107,9133,9163,9209,9255,9285,9315,9351,9387,9431,9475,9511,9547,9587, + 9627,9659,9691,9723,9759,9802,9824,9846,9872,9898,9923,9948,9971,10009,10048,10076,10110,10134,10164,10187, + 10220,10251,10281,10307,10335,10369,10403,10429,10457,10488,10515,10549,10581,10607,10646,10662,10684,10714,10749,10769, + 10803,10846,10873,10901,10931,10973,11009,11050,11085,11115,11154,11193,11225,11257,11273,11304,11337,11357,11388,11411, + 11451,11491,11521,11546,11572,11604,11628,11652,11679,11706,11733,11757,11788,11816,11844,11872,11896,11902,11914,11936, + 11948,11995,12042,12097,12132,12175,12214,12255,12304,12359,12391,12435,12458,12479,12514,12543,12576,12609,12659,12709, + 12759,12809,12862,12915,12965,13015,13039,13088,13149,13188,13239,13285,13343,13376,13419,13453,13499,13535,13572,13614, + 13650,13698,13740,13776,13812,13838,13876,13914 ); + + DejaVuSerif_glyphInstructionCounts:array[0..467] of Integer = ( + 0,18,12,36,44,46,46,6,12,12,20,14,9,6,10,6,20,13,24,33, + 22,26,30,11,38,30,20,19,9,12,9,29,58,23,35,23,22,26,24,25, + 30,14,19,27,16,27,22,26,26,28,35,32,18,24,17,23,30,23,16,10, + 6,10,9,6,6,35,30,21,30,24,27,37,28,22,27,28,12,43,28,20, + 32,32,23,32,22,24,17,23,30,27,16,31,6,31,20,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,0,18,31,29,40,39,12,48,20,57,41,18, + 8,6,71,6,22,20,24,33,6,30,16,10,16,13,26,18,41,43,61,29, + 29,29,32,45,43,40,40,39,32,32,35,46,20,20,23,34,30,44,32,32, + 35,48,46,14,38,30,30,33,44,29,30,40,41,41,44,57,55,55,52,37, + 30,30,33,44,18,18,21,32,37,50,26,26,29,42,40,26,38,30,30,33, + 44,33,32,47,29,41,35,47,39,51,29,27,32,30,33,31,32,30,31,36, + 30,38,32,30,38,36,36,34,42,40,35,33,34,46,37,49,35,47,34,46, + 39,37,44,36,36,34,20,18,26,24,30,38,24,12,33,49,28,26,36,37, + 28,22,18,25,21,22,18,26,22,24,20,28,34,31,37,31,37,37,33,33, + 32,26,38,32,38,32,34,42,41,29,44,32,44,32,38,38,41,41,48,48, + 41,41,34,38,27,28,26,30,46,46,30,30,36,36,44,44,36,36,40,40, + 32,32,32,36,43,22,22,26,26,25,25,23,38,39,28,34,24,30,23,33, + 31,30,26,28,34,34,26,28,31,27,34,32,26,39,16,22,30,35,20,34, + 43,27,28,30,42,36,41,35,30,39,39,32,32,16,31,33,20,31,23,40, + 40,30,25,26,32,24,24,27,27,27,24,31,28,28,28,24,6,12,22,12, + 47,47,55,35,43,39,41,49,55,32,44,23,21,35,29,33,33,50,50,50, + 50,53,53,50,50,24,49,61,39,51,46,58,33,43,34,46,36,37,42,36, + 48,42,36,36,26,38,38,46 ); + + DejaVuSerif_glyphPointIndices:array[0..467] of Integer = ( + 0,0,24,34,68,133,206,278,283,302,321,340,353,365,370,387,392,426,438,473, + 529,549,590,642,652,719,771,805,834,842,852,860,907,1011,1032,1080,1120,1148,1173,1196, + 1236,1265,1278,1304,1330,1345,1371,1392,1438,1470,1518,1563,1618,1635,1666,1682,1704,1733,1755,1770, + 1779,1784,1793,1801,1806,1811,1864,1908,1944,1988,2026,2060,2119,2154,2182,2223,2250,2261,2319,2354, + 2388,2434,2480,2510,2565,2594,2625,2641,2663,2692,2726,2741,2787,2792,2838,2871,2881,2891,2901,2911, + 2921,2931,2941,2951,2961,2971,2981,2991,3001,3011,3021,3031,3041,3051,3061,3071,3081,3091,3101,3111, + 3121,3131,3141,3151,3161,3171,3181,3191,3201,3201,3225,3270,3306,3368,3406,3416,3501,3535,3637,3695, + 3711,3718,3723,3834,3839,3877,3895,3929,3985,3990,4027,4046,4063,4090,4102,4141,4157,4194,4245,4326, + 4373,4399,4425,4454,4511,4566,4619,4657,4724,4754,4784,4817,4876,4894,4912,4933,4980,5016,5073,5124, + 5175,5229,5311,5391,5404,5463,5499,5535,5574,5639,5666,5702,5769,5827,5885,5946,6036,6123,6210,6295, + 6358,6401,6444,6490,6562,6578,6594,6613,6658,6719,6791,6830,6869,6911,6982,7050,7089,7148,7184,7220, + 7259,7324,7363,7409,7477,7503,7561,7601,7673,7720,7799,7844,7885,7933,7977,8034,8087,8135,8179,8215, + 8264,8300,8352,8382,8425,8469,8526,8568,8623,8674,8738,8771,8817,8865,8932,8991,9069,9126,9202,9254, + 9325,9362,9405,9447,9490,9539,9587,9605,9621,9653,9683,9722,9776,9806,9817,9856,9925,9959,9991,10029, + 10068,10095,10115,10131,10158,10181,10201,10217,10249,10277,10300,10319,10345,10385,10418,10465,10494,10537,10584,10632, + 10680,10731,10770,10835,10888,10944,10988,11028,11099,11149,11184,11241,11283,11336,11374,11434,11494,11557,11620,11702, + 11784,11847,11910,11954,12010,12035,12069,12094,12131,12198,12266,12302,12338,12388,12438,12503,12568,12609,12650,12707, + 12764,12794,12824,12854,12896,12952,12972,12992,13024,13056,13079,13102,13132,13184,13240,13274,13322,13352,13396,13436, + 13494,13548,13584,13620,13654,13702,13762,13787,13833,13886,13918,13969,14020,14052,14112,14131,14152,14187,14229,14248, + 14289,14347,14381,14416,14465,14537,14597,14666,14722,14762,14823,14872,14927,14982,14997,15048,15095,15118,15164,15194, + 15251,15308,15357,15395,15426,15473,15496,15519,15557,15595,15633,15666,15708,15748,15787,15826,15856,15861,15871,15892, + 15902,15953,16004,16071,16112,16168,16220,16267,16329,16405,16434,16495,16516,16535,16589,16631,16670,16709,16779,16849, + 16919,16989,17062,17135,17205,17275,17313,17373,17465,17508,17583,17626,17716,17764,17829,17877,17944,17978,18013,18085, + 18145,18222,18287,18333,18379,18411,18454,18497 ); + + DejaVuSerif_glyphPoints:array[0..(18556 * 2) - 1] of Integer = ( + 11856,4416,11856,6800,13472,8456,15088,10112,17504,10112,19840,10112,21504,8456,23168,6800,23168,4416,23168,2080, + 21504,424,19840,-1232,17504,-1232,15088,-1232,13472,408,11856,2048,11856,4416,12032,63456,22992,63456,20096,28560, + 20096,17856,14880,17856,14880,28560,12032,63456,15296,63456,15296,39872,8544,39872,8544,63456,15296,63456,31488,63456, + 31488,39872,24736,39872,24736,63456,31488,63456,44288,38288,32304,38288,28736,24096,40848,24096,44288,38288,38288,62480, + 33952,44832,45936,44832,50320,62480,57632,62480,53168,44832,66256,44832,66256,38288,51504,38288,48032,24096,61376,24096, + 61376,17600,46416,17600,42032,0,34720,0,39184,17600,27152,17600,22736,0,15520,0,19840,17600,6720,17600, + 6720,24096,21504,24096,24992,38288,11568,38288,11568,44832,26640,44832,31072,62480,38288,62480,29328,2896,34128,3312, + 36656,5648,39184,7984,39184,12032,39184,15680,36680,18232,34176,20784,29328,22096,29328,2896,25072,50448,20704,50144, + 18280,47912,15856,45680,15856,41952,15856,38544,18088,36296,20320,34048,25072,32640,25072,50448,7488,3056,7488,14784, + 12064,14784,12240,8960,15472,5992,18704,3024,25072,2896,25072,23504,15296,26224,11344,29776,7392,33328,7392,39184, + 7392,45984,12072,50104,16752,54224,25072,54736,25072,66128,29328,66128,29328,54736,33616,54400,37592,53360,41568,52320, + 45344,50576,45344,39440,40720,39440,40208,44368,37272,47216,34336,50064,29328,50448,29328,31232,39776,28384,43968,24712, + 48160,21040,48160,14880,48160,7824,43224,3568,38288,-688,29328,-1312,29328,-12800,25072,-12800,25072,-1312,20992,-1232, + 16616,-152,12240,928,7488,3056,19504,60640,15760,60640,13664,57120,11568,53600,11568,47264,11568,41008,13712,37440, + 15856,33872,19504,33872,23120,33872,25224,37424,27328,40976,27328,47264,27328,53552,25224,57096,23120,60640,19504,60640, + 63280,29488,59584,29488,57480,25920,55376,22352,55376,16016,55376,9776,57504,6224,59632,2672,63280,2672,66944,2672, + 69024,6224,71104,9776,71104,16016,71104,22320,69000,25904,66896,29488,63280,29488,63280,33328,70000,33328,73952,28648, + 77904,23968,77904,16016,77904,8080,73928,3424,69952,-1232,63280,-1232,56480,-1232,52528,3424,48576,8080,48576,16016, + 48576,24016,52552,28672,56528,33328,63280,33328,57968,64608,64432,64608,24736,-1232,18272,-1232,57968,64608,19424,64608, + 26144,64608,30136,59952,34128,55296,34128,47344,34128,39312,30152,34680,26176,30048,19424,30048,12672,30048,8736,34704, + 4800,39360,4800,47344,4800,55248,8752,59928,12704,64608,19424,64608,47008,9824,22272,35872,18576,32560,16728,28712, + 14880,24864,14880,20528,14880,13472,19768,8688,24656,3904,31968,3904,36288,3904,40136,5416,43984,6928,47008,9824, + 73360,0,56320,0,50496,6160,46032,2416,40976,592,35920,-1232,30048,-1232,19088,-1232,12664,4376,6240,9984, + 6240,19600,6240,25248,9496,30152,12752,35056,19344,39360,17168,41952,16152,44520,15136,47088,15136,49888,15136,56656, + 20000,60632,24864,64608,33232,64608,36080,64608,39888,63880,43696,63152,48576,61712,48576,50752,43776,50752,43184,55296, + 40464,57672,37744,60048,33072,60048,28688,60048,25968,57648,23248,55248,23248,51424,23248,48832,24696,46264,26144,43696, + 30720,38880,52656,15760,55584,19168,57264,23096,58944,27024,59376,31488,51728,31488,51728,36048,71824,36048,71824,31488, + 64512,31488,63792,25968,61688,21168,59584,16368,56064,12288,63360,4512,73360,4512,73360,0,15296,63456,15296,39872, + 8544,39872,8544,63456,15296,63456,27760,-13552,17424,-8928,12152,1128,6880,11184,6880,26272,6880,41392,12152,51448, + 17424,61504,27760,66128,27760,61968,21200,57456,18360,49280,15520,41104,15520,26272,15520,11472,18360,3296,21200,-4880, + 27760,-9392,27760,-13552,6160,-13552,6160,-9392,12704,-4880,15576,3296,18448,11472,18448,26272,18448,41104,15576,49280, + 12704,57456,6160,61968,6160,66128,16528,61504,21800,51448,27072,41392,27072,26272,27072,11184,21800,1128,16528,-8928, + 6160,-13552,42112,52576,25504,44832,42112,36976,38880,31968,24096,41184,24656,24992,18864,24992,19424,41184,4640,31968, + 1408,36976,18016,44752,1408,52576,4640,57632,19424,48400,18864,64608,24656,64608,24096,48400,38880,57632,42112,52576, + 39872,54576,39872,30720,63712,30720,63712,23840,39872,23840,39872,0,33072,0,33072,23840,9216,23840,9216,30720, + 33072,30720,33072,54576,39872,54576,3152,-8464,7136,-5520,9008,-1552,10880,2416,10880,8080,10880,9648,19248,9648, + 18912,2384,15832,-2824,12752,-8032,6544,-11856,3152,-8464,3824,26640,25584,26640,25584,20016,3824,20016,3824,26640, + 8208,4416,8208,6800,9824,8456,11440,10112,13856,10112,16192,10112,17848,8456,19504,6800,19504,4416,19504,2080, + 17848,424,16192,-1232,13856,-1232,11440,-1232,9824,408,8208,2048,8208,4416,22528,63456,29328,63456,6800,-8080, + 0,-8080,22528,63456,27664,2976,34176,2976,37400,10112,40624,17248,40624,31664,40624,46112,37400,53256,34176,60400, + 27664,60400,21168,60400,17936,53256,14704,46112,14704,31664,14704,17248,17936,10112,21168,2976,27664,2976,27664,-1232, + 17344,-1232,11544,7440,5744,16112,5744,31664,5744,47264,11544,55936,17344,64608,27664,64608,38032,64608,43816,55936, + 49600,47264,49600,31664,49600,16112,43816,7440,38032,-1232,27664,-1232,12368,0,12368,4512,23424,4512,23424,57296, + 10624,49008,10624,54576,26096,64608,31968,64608,31968,4512,43008,4512,43008,0,12368,0,11136,48320,6368,48320, + 6368,59632,10928,62048,15536,63328,20144,64608,24560,64608,34464,64608,40200,59800,45936,54992,45936,46752,45936,37440, + 32944,24480,31920,23504,31408,22992,15392,6976,41856,6976,41856,14784,46832,14784,46832,0,5904,0,5904,4640, + 25168,23840,31536,30224,34256,35552,36976,40880,36976,46752,36976,53168,33640,56784,30304,60400,24432,60400,18368,60400, + 15048,57376,11728,54352,11136,48320,8464,60768,13424,62640,17992,63624,22560,64608,26560,64608,35872,64608,41096,60584, + 46320,56560,46320,49424,46320,43696,42712,39848,39104,36000,32464,34640,40288,33536,44600,28968,48912,24400,48912,17120, + 48912,8240,42944,3504,36976,-1232,25760,-1232,20784,-1232,16048,-168,11312,896,6624,3056,6624,15392,11392,15392, + 11808,9264,15512,6120,19216,2976,25920,2976,32432,2976,36192,6736,39952,10496,39952,17040,39952,24528,36080,28368, + 32208,32208,24736,32208,20704,32208,20704,36544,22816,36544,30256,36544,33976,39632,37696,42720,37696,48912,37696,54480, + 34640,57440,31584,60400,25840,60400,20096,60400,16936,57680,13776,54960,13216,49600,8464,49600,8464,60768,30384,21504, + 30384,55248,8720,21504,30384,21504,49088,0,20192,0,20192,4512,30384,4512,30384,16960,2672,16960,2672,21584, + 30480,64608,38880,64608,38880,21504,51008,21504,51008,16960,38880,16960,38880,4512,49088,4512,49088,0,43776,63456, + 43776,56480,14704,56480,14704,38288,16912,39824,19864,40592,22816,41360,26480,41360,36768,41360,42712,35664,48656,29968, + 48656,20096,48656,10032,42648,4400,36640,-1232,25760,-1232,21376,-1232,16784,-168,12192,896,7392,3056,7392,15392, + 12192,15392,12576,9344,16040,6160,19504,2976,25760,2976,32464,2976,36080,7392,39696,11808,39696,20096,39696,28352, + 36104,32752,32512,37152,25760,37152,21936,37152,19024,35792,16112,34432,13856,31584,10208,31584,10208,63456,43776,63456, + 28480,2976,34464,2976,37696,7376,40928,11776,40928,20016,40928,28256,37696,32656,34464,37056,28480,37056,22400,37056, + 19208,32808,16016,28560,16016,20528,16016,12064,19248,7520,22480,2976,28480,2976,14624,34928,17504,38128,21160,39696, + 24816,41264,29408,41264,38880,41264,44384,35568,49888,29872,49888,20016,49888,10368,43960,4568,38032,-1232,28128,-1232, + 17376,-1232,11600,6776,5824,14784,5824,29664,5824,46320,12664,55464,19504,64608,31968,64608,35312,64608,39016,63968, + 42720,63328,46576,62048,46576,51600,41776,51600,41264,55888,38504,58144,35744,60400,31072,60400,22816,60400,18784,54152, + 14752,47904,14624,34928,49088,59120,24272,0,17936,0,41600,56480,12288,56480,12288,48656,7312,48656,7312,63456, + 49088,63456,49088,59120,40544,17344,40544,24144,37168,27904,33792,31664,27664,31664,21552,31664,18168,27904,14784,24144, + 14784,17344,14784,10496,18168,6736,21552,2976,27664,2976,33792,2976,37168,6736,40544,10496,40544,17344,38800,48160, + 38800,53936,35872,57168,32944,60400,27664,60400,22448,60400,19488,57168,16528,53936,16528,48160,16528,42336,19488,39104, + 22448,35872,27664,35872,32944,35872,35872,39104,38800,42336,38800,48160,34208,33792,41440,32816,45480,28456,49520,24096, + 49520,17344,49520,8416,43864,3592,38208,-1232,27664,-1232,17168,-1232,11496,3592,5824,8416,5824,17344,5824,24096, + 9864,28456,13904,32816,21168,33792,14752,34928,11328,38648,7904,42368,7904,48160,7904,55808,13176,60208,18448,64608, + 27664,64608,36896,64608,42160,60208,47424,55808,47424,48160,47424,42368,44008,38648,40592,34928,34208,33792,40720,28432, + 37872,25248,34176,23672,30480,22096,25840,22096,16400,22096,10944,27792,5488,33488,5488,43344,5488,52992,11416,58800, + 17344,64608,27248,64608,38000,64608,43760,56592,49520,48576,49520,33696,49520,17040,42672,7904,35824,-1232,23424,-1232, + 20064,-1232,16368,-592,12672,48,8800,1312,8800,11856,13552,11856,14112,7568,16872,5272,19632,2976,24272,2976, + 32512,2976,36552,9200,40592,15424,40720,28432,26896,60400,20864,60400,17656,56000,14448,51600,14448,43344,14448,35104, + 17656,30688,20864,26272,26896,26272,32944,26272,36152,30536,39360,34800,39360,42848,39360,51296,36128,55848,32896,60400, + 26896,60400,9056,4416,9056,6800,10688,8456,12320,10112,14704,10112,17088,10112,18720,8456,20352,6800,20352,4416, + 20352,2048,18736,408,17120,-1232,14704,-1232,12288,-1232,10672,408,9056,2048,9056,4416,9056,32128,9056,34512, + 10688,36144,12320,37776,14704,37776,17120,37776,18736,36168,20352,34560,20352,32128,20352,29712,18736,28096,17120,26480, + 14704,26480,12320,26480,10688,28112,9056,29744,9056,32128,3152,-8464,7136,-5520,9008,-1552,10880,2416,10880,8080, + 10880,9648,19248,9648,18912,2384,15832,-2824,12752,-8032,6544,-11856,3152,-8464,9216,32128,9216,34512,10856,36144, + 12496,37776,14880,37776,17248,37776,18888,36120,20528,34464,20528,32128,20528,29744,18888,28112,17248,26480,14880,26480, + 12496,26480,10856,28112,9216,29744,9216,32128,63712,43344,19600,27248,63712,11216,63712,4000,9216,23760,9216,30816, + 63712,50576,63712,43344,9216,39360,63712,39360,63712,32560,9216,32560,9216,39360,9216,22016,63712,22016,63712,15216, + 9216,15216,9216,22016,9216,43344,9216,50576,63712,30816,63712,23760,9216,4000,9216,11216,53344,27248,9216,43344, + 15296,4416,15296,6800,16936,8456,18576,10112,20992,10112,23328,10112,24984,8456,26640,6800,26640,4416,26640,2080, + 24984,424,23328,-1232,20992,-1232,18576,-1232,16936,408,15296,2048,15296,4416,5904,60640,10416,62640,14472,63624, + 18528,64608,22096,64608,31536,64608,37000,60056,42464,55504,42464,47776,42464,39872,37768,34856,33072,29840,23584,27664, + 23584,16880,18368,16880,18368,30816,25888,32640,29688,36936,33488,41232,33488,47856,33488,53680,30384,57040,27280,60400, + 21936,60400,17088,60400,14008,57616,10928,54832,10032,49600,5904,49600,5904,60640,54992,10544,52480,7056,49360,5352, + 46240,3648,42288,3648,34848,3648,30216,8968,25584,14288,25584,22816,25584,31360,30216,36656,34848,41952,42288,41952, + 46240,41952,49360,40248,52480,38544,54992,35056,54992,41104,61632,41104,61632,8288,68848,9856,72848,15168,76848,20480, + 76848,28480,76848,33200,75400,37400,73952,41600,71104,45184,66592,50832,60112,53824,53632,56816,46032,56816,42208,56816, + 38464,56008,34720,55200,31072,53552,22480,49600,17720,41584,12960,33568,12960,23072,12960,15984,15088,10008,17216,4032, + 21248,-336,25888,-5392,32240,-8048,38592,-10704,45936,-10704,51424,-10704,56184,-9096,60944,-7488,65024,-4256,67280,-7232, + 62688,-11184,56864,-13160,51040,-15136,44112,-15136,36336,-15136,29264,-12304,22192,-9472,16880,-4256,11392,1152,8568,8096, + 5744,15040,5744,23072,5744,30896,8592,37824,11440,44752,16880,50144,22272,55504,29600,58392,36928,61280,45184,61280, + 54272,61280,61776,57752,69280,54224,74336,47600,77568,43440,79224,38552,80880,33664,80880,28384,80880,17008,73952,10392, + 67024,3776,55040,3648,54992,10544,54992,20608,54992,25072,54992,30384,51952,33680,48912,36976,44032,36976,38880,36976, + 36016,33256,33152,29536,33152,22816,33152,16064,36040,12344,38928,8624,44112,8624,48960,8624,51976,11960,54992,15296, + 54992,20608,17424,22992,40720,22992,29072,53168,17424,22992,-512,0,-512,4512,5056,4512,27664,63456,34800,63456, + 57456,4512,63712,4512,63712,0,40624,0,40624,4512,47680,4512,42368,18448,15680,18448,10368,4512,17344,4512, + 17344,0,-512,0,21504,4512,34208,4512,41856,4512,45384,7824,48912,11136,48912,18368,48912,25536,45408,28832, + 41904,32128,34208,32128,21504,32128,21504,4512,21504,36640,32304,36640,39264,36640,42472,39312,45680,41984,45680,47776, + 45680,53600,42472,56256,39264,58912,32304,58912,21504,58912,21504,36640,4800,0,4800,4512,12880,4512,12880,58912, + 4800,58912,4800,63456,36128,63456,45728,63456,50592,59520,55456,55584,55456,47776,55456,42112,52080,38760,48704,35408, + 42208,34640,50272,33616,54464,29472,58656,25328,58656,18368,58656,8928,52704,4464,46752,0,34128,0,4800,0, + 61376,16784,58560,7904,51952,3336,45344,-1232,35232,-1232,29024,-1232,23712,896,18400,3024,14288,7136,9520,11904, + 7200,17960,4880,24016,4880,31664,4880,46448,13424,55528,21968,64608,35952,64608,41136,64608,47000,63248,52864,61888, + 59632,59120,59632,44496,54832,44496,53248,52480,48512,56264,43776,60048,35232,60048,25072,60048,19848,52848,14624,45648, + 14624,31664,14624,17728,19848,10520,25072,3312,35232,3312,42336,3312,46920,6696,51504,10080,53552,16784,61376,16784, + 21504,4512,29408,4512,41776,4512,48384,11560,54992,18608,54992,31792,54992,44960,48408,51936,41824,58912,29408,58912, + 21504,58912,21504,4512,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,30048,63456,46448,63456, + 55608,55080,64768,46704,64768,31792,64768,16832,55592,8416,46416,0,30048,0,4800,0,4800,0,4800,4512, + 12880,4512,12880,58912,4800,58912,4800,63456,55888,63456,55888,49344,50656,49344,50656,58224,21504,58224,21504,36976, + 42288,36976,42288,44928,47520,44928,47520,23840,42288,23840,42288,31792,21504,31792,21504,5232,51344,5232,51344,14112, + 56560,14112,56560,0,4800,0,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,56736,63456, + 56736,49344,51504,49344,51504,58224,21504,58224,21504,36976,43184,36976,43184,44928,48400,44928,48400,23840,43184,23840, + 43184,31792,21504,31792,21504,4512,31664,4512,31664,0,4800,0,55712,44496,54224,52448,49512,56248,44800,60048, + 36384,60048,25408,60048,20016,52992,14624,45936,14624,31664,14624,17680,20192,10496,25760,3312,36544,3312,41360,3312, + 45736,4504,50112,5696,54064,8080,54064,24432,42112,24432,42112,28992,62688,28992,62688,5312,57040,2048,50512,408, + 43984,-1232,36544,-1232,22192,-1232,13536,7760,4880,16752,4880,31664,4880,46704,13552,55656,22224,64608,36896,64608, + 42336,64608,48136,63352,53936,62096,60480,59536,60480,44496,55712,44496,4800,0,4800,4512,12880,4512,12880,58912, + 4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,36976,54400,36976,54400,58912,46320,58912,46320,63456, + 71104,63456,71104,58912,63024,58912,63024,4512,71104,4512,71104,0,46320,0,46320,4512,54400,4512,54400,31792, + 21504,31792,21504,4512,29584,4512,29584,0,4800,0,21504,4512,29584,4512,29584,0,4800,0,4800,4512, + 12880,4512,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,-7312,-15216,-7312,-5232, + -2464,-5232,-2336,-9440,-464,-11496,1408,-13552,5136,-13552,10208,-13552,12200,-10368,14192,-7184,14192,2080,14192,58912, + 4336,58912,4336,63456,30896,63456,30896,58912,22816,58912,22816,1744,22816,-8752,18608,-13432,14400,-18112,5056,-18112, + 2048,-18112,-1080,-17384,-4208,-16656,-7312,-15216,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456, + 29584,63456,29584,58912,21504,58912,21504,34896,48832,58912,41952,58912,41952,63456,63024,63456,63024,58912,55888,58912, + 28640,34976,59120,4512,66336,4512,66336,0,51600,0,21504,30128,21504,4512,29584,4512,29584,0,4800,0, + 4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,5232, + 50496,5232,50496,15856,55712,15856,55712,0,4800,0,4800,0,4800,4512,12880,4512,12880,58912,4336,58912, + 4336,63456,22816,63456,45088,18272,67360,63456,84704,63456,84704,58912,76240,58912,76240,4512,84368,4512,84368,0, + 59536,0,59536,4512,67616,4512,67616,53552,45856,9312,39872,9312,18112,53552,18112,4512,26176,4512,26176,0, + 4800,0,4256,0,4256,4512,12800,4512,12800,58912,4256,58912,4256,63456,20528,63456,58560,13392,58560,58912, + 50064,58912,50064,63456,72336,63456,72336,58912,63792,58912,63792,-1232,58656,-1232,18016,52240,18016,4512,26560,4512, + 26560,0,4256,0,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664,56736,45728,51424,52888,46112,60048, + 35696,60048,25248,60048,19936,52888,14624,45728,14624,31664,14624,17632,19936,10472,25248,3312,35696,3312,35696,-1232, + 29248,-1232,23824,896,18400,3024,14288,7136,9520,11904,7200,17936,4880,23968,4880,31664,4880,39360,7200,45416, + 9520,51472,14288,56224,18448,60400,23800,62504,29152,64608,35696,64608,49520,64608,58016,55552,66512,46496,66512,31664, + 66512,24048,64176,17952,61840,11856,57072,7136,52912,2976,47560,872,42208,-1232,35696,-1232,21504,32304,32720,32304, + 39056,32304,42368,35720,45680,39136,45680,45600,45680,52112,42368,55512,39056,58912,32720,58912,21504,58912,21504,32304, + 4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,34800,63456,44320,63456,49888,58632,55456,53808, + 55456,45600,55456,37440,49888,32600,44320,27760,34800,27760,21504,27760,21504,4512,31328,4512,31328,0,4800,0, + 36720,-1232,22144,-1232,13512,7712,4880,16656,4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400, + 23800,62504,29152,64608,35696,64608,49520,64608,58016,55552,66512,46496,66512,31664,66512,19088,60136,10520,53760,1952, + 42544,-512,44832,-3360,48128,-4720,51424,-6080,56064,-6080,57376,-6080,57376,-13936,50192,-13600,45072,-10432,39952,-7264, + 36720,-1232,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664,56736,45728,51424,52888,46112,60048,35696,60048, + 25248,60048,19936,52888,14624,45728,14624,31664,14624,17632,19936,10472,25248,3312,35696,3312,41696,31488,44672,30688, + 46816,28752,48960,26816,50656,23328,59888,4512,67616,4512,67616,0,52656,0,42752,20192,39904,26048,37528,27768, + 35152,29488,30976,29488,21504,29488,21504,4512,30480,4512,30480,0,4800,0,4800,4512,12880,4512,12880,58912, + 4800,58912,4800,63456,36976,63456,46240,63456,51280,59032,56320,54608,56320,46496,56320,39952,52640,36192,48960,32432, + 41696,31488,21504,34048,34048,34048,40464,34048,43520,37088,46576,40128,46576,46496,46576,52864,43520,55888,40464,58912, + 34048,58912,21504,58912,21504,34048,8080,3056,8080,17504,12960,17472,13168,10240,17144,6776,21120,3312,29248,3312, + 36800,3312,40776,6312,44752,9312,44752,15040,44752,19632,42352,22096,39952,24560,32208,26896,23840,29408,14752,32176, + 11032,36296,7312,40416,7312,47600,7312,55680,13048,60144,18784,64608,29152,64608,33568,64608,38840,63648,44112,62688, + 50064,60864,50064,47344,45264,47344,44544,54064,40784,57056,37024,60048,29328,60048,22608,60048,19104,57312,15600,54576, + 15600,49344,15600,44800,18232,42208,20864,39616,29408,37056,37280,34720,45904,32128,49576,28112,53248,24096,53248,17344, + 53248,8112,47344,3440,41440,-1232,29744,-1232,24528,-1232,19104,-168,13680,896,8080,3056,16624,0,16624,4512, + 24736,4512,24736,58400,6080,58400,6080,48496,848,48496,848,63456,57200,63456,57200,48496,51984,48496,51984,58400, + 33328,58400,33328,4512,41440,4512,41440,0,16624,0,12192,58912,4080,58912,4080,63456,28896,63456,28896,58912, + 20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336,52168,9136,56144,13936,56144,26096, + 56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248,61376,10752,55808,4760,50240,-1232, + 36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,15216,58912,33952,10208,52656,58912,45520,58912, + 45520,63456,64128,63456,64128,58912,57968,58912,35312,0,28000,0,5488,58912,-848,58912,-848,63456,22272,63456, + 22272,58912,15216,58912,66336,0,59376,0,44832,51600,30304,0,23328,0,6720,58912,432,58912,432,63456, + 23584,63456,23584,58912,15680,58912,28896,12032,43344,63456,50240,63456,64944,11472,78240,58912,70928,58912,70928,63456, + 89200,63456,89200,58912,82960,58912,66336,0,28816,27152,13296,4512,21504,4512,21504,0,512,0,512,4512, + 7824,4512,26096,31152,7568,58912,768,58912,768,63456,25920,63456,25920,58912,18448,58912,32048,38464,46032,58912, + 37872,58912,37872,63456,58656,63456,58656,58912,51504,58912,34720,34464,54736,4512,61536,4512,61536,0,36384,0, + 36384,4512,43952,4512,28816,27152,16448,0,16448,4512,24560,4512,24560,27328,4976,58912,-976,58912,-976,63456, + 22608,63456,22608,58912,15216,58912,31072,33232,46928,58912,39776,58912,39776,63456,58224,63456,58224,58912,52240,58912, + 33152,28128,33152,4512,41264,4512,41264,0,16448,0,3904,0,3904,3056,43440,58224,10624,58224,10624,48752, + 5392,48752,5392,63456,55552,63456,55552,60400,16016,5232,51888,5232,51888,14112,57072,14112,57072,0,3904,0, + 7488,66128,27248,66128,27248,61632,15600,61632,15600,-6976,27248,-6976,27248,-11472,7488,-11472,7488,66128,6800,63456, + 29328,-8080,22528,-8080,0,63456,6800,63456,26480,66128,26480,-11472,6720,-11472,6720,-6976,18368,-6976,18368,61632, + 6720,61632,6720,66128,26480,66128,40624,63456,63712,39776,57200,39776,36464,55968,15760,39776,9216,39776,32304,63456, + 40624,63456,43520,-17120,43520,-20528,0,-20528,0,-17120,43520,-17120,15600,69536,26640,53552,21680,53552,7232,69536, + 15600,69536,34640,14192,34640,23760,24560,23760,18736,23760,15888,21248,13040,18736,13040,13552,13040,8848,15936,6080, + 18832,3312,23760,3312,28640,3312,31640,6328,34640,9344,34640,14192,42464,28224,42464,4512,49424,4512,49424,0, + 34640,0,34640,4880,32048,1744,28648,256,25248,-1232,20704,-1232,13168,-1232,8752,2760,4336,6752,4336,13552, + 4336,20576,9392,24440,14448,28304,23680,28304,34640,28304,34640,31408,34640,36544,31512,39376,28384,42208,22736,42208, + 18064,42208,15304,40080,12544,37952,11856,33792,7824,33792,7824,42928,11904,44672,15752,45544,19600,46416,23248,46416, + 32640,46416,37552,41760,42464,37104,42464,28224,10032,4512,10032,61632,2512,61632,2512,66128,17856,66128,17856,38128, + 20144,42368,23696,44392,27248,46416,32464,46416,40800,46416,46072,39824,51344,33232,51344,22608,51344,11984,46072,5376, + 40800,-1232,32464,-1232,27248,-1232,23696,784,20144,2800,17856,7056,17856,0,2512,0,2512,4512,10032,4512, + 17856,20352,17856,12192,20976,7920,24096,3648,30048,3648,36048,3648,39128,8456,42208,13264,42208,22608,42208,32000, + 39128,36760,36048,41520,30048,41520,24096,41520,20976,37232,17856,32944,17856,24816,17856,20352,44752,13552,43088,6336, + 38376,2552,33664,-1232,26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608,4336,33440,10328,39928,16320,46416, + 26176,46416,30480,46416,34728,45416,38976,44416,43264,42368,43264,30816,38720,30816,37824,36768,34832,39488,31840,42208, + 26272,42208,19936,42208,16704,37296,13472,32384,13472,22608,13472,12832,16680,7904,19888,2976,26272,2976,31328,2976, + 34344,5608,37360,8240,38464,13552,44752,13552,45680,4512,53168,4512,53168,0,37872,0,37872,7056,35568,2800, + 32024,784,28480,-1232,23248,-1232,14912,-1232,9624,5376,4336,11984,4336,22608,4336,33232,9608,39824,14880,46416, + 23248,46416,28480,46416,32024,44392,35568,42368,37872,38128,37872,61632,30480,61632,30480,66128,45680,66128,45680,4512, + 37872,20352,37872,24816,37872,32944,34744,37232,31616,41520,25664,41520,19632,41520,16552,36760,13472,32000,13472,22608, + 13472,13264,16552,8456,19632,3648,25664,3648,31616,3648,34744,7920,37872,12192,37872,20352,47168,21760,13472,21760, + 13472,21424,13472,12288,16912,7632,20352,2976,27072,2976,32208,2976,35504,5672,38800,8368,40128,13680,46416,13680, + 44544,6240,39504,2504,34464,-1232,26272,-1232,16368,-1232,10352,5288,4336,11808,4336,22608,4336,33328,10240,39872, + 16144,46416,25760,46416,36000,46416,41480,40104,46960,33792,47168,21760,37952,26272,37696,34176,34616,38192,31536,42208, + 25760,42208,20352,42208,17256,38168,14160,34128,13472,26272,37952,26272,37440,55456,33328,55456,33280,58656,31512,60312, + 29744,61968,26400,61968,22016,61968,20232,59568,18448,57168,18448,51008,18448,45184,31072,45184,31072,40624,18448,40624, + 18448,4512,28480,4512,28480,0,3152,0,3152,4512,10624,4512,10624,40624,3152,40624,3152,45184,10624,45184, + 10624,50832,10624,58400,14552,62264,18480,66128,26096,66128,28944,66128,31792,65616,34640,65104,37440,64048,37440,55456, + 45680,40624,45680,976,45680,-8752,40328,-14048,34976,-19344,25072,-19344,20608,-19344,16528,-18536,12448,-17728,8720,-16112, + 8720,-6624,12800,-6624,13552,-11056,16400,-13096,19248,-15136,24560,-15136,31456,-15136,34664,-11248,37872,-7360,37872,976, + 37872,7056,35568,2800,32024,784,28480,-1232,23248,-1232,14912,-1232,9624,5376,4336,11984,4336,22608,4336,33232, + 9608,39824,14880,46416,23248,46416,28480,46416,32024,44392,35568,42368,37872,38128,37872,45184,53168,45184,53168,40624, + 45680,40624,37872,24816,37872,32944,34744,37232,31616,41520,25664,41520,19632,41520,16552,36760,13472,32000,13472,22608, + 13472,13264,16552,8456,19632,3648,25664,3648,31616,3648,34744,7920,37872,12192,37872,20352,37872,24816,3568,0, + 3568,4512,10624,4512,10624,61632,3152,61632,3152,66128,18448,66128,18448,37152,20608,41728,24072,44072,27536,46416, + 32128,46416,39616,46416,43144,42120,46672,37824,46672,28736,46672,4512,53632,4512,53632,0,32048,0,32048,4512, + 38800,4512,38800,26272,38800,34560,36784,37592,34768,40624,29584,40624,24144,40624,21296,36672,18448,32720,18448,25168, + 18448,4512,25248,4512,25248,0,3568,0,8464,59200,8464,61152,9888,62600,11312,64048,13296,64048,15264,64048, + 16688,62600,18112,61152,18112,59200,18112,57200,16704,55800,15296,54400,13296,54400,11312,54400,9888,55800,8464,57200, + 8464,59200,18448,4512,25840,4512,25840,0,3152,0,3152,4512,10624,4512,10624,40624,3152,40624,3152,45184, + 18448,45184,18448,4512,8720,59200,8720,61152,10144,62600,11568,64048,13552,64048,15520,64048,16944,62600,18368,61152, + 18368,59200,18368,57200,16984,55800,15600,54400,13552,54400,11568,54400,10144,55800,8720,57200,8720,59200,10624,40624, + 3232,40624,3232,45184,18448,45184,18448,-4416,18448,-11392,14304,-15368,10160,-19344,2896,-19344,-176,-19344,-2960,-18640, + -5744,-17936,-8368,-16528,-8368,-7232,-4336,-7232,-4032,-11312,-2232,-13224,-432,-15136,3056,-15136,6928,-15136,8776,-12520, + 10624,-9904,10624,-4416,10624,40624,24912,0,2976,0,2976,4512,10032,4512,10032,61632,2512,61632,2512,66128, + 17856,66128,17856,23072,36896,40624,30384,40624,30384,45184,50832,45184,50832,40624,43088,40624,29664,28224,46832,4512, + 53344,4512,53344,0,31072,0,31072,4512,37520,4512,24016,23072,17856,17344,17856,4512,24912,4512,24912,0, + 17856,4512,25248,4512,25248,0,2512,0,2512,4512,10032,4512,10032,61632,2512,61632,2512,66128,17856,66128, + 17856,4512,45088,36384,47344,41360,50848,43888,54352,46416,59040,46416,66128,46416,69616,42016,73104,37616,73104,28736, + 73104,4512,80160,4512,80160,0,58480,0,58480,4512,65280,4512,65280,27840,65280,34768,63240,37696,61200,40624, + 56480,40624,51248,40624,48512,36672,45776,32720,45776,25168,45776,4512,52576,4512,52576,0,31152,0,31152,4512, + 37952,4512,37952,28128,37952,34896,35912,37760,33872,40624,29152,40624,23920,40624,21184,36672,18448,32720,18448,25168, + 18448,4512,25248,4512,25248,0,3568,0,3568,4512,10624,4512,10624,40720,3152,40720,3152,45184,18448,45184, + 18448,37152,20608,41648,23968,44032,27328,46416,31584,46416,36848,46416,40376,43800,43904,41184,45088,36384,3568,0, + 3568,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,37152,20608,41728,24072,44072,27536,46416, + 32128,46416,39616,46416,43144,42120,46672,37824,46672,28736,46672,4512,53632,4512,53632,0,32048,0,32048,4512, + 38800,4512,38800,26272,38800,34560,36760,37640,34720,40720,29584,40720,24144,40720,21296,36744,18448,32768,18448,25168, + 18448,4512,25248,4512,25248,0,3568,0,26176,2976,32464,2976,35672,7952,38880,12928,38880,22608,38880,32304, + 35672,37256,32464,42208,26176,42208,19888,42208,16680,37256,13472,32304,13472,22608,13472,12928,16704,7952,19936,2976, + 26176,2976,26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416, + 36080,46416,42056,39912,48032,33408,48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,17856,24816,17856,20352, + 17856,12192,20976,7920,24096,3648,30048,3648,36048,3648,39128,8456,42208,13264,42208,22608,42208,32000,39128,36760, + 36048,41520,30048,41520,24096,41520,20976,37232,17856,32944,17856,24816,10032,40624,2512,40624,2512,45184,17856,45184, + 17856,38128,20144,42368,23696,44392,27248,46416,32464,46416,40800,46416,46072,39824,51344,33232,51344,22608,51344,11984, + 46072,5376,40800,-1232,32464,-1232,27248,-1232,23696,784,20144,2800,17856,7056,17856,-13552,25248,-13552,25248,-18112, + 2512,-18112,2512,-13552,10032,-13552,10032,40624,45680,40624,45680,-13552,53168,-13552,53168,-18112,30480,-18112,30480,-13552, + 37872,-13552,37872,7056,35568,2800,32024,784,28480,-1232,23248,-1232,14912,-1232,9624,5376,4336,11984,4336,22608, + 4336,33232,9608,39824,14880,46416,23248,46416,28480,46416,32024,44392,35568,42368,37872,38128,37872,45184,53168,45184, + 53168,40624,45680,40624,37872,24816,37872,32944,34744,37232,31616,41520,25664,41520,19632,41520,16552,36760,13472,32000, + 13472,22608,13472,13264,16552,8456,19632,3648,25664,3648,31616,3648,34744,7920,37872,12192,37872,20352,37872,24816, + 41600,45264,41600,33952,37104,33952,36896,37312,35232,38968,33568,40624,30384,40624,24608,40624,21528,36632,18448,32640, + 18448,25168,18448,4512,27504,4512,27504,0,3568,0,3568,4512,10624,4512,10624,40720,3152,40720,3152,45184, + 18448,45184,18448,37152,20736,41856,24352,44136,27968,46416,33152,46416,35056,46416,37160,46112,39264,45808,41600,45264, + 4880,2512,4880,13040,9392,13040,9568,7984,12560,5480,15552,2976,21424,2976,26688,2976,29448,4952,32208,6928, + 32208,10704,32208,13680,30192,15512,28176,17344,21680,19424,16016,21328,10208,23200,7592,26008,4976,28816,4976,33152, + 4976,39360,9520,42888,14064,46416,22096,46416,25664,46416,29616,45480,33568,44544,37776,42752,37776,32896,33280,32896, + 33104,37280,30216,39744,27328,42208,22352,42208,17424,42208,14896,40464,12368,38720,12368,35232,12368,32384,14280,30664, + 16192,28944,21936,27152,28128,25248,34560,23248,37384,20248,40208,17248,40208,12544,40208,6128,35296,2448,30384,-1232, + 21760,-1232,17376,-1232,13216,-296,9056,640,4880,2512,9392,40624,2512,40624,2512,45184,9392,45184,9392,59200, + 17248,59200,17248,45184,31968,45184,31968,40624,17248,40624,17248,11936,17248,6208,18360,4592,19472,2976,22448,2976, + 25504,2976,26904,4784,28304,6592,28384,10624,34304,10624,33952,4464,30936,1616,27920,-1232,21760,-1232,15008,-1232, + 12200,1768,9392,4768,9392,11936,9392,40624,30816,45184,45440,45184,45440,4512,52832,4512,52832,0,37616,0, + 37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624, + 2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568,21296,4512,26480,4512,31920,4512,34768,8504, + 37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,21504,0,4880,40624,-256,40624,-256,45184,20528,45184, + 20528,40624,13296,40624,26016,9568,38720,40624,31968,40624,31968,45184,48912,45184,48912,40624,43856,40624,27248,0, + 21504,0,41776,45184,53344,9904,63536,40624,56992,40624,56992,45184,73360,45184,73360,40624,68336,40624,54912,0, + 48400,0,37280,33792,26096,0,19840,0,6464,40624,1408,40624,1408,45184,21840,45184,21840,40624,14528,40624, + 24656,9904,36288,45184,41776,45184,25328,27584,34800,40624,28736,40624,28736,45184,46112,45184,46112,40624,40128,40624, + 28000,23920,42112,4512,48032,4512,48032,0,27152,0,27152,4512,32896,4512,23072,18016,13216,4512,19088,4512, + 19088,0,1920,0,1920,4512,7904,4512,20352,21680,6624,40624,1056,40624,1056,45184,21248,45184,21248,40624, + 15856,40624,25328,27584,18784,-8288,21760,-768,4880,40624,-256,40624,-256,45184,20528,45184,20528,40624,13296,40624, + 26016,9568,38720,40624,31968,40624,31968,45184,48912,45184,48912,40624,43856,40624,23168,-10208,21040,-15472,18448,-17408, + 15856,-19344,11136,-19344,9136,-19344,7032,-19000,4928,-18656,2800,-18016,2800,-9392,6800,-9392,7056,-12288,8264,-13536, + 9472,-14784,12032,-14784,14368,-14784,15792,-13488,17216,-12192,18784,-8288,3488,0,3488,3648,31792,40624,9392,40624, + 9392,32816,4880,32816,4880,45184,41856,45184,41856,41520,13552,4512,38128,4512,38128,12704,42672,12704,42672,0, + 3488,0,44496,-9728,44496,-14192,41856,-14192,31280,-14192,27688,-11048,24096,-7904,24096,1488,24096,12448,24096,18832, + 21800,21296,19504,23760,13472,23760,10880,23760,10880,28224,13472,28224,19504,28224,21800,30688,24096,33152,24096,39520, + 24096,50496,24096,59888,27688,63008,31280,66128,41856,66128,44496,66128,44496,61712,41600,61712,35616,61712,33792,59840, + 31968,57968,31968,51984,31968,39776,31968,33072,29840,30176,27712,27280,22192,26016,27792,24560,29880,21712,31968,18864, + 31968,12192,31968,0,31968,-6000,33792,-7864,35616,-9728,41600,-9728,44496,-9728,18112,66512,18112,-20528,11216,-20528, + 11216,66512,18112,66512,10880,-9728,13856,-9728,19808,-9728,21616,-7880,23424,-6032,23424,0,23424,12192,23424,18864, + 25504,21712,27584,24560,33152,26016,27632,27280,25528,30176,23424,33072,23424,39776,23424,51984,23424,58016,21616,59864, + 19808,61712,13856,61712,10880,61712,10880,66128,13552,66128,24144,66128,27688,63008,31232,59888,31232,50496,31232,39520, + 31232,33152,33528,30688,35824,28224,41856,28224,44496,28224,44496,23760,41856,23760,35824,23760,33528,21296,31232,18832, + 31232,12448,31232,1488,31232,-7904,27688,-11048,24144,-14192,13552,-14192,10880,-14192,10880,-9728,63712,34304,63712,28000, + 59456,24272,55632,22488,51808,20704,47856,20704,43776,20704,36384,23504,35952,23680,35488,23840,34560,24224,28304,26640, + 24272,26640,20352,26640,16680,25096,13008,23552,9216,20272,9216,26736,13472,30432,17280,32152,21088,33872,25072,33872, + 29152,33872,36544,31072,36976,30896,37440,30720,38288,30384,44448,27920,48576,27920,52480,27920,56224,29496,59968,31072, + 63712,34304,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544,43008,-10544,43008,56480,9216,56480, + 9216,-10544,11856,59040,11856,61408,13472,63048,15088,64688,17504,64688,19840,64688,21504,63032,23168,61376,23168,59040, + 23168,56656,21504,55000,19840,53344,17504,53344,15088,53344,13472,55000,11856,56656,11856,59040,12032,0,14880,34896, + 14880,45600,20096,45600,20096,34896,22992,0,12032,0,26736,42112,21248,41488,18504,36600,15760,31712,15760,22608, + 15760,13472,18504,8584,21248,3696,26736,3056,26736,42112,46928,13552,45440,7008,41440,3336,37440,-336,30976,-1152, + 30976,-12624,26736,-12624,26736,-1152,17376,-336,11960,6040,6544,12416,6544,22608,6544,32896,11960,39248,17376,45600, + 26736,46320,26736,57632,30976,57632,30976,46320,34896,45984,38464,45008,42032,44032,45440,42368,45440,30816,40928,30816, + 40128,36048,37680,38824,35232,41600,30976,42112,30976,3056,34800,3568,37272,6264,39744,8960,40624,13552,46928,13552, + 46832,52064,42368,52064,41952,56096,39552,58248,37152,60400,33072,60400,27664,60400,25096,57104,22528,53808,22528,46832, + 22528,34304,40032,34304,40032,29744,22528,29744,22528,5136,42848,5136,42848,14784,47776,14784,47776,0,5824,0, + 5824,4512,14032,4512,14032,29744,5824,29744,5824,34304,14032,34304,14032,46832,14032,55552,18896,60080,23760,64608, + 33152,64608,36768,64608,40208,64072,43648,63536,46832,62480,46832,52064,38288,41856,47168,50656,51168,46672,42288,37776, + 44112,35232,44984,32640,45856,30048,45856,27248,45856,24304,44984,21800,44112,19296,42208,16880,51008,8080,46928,4080, + 38128,12800,35744,10928,33216,10032,30688,9136,27760,9136,25040,9136,22384,10008,19728,10880,17120,12624,8464,3904, + 4416,7904,13136,16704,11392,19344,10520,21936,9648,24528,9648,27248,9648,30224,10544,32752,11440,35280,13296,37696, + 4512,46496,8544,50496,17344,41696,19728,43568,22272,44456,24816,45344,27760,45344,30560,45344,33152,44496,35744,43648, + 38288,41856,39184,27328,39184,32080,35888,35360,32592,38640,27760,38640,22992,38640,19680,35360,16368,32080,16368,27328, + 16368,22480,19656,19168,22944,15856,27760,15856,32560,15856,35872,19192,39184,22528,39184,27328,15296,0,15296,4512, + 23424,4512,23424,20096,6240,20096,6240,24560,23424,24560,23424,27328,19936,33328,6240,33328,6240,37776,17424,37776, + 5232,58912,-688,58912,-688,63456,22816,63456,22816,58912,15392,58912,29968,33232,44368,58912,37280,58912,37280,63456, + 55632,63456,55632,58912,49600,58912,37520,37776,49088,37776,49088,33328,34976,33328,31968,28128,31968,24560,49088,24560, + 49088,20096,31968,20096,31968,4512,40032,4512,40032,0,15296,0,18112,17344,18112,-14880,11216,-14880,11216,17344, + 18112,17344,18112,60864,18112,28640,11216,28640,11216,60864,18112,60864,16112,39776,13216,37824,12048,36064,10880,34304, + 10880,32048,10880,26432,26304,17808,27664,17040,30128,18656,31384,20696,32640,22736,32640,25168,32640,28352,29688,31200, + 26736,34048,16112,39776,35232,62224,35232,53632,31328,53632,31232,56688,29024,58456,26816,60224,23072,60224,18832,60224, + 16384,58160,13936,56096,13936,52576,13936,48448,24400,42624,25504,41984,26016,41696,34304,37056,36960,33872,39616,30688, + 39616,26480,39616,22448,37384,19768,35152,17088,30304,15216,33616,13216,35168,10536,36720,7856,36720,4000,36720,-1568, + 32384,-4928,28048,-8288,20704,-8288,16880,-8288,13480,-7712,10080,-7136,6800,-5904,6800,2976,10704,2928,10800,-464, + 13096,-2184,15392,-3904,19936,-3904,24352,-3904,26920,-1824,29488,256,29488,3824,29488,8624,19808,14032,18912,14528, + 18448,14784,9264,19968,6584,23160,3904,26352,3904,30560,3904,34560,6416,37384,8928,40208,13552,41520,10080,43600, + 8400,46280,6720,48960,6720,52320,6720,57840,10968,61224,15216,64608,22272,64608,25584,64608,28816,64008,32048,63408, + 35232,62224,13472,66688,15520,66688,16984,65216,18448,63744,18448,61712,18448,59536,17048,58136,15648,56736,13472,56736, + 11344,56736,9944,58136,8544,59536,8544,61712,8544,63744,10008,65216,11472,66688,13472,66688,30048,66688,32048,66688, + 33512,65216,34976,63744,34976,61712,34976,59536,33576,58136,32176,56736,30048,56736,27888,56736,26480,58136,25072,59536, + 25072,61712,25072,63744,26536,65216,28000,66688,30048,66688,58480,24352,57328,18784,53488,15792,49648,12800,43600,12800, + 35664,12800,30920,17896,26176,22992,26176,31488,26176,40032,30960,45176,35744,50320,43600,50320,47008,50320,50304,49536, + 53600,48752,57296,47088,57296,38032,53728,38032,52992,42672,50576,44840,48160,47008,43696,47008,38640,47008,36064,43120, + 33488,39232,33488,31488,33488,23808,36040,19960,38592,16112,43600,16112,47728,16112,50128,18128,52528,20144,53424,24352, + 58480,24352,43520,63120,49984,63120,55568,60776,61152,58432,65792,53808,70416,49168,72712,43600,75008,38032,75008,31488, + 75008,25040,72712,19488,70416,13936,65792,9312,61152,4672,55568,2336,49984,0,43520,0,37056,0,31472,2336, + 25888,4672,21248,9312,16624,13936,14328,19488,12032,25040,12032,31488,12032,38032,14328,43600,16624,49168,21248,53808, + 25888,58432,31472,60776,37056,63120,43520,63120,43520,58736,37952,58736,33152,56736,28352,54736,24352,50752,20400,46800, + 18384,41928,16368,37056,16368,31488,16368,25968,18384,21168,20400,16368,24352,12368,28352,8368,33152,6352,37952,4336, + 43520,4336,49136,4336,53960,6352,58784,8368,62768,12368,66720,16320,68696,21120,70672,25920,70672,31488,70672,37152, + 68680,41976,66688,46800,62768,50752,58784,54736,53960,56736,49136,58736,43520,58736,35616,51808,35616,35696,39008,35696, + 39008,32128,29328,32128,29328,35536,27280,33360,24624,32344,21968,31328,18272,31328,12288,31328,8800,34088,5312,36848, + 5312,41600,5312,46448,9352,49168,13392,51888,20608,51888,29328,51888,29328,53808,29328,57376,26864,59376,24400,61376, + 19936,61376,16240,61376,14072,59888,11904,58400,11312,55456,8080,55456,8080,62128,11344,63360,14408,63984,17472,64608, + 20272,64608,27792,64608,31704,61328,35616,58048,35616,51808,29328,42368,29328,48656,21328,48656,16880,48656,14584,46960, + 12288,45264,12288,41952,12288,38512,14432,36704,16576,34896,20704,34896,24608,34896,26968,36952,29328,39008,29328,42368, + 7056,27152,36720,27152,36720,22736,7056,22736,7056,27152,45088,45008,45088,40128,32464,25504,45088,10880,45088,6000, + 25168,23760,25168,27248,45088,45008,26640,45008,26640,40128,14032,25504,26640,10880,26640,6000,6720,23760,6720,27248, + 26640,45008,9216,36640,63712,36640,63712,12192,56912,12192,56912,29744,9216,29744,9216,36640,3824,26640,25584,26640, + 25584,20016,3824,20016,3824,26640,38032,33616,43344,33616,46880,33616,48640,35232,50400,36848,50400,40032,50400,43184, + 48616,44800,46832,46416,43344,46416,38032,46416,38032,33616,48496,32048,50272,31456,51528,30368,52784,29280,53632,27584, + 58560,17856,61792,17856,61792,14960,53728,14960,48160,25760,46672,28736,45352,29728,44032,30720,41952,30720,38032,30720, + 38032,17856,41600,17856,41600,14960,28128,14960,28128,17856,31664,17856,31664,46416,28128,46416,28128,49264,45776,49264, + 51216,49264,53976,46880,56736,44496,56736,39872,56736,36336,54696,34400,52656,32464,48496,32048,43520,58736,37952,58736, + 33152,56736,28352,54736,24352,50752,20400,46800,18384,41928,16368,37056,16368,31488,16368,25968,18384,21168,20400,16368, + 24352,12368,28352,8368,33152,6352,37952,4336,43520,4336,49136,4336,53960,6352,58784,8368,62768,12368,66720,16320, + 68696,21120,70672,25920,70672,31488,70672,37152,68680,41976,66688,46800,62768,50752,58784,54736,53960,56736,49136,58736, + 43520,58736,43520,63120,49984,63120,55568,60776,61152,58432,65792,53808,70416,49168,72712,43600,75008,38032,75008,31488, + 75008,25040,72712,19488,70416,13936,65792,9312,61152,4672,55568,2336,49984,0,43520,0,37056,0,31472,2336, + 25888,4672,21248,9312,16624,13936,14328,19488,12032,25040,12032,31488,12032,38032,14328,43600,16624,49168,21248,53808, + 25888,58432,31472,60776,37056,63120,43520,63120,9056,64848,34464,64848,34464,58560,9056,58560,9056,64848,21760,58736, + 18528,58736,16320,56504,14112,54272,14112,51008,14112,47776,16296,45608,18480,43440,21760,43440,24992,43440,27200,45624, + 29408,47808,29408,51008,29408,54192,27160,56464,24912,58736,21760,58736,21760,64608,24480,64608,26984,63560,29488,62512, + 31328,60560,33280,58656,34256,56232,35232,53808,35232,51008,35232,45392,31304,41504,27376,37616,21680,37616,15936,37616, + 12112,41440,8288,45264,8288,51008,8288,56688,12200,60648,16112,64608,21760,64608,39872,54576,39872,37952,63712,37952, + 63712,31072,39872,31072,39872,14448,33072,14448,33072,31072,9216,31072,9216,37952,33072,37952,33072,54576,39872,54576, + 9216,6800,63712,6800,63712,0,9216,0,9216,6800,7232,55088,4256,55088,4256,61792,7056,63152,10032,63880, + 13008,64608,15936,64608,21808,64608,25440,61800,29072,58992,29072,54576,29072,49392,20832,41984,20016,41264,9904,32128, + 26272,32128,26272,36720,29408,36720,29408,28384,3824,28384,3824,31584,15936,42368,19600,45648,21168,48240,22736,50832, + 22736,53632,22736,57248,20672,59352,18608,61456,15040,61456,11728,61456,9728,59840,7728,58224,7232,55088,5312,62384, + 8416,63488,11264,64048,14112,64608,16624,64608,22480,64608,25648,62312,28816,60016,28816,55808,28816,52736,26560,50616, + 24304,48496,20272,47776,25328,47088,27904,44560,30480,42032,30480,37776,30480,32944,26760,30352,23040,27760,16112,27760, + 13040,27760,10088,28352,7136,28944,4256,30128,4256,37360,7232,37312,7440,34176,9520,32536,11600,30896,15520,30896, + 19504,30896,21672,32768,23840,34640,23840,38128,23840,42080,21672,44096,19504,46112,15216,46112,12960,46112,12960,49264, + 14112,49264,18240,49264,20344,50832,22448,52400,22448,55552,22448,58400,20720,59928,18992,61456,15760,61456,12288,61456, + 10440,60096,8592,58736,8288,55968,5312,55968,5312,62384,27664,69616,36128,69616,21680,53632,16704,53632,27664,69616, + 31408,45184,46032,45184,46032,4416,53424,4416,53424,0,38208,0,38208,7984,36000,3488,32872,1128,29744,-1232, + 25920,-1232,23504,-1232,21504,-464,19504,304,17856,1824,17856,-13552,25248,-13552,25248,-18112,2512,-18112,2512,-13552, + 10032,-13552,10032,40624,2976,40624,2976,45184,17856,45184,17856,18864,17856,10624,19896,7568,21936,4512,27072,4512, + 32512,4512,35360,8504,38208,12496,38208,20096,38208,40624,31408,40624,31408,45184,26896,63456,49760,63456,49760,58912, + 44752,58912,44752,-8368,40208,-8368,40208,58912,30384,58912,30384,-8368,25840,-8368,25840,27584,16704,28304,11712,33000, + 6720,37696,6720,45520,6720,53600,12240,58528,17760,63456,26896,63456,8080,30224,8080,32592,9712,34232,11344,35872, + 13776,35872,16112,35872,17768,34216,19424,32560,19424,30224,19424,27840,17768,26200,16112,24560,13776,24560,11344,24560, + 9712,26176,8080,27792,8080,30224,24560,0,27280,-2720,28624,-5104,29968,-7488,29968,-9568,29968,-13008,27288,-14896, + 24608,-16784,19840,-16784,18064,-16784,16192,-16528,14320,-16272,12368,-15760,12368,-10208,14112,-10928,15792,-11288,17472,-11648, + 18960,-11648,21376,-11648,22776,-10520,24176,-9392,24176,-7488,24176,-6288,23248,-4416,22320,-2544,20448,0,24560,0, + 7488,28384,7488,31968,14784,31968,14784,58912,6240,54400,6240,58400,16448,63872,20784,63872,20784,31968,28128,31968, + 28128,28384,7488,28384,20448,34560,24944,34560,27216,37936,29488,41312,29488,47936,29488,54576,27200,57976,24912,61376, + 20448,61376,16016,61376,13704,57928,11392,54480,11392,47936,11392,41360,13688,37960,15984,34560,20448,34560,20448,31328, + 13008,31328,8504,35896,4000,40464,4000,47936,4000,55456,8504,60032,13008,64608,20448,64608,27888,64608,32392,60032, + 36896,55456,36896,47936,36896,40416,32408,35872,27920,31328,20448,31328,5824,27152,35056,27152,35056,22736,5824,22736, + 5824,27152,26640,45008,46576,27248,46576,23760,26640,6000,26640,10880,39264,25504,26640,40128,26640,45008,8208,45008, + 28128,27248,28128,23760,8208,6000,8208,10880,20784,25504,8208,40128,8208,45008,68320,12592,68320,29888,55232,12592, + 68320,12592,80560,-288,62112,-288,62112,3296,68320,3296,68320,9104,51408,9104,51408,12688,68400,35200,74400,35200, + 74400,12592,81360,12592,81360,9104,74400,9104,74400,3296,80560,3296,80560,-288,7488,28384,7488,31968,14784,31968, + 14784,58912,6240,54400,6240,58400,16448,63872,20784,63872,20784,31968,28128,31968,28128,28384,7488,28384,58912,64608, + 65296,64608,25248,-1232,18880,-1232,58912,64608,7488,28384,7488,31968,14784,31968,14784,58912,6240,54400,6240,58400, + 16448,63872,20784,63872,20784,31968,28128,31968,28128,28384,7488,28384,58912,64608,65296,64608,25248,-1232,18880,-1232, + 58912,64608,56384,26416,53408,26416,53408,33120,56208,34480,59184,35208,62160,35936,65088,35936,70960,35936,74592,33128, + 78224,30320,78224,25904,78224,20720,69984,13312,69168,12592,59056,3456,75424,3456,75424,8048,78560,8048,78560,-288, + 52976,-288,52976,2912,65088,13696,68752,16976,70320,19568,71888,22160,71888,24960,71888,28576,69824,30680,67760,32784, + 64192,32784,60880,32784,58880,31168,56880,29552,56384,26416,68320,12592,68320,29888,55232,12592,68320,12592,80560,-288, + 62112,-288,62112,3296,68320,3296,68320,9104,51408,9104,51408,12688,68400,35200,74400,35200,74400,12592,81360,12592, + 81360,9104,74400,9104,74400,3296,80560,3296,80560,-288,5312,62384,8416,63488,11264,64048,14112,64608,16624,64608, + 22480,64608,25648,62312,28816,60016,28816,55808,28816,52736,26560,50616,24304,48496,20272,47776,25328,47088,27904,44560, + 30480,42032,30480,37776,30480,32944,26760,30352,23040,27760,16112,27760,13040,27760,10088,28352,7136,28944,4256,30128, + 4256,37360,7232,37312,7440,34176,9520,32536,11600,30896,15520,30896,19504,30896,21672,32768,23840,34640,23840,38128, + 23840,42080,21672,44096,19504,46112,15216,46112,12960,46112,12960,49264,14112,49264,18240,49264,20344,50832,22448,52400, + 22448,55552,22448,58400,20720,59928,18992,61456,15760,61456,12288,61456,10440,60096,8592,58736,8288,55968,5312,55968, + 5312,62384,58912,64608,65296,64608,25248,-1232,18880,-1232,58912,64608,33072,59040,33072,56656,31432,55000,29792,53344, + 27408,53344,25072,53344,23416,55000,21760,56656,21760,59040,21760,61376,23416,63032,25072,64688,27408,64688,29840,64688, + 31456,63048,33072,61408,33072,59040,42464,2800,37952,800,33912,-176,29872,-1152,26272,-1152,16880,-1152,11392,3400, + 5904,7952,5904,15680,5904,23584,10624,28600,15344,33616,24816,35792,24816,46576,30048,46576,30048,32640,22528,30816, + 18704,26520,14880,22224,14880,15600,14880,9776,18000,6416,21120,3056,26480,3056,31280,3056,34384,5840,37488,8624, + 38384,13856,42464,13856,42464,2800,17424,22992,40720,22992,29072,53168,17424,22992,-512,0,-512,4512,5056,4512, + 27664,63456,34800,63456,57456,4512,63712,4512,63712,0,40624,0,40624,4512,47680,4512,42368,18448,15680,18448, + 10368,4512,17344,4512,17344,0,-512,0,28512,80208,36288,68992,31312,68992,20176,80208,28512,80208,17424,22992, + 40720,22992,29072,53168,17424,22992,-512,0,-512,4512,5056,4512,27664,63456,34800,63456,57456,4512,63712,4512, + 63712,0,40624,0,40624,4512,47680,4512,42368,18448,15680,18448,10368,4512,17344,4512,17344,0,-512,0, + 34160,80208,42544,80208,31408,68992,26432,68992,34160,80208,17424,22992,40720,22992,29072,53168,17424,22992,-512,0, + -512,4512,5056,4512,27664,63456,34800,63456,57456,4512,63712,4512,63712,0,40624,0,40624,4512,47680,4512, + 42368,18448,15680,18448,10368,4512,17344,4512,17344,0,-512,0,27744,80208,35232,80208,45040,68992,40112,68992, + 31488,75840,22864,68992,17936,68992,27744,80208,17424,22992,40720,22992,29072,53168,17424,22992,-512,0,-512,4512, + 5056,4512,27664,63456,34800,63456,57456,4512,63712,4512,63712,0,40624,0,40624,4512,47680,4512,42368,18448, + 15680,18448,10368,4512,17344,4512,17344,0,-512,0,30928,72400,28896,73584,28048,74144,27176,74440,26304,74736, + 25584,74736,23920,74736,22816,73520,21712,72304,21536,70352,17456,70400,17552,74640,19720,77152,21888,79664,25488,79664, + 27024,79664,28344,79280,29664,78896,32000,77584,34080,76480,35056,75920,35992,75624,36928,75328,37648,75328,39392,75328, + 40392,76496,41392,77664,41392,79664,45520,79664,45424,75200,43240,72776,41056,70352,37056,70352,34208,70352,31152,72272, + 30928,72400,17424,22992,40720,22992,29072,53168,17424,22992,-512,0,-512,4512,5056,4512,27664,63456,34800,63456, + 57456,4512,63712,4512,63712,0,40624,0,40624,4512,47680,4512,42368,18448,15680,18448,10368,4512,17344,4512, + 17344,0,-512,0,23200,79584,25248,79584,26712,78096,28176,76608,28176,74640,28176,72528,26752,71104,25328,69680, + 23200,69680,21120,69680,19696,71104,18272,72528,18272,74640,18272,76608,19736,78096,21200,79584,23200,79584,39776,79584, + 41776,79584,43240,78096,44704,76608,44704,74640,44704,72528,43280,71104,41856,69680,39776,69680,37648,69680,36224,71104, + 34800,72528,34800,74640,34800,76608,36264,78096,37728,79584,39776,79584,37696,69104,37696,71776,35808,73672,33920,75568, + 31232,75568,28512,75568,26664,73720,24816,71872,24816,69104,24816,66432,26664,64560,28512,62688,31232,62688,33920,62688, + 35808,64560,37696,66432,37696,69104,17424,22992,40624,22992,29072,53168,17424,22992,-512,0,-512,4512,5056,4512, + 25840,58816,22784,60400,21192,62992,19600,65584,19600,69104,19600,73952,23000,77376,26400,80800,31232,80800,36080,80800, + 39504,77376,42928,73952,42928,69104,42928,65712,41272,63008,39616,60304,36544,58816,57456,4512,63712,4512,63712,0, + 40624,0,40624,4512,47680,4512,42368,18448,15680,18448,10368,4512,17344,4512,17344,0,-512,0,18112,22992, + 38880,22992,38880,58912,34640,58912,18112,22992,30816,0,30816,4512,38880,4512,38880,18448,16016,18448,9568,4512, + 16528,4512,16528,0,-1488,0,-1488,4512,4080,4512,29152,58912,20016,58912,20016,63456,81904,63456,81904,49344, + 76672,49344,76672,58224,47424,58224,47424,36976,68336,36976,68336,44928,73568,44928,73568,23840,68336,23840,68336,31792, + 47424,31792,47424,5232,77392,5232,77392,14112,82624,14112,82624,0,30816,0,61376,16784,58560,7904,51952,3336, + 45344,-1232,35232,-1232,29024,-1232,23712,896,18400,3024,14288,7136,9520,11904,7200,17960,4880,24016,4880,31664, + 4880,46448,13424,55528,21968,64608,35952,64608,41136,64608,47000,63248,52864,61888,59632,59120,59632,44496,54832,44496, + 53248,52480,48512,56264,43776,60048,35232,60048,25072,60048,19848,52848,14624,45648,14624,31664,14624,17728,19848,10520, + 25072,3312,35232,3312,42336,3312,46920,6696,51504,10080,53552,16784,61376,16784,38896,0,41616,-2720,42960,-5104, + 44304,-7488,44304,-9568,44304,-13008,41624,-14896,38944,-16784,34176,-16784,32400,-16784,30528,-16528,28656,-16272,26704,-15760, + 26704,-10208,28448,-10928,30128,-11288,31808,-11648,33296,-11648,35712,-11648,37112,-10520,38512,-9392,38512,-7488,38512,-6288, + 37584,-4416,36656,-2544,34784,0,38896,0,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456, + 55888,63456,55888,49344,50656,49344,50656,58224,21504,58224,21504,36976,42288,36976,42288,44928,47520,44928,47520,23840, + 42288,23840,42288,31792,21504,31792,21504,5232,51344,5232,51344,14112,56560,14112,56560,0,4800,0,28512,80208, + 36288,68992,31312,68992,20176,80208,28512,80208,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456, + 55888,63456,55888,49344,50656,49344,50656,58224,21504,58224,21504,36976,42288,36976,42288,44928,47520,44928,47520,23840, + 42288,23840,42288,31792,21504,31792,21504,5232,51344,5232,51344,14112,56560,14112,56560,0,4800,0,34160,80208, + 42544,80208,31408,68992,26432,68992,34160,80208,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456, + 55888,63456,55888,49344,50656,49344,50656,58224,21504,58224,21504,36976,42288,36976,42288,44928,47520,44928,47520,23840, + 42288,23840,42288,31792,21504,31792,21504,5232,51344,5232,51344,14112,56560,14112,56560,0,4800,0,27744,80208, + 35232,80208,45040,68992,40112,68992,31488,75840,22864,68992,17936,68992,27744,80208,4800,0,4800,4512,12880,4512, + 12880,58912,4800,58912,4800,63456,55888,63456,55888,49344,50656,49344,50656,58224,21504,58224,21504,36976,42288,36976, + 42288,44928,47520,44928,47520,23840,42288,23840,42288,31792,21504,31792,21504,5232,51344,5232,51344,14112,56560,14112, + 56560,0,4800,0,23200,79584,25248,79584,26712,78096,28176,76608,28176,74640,28176,72528,26752,71104,25328,69680, + 23200,69680,21120,69680,19696,71104,18272,72528,18272,74640,18272,76608,19736,78096,21200,79584,23200,79584,39776,79584, + 41776,79584,43240,78096,44704,76608,44704,74640,44704,72528,43280,71104,41856,69680,39776,69680,37648,69680,36224,71104, + 34800,72528,34800,74640,34800,76608,36264,78096,37728,79584,39776,79584,21504,4512,29584,4512,29584,0,4800,0, + 4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,14176,80208, + 21952,68992,16976,68992,5840,80208,14176,80208,21504,4512,29584,4512,29584,0,4800,0,4800,4512,12880,4512, + 12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,19824,80208,28208,80208,17072,68992, + 12096,68992,19824,80208,21504,4512,29584,4512,29584,0,4800,0,4800,4512,12880,4512,12880,58912,4800,58912, + 4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,13408,80208,20896,80208,30704,68992,25776,68992,17152,75840, + 8528,68992,3600,68992,13408,80208,21504,4512,29584,4512,29584,0,4800,0,4800,4512,12880,4512,12880,58912, + 4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,8864,79584,10912,79584,12376,78096,13840,76608, + 13840,74640,13840,72528,12416,71104,10992,69680,8864,69680,6784,69680,5360,71104,3936,72528,3936,74640,3936,76608, + 5400,78096,6864,79584,8864,79584,25440,79584,27440,79584,28904,78096,30368,76608,30368,74640,30368,72528,28944,71104, + 27520,69680,25440,69680,23312,69680,21888,71104,20464,72528,20464,74640,20464,76608,21928,78096,23392,79584,25440,79584, + 21840,4512,29840,4512,42208,4512,48832,11560,55456,18608,55456,31792,55456,44960,48848,51936,42240,58912,29840,58912, + 21840,58912,21840,35872,36128,35872,36128,30560,21840,30560,21840,4512,5232,0,5232,4512,13296,4512,13296,30560, + 4800,30560,4800,35872,13296,35872,13296,58912,5232,58912,5232,63456,30480,63456,46880,63456,56040,55080,65200,46704, + 65200,31792,65200,16832,56016,8416,46832,0,30480,0,5232,0,4256,0,4256,4512,12800,4512,12800,58912, + 4256,58912,4256,63456,20528,63456,58560,13392,58560,58912,50064,58912,50064,63456,72336,63456,72336,58912,63792,58912, + 63792,-1232,58656,-1232,18016,52240,18016,4512,26560,4512,26560,0,4256,0,37072,72400,35040,73584,34192,74144, + 33320,74440,32448,74736,31728,74736,30064,74736,28960,73520,27856,72304,27680,70352,23600,70400,23696,74640,25864,77152, + 28032,79664,31632,79664,33168,79664,34488,79280,35808,78896,38144,77584,40224,76480,41200,75920,42136,75624,43072,75328, + 43792,75328,45536,75328,46536,76496,47536,77664,47536,79664,51664,79664,51568,75200,49384,72776,47200,70352,43200,70352, + 40352,70352,37296,72272,37072,72400,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664,56736,45728,51424,52888, + 46112,60048,35696,60048,25248,60048,19936,52888,14624,45728,14624,31664,14624,17632,19936,10472,25248,3312,35696,3312, + 35696,-1232,29248,-1232,23824,896,18400,3024,14288,7136,9520,11904,7200,17936,4880,23968,4880,31664,4880,39360, + 7200,45416,9520,51472,14288,56224,18448,60400,23800,62504,29152,64608,35696,64608,49520,64608,58016,55552,66512,46496, + 66512,31664,66512,24048,64176,17952,61840,11856,57072,7136,52912,2976,47560,872,42208,-1232,35696,-1232,32608,80208, + 40384,68992,35408,68992,24272,80208,32608,80208,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664,56736,45728, + 51424,52888,46112,60048,35696,60048,25248,60048,19936,52888,14624,45728,14624,31664,14624,17632,19936,10472,25248,3312, + 35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024,14288,7136,9520,11904,7200,17936,4880,23968,4880,31664, + 4880,39360,7200,45416,9520,51472,14288,56224,18448,60400,23800,62504,29152,64608,35696,64608,49520,64608,58016,55552, + 66512,46496,66512,31664,66512,24048,64176,17952,61840,11856,57072,7136,52912,2976,47560,872,42208,-1232,35696,-1232, + 38256,80208,46640,80208,35504,68992,30528,68992,38256,80208,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664, + 56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888,14624,45728,14624,31664,14624,17632,19936,10472, + 25248,3312,35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024,14288,7136,9520,11904,7200,17936,4880,23968, + 4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400,23800,62504,29152,64608,35696,64608,49520,64608, + 58016,55552,66512,46496,66512,31664,66512,24048,64176,17952,61840,11856,57072,7136,52912,2976,47560,872,42208,-1232, + 35696,-1232,31840,80208,39328,80208,49136,68992,44208,68992,35584,75840,26960,68992,22032,68992,31840,80208,35696,3312, + 46112,3312,51424,10472,56736,17632,56736,31664,56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888, + 14624,45728,14624,31664,14624,17632,19936,10472,25248,3312,35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024, + 14288,7136,9520,11904,7200,17936,4880,23968,4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400, + 23800,62504,29152,64608,35696,64608,49520,64608,58016,55552,66512,46496,66512,31664,66512,24048,64176,17952,61840,11856, + 57072,7136,52912,2976,47560,872,42208,-1232,35696,-1232,35024,72400,32992,73584,32144,74144,31272,74440,30400,74736, + 29680,74736,28016,74736,26912,73520,25808,72304,25632,70352,21552,70400,21648,74640,23816,77152,25984,79664,29584,79664, + 31120,79664,32440,79280,33760,78896,36096,77584,38176,76480,39152,75920,40088,75624,41024,75328,41744,75328,43488,75328, + 44488,76496,45488,77664,45488,79664,49616,79664,49520,75200,47336,72776,45152,70352,41152,70352,38304,70352,35248,72272, + 35024,72400,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664,56736,45728,51424,52888,46112,60048,35696,60048, + 25248,60048,19936,52888,14624,45728,14624,31664,14624,17632,19936,10472,25248,3312,35696,3312,35696,-1232,29248,-1232, + 23824,896,18400,3024,14288,7136,9520,11904,7200,17936,4880,23968,4880,31664,4880,39360,7200,45416,9520,51472, + 14288,56224,18448,60400,23800,62504,29152,64608,35696,64608,49520,64608,58016,55552,66512,46496,66512,31664,66512,24048, + 64176,17952,61840,11856,57072,7136,52912,2976,47560,872,42208,-1232,35696,-1232,27296,79584,29344,79584,30808,78096, + 32272,76608,32272,74640,32272,72528,30848,71104,29424,69680,27296,69680,25216,69680,23792,71104,22368,72528,22368,74640, + 22368,76608,23832,78096,25296,79584,27296,79584,43872,79584,45872,79584,47336,78096,48800,76608,48800,74640,48800,72528, + 47376,71104,45952,69680,43872,69680,41744,69680,40320,71104,38896,72528,38896,74640,38896,76608,40360,78096,41824,79584, + 43872,79584,60944,46928,41264,27248,60944,7648,56064,2896,36464,22448,16880,2896,12032,7648,31584,27248,12032,46928, + 16880,51728,36464,32128,56064,51728,60944,46928,51600,52656,48832,56400,44904,58224,40976,60048,35696,60048,25248,60048, + 19936,52888,14624,45728,14624,31664,14624,26608,15304,22504,15984,18400,17424,14960,51600,52656,19680,10880,22400,7104, + 26392,5208,30384,3312,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664,56736,36640,56032,40824,55328,45008, + 53888,48496,19680,10880,59120,54224,62816,49648,64664,44056,66512,38464,66512,31664,66512,17008,57992,7888,49472,-1232, + 35696,-1232,29712,-1232,24656,592,19600,2416,15296,6080,7568,-2416,4256,512,12192,9312,8496,13776,6688,19320, + 4880,24864,4880,31664,4880,46368,13424,55488,21968,64608,35696,64608,41696,64608,46792,62800,51888,60992,55968,57456, + 63536,65872,66944,62864,59120,54224,12192,58912,4080,58912,4080,63456,28896,63456,28896,58912,20784,58912,20784,26096, + 20784,13936,24760,9136,28736,4336,38464,4336,48192,4336,52168,9136,56144,13936,56144,26096,56144,58912,48032,58912, + 48032,63456,69440,63456,69440,58912,61376,58912,61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232, + 17872,4800,12192,10832,12192,25248,12192,58912,35680,80208,43456,68992,38480,68992,27344,80208,35680,80208,12192,58912, + 4080,58912,4080,63456,28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336, + 48192,4336,52168,9136,56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912, + 61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912, + 41328,80208,49712,80208,38576,68992,33600,68992,41328,80208,12192,58912,4080,58912,4080,63456,28896,63456,28896,58912, + 20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336,52168,9136,56144,13936,56144,26096, + 56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248,61376,10752,55808,4760,50240,-1232, + 36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,34912,80208,42400,80208,52208,68992,47280,68992, + 38656,75840,30032,68992,25104,68992,34912,80208,12192,58912,4080,58912,4080,63456,28896,63456,28896,58912,20784,58912, + 20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336,52168,9136,56144,13936,56144,26096,56144,58912, + 48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232, + 23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,30368,79584,32416,79584,33880,78096,35344,76608,35344,74640, + 35344,72528,33920,71104,32496,69680,30368,69680,28288,69680,26864,71104,25440,72528,25440,74640,25440,76608,26904,78096, + 28368,79584,30368,79584,46944,79584,48944,79584,50408,78096,51872,76608,51872,74640,51872,72528,50448,71104,49024,69680, + 46944,69680,44816,69680,43392,71104,41968,72528,41968,74640,41968,76608,43432,78096,44896,79584,46944,79584,16448,0, + 16448,4512,24560,4512,24560,27328,4976,58912,-976,58912,-976,63456,22608,63456,22608,58912,15216,58912,31072,33232, + 46928,58912,39776,58912,39776,63456,58224,63456,58224,58912,52240,58912,33152,28128,33152,4512,41264,4512,41264,0, + 16448,0,31088,80208,39472,80208,28336,68992,23360,68992,31088,80208,21504,18448,32720,18448,39056,18448,42368,21864, + 45680,25280,45680,31792,45680,38256,42368,41672,39056,45088,32720,45088,21504,45088,21504,18448,4800,0,4800,4512, + 12880,4512,12880,58912,4800,58912,4800,63456,31328,63456,31328,58912,21504,58912,21504,49600,34800,49600,44320,49600, + 49888,44776,55456,39952,55456,31792,55456,23552,49872,18704,44288,13856,34800,13856,21504,13856,21504,4512,31328,4512, + 31328,0,4800,0,39952,51424,39616,56480,36656,59224,33696,61968,28640,61968,23040,61968,20448,59224,17856,56480, + 17856,50576,17856,0,2512,0,2512,4512,10032,4512,10032,50400,10032,57888,14896,62008,19760,66128,28640,66128, + 37696,66128,42432,61712,47168,57296,47680,48320,46752,48320,40592,48320,37040,46024,33488,43728,33488,39776,33488,37568, + 34640,35936,35792,34304,38880,32304,42672,29968,49264,25760,51792,22144,54320,18528,54320,13680,54320,7104,49408,2936, + 44496,-1232,36640,-1232,33024,-1232,29456,-448,25888,336,22528,1824,22528,11728,27152,11728,27328,7440,29688,5208, + 32048,2976,36384,2976,41104,2976,43800,5544,46496,8112,46496,12544,46496,16112,44792,18600,43088,21088,38128,24176, + 34464,26480,30048,29248,28160,31984,26272,34720,26272,38208,26272,43392,29856,46880,33440,50368,39952,51424,34640,14192, + 34640,23760,24560,23760,18736,23760,15888,21248,13040,18736,13040,13552,13040,8848,15936,6080,18832,3312,23760,3312, + 28640,3312,31640,6328,34640,9344,34640,14192,42464,28224,42464,4512,49424,4512,49424,0,34640,0,34640,4880, + 32048,1744,28648,256,25248,-1232,20704,-1232,13168,-1232,8752,2760,4336,6752,4336,13552,4336,20576,9392,24440, + 14448,28304,23680,28304,34640,28304,34640,31408,34640,36544,31512,39376,28384,42208,22736,42208,18064,42208,15304,40080, + 12544,37952,11856,33792,7824,33792,7824,42928,11904,44672,15752,45544,19600,46416,23248,46416,32640,46416,37552,41760, + 42464,37104,42464,28224,17648,69536,28688,53552,23728,53552,9280,69536,17648,69536,34640,14192,34640,23760,24560,23760, + 18736,23760,15888,21248,13040,18736,13040,13552,13040,8848,15936,6080,18832,3312,23760,3312,28640,3312,31640,6328, + 34640,9344,34640,14192,42464,28224,42464,4512,49424,4512,49424,0,34640,0,34640,4880,32048,1744,28648,256, + 25248,-1232,20704,-1232,13168,-1232,8752,2760,4336,6752,4336,13552,4336,20576,9392,24440,14448,28304,23680,28304, + 34640,28304,34640,31408,34640,36544,31512,39376,28384,42208,22736,42208,18064,42208,15304,40080,12544,37952,11856,33792, + 7824,33792,7824,42928,11904,44672,15752,45544,19600,46416,23248,46416,32640,46416,37552,41760,42464,37104,42464,28224, + 29712,69616,38176,69616,23728,53632,18752,53632,29712,69616,34640,14192,34640,23760,24560,23760,18736,23760,15888,21248, + 13040,18736,13040,13552,13040,8848,15936,6080,18832,3312,23760,3312,28640,3312,31640,6328,34640,9344,34640,14192, + 42464,28224,42464,4512,49424,4512,49424,0,34640,0,34640,4880,32048,1744,28648,256,25248,-1232,20704,-1232, + 13168,-1232,8752,2760,4336,6752,4336,13552,4336,20576,9392,24440,14448,28304,23680,28304,34640,28304,34640,31408, + 34640,36544,31512,39376,28384,42208,22736,42208,18064,42208,15304,40080,12544,37952,11856,33792,7824,33792,7824,42928, + 11904,44672,15752,45544,19600,46416,23248,46416,32640,46416,37552,41760,42464,37104,42464,28224,20240,69616,27376,69616, + 37360,53632,32432,53632,23808,64688,15184,53632,10256,53632,20240,69616,34640,14192,34640,23760,24560,23760,18736,23760, + 15888,21248,13040,18736,13040,13552,13040,8848,15936,6080,18832,3312,23760,3312,28640,3312,31640,6328,34640,9344, + 34640,14192,42464,28224,42464,4512,49424,4512,49424,0,34640,0,34640,4880,32048,1744,28648,256,25248,-1232, + 20704,-1232,13168,-1232,8752,2760,4336,6752,4336,13552,4336,20576,9392,24440,14448,28304,23680,28304,34640,28304, + 34640,31408,34640,36544,31512,39376,28384,42208,22736,42208,18064,42208,15304,40080,12544,37952,11856,33792,7824,33792, + 7824,42928,11904,44672,15752,45544,19600,46416,23248,46416,32640,46416,37552,41760,42464,37104,42464,28224,23632,58224, + 21216,60560,20112,61584,19408,61904,18704,62224,17904,62224,16112,62224,15096,60544,14080,58864,13856,55632,9776,55632, + 9872,61376,12040,64496,14208,67616,18064,67616,19680,67616,21040,67024,22400,66432,23984,65024,26400,62688,27376,61712, + 28096,61368,28816,61024,29712,61024,31536,61024,32560,62728,33584,64432,33760,67616,37840,67616,37744,61888,35576,58760, + 33408,55632,29552,55632,27936,55632,26576,56224,25216,56816,23632,58224,34640,14192,34640,23760,24560,23760,18736,23760, + 15888,21248,13040,18736,13040,13552,13040,8848,15936,6080,18832,3312,23760,3312,28640,3312,31640,6328,34640,9344, + 34640,14192,42464,28224,42464,4512,49424,4512,49424,0,34640,0,34640,4880,32048,1744,28648,256,25248,-1232, + 20704,-1232,13168,-1232,8752,2760,4336,6752,4336,13552,4336,20576,9392,24440,14448,28304,23680,28304,34640,28304, + 34640,31408,34640,36544,31512,39376,28384,42208,22736,42208,18064,42208,15304,40080,12544,37952,11856,33792,7824,33792, + 7824,42928,11904,44672,15752,45544,19600,46416,23248,46416,32640,46416,37552,41760,42464,37104,42464,28224,15520,66688, + 17568,66688,19032,65216,20496,63744,20496,61712,20496,59536,19096,58136,17696,56736,15520,56736,13392,56736,11992,58136, + 10592,59536,10592,61712,10592,63744,12056,65216,13520,66688,15520,66688,32096,66688,34096,66688,35560,65216,37024,63744, + 37024,61712,37024,59536,35624,58136,34224,56736,32096,56736,29936,56736,28528,58136,27120,59536,27120,61712,27120,63744, + 28584,65216,30048,66688,32096,66688,34640,14192,34640,23760,24560,23760,18736,23760,15888,21248,13040,18736,13040,13552, + 13040,8848,15936,6080,18832,3312,23760,3312,28640,3312,31640,6328,34640,9344,34640,14192,42464,28224,42464,4512, + 49424,4512,49424,0,34640,0,34640,4880,32048,1744,28648,256,25248,-1232,20704,-1232,13168,-1232,8752,2760, + 4336,6752,4336,13552,4336,20576,9392,24440,14448,28304,23680,28304,34640,28304,34640,31408,34640,36544,31512,39376, + 28384,42208,22736,42208,18064,42208,15304,40080,12544,37952,11856,33792,7824,33792,7824,42928,11904,44672,15752,45544, + 19600,46416,23248,46416,32640,46416,37552,41760,42464,37104,42464,28224,35456,64768,35456,59888,32072,56488,28688,53088, + 23808,53088,18928,53088,15544,56488,12160,59888,12160,64768,12160,69664,15544,73040,18928,76416,23808,76416,28688,76416, + 32072,73040,35456,69664,35456,64768,30272,64768,30272,67440,28400,69312,26528,71184,23808,71184,21040,71184,19192,69336, + 17344,67488,17344,64768,17344,62000,19192,60152,21040,58304,23808,58304,26528,58304,28400,60176,30272,62048,30272,64768, + 34640,14192,34640,23760,24560,23760,18736,23760,15888,21248,13040,18736,13040,13552,13040,8848,15936,6080,18832,3312, + 23760,3312,28640,3312,31640,6328,34640,9344,34640,14192,39264,6368,35744,2512,31448,640,27152,-1232,21840,-1232, + 13472,-1232,8904,2632,4336,6496,4336,13552,4336,20576,9416,24440,14496,28304,23680,28304,34640,28304,34640,31408, + 34640,36512,31576,39360,28512,42208,23072,42208,18144,42208,15344,40104,12544,38000,11856,33792,7824,33792,7824,42928, + 11904,44672,15752,45544,19600,46416,23248,46416,29248,46416,33344,44568,37440,42720,39776,38880,42928,42624,47008,44520, + 51088,46416,56064,46416,66304,46416,71784,40080,77264,33744,77440,21760,43776,21760,43776,21424,43776,12288,47200,7632, + 50624,2976,57376,2976,62512,2976,65808,5672,69104,8368,70416,13680,76672,13680,74848,6240,69784,2504,64720,-1232, + 56560,-1232,51376,-1232,46984,704,42592,2640,39264,6368,68256,26272,68000,34176,64920,38192,61840,42208,56064,42208, + 50656,42208,47536,38168,44416,34128,43776,26272,68256,26272,44752,13552,43088,6336,38376,2552,33664,-1232,26176,-1232, + 16320,-1232,10328,5288,4336,11808,4336,22608,4336,33440,10328,39928,16320,46416,26176,46416,30480,46416,34728,45416, + 38976,44416,43264,42368,43264,30816,38720,30816,37824,36768,34832,39488,31840,42208,26272,42208,19936,42208,16704,37296, + 13472,32384,13472,22608,13472,12832,16680,7904,19888,2976,26272,2976,31328,2976,34344,5608,37360,8240,38464,13552, + 44752,13552,28656,0,31376,-2720,32720,-5104,34064,-7488,34064,-9568,34064,-13008,31384,-14896,28704,-16784,23936,-16784, + 22160,-16784,20288,-16528,18416,-16272,16464,-15760,16464,-10208,18208,-10928,19888,-11288,21568,-11648,23056,-11648,25472,-11648, + 26872,-10520,28272,-9392,28272,-7488,28272,-6288,27344,-4416,26416,-2544,24544,0,28656,0,47168,21760,13472,21760, + 13472,21424,13472,12288,16912,7632,20352,2976,27072,2976,32208,2976,35504,5672,38800,8368,40128,13680,46416,13680, + 44544,6240,39504,2504,34464,-1232,26272,-1232,16368,-1232,10352,5288,4336,11808,4336,22608,4336,33328,10240,39872, + 16144,46416,25760,46416,36000,46416,41480,40104,46960,33792,47168,21760,37952,26272,37696,34176,34616,38192,31536,42208, + 25760,42208,20352,42208,17256,38168,14160,34128,13472,26272,37952,26272,19696,69536,30736,53552,25776,53552,11328,69536, + 19696,69536,47168,21760,13472,21760,13472,21424,13472,12288,16912,7632,20352,2976,27072,2976,32208,2976,35504,5672, + 38800,8368,40128,13680,46416,13680,44544,6240,39504,2504,34464,-1232,26272,-1232,16368,-1232,10352,5288,4336,11808, + 4336,22608,4336,33328,10240,39872,16144,46416,25760,46416,36000,46416,41480,40104,46960,33792,47168,21760,37952,26272, + 37696,34176,34616,38192,31536,42208,25760,42208,20352,42208,17256,38168,14160,34128,13472,26272,37952,26272,31760,69616, + 40224,69616,25776,53632,20800,53632,31760,69616,47168,21760,13472,21760,13472,21424,13472,12288,16912,7632,20352,2976, + 27072,2976,32208,2976,35504,5672,38800,8368,40128,13680,46416,13680,44544,6240,39504,2504,34464,-1232,26272,-1232, + 16368,-1232,10352,5288,4336,11808,4336,22608,4336,33328,10240,39872,16144,46416,25760,46416,36000,46416,41480,40104, + 46960,33792,47168,21760,37952,26272,37696,34176,34616,38192,31536,42208,25760,42208,20352,42208,17256,38168,14160,34128, + 13472,26272,37952,26272,22288,69616,29424,69616,39408,53632,34480,53632,25856,64688,17232,53632,12304,53632,22288,69616, + 47168,21760,13472,21760,13472,21424,13472,12288,16912,7632,20352,2976,27072,2976,32208,2976,35504,5672,38800,8368, + 40128,13680,46416,13680,44544,6240,39504,2504,34464,-1232,26272,-1232,16368,-1232,10352,5288,4336,11808,4336,22608, + 4336,33328,10240,39872,16144,46416,25760,46416,36000,46416,41480,40104,46960,33792,47168,21760,37952,26272,37696,34176, + 34616,38192,31536,42208,25760,42208,20352,42208,17256,38168,14160,34128,13472,26272,37952,26272,17568,66688,19616,66688, + 21080,65216,22544,63744,22544,61712,22544,59536,21144,58136,19744,56736,17568,56736,15440,56736,14040,58136,12640,59536, + 12640,61712,12640,63744,14104,65216,15568,66688,17568,66688,34144,66688,36144,66688,37608,65216,39072,63744,39072,61712, + 39072,59536,37672,58136,36272,56736,34144,56736,31984,56736,30576,58136,29168,59536,29168,61712,29168,63744,30632,65216, + 32096,66688,34144,66688,18448,4512,25840,4512,25840,0,3152,0,3152,4512,10624,4512,10624,40624,3152,40624, + 3152,45184,18448,45184,18448,4512,7408,69536,18448,53552,13488,53552,-960,69536,7408,69536,18448,4512,25840,4512, + 25840,0,3152,0,3152,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,4512,19472,69616, + 27936,69616,13488,53632,8512,53632,19472,69616,18448,4512,25840,4512,25840,0,3152,0,3152,4512,10624,4512, + 10624,40624,3152,40624,3152,45184,18448,45184,18448,4512,10000,69616,17136,69616,27120,53632,22192,53632,13568,64688, + 4944,53632,16,53632,10000,69616,18448,4512,25840,4512,25840,0,3152,0,3152,4512,10624,4512,10624,40624, + 3152,40624,3152,45184,18448,45184,18448,4512,5280,66688,7328,66688,8792,65216,10256,63744,10256,61712,10256,59536, + 8856,58136,7456,56736,5280,56736,3152,56736,1752,58136,352,59536,352,61712,352,63744,1816,65216,3280,66688, + 5280,66688,21856,66688,23856,66688,25320,65216,26784,63744,26784,61712,26784,59536,25384,58136,23984,56736,21856,56736, + 19696,56736,18288,58136,16880,59536,16880,61712,16880,63744,18344,65216,19808,66688,21856,66688,34896,39440,32976,39824, + 31256,40016,29536,40208,27840,40208,20480,40208,16976,35656,13472,31104,13472,21584,13472,12672,16808,7824,20144,2976, + 26176,2976,32304,2976,35592,7840,38880,12704,38880,21760,38880,26528,37888,31008,36896,35488,34896,39440,32304,55552, + 40080,48448,44056,40144,48032,31840,48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,16448,-1232,10392,5208, + 4336,11648,4336,22016,4336,32048,10328,38208,16320,44368,26016,44368,27504,44368,29096,44240,30688,44112,32896,43776, + 31968,46032,30416,48304,28864,50576,26736,52912,13040,46576,11472,49888,23920,55632,21328,58096,17992,59816,14656,61536, + 10624,62480,11392,66128,16448,65024,20888,63024,25328,61024,29248,58144,42928,64512,44496,61200,32304,55552,3568,0, + 3568,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,37152,20608,41728,24072,44072,27536,46416, + 32128,46416,39616,46416,43144,42120,46672,37824,46672,28736,46672,4512,53632,4512,53632,0,32048,0,32048,4512, + 38800,4512,38800,26272,38800,34560,36760,37640,34720,40720,29584,40720,24144,40720,21296,36744,18448,32768,18448,25168, + 18448,4512,25248,4512,25248,0,3568,0,27728,58224,25312,60560,24208,61584,23504,61904,22800,62224,22000,62224, + 20208,62224,19192,60544,18176,58864,17952,55632,13872,55632,13968,61376,16136,64496,18304,67616,22160,67616,23776,67616, + 25136,67024,26496,66432,28080,65024,30496,62688,31472,61712,32192,61368,32912,61024,33808,61024,35632,61024,36656,62728, + 37680,64432,37856,67616,41936,67616,41840,61888,39672,58760,37504,55632,33648,55632,32032,55632,30672,56224,29312,56816, + 27728,58224,26176,2976,32464,2976,35672,7952,38880,12928,38880,22608,38880,32304,35672,37256,32464,42208,26176,42208, + 19888,42208,16680,37256,13472,32304,13472,22608,13472,12928,16704,7952,19936,2976,26176,2976,26176,-1232,16320,-1232, + 10328,5288,4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416,36080,46416,42056,39912,48032,33408, + 48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,19696,69536,30736,53552,25776,53552,11328,69536,19696,69536, + 26176,2976,32464,2976,35672,7952,38880,12928,38880,22608,38880,32304,35672,37256,32464,42208,26176,42208,19888,42208, + 16680,37256,13472,32304,13472,22608,13472,12928,16704,7952,19936,2976,26176,2976,26176,-1232,16320,-1232,10328,5288, + 4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416,36080,46416,42056,39912,48032,33408,48032,22608, + 48032,11808,42056,5288,36080,-1232,26176,-1232,31760,69616,40224,69616,25776,53632,20800,53632,31760,69616,26176,2976, + 32464,2976,35672,7952,38880,12928,38880,22608,38880,32304,35672,37256,32464,42208,26176,42208,19888,42208,16680,37256, + 13472,32304,13472,22608,13472,12928,16704,7952,19936,2976,26176,2976,26176,-1232,16320,-1232,10328,5288,4336,11808, + 4336,22608,4336,33408,10304,39912,16272,46416,26176,46416,36080,46416,42056,39912,48032,33408,48032,22608,48032,11808, + 42056,5288,36080,-1232,26176,-1232,22288,69616,29424,69616,39408,53632,34480,53632,25856,64688,17232,53632,12304,53632, + 22288,69616,26176,2976,32464,2976,35672,7952,38880,12928,38880,22608,38880,32304,35672,37256,32464,42208,26176,42208, + 19888,42208,16680,37256,13472,32304,13472,22608,13472,12928,16704,7952,19936,2976,26176,2976,26176,-1232,16320,-1232, + 10328,5288,4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416,36080,46416,42056,39912,48032,33408, + 48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,25680,58224,23264,60560,22160,61584,21456,61904,20752,62224, + 19952,62224,18160,62224,17144,60544,16128,58864,15904,55632,11824,55632,11920,61376,14088,64496,16256,67616,20112,67616, + 21728,67616,23088,67024,24448,66432,26032,65024,28448,62688,29424,61712,30144,61368,30864,61024,31760,61024,33584,61024, + 34608,62728,35632,64432,35808,67616,39888,67616,39792,61888,37624,58760,35456,55632,31600,55632,29984,55632,28624,56224, + 27264,56816,25680,58224,26176,2976,32464,2976,35672,7952,38880,12928,38880,22608,38880,32304,35672,37256,32464,42208, + 26176,42208,19888,42208,16680,37256,13472,32304,13472,22608,13472,12928,16704,7952,19936,2976,26176,2976,26176,-1232, + 16320,-1232,10328,5288,4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416,36080,46416,42056,39912, + 48032,33408,48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,17568,66688,19616,66688,21080,65216,22544,63744, + 22544,61712,22544,59536,21144,58136,19744,56736,17568,56736,15440,56736,14040,58136,12640,59536,12640,61712,12640,63744, + 14104,65216,15568,66688,17568,66688,34144,66688,36144,66688,37608,65216,39072,63744,39072,61712,39072,59536,37672,58136, + 36272,56736,34144,56736,31984,56736,30576,58136,29168,59536,29168,61712,29168,63744,30632,65216,32096,66688,34144,66688, + 30816,43008,30816,45392,32448,47024,34080,48656,36464,48656,38800,48656,40456,47000,42112,45344,42112,43008,42112,40624, + 40456,38992,38800,37360,36464,37360,34048,37360,32432,38976,30816,40592,30816,43008,30816,11568,30816,13936,32448,15592, + 34080,17248,36464,17248,38800,17248,40456,15592,42112,13936,42112,11568,42112,9216,40456,7560,38800,5904,36464,5904, + 34048,5904,32432,7544,30816,9184,30816,11568,9216,30720,63712,30720,63712,23840,9216,23840,9216,30720,35696,37360, + 34080,39776,31704,40992,29328,42208,26176,42208,19936,42208,16704,37232,13472,32256,13472,22608,13472,19552,13792,17040, + 14112,14528,14704,12448,35696,37360,16624,8080,18320,5488,20680,4232,23040,2976,26176,2976,32432,2976,35656,7968, + 38880,12960,38880,22608,38880,25840,38568,28408,38256,30976,37616,33152,16624,8080,42672,39184,45312,36048,46672,31840, + 48032,27632,48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,22192,-1232,18792,-104,15392,1024,12544,3312, + 6464,-4000,3232,-1312,9568,6240,6976,9520,5656,13624,4336,17728,4336,22608,4336,33408,10304,39912,16272,46416, + 26176,46416,30176,46416,33576,45328,36976,44240,39696,42112,45600,49168,48832,46496,42672,39184,30816,45184,45440,45184, + 45440,4512,52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232, + 12944,3040,9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568, + 21296,4512,26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,18672,69536, + 29712,53552,24752,53552,10304,69536,18672,69536,30816,45184,45440,45184,45440,4512,52832,4512,52832,0,37616,0, + 37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624, + 2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568,21296,4512,26480,4512,31920,4512,34768,8504, + 37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,30736,69616,39200,69616,24752,53632,19776,53632,30736,69616, + 30816,45184,45440,45184,45440,4512,52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232, + 24016,-1232,16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864, + 17248,10624,19272,7568,21296,4512,26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624, + 30816,45184,21264,69616,28400,69616,38384,53632,33456,53632,24832,64688,16208,53632,11280,53632,21264,69616,30816,45184, + 45440,45184,45440,4512,52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232, + 16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864,17248,10624, + 19272,7568,21296,4512,26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624,30816,45184, + 16544,66688,18592,66688,20056,65216,21520,63744,21520,61712,21520,59536,20120,58136,18720,56736,16544,56736,14416,56736, + 13016,58136,11616,59536,11616,61712,11616,63744,13080,65216,14544,66688,16544,66688,33120,66688,35120,66688,36584,65216, + 38048,63744,38048,61712,38048,59536,36648,58136,35248,56736,33120,56736,30960,56736,29552,58136,28144,59536,28144,61712, + 28144,63744,29608,65216,31072,66688,33120,66688,18784,-8288,21760,-768,4880,40624,-256,40624,-256,45184,20528,45184, + 20528,40624,13296,40624,26016,9568,38720,40624,31968,40624,31968,45184,48912,45184,48912,40624,43856,40624,23168,-10208, + 21040,-15472,18448,-17408,15856,-19344,11136,-19344,9136,-19344,7032,-19000,4928,-18656,2800,-18016,2800,-9392,6800,-9392, + 7056,-12288,8264,-13536,9472,-14784,12032,-14784,14368,-14784,15792,-13488,17216,-12192,18784,-8288,30736,69616,39200,69616, + 24752,53632,19776,53632,30736,69616,17856,24816,17856,20352,17856,12192,20976,7920,24096,3648,30048,3648,36048,3648, + 39128,8456,42208,13264,42208,22608,42208,32000,39128,36760,36048,41520,30048,41520,24096,41520,20976,37232,17856,32944, + 17856,24816,10032,61632,2512,61632,2512,66128,17856,66128,17856,38128,20144,42368,23696,44392,27248,46416,32464,46416, + 40800,46416,46072,39824,51344,33232,51344,22608,51344,11984,46072,5376,40800,-1232,32464,-1232,27248,-1232,23696,784, + 20144,2800,17856,7056,17856,-13552,25248,-13552,25248,-18112,2512,-18112,2512,-13552,10032,-13552,10032,61632,18784,-8288, + 21760,-768,4880,40624,-256,40624,-256,45184,20528,45184,20528,40624,13296,40624,26016,9568,38720,40624,31968,40624, + 31968,45184,48912,45184,48912,40624,43856,40624,23168,-10208,21040,-15472,18448,-17408,15856,-19344,11136,-19344,9136,-19344, + 7032,-19000,4928,-18656,2800,-18016,2800,-9392,6800,-9392,7056,-12288,8264,-13536,9472,-14784,12032,-14784,14368,-14784, + 15792,-13488,17216,-12192,18784,-8288,16544,66688,18592,66688,20056,65216,21520,63744,21520,61712,21520,59536,20120,58136, + 18720,56736,16544,56736,14416,56736,13016,58136,11616,59536,11616,61712,11616,63744,13080,65216,14544,66688,16544,66688, + 33120,66688,35120,66688,36584,65216,38048,63744,38048,61712,38048,59536,36648,58136,35248,56736,33120,56736,30960,56736, + 29552,58136,28144,59536,28144,61712,28144,63744,29608,65216,31072,66688,33120,66688,18272,78160,43680,78160,43680,71872, + 18272,71872,18272,78160,17424,22992,40720,22992,29072,53168,17424,22992,-512,0,-512,4512,5056,4512,27664,63456, + 34800,63456,57456,4512,63712,4512,63712,0,40624,0,40624,4512,47680,4512,42368,18448,15680,18448,10368,4512, + 17344,4512,17344,0,-512,0,10080,64848,35488,64848,35488,58560,10080,58560,10080,64848,34640,14192,34640,23760, + 24560,23760,18736,23760,15888,21248,13040,18736,13040,13552,13040,8848,15936,6080,18832,3312,23760,3312,28640,3312, + 31640,6328,34640,9344,34640,14192,42464,28224,42464,4512,49424,4512,49424,0,34640,0,34640,4880,32048,1744, + 28648,256,25248,-1232,20704,-1232,13168,-1232,8752,2760,4336,6752,4336,13552,4336,20576,9392,24440,14448,28304, + 23680,28304,34640,28304,34640,31408,34640,36544,31512,39376,28384,42208,22736,42208,18064,42208,15304,40080,12544,37952, + 11856,33792,7824,33792,7824,42928,11904,44672,15752,45544,19600,46416,23248,46416,32640,46416,37552,41760,42464,37104, + 42464,28224,18704,80624,22784,80624,23328,77264,25536,75760,27744,74256,32000,74256,36256,74256,38464,75760,40672,77264, + 41216,80624,45296,80624,44880,74544,41520,71488,38160,68432,32000,68432,25840,68432,22480,71488,19120,74544,18704,80624, + 17424,22992,40720,22992,29072,53168,17424,22992,-512,0,-512,4512,5056,4512,27664,63456,34800,63456,57456,4512, + 63712,4512,63712,0,40624,0,40624,4512,47680,4512,42368,18448,15680,18448,10368,4512,17344,4512,17344,0, + -512,0,11536,67312,15616,67312,16160,63952,18368,62448,20576,60944,24832,60944,29088,60944,31296,62448,33504,63952, + 34048,67312,38128,67312,37712,61232,34352,58176,30992,55120,24832,55120,18672,55120,15312,58176,11952,61232,11536,67312, + 34640,14192,34640,23760,24560,23760,18736,23760,15888,21248,13040,18736,13040,13552,13040,8848,15936,6080,18832,3312, + 23760,3312,28640,3312,31640,6328,34640,9344,34640,14192,42464,28224,42464,4512,49424,4512,49424,0,34640,0, + 34640,4880,32048,1744,28648,256,25248,-1232,20704,-1232,13168,-1232,8752,2760,4336,6752,4336,13552,4336,20576, + 9392,24440,14448,28304,23680,28304,34640,28304,34640,31408,34640,36544,31512,39376,28384,42208,22736,42208,18064,42208, + 15304,40080,12544,37952,11856,33792,7824,33792,7824,42928,11904,44672,15752,45544,19600,46416,23248,46416,32640,46416, + 37552,41760,42464,37104,42464,28224,41104,0,45088,0,45056,-80,41344,-5312,41344,-7312,41344,-9264,42768,-10456, + 44192,-11648,46576,-11648,47728,-11648,48960,-11368,50192,-11088,51472,-10544,51424,-15936,49888,-16320,48464,-16512,47040,-16704, + 45680,-16704,40880,-16704,38248,-14816,35616,-12928,35616,-9472,35616,-7392,36888,-5160,38160,-2928,41104,0,17424,22992, + 40720,22992,29072,53168,17424,22992,-512,0,-512,4512,5056,4512,27664,63456,34800,63456,57456,4512,63712,4512, + 63712,0,40624,0,40624,4512,47680,4512,42368,18448,15680,18448,10368,4512,17344,4512,17344,0,-512,0, + 34960,0,38944,0,38912,-80,35200,-5312,35200,-7312,35200,-9264,36624,-10456,38048,-11648,40432,-11648,41584,-11648, + 42816,-11368,44048,-11088,45328,-10544,45280,-15936,43744,-16320,42320,-16512,40896,-16704,39536,-16704,34736,-16704,32104,-14816, + 29472,-12928,29472,-9472,29472,-7392,30744,-5160,32016,-2928,34960,0,34640,14192,34640,23760,24560,23760,18736,23760, + 15888,21248,13040,18736,13040,13552,13040,8848,15936,6080,18832,3312,23760,3312,28640,3312,31640,6328,34640,9344, + 34640,14192,42464,28224,42464,4512,49424,4512,49424,0,34640,0,34640,4880,32048,1744,28648,256,25248,-1232, + 20704,-1232,13168,-1232,8752,2760,4336,6752,4336,13552,4336,20576,9392,24440,14448,28304,23680,28304,34640,28304, + 34640,31408,34640,36544,31512,39376,28384,42208,22736,42208,18064,42208,15304,40080,12544,37952,11856,33792,7824,33792, + 7824,42928,11904,44672,15752,45544,19600,46416,23248,46416,32640,46416,37552,41760,42464,37104,42464,28224,61376,16784, + 58560,7904,51952,3336,45344,-1232,35232,-1232,29024,-1232,23712,896,18400,3024,14288,7136,9520,11904,7200,17960, + 4880,24016,4880,31664,4880,46448,13424,55528,21968,64608,35952,64608,41136,64608,47000,63248,52864,61888,59632,59120, + 59632,44496,54832,44496,53248,52480,48512,56264,43776,60048,35232,60048,25072,60048,19848,52848,14624,45648,14624,31664, + 14624,17728,19848,10520,25072,3312,35232,3312,42336,3312,46920,6696,51504,10080,53552,16784,61376,16784,37232,80208, + 45616,80208,34480,68992,29504,68992,37232,80208,44752,13552,43088,6336,38376,2552,33664,-1232,26176,-1232,16320,-1232, + 10328,5288,4336,11808,4336,22608,4336,33440,10328,39928,16320,46416,26176,46416,30480,46416,34728,45416,38976,44416, + 43264,42368,43264,30816,38720,30816,37824,36768,34832,39488,31840,42208,26272,42208,19936,42208,16704,37296,13472,32384, + 13472,22608,13472,12832,16680,7904,19888,2976,26272,2976,31328,2976,34344,5608,37360,8240,38464,13552,44752,13552, + 31760,69616,40224,69616,25776,53632,20800,53632,31760,69616,31840,80208,39328,80208,49136,68992,44208,68992,35584,75840, + 26960,68992,22032,68992,31840,80208,61376,16784,58560,7904,51952,3336,45344,-1232,35232,-1232,29024,-1232,23712,896, + 18400,3024,14288,7136,9520,11904,7200,17960,4880,24016,4880,31664,4880,46448,13424,55528,21968,64608,35952,64608, + 41136,64608,47000,63248,52864,61888,59632,59120,59632,44496,54832,44496,53248,52480,48512,56264,43776,60048,35232,60048, + 25072,60048,19848,52848,14624,45648,14624,31664,14624,17728,19848,10520,25072,3312,35232,3312,42336,3312,46920,6696, + 51504,10080,53552,16784,61376,16784,22288,69616,29424,69616,39408,53632,34480,53632,25856,64688,17232,53632,12304,53632, + 22288,69616,44752,13552,43088,6336,38376,2552,33664,-1232,26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608, + 4336,33440,10328,39928,16320,46416,26176,46416,30480,46416,34728,45416,38976,44416,43264,42368,43264,30816,38720,30816, + 37824,36768,34832,39488,31840,42208,26272,42208,19936,42208,16704,37296,13472,32384,13472,22608,13472,12832,16680,7904, + 19888,2976,26272,2976,31328,2976,34344,5608,37360,8240,38464,13552,44752,13552,35584,79664,37584,79664,39072,78176, + 40560,76688,40560,74736,40560,72608,39136,71184,37712,69760,35584,69760,33456,69760,32032,71184,30608,72608,30608,74736, + 30608,76688,32096,78176,33584,79664,35584,79664,61376,16784,58560,7904,51952,3336,45344,-1232,35232,-1232,29024,-1232, + 23712,896,18400,3024,14288,7136,9520,11904,7200,17960,4880,24016,4880,31664,4880,46448,13424,55528,21968,64608, + 35952,64608,41136,64608,47000,63248,52864,61888,59632,59120,59632,44496,54832,44496,53248,52480,48512,56264,43776,60048, + 35232,60048,25072,60048,19848,52848,14624,45648,14624,31664,14624,17728,19848,10520,25072,3312,35232,3312,42336,3312, + 46920,6696,51504,10080,53552,16784,61376,16784,25856,66688,27904,66688,29368,65216,30832,63744,30832,61712,30832,59536, + 29424,58136,28016,56736,25856,56736,23696,56736,22288,58136,20880,59536,20880,61712,20880,63744,22352,65216,23824,66688, + 25856,66688,44752,13552,43088,6336,38376,2552,33664,-1232,26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608, + 4336,33440,10328,39928,16320,46416,26176,46416,30480,46416,34728,45416,38976,44416,43264,42368,43264,30816,38720,30816, + 37824,36768,34832,39488,31840,42208,26272,42208,19936,42208,16704,37296,13472,32384,13472,22608,13472,12832,16680,7904, + 19888,2976,26272,2976,31328,2976,34344,5608,37360,8240,38464,13552,44752,13552,61376,16784,58560,7904,51952,3336, + 45344,-1232,35232,-1232,29024,-1232,23712,896,18400,3024,14288,7136,9520,11904,7200,17960,4880,24016,4880,31664, + 4880,46448,13424,55528,21968,64608,35952,64608,41136,64608,47000,63248,52864,61888,59632,59120,59632,44496,54832,44496, + 53248,52480,48512,56264,43776,60048,35232,60048,25072,60048,19848,52848,14624,45648,14624,31664,14624,17728,19848,10520, + 25072,3312,35232,3312,42336,3312,46920,6696,51504,10080,53552,16784,61376,16784,30816,68992,21008,80208,25936,80208, + 34560,73328,43184,80208,48112,80208,38304,68992,30816,68992,44752,13552,43088,6336,38376,2552,33664,-1232,26176,-1232, + 16320,-1232,10328,5288,4336,11808,4336,22608,4336,33440,10328,39928,16320,46416,26176,46416,30480,46416,34728,45416, + 38976,44416,43264,42368,43264,30816,38720,30816,37824,36768,34832,39488,31840,42208,26272,42208,19936,42208,16704,37296, + 13472,32384,13472,22608,13472,12832,16680,7904,19888,2976,26272,2976,31328,2976,34344,5608,37360,8240,38464,13552, + 44752,13552,22288,53632,12304,69616,17232,69616,25856,58560,34480,69616,39408,69616,29424,53632,22288,53632,21504,4512, + 29408,4512,41776,4512,48384,11560,54992,18608,54992,31792,54992,44960,48408,51936,41824,58912,29408,58912,21504,58912, + 21504,4512,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,30048,63456,46448,63456,55608,55080, + 64768,46704,64768,31792,64768,16832,55592,8416,46416,0,30048,0,4800,0,27744,68992,17936,80208,22864,80208, + 31488,73328,40112,80208,45040,80208,35232,68992,27744,68992,45680,4512,53168,4512,53168,0,37872,0,37872,7056, + 35568,2800,32024,784,28480,-1232,23248,-1232,14912,-1232,9624,5376,4336,11984,4336,22608,4336,33232,9608,39824, + 14880,46416,23248,46416,28480,46416,32024,44392,35568,42368,37872,38128,37872,61632,30480,61632,30480,66128,45680,66128, + 45680,4512,37872,20352,37872,24816,37872,32944,34744,37232,31616,41520,25664,41520,19632,41520,16552,36760,13472,32000, + 13472,22608,13472,13264,16552,8456,19632,3648,25664,3648,31616,3648,34744,7920,37872,12192,37872,20352,55696,66544, + 64144,66544,58032,50560,53056,50560,55696,66544,21840,4512,29840,4512,42208,4512,48832,11560,55456,18608,55456,31792, + 55456,44960,48848,51936,42240,58912,29840,58912,21840,58912,21840,35872,36128,35872,36128,30560,21840,30560,21840,4512, + 5232,0,5232,4512,13296,4512,13296,30560,4800,30560,4800,35872,13296,35872,13296,58912,5232,58912,5232,63456, + 30480,63456,46880,63456,56040,55080,65200,46704,65200,31792,65200,16832,56016,8416,46832,0,30480,0,5232,0, + 45680,4512,53168,4512,53168,0,37872,0,37872,7056,35568,2800,32024,784,28480,-1232,23248,-1232,14912,-1232, + 9624,5376,4336,11984,4336,22608,4336,33232,9608,39824,14880,46416,23248,46416,28480,46416,32024,44392,35568,42368, + 37872,38128,37872,52144,24016,52144,24016,56656,37872,56656,37872,61632,30480,61632,30480,66128,45680,66128,45680,56656, + 53168,56656,53168,52144,45680,52144,45680,4512,37872,20352,37872,24816,37872,32944,34744,37232,31616,41520,25664,41520, + 19632,41520,16552,36760,13472,32000,13472,22608,13472,13264,16552,8456,19632,3648,25664,3648,31616,3648,34744,7920, + 37872,12192,37872,20352,17248,78160,42656,78160,42656,71872,17248,71872,17248,78160,4800,0,4800,4512,12880,4512, + 12880,58912,4800,58912,4800,63456,55888,63456,55888,49344,50656,49344,50656,58224,21504,58224,21504,36976,42288,36976, + 42288,44928,47520,44928,47520,23840,42288,23840,42288,31792,21504,31792,21504,5232,51344,5232,51344,14112,56560,14112, + 56560,0,4800,0,13152,64848,38560,64848,38560,58560,13152,58560,13152,64848,47168,21760,13472,21760,13472,21424, + 13472,12288,16912,7632,20352,2976,27072,2976,32208,2976,35504,5672,38800,8368,40128,13680,46416,13680,44544,6240, + 39504,2504,34464,-1232,26272,-1232,16368,-1232,10352,5288,4336,11808,4336,22608,4336,33328,10240,39872,16144,46416, + 25760,46416,36000,46416,41480,40104,46960,33792,47168,21760,37952,26272,37696,34176,34616,38192,31536,42208,25760,42208, + 20352,42208,17256,38168,14160,34128,13472,26272,37952,26272,18272,80304,22272,80304,23024,77968,25304,76816,27584,75664, + 31488,75664,35392,75664,37672,76816,39952,77968,40704,80304,44704,80304,43856,75328,40456,72672,37056,70016,31488,70016, + 25872,70016,22496,72648,19120,75280,18272,80304,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456, + 55888,63456,55888,49344,50656,49344,50656,58224,21504,58224,21504,36976,42288,36976,42288,44928,47520,44928,47520,23840, + 42288,23840,42288,31792,21504,31792,21504,5232,51344,5232,51344,14112,56560,14112,56560,0,4800,0,12560,68336, + 16640,68336,17184,64976,19392,63472,21600,61968,25856,61968,30112,61968,32320,63472,34528,64976,35072,68336,39152,68336, + 38736,62256,35376,59200,32016,56144,25856,56144,19696,56144,16336,59200,12976,62256,12560,68336,47168,21760,13472,21760, + 13472,21424,13472,12288,16912,7632,20352,2976,27072,2976,32208,2976,35504,5672,38800,8368,40128,13680,46416,13680, + 44544,6240,39504,2504,34464,-1232,26272,-1232,16368,-1232,10352,5288,4336,11808,4336,22608,4336,33328,10240,39872, + 16144,46416,25760,46416,36000,46416,41480,40104,46960,33792,47168,21760,37952,26272,37696,34176,34616,38192,31536,42208, + 25760,42208,20352,42208,17256,38168,14160,34128,13472,26272,37952,26272,31488,79664,33488,79664,34976,78176,36464,76688, + 36464,74736,36464,72608,35040,71184,33616,69760,31488,69760,29360,69760,27936,71184,26512,72608,26512,74736,26512,76688, + 28000,78176,29488,79664,31488,79664,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,55888,63456, + 55888,49344,50656,49344,50656,58224,21504,58224,21504,36976,42288,36976,42288,44928,47520,44928,47520,23840,42288,23840, + 42288,31792,21504,31792,21504,5232,51344,5232,51344,14112,56560,14112,56560,0,4800,0,25856,66688,27904,66688, + 29368,65216,30832,63744,30832,61712,30832,59536,29424,58136,28016,56736,25856,56736,23696,56736,22288,58136,20880,59536, + 20880,61712,20880,63744,22352,65216,23824,66688,25856,66688,47168,21760,13472,21760,13472,21424,13472,12288,16912,7632, + 20352,2976,27072,2976,32208,2976,35504,5672,38800,8368,40128,13680,46416,13680,44544,6240,39504,2504,34464,-1232, + 26272,-1232,16368,-1232,10352,5288,4336,11808,4336,22608,4336,33328,10240,39872,16144,46416,25760,46416,36000,46416, + 41480,40104,46960,33792,47168,21760,37952,26272,37696,34176,34616,38192,31536,42208,25760,42208,20352,42208,17256,38168, + 14160,34128,13472,26272,37952,26272,46224,0,50208,0,50176,-80,46464,-5312,46464,-7312,46464,-9264,47888,-10456, + 49312,-11648,51696,-11648,52848,-11648,54080,-11368,55312,-11088,56592,-10544,56544,-15936,55008,-16320,53584,-16512,52160,-16704, + 50800,-16704,46000,-16704,43368,-14816,40736,-12928,40736,-9472,40736,-7392,42008,-5160,43280,-2928,46224,0,4800,0, + 4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,55888,63456,55888,49344,50656,49344,50656,58224,21504,58224, + 21504,36976,42288,36976,42288,44928,47520,44928,47520,23840,42288,23840,42288,31792,21504,31792,21504,5232,51344,5232, + 51344,14112,56560,14112,56560,0,4800,0,30864,0,34848,0,34816,-80,31104,-5312,31104,-7312,31104,-9264, + 32528,-10456,33952,-11648,36336,-11648,37488,-11648,38720,-11368,39952,-11088,41232,-10544,41184,-15936,39648,-16320,38224,-16512, + 36800,-16704,35440,-16704,30640,-16704,28008,-14816,25376,-12928,25376,-9472,25376,-7392,26648,-5160,27920,-2928,30864,0, + 47168,21760,13472,21760,13472,21424,13472,12288,16912,7632,20352,2976,27072,2976,32208,2976,35504,5672,38800,8368, + 40128,13680,46416,13680,44544,6240,39504,2504,34464,-1232,26272,-1232,16368,-1232,10352,5288,4336,11808,4336,22608, + 4336,33328,10240,39872,16144,46416,25760,46416,36000,46416,41480,40104,46960,33792,47168,21760,37952,26272,37696,34176, + 34616,38192,31536,42208,25760,42208,20352,42208,17256,38168,14160,34128,13472,26272,37952,26272,4800,0,4800,4512, + 12880,4512,12880,58912,4800,58912,4800,63456,55888,63456,55888,49344,50656,49344,50656,58224,21504,58224,21504,36976, + 42288,36976,42288,44928,47520,44928,47520,23840,42288,23840,42288,31792,21504,31792,21504,5232,51344,5232,51344,14112, + 56560,14112,56560,0,4800,0,30816,68992,21008,80208,25936,80208,34560,73328,43184,80208,48112,80208,38304,68992, + 30816,68992,47168,21760,13472,21760,13472,21424,13472,12288,16912,7632,20352,2976,27072,2976,32208,2976,35504,5672, + 38800,8368,40128,13680,46416,13680,44544,6240,39504,2504,34464,-1232,26272,-1232,16368,-1232,10352,5288,4336,11808, + 4336,22608,4336,33328,10240,39872,16144,46416,25760,46416,36000,46416,41480,40104,46960,33792,47168,21760,37952,26272, + 37696,34176,34616,38192,31536,42208,25760,42208,20352,42208,17256,38168,14160,34128,13472,26272,37952,26272,22288,53632, + 12304,69616,17232,69616,25856,58560,34480,69616,39408,69616,29424,53632,22288,53632,32864,80208,40352,80208,50160,68992, + 45232,68992,36608,75840,27984,68992,23056,68992,32864,80208,55712,44496,54224,52448,49512,56248,44800,60048,36384,60048, + 25408,60048,20016,52992,14624,45936,14624,31664,14624,17680,20192,10496,25760,3312,36544,3312,41360,3312,45736,4504, + 50112,5696,54064,8080,54064,24432,42112,24432,42112,28992,62688,28992,62688,5312,57040,2048,50512,408,43984,-1232, + 36544,-1232,22192,-1232,13536,7760,4880,16752,4880,31664,4880,46704,13552,55656,22224,64608,36896,64608,42336,64608, + 48136,63352,53936,62096,60480,59536,60480,44496,55712,44496,22288,69616,29424,69616,39408,53632,34480,53632,25856,64688, + 17232,53632,12304,53632,22288,69616,45680,40624,45680,976,45680,-8752,40328,-14048,34976,-19344,25072,-19344,20608,-19344, + 16528,-18536,12448,-17728,8720,-16112,8720,-6624,12800,-6624,13552,-11056,16400,-13096,19248,-15136,24560,-15136,31456,-15136, + 34664,-11248,37872,-7360,37872,976,37872,7056,35568,2800,32024,784,28480,-1232,23248,-1232,14912,-1232,9624,5376, + 4336,11984,4336,22608,4336,33232,9608,39824,14880,46416,23248,46416,28480,46416,32024,44392,35568,42368,37872,38128, + 37872,45184,53168,45184,53168,40624,45680,40624,37872,24816,37872,32944,34744,37232,31616,41520,25664,41520,19632,41520, + 16552,36760,13472,32000,13472,22608,13472,13264,16552,8456,19632,3648,25664,3648,31616,3648,34744,7920,37872,12192, + 37872,20352,37872,24816,55712,44496,54224,52448,49512,56248,44800,60048,36384,60048,25408,60048,20016,52992,14624,45936, + 14624,31664,14624,17680,20192,10496,25760,3312,36544,3312,41360,3312,45736,4504,50112,5696,54064,8080,54064,24432, + 42112,24432,42112,28992,62688,28992,62688,5312,57040,2048,50512,408,43984,-1232,36544,-1232,22192,-1232,13536,7760, + 4880,16752,4880,31664,4880,46704,13552,55656,22224,64608,36896,64608,42336,64608,48136,63352,53936,62096,60480,59536, + 60480,44496,55712,44496,21344,80304,25344,80304,26096,77968,28376,76816,30656,75664,34560,75664,38464,75664,40744,76816, + 43024,77968,43776,80304,47776,80304,46928,75328,43528,72672,40128,70016,34560,70016,28944,70016,25568,72648,22192,75280, + 21344,80304,45680,40624,45680,976,45680,-8752,40328,-14048,34976,-19344,25072,-19344,20608,-19344,16528,-18536,12448,-17728, + 8720,-16112,8720,-6624,12800,-6624,13552,-11056,16400,-13096,19248,-15136,24560,-15136,31456,-15136,34664,-11248,37872,-7360, + 37872,976,37872,7056,35568,2800,32024,784,28480,-1232,23248,-1232,14912,-1232,9624,5376,4336,11984,4336,22608, + 4336,33232,9608,39824,14880,46416,23248,46416,28480,46416,32024,44392,35568,42368,37872,38128,37872,45184,53168,45184, + 53168,40624,45680,40624,37872,24816,37872,32944,34744,37232,31616,41520,25664,41520,19632,41520,16552,36760,13472,32000, + 13472,22608,13472,13264,16552,8456,19632,3648,25664,3648,31616,3648,34744,7920,37872,12192,37872,20352,37872,24816, + 14608,68336,18688,68336,19232,64976,21440,63472,23648,61968,27904,61968,32160,61968,34368,63472,36576,64976,37120,68336, + 41200,68336,40784,62256,37424,59200,34064,56144,27904,56144,21744,56144,18384,59200,15024,62256,14608,68336,36608,79664, + 38608,79664,40096,78176,41584,76688,41584,74736,41584,72608,40160,71184,38736,69760,36608,69760,34480,69760,33056,71184, + 31632,72608,31632,74736,31632,76688,33120,78176,34608,79664,36608,79664,55712,44496,54224,52448,49512,56248,44800,60048, + 36384,60048,25408,60048,20016,52992,14624,45936,14624,31664,14624,17680,20192,10496,25760,3312,36544,3312,41360,3312, + 45736,4504,50112,5696,54064,8080,54064,24432,42112,24432,42112,28992,62688,28992,62688,5312,57040,2048,50512,408, + 43984,-1232,36544,-1232,22192,-1232,13536,7760,4880,16752,4880,31664,4880,46704,13552,55656,22224,64608,36896,64608, + 42336,64608,48136,63352,53936,62096,60480,59536,60480,44496,55712,44496,25856,66688,27904,66688,29368,65216,30832,63744, + 30832,61712,30832,59536,29424,58136,28016,56736,25856,56736,23696,56736,22288,58136,20880,59536,20880,61712,20880,63744, + 22352,65216,23824,66688,25856,66688,45680,40624,45680,976,45680,-8752,40328,-14048,34976,-19344,25072,-19344,20608,-19344, + 16528,-18536,12448,-17728,8720,-16112,8720,-6624,12800,-6624,13552,-11056,16400,-13096,19248,-15136,24560,-15136,31456,-15136, + 34664,-11248,37872,-7360,37872,976,37872,7056,35568,2800,32024,784,28480,-1232,23248,-1232,14912,-1232,9624,5376, + 4336,11984,4336,22608,4336,33232,9608,39824,14880,46416,23248,46416,28480,46416,32024,44392,35568,42368,37872,38128, + 37872,45184,53168,45184,53168,40624,45680,40624,37872,24816,37872,32944,34744,37232,31616,41520,25664,41520,19632,41520, + 16552,36760,13472,32000,13472,22608,13472,13264,16552,8456,19632,3648,25664,3648,31616,3648,34744,7920,37872,12192, + 37872,20352,37872,24816,30112,-17504,33344,-15728,34832,-13344,36320,-10960,36320,-7568,36320,-6624,43040,-6624,42736,-11008, + 40272,-14112,37808,-17248,32832,-19552,30112,-17504,55712,44496,54224,52448,49512,56248,44800,60048,36384,60048,25408,60048, + 20016,52992,14624,45936,14624,31664,14624,17680,20192,10496,25760,3312,36544,3312,41360,3312,45736,4504,50112,5696, + 54064,8080,54064,24432,42112,24432,42112,28992,62688,28992,62688,5312,57040,2048,50512,408,43984,-1232,36544,-1232, + 22192,-1232,13536,7760,4880,16752,4880,31664,4880,46704,13552,55656,22224,64608,36896,64608,42336,64608,48136,63352, + 53936,62096,60480,59536,60480,44496,55712,44496,35376,62160,32144,60384,30656,58000,29168,55616,29168,52224,29168,51280, + 22448,51280,22752,55664,25216,58768,27680,61920,32656,64208,35376,62160,45680,40624,45680,976,45680,-8752,40328,-14048, + 34976,-19344,25072,-19344,20608,-19344,16528,-18536,12448,-17728,8720,-16112,8720,-6624,12800,-6624,13552,-11056,16400,-13096, + 19248,-15136,24560,-15136,31456,-15136,34664,-11248,37872,-7360,37872,976,37872,7056,35568,2800,32024,784,28480,-1232, + 23248,-1232,14912,-1232,9624,5376,4336,11984,4336,22608,4336,33232,9608,39824,14880,46416,23248,46416,28480,46416, + 32024,44392,35568,42368,37872,38128,37872,45184,53168,45184,53168,40624,45680,40624,37872,24816,37872,32944,34744,37232, + 31616,41520,25664,41520,19632,41520,16552,36760,13472,32000,13472,22608,13472,13264,16552,8456,19632,3648,25664,3648, + 31616,3648,34744,7920,37872,12192,37872,20352,37872,24816,33888,80208,41376,80208,51184,68992,46256,68992,37632,75840, + 29008,68992,24080,68992,33888,80208,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456, + 29584,58912,21504,58912,21504,36976,54400,36976,54400,58912,46320,58912,46320,63456,71104,63456,71104,58912,63024,58912, + 63024,4512,71104,4512,71104,0,46320,0,46320,4512,54400,4512,54400,31792,21504,31792,21504,4512,29584,4512, + 29584,0,4800,0,7264,80208,14752,80208,24560,68992,19632,68992,11008,75840,2384,68992,-2544,68992,7264,80208, + 3568,0,3568,4512,10624,4512,10624,61632,3152,61632,3152,66128,18448,66128,18448,37152,20608,41728,24072,44072, + 27536,46416,32128,46416,39616,46416,43144,42120,46672,37824,46672,28736,46672,4512,53632,4512,53632,0,32048,0, + 32048,4512,38800,4512,38800,26272,38800,34560,36784,37592,34768,40624,29584,40624,24144,40624,21296,36672,18448,32720, + 18448,25168,18448,4512,25248,4512,25248,0,3568,0,21504,36976,54400,36976,54400,45344,21504,45344,21504,36976, + 4800,0,4800,4512,12880,4512,12880,45344,4800,45344,4800,50528,12880,50528,12880,58912,4800,58912,4800,63456, + 29584,63456,29584,58912,21504,58912,21504,50528,54400,50528,54400,58912,46320,58912,46320,63456,71104,63456,71104,58912, + 63024,58912,63024,50528,71104,50528,71104,45344,63024,45344,63024,4512,71104,4512,71104,0,46320,0,46320,4512, + 54400,4512,54400,31792,21504,31792,21504,4512,29584,4512,29584,0,4800,0,3568,0,3568,4512,10624,4512, + 10624,51424,3152,51424,3152,56608,10624,56608,10624,61632,3152,61632,3152,66128,18448,66128,18448,56608,31872,56608, + 31872,51424,18448,51424,18448,37152,20608,41728,24072,44072,27536,46416,32128,46416,39616,46416,43144,42120,46672,37824, + 46672,28736,46672,4512,53632,4512,53632,0,32048,0,32048,4512,38800,4512,38800,26272,38800,34560,36784,37592, + 34768,40624,29584,40624,24144,40624,21296,36672,18448,32720,18448,25168,18448,4512,25248,4512,25248,0,3568,0, + 16592,72400,14560,73584,13712,74144,12840,74440,11968,74736,11248,74736,9584,74736,8480,73520,7376,72304,7200,70352, + 3120,70400,3216,74640,5384,77152,7552,79664,11152,79664,12688,79664,14008,79280,15328,78896,17664,77584,19744,76480, + 20720,75920,21656,75624,22592,75328,23312,75328,25056,75328,26056,76496,27056,77664,27056,79664,31184,79664,31088,75200, + 28904,72776,26720,70352,22720,70352,19872,70352,16816,72272,16592,72400,21504,4512,29584,4512,29584,0,4800,0, + 4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,13392,58224, + 10976,60560,9872,61584,9168,61904,8464,62224,7664,62224,5872,62224,4856,60544,3840,58864,3616,55632,-464,55632, + -368,61376,1800,64496,3968,67616,7824,67616,9440,67616,10800,67024,12160,66432,13744,65024,16160,62688,17136,61712, + 17856,61368,18576,61024,19472,61024,21296,61024,22320,62728,23344,64432,23520,67616,27600,67616,27504,61888,25336,58760, + 23168,55632,19312,55632,17696,55632,16336,56224,14976,56816,13392,58224,18448,4512,25840,4512,25840,0,3152,0, + 3152,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,4512,4960,78160,30368,78160,30368,71872, + 4960,71872,4960,78160,21504,4512,29584,4512,29584,0,4800,0,4800,4512,12880,4512,12880,58912,4800,58912, + 4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,-2208,64848,23200,64848,23200,58560,-2208,58560,-2208,64848, + 18448,4512,25840,4512,25840,0,3152,0,3152,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184, + 18448,4512,3936,80304,7936,80304,8688,77968,10968,76816,13248,75664,17152,75664,21056,75664,23336,76816,25616,77968, + 26368,80304,30368,80304,29520,75328,26120,72672,22720,70016,17152,70016,11536,70016,8160,72648,4784,75280,3936,80304, + 21504,4512,29584,4512,29584,0,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456, + 29584,58912,21504,58912,21504,4512,272,68336,4352,68336,4896,64976,7104,63472,9312,61968,13568,61968,17824,61968, + 20032,63472,22240,64976,22784,68336,26864,68336,26448,62256,23088,59200,19728,56144,13568,56144,7408,56144,4048,59200, + 688,62256,272,68336,18448,4512,25840,4512,25840,0,3152,0,3152,4512,10624,4512,10624,40624,3152,40624, + 3152,45184,18448,45184,18448,4512,21504,4512,29584,4512,29584,0,4800,0,4800,4512,12880,4512,12880,58912, + 4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,17552,0,21536,0,21504,-80,17792,-5312, + 17792,-7312,17792,-9264,19216,-10456,20640,-11648,23024,-11648,24176,-11648,25408,-11368,26640,-11088,27920,-10544,27872,-15936, + 26336,-16320,24912,-16512,23488,-16704,22128,-16704,17328,-16704,14696,-14816,12064,-12928,12064,-9472,12064,-7392,13336,-5160, + 14608,-2928,17552,0,8464,59200,8464,61152,9888,62600,11312,64048,13296,64048,15264,64048,16688,62600,18112,61152, + 18112,59200,18112,57200,16704,55800,15296,54400,13296,54400,11312,54400,9888,55800,8464,57200,8464,59200,18448,4512, + 25840,4512,25840,0,3152,0,3152,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,4512, + 14480,0,18464,0,18432,-80,14720,-5312,14720,-7312,14720,-9264,16144,-10456,17568,-11648,19952,-11648,21104,-11648, + 22336,-11368,23568,-11088,24848,-10544,24800,-15936,23264,-16320,21840,-16512,20416,-16704,19056,-16704,14256,-16704,11624,-14816, + 8992,-12928,8992,-9472,8992,-7392,10264,-5160,11536,-2928,14480,0,21504,4512,29584,4512,29584,0,4800,0, + 4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,17152,79664, + 19152,79664,20640,78176,22128,76688,22128,74736,22128,72608,20704,71184,19280,69760,17152,69760,15024,69760,13600,71184, + 12176,72608,12176,74736,12176,76688,13664,78176,15152,79664,17152,79664,18448,4512,25840,4512,25840,0,3152,0, + 3152,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,4512,21504,4512,29584,4512,29584,0, + 4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,4512, + 27504,-15216,27504,-5232,32352,-5232,32480,-9440,34352,-11496,36224,-13552,39952,-13552,45024,-13552,47016,-10368,49008,-7184, + 49008,2080,49008,58912,39152,58912,39152,63456,65712,63456,65712,58912,57632,58912,57632,1744,57632,-8752,53424,-13432, + 49216,-18112,39872,-18112,36864,-18112,33736,-17384,30608,-16656,27504,-15216,8464,59200,8464,61152,9888,62600,11312,64048, + 13296,64048,15264,64048,16688,62600,18112,61152,18112,59200,18112,57200,16704,55800,15296,54400,13296,54400,11312,54400, + 9888,55800,8464,57200,8464,59200,18448,4512,25840,4512,25840,0,3152,0,3152,4512,10624,4512,10624,40624, + 3152,40624,3152,45184,18448,45184,18448,4512,33296,59200,33296,61152,34720,62600,36144,64048,38128,64048,40096,64048, + 41520,62600,42944,61152,42944,59200,42944,57200,41560,55800,40176,54400,38128,54400,36144,54400,34720,55800,33296,57200, + 33296,59200,35200,40624,27808,40624,27808,45184,43024,45184,43024,-4416,43024,-11392,38880,-15368,34736,-19344,27472,-19344, + 24400,-19344,21616,-18640,18832,-17936,16208,-16528,16208,-7232,20240,-7232,20544,-11312,22344,-13224,24144,-15136,27632,-15136, + 31504,-15136,33352,-12520,35200,-9904,35200,-4416,35200,40624,13408,80208,20896,80208,30704,68992,25776,68992,17152,75840, + 8528,68992,3600,68992,13408,80208,-7312,-15216,-7312,-5232,-2464,-5232,-2336,-9440,-464,-11496,1408,-13552,5136,-13552, + 10208,-13552,12200,-10368,14192,-7184,14192,2080,14192,58912,4336,58912,4336,63456,30896,63456,30896,58912,22816,58912, + 22816,1744,22816,-8752,18608,-13432,14400,-18112,5056,-18112,2048,-18112,-1080,-17384,-4208,-16656,-7312,-15216,7952,69616, + 15088,69616,25072,53632,20144,53632,11520,64688,2896,53632,-2032,53632,7952,69616,10624,40624,3232,40624,3232,45184, + 18448,45184,18448,-4416,18448,-11392,14304,-15368,10160,-19344,2896,-19344,-176,-19344,-2960,-18640,-5744,-17936,-8368,-16528, + -8368,-7232,-4336,-7232,-4032,-11312,-2232,-13224,-432,-15136,3056,-15136,6928,-15136,8776,-12520,10624,-9904,10624,-4416, + 10624,40624,29088,-16480,32320,-14704,33808,-12320,35296,-9936,35296,-6544,35296,-5600,42016,-5600,41712,-9984,39248,-13088, + 36784,-16224,31808,-18528,29088,-16480,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456, + 29584,58912,21504,58912,21504,34896,48832,58912,41952,58912,41952,63456,63024,63456,63024,58912,55888,58912,28640,34976, + 59120,4512,66336,4512,66336,0,51600,0,21504,30128,21504,4512,29584,4512,29584,0,4800,0,21920,-16480, + 25152,-14704,26640,-12320,28128,-9936,28128,-6544,28128,-5600,34848,-5600,34544,-9984,32080,-13088,29616,-16224,24640,-18528, + 21920,-16480,24912,0,2976,0,2976,4512,10032,4512,10032,61632,2512,61632,2512,66128,17856,66128,17856,23072, + 36896,40624,30384,40624,30384,45184,50832,45184,50832,40624,43088,40624,29664,28224,46832,4512,53344,4512,53344,0, + 31072,0,31072,4512,37520,4512,24016,23072,17856,17344,17856,4512,24912,4512,24912,0,24912,0,2976,0, + 2976,4512,10032,4512,10032,40496,2512,40496,2512,45056,17856,45056,17856,22992,36896,40496,30384,40496,30384,45056, + 50832,45056,50832,40496,43088,40496,29664,28128,46832,4512,53344,4512,53344,0,31072,0,31072,4512,37520,4512, + 24016,22992,17856,17248,17856,4512,24912,4512,24912,0,17776,81232,26160,81232,15024,70016,10048,70016,17776,81232, + 4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,5232, + 50496,5232,50496,15856,55712,15856,55712,0,4800,0,13680,81232,22064,81232,10928,70016,5952,70016,13680,81232, + 17856,4512,25248,4512,25248,0,2512,0,2512,4512,10032,4512,10032,61632,2512,61632,2512,66128,17856,66128, + 17856,4512,23968,-16480,27200,-14704,28688,-12320,30176,-9936,30176,-6544,30176,-5600,36896,-5600,36592,-9984,34128,-13088, + 31664,-16224,26688,-18528,23968,-16480,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456, + 29584,58912,21504,58912,21504,5232,50496,5232,50496,15856,55712,15856,55712,0,4800,0,4512,-15456,7744,-13680, + 9232,-11296,10720,-8912,10720,-5520,10720,-4576,17440,-4576,17136,-8960,14672,-12064,12208,-15200,7232,-17504,4512,-15456, + 17856,4512,25248,4512,25248,0,2512,0,2512,4512,10032,4512,10032,61632,2512,61632,2512,66128,17856,66128, + 17856,4512,39312,63472,47760,63472,41648,47488,36672,47488,39312,63472,4800,0,4800,4512,12880,4512,12880,58912, + 4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,5232,50496,5232,50496,15856,55712,15856,55712,0, + 4800,0,28048,66544,36496,66544,30384,50560,25408,50560,28048,66544,17856,4512,25248,4512,25248,0,2512,0, + 2512,4512,10032,4512,10032,61632,2512,61632,2512,66128,17856,66128,17856,4512,42896,36368,42896,38736,44528,40376, + 46160,42016,48592,42016,50928,42016,52584,40360,54240,38704,54240,36368,54240,33984,52584,32344,50928,30704,48592,30704, + 46160,30704,44528,32320,42896,33936,42896,36368,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456, + 29584,63456,29584,58912,21504,58912,21504,5232,50496,5232,50496,15856,55712,15856,55712,0,4800,0,24464,35344, + 24464,37712,26096,39352,27728,40992,30160,40992,32496,40992,34152,39336,35808,37680,35808,35344,35808,32960,34152,31320, + 32496,29680,30160,29680,27728,29680,26096,31296,24464,32912,24464,35344,17856,4512,25248,4512,25248,0,2512,0, + 2512,4512,10032,4512,10032,61632,2512,61632,2512,66128,17856,66128,17856,4512,5232,0,5232,4512,13296,4512, + 13296,24912,6624,20096,3648,24016,13296,30896,13296,58912,5232,58912,5232,63456,29968,63456,29968,58912,21840,58912, + 21840,36976,34896,46576,37872,42672,21840,30976,21840,5232,50912,5232,50912,15856,56144,15856,56144,0,5232,0, + 18192,4512,25664,4512,25664,0,2976,0,2976,4512,10368,4512,10368,28896,4512,24816,1920,28480,10368,34464, + 10368,61632,2976,61632,2976,66128,18192,66128,18192,39952,24432,44112,26992,40464,18192,34464,18192,4512,40304,81232, + 48688,81232,37552,70016,32576,70016,40304,81232,4256,0,4256,4512,12800,4512,12800,58912,4256,58912,4256,63456, + 20528,63456,58560,13392,58560,58912,50064,58912,50064,63456,72336,63456,72336,58912,63792,58912,63792,-1232,58656,-1232, + 18016,52240,18016,4512,26560,4512,26560,0,4256,0,30736,67568,39200,67568,24752,51584,19776,51584,30736,67568, + 3568,0,3568,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,37152,20608,41728,24072,44072, + 27536,46416,32128,46416,39616,46416,43144,42120,46672,37824,46672,28736,46672,4512,53632,4512,53632,0,32048,0, + 32048,4512,38800,4512,38800,26272,38800,34560,36760,37640,34720,40720,29584,40720,24144,40720,21296,36744,18448,32768, + 18448,25168,18448,4512,25248,4512,25248,0,3568,0,30112,-16480,33344,-14704,34832,-12320,36320,-9936,36320,-6544, + 36320,-5600,43040,-5600,42736,-9984,40272,-13088,37808,-16224,32832,-18528,30112,-16480,4256,0,4256,4512,12800,4512, + 12800,58912,4256,58912,4256,63456,20528,63456,58560,13392,58560,58912,50064,58912,50064,63456,72336,63456,72336,58912, + 63792,58912,63792,-1232,58656,-1232,18016,52240,18016,4512,26560,4512,26560,0,4256,0,21920,-16480,25152,-14704, + 26640,-12320,28128,-9936,28128,-6544,28128,-5600,34848,-5600,34544,-9984,32080,-13088,29616,-16224,24640,-18528,21920,-16480, + 3568,0,3568,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,37152,20608,41728,24072,44072, + 27536,46416,32128,46416,39616,46416,43144,42120,46672,37824,46672,28736,46672,4512,53632,4512,53632,0,32048,0, + 32048,4512,38800,4512,38800,26272,38800,34560,36760,37640,34720,40720,29584,40720,24144,40720,21296,36744,18448,32768, + 18448,25168,18448,4512,25248,4512,25248,0,3568,0,4256,0,4256,4512,12800,4512,12800,58912,4256,58912, + 4256,63456,20528,63456,58560,13392,58560,58912,50064,58912,50064,63456,72336,63456,72336,58912,63792,58912,63792,-1232, + 58656,-1232,18016,52240,18016,4512,26560,4512,26560,0,4256,0,32864,70016,23056,81232,27984,81232,36608,74352, + 45232,81232,50160,81232,40352,70016,32864,70016,3568,0,3568,4512,10624,4512,10624,40624,3152,40624,3152,45184, + 18448,45184,18448,37152,20608,41728,24072,44072,27536,46416,32128,46416,39616,46416,43144,42120,46672,37824,46672,28736, + 46672,4512,53632,4512,53632,0,32048,0,32048,4512,38800,4512,38800,26272,38800,34560,36760,37640,34720,40720, + 29584,40720,24144,40720,21296,36744,18448,32768,18448,25168,18448,4512,25248,4512,25248,0,3568,0,22288,53632, + 12304,69616,17232,69616,25856,58560,34480,69616,39408,69616,29424,53632,22288,53632,4784,46496,8064,49216,9528,52832, + 10992,56448,10992,61920,10992,64608,19232,64608,19200,57200,16544,52080,13888,46960,8096,43088,4784,46496,20976,0, + 20976,4512,28032,4512,28032,40624,20560,40624,20560,45184,35856,45184,35856,37152,38016,41728,41480,44072,44944,46416, + 49536,46416,57024,46416,60552,42120,64080,37824,64080,28736,64080,4512,71040,4512,71040,0,49456,0,49456,4512, + 56208,4512,56208,26272,56208,34560,54168,37640,52128,40720,46992,40720,41552,40720,38704,36744,35856,32768,35856,25168, + 35856,4512,42656,4512,42656,0,20976,0,4080,0,4080,4544,12192,4544,12192,58912,4720,58912,4720,63456, + 20832,63456,20832,54912,23968,59760,28944,62224,33920,64688,40496,64688,51248,64688,56312,58504,61376,52320,61376,39184, + 61376,1744,61376,-8752,57168,-13432,52960,-18112,43600,-18112,40592,-18112,37464,-17384,34336,-16656,31232,-15216,31232,-5232, + 36000,-5232,36000,-9440,37936,-11496,39872,-13552,43600,-13552,48576,-13552,50656,-10368,52656,-7264,52656,2080,52656,37440, + 52656,49856,49472,54488,46288,59120,38208,59120,29712,59120,25272,53656,20832,48192,20832,37696,20832,4544,28896,4544, + 28896,0,4080,0,3568,0,3568,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,37152, + 20608,41728,24072,44072,27536,46416,32128,46416,39520,46416,43136,42112,46672,37904,46672,28736,46672,-4416,46672,-11392, + 42528,-15368,38384,-19344,31104,-19344,28048,-19344,25264,-18640,22480,-17936,19840,-16528,19840,-7232,23888,-7232,24176,-11312, + 25984,-13224,27792,-15136,31280,-15136,35152,-15136,36976,-12496,38800,-9952,38800,-4416,38800,26272,38800,34560,36760,37640, + 34720,40720,29584,40720,24144,40720,21296,36744,18448,32768,18448,25168,18448,4512,25248,4512,25248,0,3568,0, + 23392,78160,48800,78160,48800,71872,23392,71872,23392,78160,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664, + 56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888,14624,45728,14624,31664,14624,17632,19936,10472, + 25248,3312,35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024,14288,7136,9520,11904,7200,17936,4880,23968, + 4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400,23800,62504,29152,64608,35696,64608,49520,64608, + 58016,55552,66512,46496,66512,31664,66512,24048,64176,17952,61840,11856,57072,7136,52912,2976,47560,872,42208,-1232, + 35696,-1232,13152,64848,38560,64848,38560,58560,13152,58560,13152,64848,26176,2976,32464,2976,35672,7952,38880,12928, + 38880,22608,38880,32304,35672,37256,32464,42208,26176,42208,19888,42208,16680,37256,13472,32304,13472,22608,13472,12928, + 16704,7952,19936,2976,26176,2976,26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608,4336,33408,10304,39912, + 16272,46416,26176,46416,36080,46416,42056,39912,48032,33408,48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232, + 22368,80304,26368,80304,27120,77968,29400,76816,31680,75664,35584,75664,39488,75664,41768,76816,44048,77968,44800,80304, + 48800,80304,47952,75328,44552,72672,41152,70016,35584,70016,29968,70016,26592,72648,23216,75280,22368,80304,35696,3312, + 46112,3312,51424,10472,56736,17632,56736,31664,56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888, + 14624,45728,14624,31664,14624,17632,19936,10472,25248,3312,35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024, + 14288,7136,9520,11904,7200,17936,4880,23968,4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400, + 23800,62504,29152,64608,35696,64608,49520,64608,58016,55552,66512,46496,66512,31664,66512,24048,64176,17952,61840,11856, + 57072,7136,52912,2976,47560,872,42208,-1232,35696,-1232,12560,68336,16640,68336,17184,64976,19392,63472,21600,61968, + 25856,61968,30112,61968,32320,63472,34528,64976,35072,68336,39152,68336,38736,62256,35376,59200,32016,56144,25856,56144, + 19696,56144,16336,59200,12976,62256,12560,68336,26176,2976,32464,2976,35672,7952,38880,12928,38880,22608,38880,32304, + 35672,37256,32464,42208,26176,42208,19888,42208,16680,37256,13472,32304,13472,22608,13472,12928,16704,7952,19936,2976, + 26176,2976,26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416, + 36080,46416,42056,39912,48032,33408,48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,45408,80208,53776,80208, + 42640,68992,37664,68992,45408,80208,31936,80208,40304,80208,29168,68992,24192,68992,31936,80208,35696,3312,46112,3312, + 51424,10472,56736,17632,56736,31664,56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888,14624,45728, + 14624,31664,14624,17632,19936,10472,25248,3312,35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024,14288,7136, + 9520,11904,7200,17936,4880,23968,4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400,23800,62504, + 29152,64608,35696,64608,49520,64608,58016,55552,66512,46496,66512,31664,66512,24048,64176,17952,61840,11856,57072,7136, + 52912,2976,47560,872,42208,-1232,35696,-1232,25536,69616,32752,69616,22384,53632,17536,53632,25536,69616,39552,69616, + 47120,69616,34928,53632,29984,53632,39552,69616,26176,2976,32464,2976,35672,7952,38880,12928,38880,22608,38880,32304, + 35672,37256,32464,42208,26176,42208,19888,42208,16680,37256,13472,32304,13472,22608,13472,12928,16704,7952,19936,2976, + 26176,2976,26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416, + 36080,46416,42056,39912,48032,33408,48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,48320,4512,48320,58912, + 40368,58912,27968,58912,21376,51936,14784,44960,14784,31872,14784,18656,21392,11584,28000,4512,40368,4512,48320,4512, + 92016,0,39776,0,23424,0,14240,8416,5056,16832,5056,31872,5056,46800,14216,55128,23376,63456,39776,63456, + 91296,63456,91296,49344,86064,49344,86064,58224,56912,58224,56912,36976,77824,36976,77824,44928,82960,44928,82960,23840, + 77824,23840,77824,31792,56912,31792,56912,5232,86784,5232,86784,14112,92016,14112,92016,0,26176,2976,32464,2976, + 35672,7952,38880,12928,38880,22608,38880,32304,35672,37256,32464,42208,26176,42208,19888,42208,16680,37256,13472,32304, + 13472,22608,13472,12928,16704,7952,19936,2976,26176,2976,81728,21760,48032,21760,48032,21424,48032,12288,51472,7632, + 54912,2976,61632,2976,66768,2976,70064,5672,73360,8368,74672,13680,80960,13680,79088,6240,74056,2504,69024,-1232, + 60864,-1232,55328,-1232,50936,848,46544,2928,43440,7056,40496,2976,36104,872,31712,-1232,26176,-1232,16320,-1232, + 10328,5288,4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416,31792,46416,36168,44312,40544,42208, + 43520,38128,46624,42208,50872,44312,55120,46416,60304,46416,70592,46416,76056,40104,81520,33792,81728,21760,72512,26272, + 72256,34176,69168,38192,66080,42208,60304,42208,54912,42208,51808,38168,48704,34128,48032,26272,72512,26272,35184,81232, + 43568,81232,32432,70016,27456,70016,35184,81232,41696,31488,44672,30688,46816,28752,48960,26816,50656,23328,59888,4512, + 67616,4512,67616,0,52656,0,42752,20192,39904,26048,37528,27768,35152,29488,30976,29488,21504,29488,21504,4512, + 30480,4512,30480,0,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,36976,63456,46240,63456, + 51280,59032,56320,54608,56320,46496,56320,39952,52640,36192,48960,32432,41696,31488,21504,34048,34048,34048,40464,34048, + 43520,37088,46576,40128,46576,46496,46576,52864,43520,55888,40464,58912,34048,58912,21504,58912,21504,34048,30736,67568, + 39200,67568,24752,51584,19776,51584,30736,67568,41600,45264,41600,33952,37104,33952,36896,37312,35232,38968,33568,40624, + 30384,40624,24608,40624,21528,36632,18448,32640,18448,25168,18448,4512,27504,4512,27504,0,3568,0,3568,4512, + 10624,4512,10624,40720,3152,40720,3152,45184,18448,45184,18448,37152,20736,41856,24352,44136,27968,46416,33152,46416, + 35056,46416,37160,46112,39264,45808,41600,45264,30112,-16480,33344,-14704,34832,-12320,36320,-9936,36320,-6544,36320,-5600, + 43040,-5600,42736,-9984,40272,-13088,37808,-16224,32832,-18528,30112,-16480,41696,31488,44672,30688,46816,28752,48960,26816, + 50656,23328,59888,4512,67616,4512,67616,0,52656,0,42752,20192,39904,26048,37528,27768,35152,29488,30976,29488, + 21504,29488,21504,4512,30480,4512,30480,0,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456, + 36976,63456,46240,63456,51280,59032,56320,54608,56320,46496,56320,39952,52640,36192,48960,32432,41696,31488,21504,34048, + 34048,34048,40464,34048,43520,37088,46576,40128,46576,46496,46576,52864,43520,55888,40464,58912,34048,58912,21504,58912, + 21504,34048,4512,-16480,7744,-14704,9232,-12320,10720,-9936,10720,-6544,10720,-5600,17440,-5600,17136,-9984,14672,-13088, + 12208,-16224,7232,-18528,4512,-16480,41600,45264,41600,33952,37104,33952,36896,37312,35232,38968,33568,40624,30384,40624, + 24608,40624,21528,36632,18448,32640,18448,25168,18448,4512,27504,4512,27504,0,3568,0,3568,4512,10624,4512, + 10624,40720,3152,40720,3152,45184,18448,45184,18448,37152,20736,41856,24352,44136,27968,46416,33152,46416,35056,46416, + 37160,46112,39264,45808,41600,45264,41696,31488,44672,30688,46816,28752,48960,26816,50656,23328,59888,4512,67616,4512, + 67616,0,52656,0,42752,20192,39904,26048,37528,27768,35152,29488,30976,29488,21504,29488,21504,4512,30480,4512, + 30480,0,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,36976,63456,46240,63456,51280,59032, + 56320,54608,56320,46496,56320,39952,52640,36192,48960,32432,41696,31488,21504,34048,34048,34048,40464,34048,43520,37088, + 46576,40128,46576,46496,46576,52864,43520,55888,40464,58912,34048,58912,21504,58912,21504,34048,27744,68992,17936,80208, + 22864,80208,31488,73328,40112,80208,45040,80208,35232,68992,27744,68992,41600,45264,41600,33952,37104,33952,36896,37312, + 35232,38968,33568,40624,30384,40624,24608,40624,21528,36632,18448,32640,18448,25168,18448,4512,27504,4512,27504,0, + 3568,0,3568,4512,10624,4512,10624,40720,3152,40720,3152,45184,18448,45184,18448,37152,20736,41856,24352,44136, + 27968,46416,33152,46416,35056,46416,37160,46112,39264,45808,41600,45264,20240,53632,10256,69616,15184,69616,23808,58560, + 32432,69616,37360,69616,27376,53632,20240,53632,35184,81232,43568,81232,32432,70016,27456,70016,35184,81232,8080,3056, + 8080,17504,12960,17472,13168,10240,17144,6776,21120,3312,29248,3312,36800,3312,40776,6312,44752,9312,44752,15040, + 44752,19632,42352,22096,39952,24560,32208,26896,23840,29408,14752,32176,11032,36296,7312,40416,7312,47600,7312,55680, + 13048,60144,18784,64608,29152,64608,33568,64608,38840,63648,44112,62688,50064,60864,50064,47344,45264,47344,44544,54064, + 40784,57056,37024,60048,29328,60048,22608,60048,19104,57312,15600,54576,15600,49344,15600,44800,18232,42208,20864,39616, + 29408,37056,37280,34720,45904,32128,49576,28112,53248,24096,53248,17344,53248,8112,47344,3440,41440,-1232,29744,-1232, + 24528,-1232,19104,-168,13680,896,8080,3056,30736,67568,39200,67568,24752,51584,19776,51584,30736,67568,4880,2512, + 4880,13040,9392,13040,9568,7984,12560,5480,15552,2976,21424,2976,26688,2976,29448,4952,32208,6928,32208,10704, + 32208,13680,30192,15512,28176,17344,21680,19424,16016,21328,10208,23200,7592,26008,4976,28816,4976,33152,4976,39360, + 9520,42888,14064,46416,22096,46416,25664,46416,29616,45480,33568,44544,37776,42752,37776,32896,33280,32896,33104,37280, + 30216,39744,27328,42208,22352,42208,17424,42208,14896,40464,12368,38720,12368,35232,12368,32384,14280,30664,16192,28944, + 21936,27152,28128,25248,34560,23248,37384,20248,40208,17248,40208,12544,40208,6128,35296,2448,30384,-1232,21760,-1232, + 17376,-1232,13216,-296,9056,640,4880,2512,25696,80208,33184,80208,42992,68992,38064,68992,29440,75840,20816,68992, + 15888,68992,25696,80208,8080,3056,8080,17504,12960,17472,13168,10240,17144,6776,21120,3312,29248,3312,36800,3312, + 40776,6312,44752,9312,44752,15040,44752,19632,42352,22096,39952,24560,32208,26896,23840,29408,14752,32176,11032,36296, + 7312,40416,7312,47600,7312,55680,13048,60144,18784,64608,29152,64608,33568,64608,38840,63648,44112,62688,50064,60864, + 50064,47344,45264,47344,44544,54064,40784,57056,37024,60048,29328,60048,22608,60048,19104,57312,15600,54576,15600,49344, + 15600,44800,18232,42208,20864,39616,29408,37056,37280,34720,45904,32128,49576,28112,53248,24096,53248,17344,53248,8112, + 47344,3440,41440,-1232,29744,-1232,24528,-1232,19104,-168,13680,896,8080,3056,19216,69616,26352,69616,36336,53632, + 31408,53632,22784,64688,14160,53632,9232,53632,19216,69616,4880,2512,4880,13040,9392,13040,9568,7984,12560,5480, + 15552,2976,21424,2976,26688,2976,29448,4952,32208,6928,32208,10704,32208,13680,30192,15512,28176,17344,21680,19424, + 16016,21328,10208,23200,7592,26008,4976,28816,4976,33152,4976,39360,9520,42888,14064,46416,22096,46416,25664,46416, + 29616,45480,33568,44544,37776,42752,37776,32896,33280,32896,33104,37280,30216,39744,27328,42208,22352,42208,17424,42208, + 14896,40464,12368,38720,12368,35232,12368,32384,14280,30664,16192,28944,21936,27152,28128,25248,34560,23248,37384,20248, + 40208,17248,40208,12544,40208,6128,35296,2448,30384,-1232,21760,-1232,17376,-1232,13216,-296,9056,640,4880,2512, + 8080,3056,8080,17504,12960,17472,13168,10240,17144,6776,21120,3312,29248,3312,36800,3312,40776,6312,44752,9312, + 44752,15040,44752,19632,42352,22096,39952,24560,32208,26896,23840,29408,14752,32176,11032,36296,7312,40416,7312,47600, + 7312,55680,13048,60144,18784,64608,29152,64608,33568,64608,38840,63648,44112,62688,50064,60864,50064,47344,45264,47344, + 44544,54064,40784,57056,37024,60048,29328,60048,22608,60048,19104,57312,15600,54576,15600,49344,15600,44800,18232,42208, + 20864,39616,29408,37056,37280,34720,45904,32128,49576,28112,53248,24096,53248,17344,53248,8112,47344,3440,41440,-1232, + 29744,-1232,24528,-1232,19104,-168,13680,896,8080,3056,32752,0,35472,-2720,36816,-5104,38160,-7488,38160,-9568, + 38160,-13008,35480,-14896,32800,-16784,28032,-16784,26256,-16784,24384,-16528,22512,-16272,20560,-15760,20560,-10208,22304,-10928, + 23984,-11288,25664,-11648,27152,-11648,29568,-11648,30968,-10520,32368,-9392,32368,-7488,32368,-6288,31440,-4416,30512,-2544, + 28640,0,32752,0,4880,2512,4880,13040,9392,13040,9568,7984,12560,5480,15552,2976,21424,2976,26688,2976, + 29448,4952,32208,6928,32208,10704,32208,13680,30192,15512,28176,17344,21680,19424,16016,21328,10208,23200,7592,26008, + 4976,28816,4976,33152,4976,39360,9520,42888,14064,46416,22096,46416,25664,46416,29616,45480,33568,44544,37776,42752, + 37776,32896,33280,32896,33104,37280,30216,39744,27328,42208,22352,42208,17424,42208,14896,40464,12368,38720,12368,35232, + 12368,32384,14280,30664,16192,28944,21936,27152,28128,25248,34560,23248,37384,20248,40208,17248,40208,12544,40208,6128, + 35296,2448,30384,-1232,21760,-1232,17376,-1232,13216,-296,9056,640,4880,2512,25584,0,28304,-2720,29648,-5104, + 30992,-7488,30992,-9568,30992,-13008,28312,-14896,25632,-16784,20864,-16784,19088,-16784,17216,-16528,15344,-16272,13392,-15760, + 13392,-10208,15136,-10928,16816,-11288,18496,-11648,19984,-11648,22400,-11648,23800,-10520,25200,-9392,25200,-7488,25200,-6288, + 24272,-4416,23344,-2544,21472,0,25584,0,8080,3056,8080,17504,12960,17472,13168,10240,17144,6776,21120,3312, + 29248,3312,36800,3312,40776,6312,44752,9312,44752,15040,44752,19632,42352,22096,39952,24560,32208,26896,23840,29408, + 14752,32176,11032,36296,7312,40416,7312,47600,7312,55680,13048,60144,18784,64608,29152,64608,33568,64608,38840,63648, + 44112,62688,50064,60864,50064,47344,45264,47344,44544,54064,40784,57056,37024,60048,29328,60048,22608,60048,19104,57312, + 15600,54576,15600,49344,15600,44800,18232,42208,20864,39616,29408,37056,37280,34720,45904,32128,49576,28112,53248,24096, + 53248,17344,53248,8112,47344,3440,41440,-1232,29744,-1232,24528,-1232,19104,-168,13680,896,8080,3056,25696,68992, + 15888,80208,20816,80208,29440,73328,38064,80208,42992,80208,33184,68992,25696,68992,4880,2512,4880,13040,9392,13040, + 9568,7984,12560,5480,15552,2976,21424,2976,26688,2976,29448,4952,32208,6928,32208,10704,32208,13680,30192,15512, + 28176,17344,21680,19424,16016,21328,10208,23200,7592,26008,4976,28816,4976,33152,4976,39360,9520,42888,14064,46416, + 22096,46416,25664,46416,29616,45480,33568,44544,37776,42752,37776,32896,33280,32896,33104,37280,30216,39744,27328,42208, + 22352,42208,17424,42208,14896,40464,12368,38720,12368,35232,12368,32384,14280,30664,16192,28944,21936,27152,28128,25248, + 34560,23248,37384,20248,40208,17248,40208,12544,40208,6128,35296,2448,30384,-1232,21760,-1232,17376,-1232,13216,-296, + 9056,640,4880,2512,19216,53632,9232,69616,14160,69616,22784,58560,31408,69616,36336,69616,26352,53632,19216,53632, + 30704,0,33424,-2720,34768,-5104,36112,-7488,36112,-9568,36112,-13008,33432,-14896,30752,-16784,25984,-16784,24208,-16784, + 22336,-16528,20464,-16272,18512,-15760,18512,-10208,20256,-10928,21936,-11288,23616,-11648,25104,-11648,27520,-11648,28920,-10520, + 30320,-9392,30320,-7488,30320,-6288,29392,-4416,28464,-2544,26592,0,30704,0,16624,0,16624,4512,24736,4512, + 24736,58400,6080,58400,6080,48496,848,48496,848,63456,57200,63456,57200,48496,51984,48496,51984,58400,33328,58400, + 33328,4512,41440,4512,41440,0,16624,0,23536,0,26256,-2720,27600,-5104,28944,-7488,28944,-9568,28944,-13008, + 26264,-14896,23584,-16784,18816,-16784,17040,-16784,15168,-16528,13296,-16272,11344,-15760,11344,-10208,13088,-10928,14768,-11288, + 16448,-11648,17936,-11648,20352,-11648,21752,-10520,23152,-9392,23152,-7488,23152,-6288,22224,-4416,21296,-2544,19424,0, + 23536,0,9392,40624,2512,40624,2512,45184,9392,45184,9392,59200,17248,59200,17248,45184,31968,45184,31968,40624, + 17248,40624,17248,11936,17248,6208,18360,4592,19472,2976,22448,2976,25504,2976,26904,4784,28304,6592,28384,10624, + 34304,10624,33952,4464,30936,1616,27920,-1232,21760,-1232,15008,-1232,12200,1768,9392,4768,9392,11936,9392,40624, + 16624,0,16624,4512,24736,4512,24736,58400,6080,58400,6080,48496,848,48496,848,63456,57200,63456,57200,48496, + 51984,48496,51984,58400,33328,58400,33328,4512,41440,4512,41440,0,16624,0,24672,68992,14864,80208,19792,80208, + 28416,73328,37040,80208,41968,80208,32160,68992,24672,68992,9392,40624,2512,40624,2512,45184,9392,45184,9392,59200, + 17248,59200,17248,45184,31968,45184,31968,40624,17248,40624,17248,11936,17248,6208,18360,4592,19472,2976,22448,2976, + 25504,2976,26904,4784,28304,6592,28384,10624,34304,10624,33952,4464,30936,1616,27920,-1232,21760,-1232,15008,-1232, + 12200,1768,9392,4768,9392,11936,9392,40624,24976,68592,33424,68592,27312,52608,22336,52608,24976,68592,16624,0, + 16624,4512,24736,4512,24736,30560,10448,30560,10448,35872,24736,35872,24736,58400,6080,58400,6080,48496,848,48496, + 848,63456,57200,63456,57200,48496,51984,48496,51984,58400,33328,58400,33328,35872,47600,35872,47600,30560,33328,30560, + 33328,4512,41440,4512,41440,0,16624,0,9392,11936,9392,26176,2512,26176,2512,30720,9392,30720,9392,40624, + 2512,40624,2512,45184,9392,45184,9392,59200,17248,59200,17248,45184,31968,45184,31968,40624,17248,40624,17248,30720, + 31968,30720,31968,26176,17248,26176,17248,11936,17248,6208,18360,4592,19472,2976,22448,2976,25504,2976,26904,4784, + 28304,6592,28384,10624,34304,10624,33952,4464,30936,1616,27920,-1232,21760,-1232,15008,-1232,12200,1768,9392,4768, + 9392,11936,38096,72400,36064,73584,35216,74144,34344,74440,33472,74736,32752,74736,31088,74736,29984,73520,28880,72304, + 28704,70352,24624,70400,24720,74640,26888,77152,29056,79664,32656,79664,34192,79664,35512,79280,36832,78896,39168,77584, + 41248,76480,42224,75920,43160,75624,44096,75328,44816,75328,46560,75328,47560,76496,48560,77664,48560,79664,52688,79664, + 52592,75200,50408,72776,48224,70352,44224,70352,41376,70352,38320,72272,38096,72400,12192,58912,4080,58912,4080,63456, + 28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336,52168,9136, + 56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248,61376,10752, + 55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,24656,58224,22240,60560, + 21136,61584,20432,61904,19728,62224,18928,62224,17136,62224,16120,60544,15104,58864,14880,55632,10800,55632,10896,61376, + 13064,64496,15232,67616,19088,67616,20704,67616,22064,67024,23424,66432,25008,65024,27424,62688,28400,61712,29120,61368, + 29840,61024,30736,61024,32560,61024,33584,62728,34608,64432,34784,67616,38864,67616,38768,61888,36600,58760,34432,55632, + 30576,55632,28960,55632,27600,56224,26240,56816,24656,58224,30816,45184,45440,45184,45440,4512,52832,4512,52832,0, + 37616,0,37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232,12944,3040,9392,7312,9392,16448, + 9392,40624,2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568,21296,4512,26480,4512,31920,4512, + 34768,8504,37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,24416,78160,49824,78160,49824,71872,24416,71872, + 24416,78160,12192,58912,4080,58912,4080,63456,28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136, + 28736,4336,38464,4336,48192,4336,52168,9136,56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456, + 69440,58912,61376,58912,61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832, + 12192,25248,12192,58912,14176,64848,39584,64848,39584,58560,14176,58560,14176,64848,30816,45184,45440,45184,45440,4512, + 52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232,12944,3040, + 9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568,21296,4512, + 26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,25440,80304,29440,80304, + 30192,77968,32472,76816,34752,75664,38656,75664,42560,75664,44840,76816,47120,77968,47872,80304,51872,80304,51024,75328, + 47624,72672,44224,70016,38656,70016,33040,70016,29664,72648,26288,75280,25440,80304,12192,58912,4080,58912,4080,63456, + 28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336,52168,9136, + 56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248,61376,10752, + 55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,11536,68336,15616,68336, + 16160,64976,18368,63472,20576,61968,24832,61968,29088,61968,31296,63472,33504,64976,34048,68336,38128,68336,37712,62256, + 34352,59200,30992,56144,24832,56144,18672,56144,15312,59200,11952,62256,11536,68336,30816,45184,45440,45184,45440,4512, + 52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232,12944,3040, + 9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568,21296,4512, + 26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,12192,58912,4080,58912, + 4080,63456,28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336, + 52168,9136,56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248, + 61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,48768,80128, + 48768,75248,45384,71848,42000,68448,37120,68448,32240,68448,28856,71848,25472,75248,25472,80128,25472,85024,28856,88400, + 32240,91776,37120,91776,42000,91776,45384,88400,48768,85024,48768,80128,43584,80128,43584,82800,41712,84672,39840,86544, + 37120,86544,34352,86544,32504,84696,30656,82848,30656,80128,30656,77360,32504,75512,34352,73664,37120,73664,39840,73664, + 41712,75536,43584,77408,43584,80128,30816,45184,45440,45184,45440,4512,52832,4512,52832,0,37616,0,37616,7984, + 35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624,2336,40624, + 2336,45184,17248,45184,17248,18864,17248,10624,19272,7568,21296,4512,26480,4512,31920,4512,34768,8504,37616,12496, + 37616,20096,37616,40624,30816,40624,30816,45184,37504,63744,37504,58864,34120,55464,30736,52064,25856,52064,20976,52064, + 17592,55464,14208,58864,14208,63744,14208,68640,17592,72016,20976,75392,25856,75392,30736,75392,34120,72016,37504,68640, + 37504,63744,32320,63744,32320,66416,30448,68288,28576,70160,25856,70160,23088,70160,21240,68312,19392,66464,19392,63744, + 19392,60976,21240,59128,23088,57280,25856,57280,28576,57280,30448,59152,32320,61024,32320,63744,48480,80208,56848,80208, + 45712,68992,40736,68992,48480,80208,35008,80208,43376,80208,32240,68992,27264,68992,35008,80208,12192,58912,4080,58912, + 4080,63456,28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336, + 52168,9136,56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248, + 61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,23488,69616, + 30704,69616,20336,53632,15488,53632,23488,69616,37504,69616,45072,69616,32880,53632,27936,53632,37504,69616,30816,45184, + 45440,45184,45440,4512,52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232, + 16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864,17248,10624, + 19272,7568,21296,4512,26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624,30816,45184, + 12192,58912,4080,58912,4080,63456,28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136,28736,4336, + 38464,4336,48192,4336,52168,9136,56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456,69440,58912, + 61376,58912,61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248, + 12192,58912,34960,-1024,38944,-1024,38912,-1104,35200,-6336,35200,-8336,35200,-10288,36624,-11480,38048,-12672,40432,-12672, + 41584,-12672,42816,-12392,44048,-12112,45328,-11568,45280,-16960,43744,-17344,42320,-17536,40896,-17728,39536,-17728,34736,-17728, + 32104,-15840,29472,-13952,29472,-10496,29472,-8416,30744,-6184,32016,-3952,34960,-1024,30816,45184,45440,45184,45440,4512, + 52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232,12944,3040, + 9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568,21296,4512, + 26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,46224,0,50208,0, + 50176,-80,46464,-5312,46464,-7312,46464,-9264,47888,-10456,49312,-11648,51696,-11648,52848,-11648,54080,-11368,55312,-11088, + 56592,-10544,56544,-15936,55008,-16320,53584,-16512,52160,-16704,50800,-16704,46000,-16704,43368,-14816,40736,-12928,40736,-9472, + 40736,-7392,42008,-5160,43280,-2928,46224,0,41056,81232,48544,81232,58352,70016,53424,70016,44800,76864,36176,70016, + 31248,70016,41056,81232,66336,0,59376,0,44832,51600,30304,0,23328,0,6720,58912,432,58912,432,63456, + 23584,63456,23584,58912,15680,58912,28896,12032,43344,63456,50240,63456,64944,11472,78240,58912,70928,58912,70928,63456, + 89200,63456,89200,58912,82960,58912,66336,0,33552,69616,40688,69616,50672,53632,45744,53632,37120,64688,28496,53632, + 23568,53632,33552,69616,41776,45184,53344,9904,63536,40624,56992,40624,56992,45184,73360,45184,73360,40624,68336,40624, + 54912,0,48400,0,37280,33792,26096,0,19840,0,6464,40624,1408,40624,1408,45184,21840,45184,21840,40624, + 14528,40624,24656,9904,36288,45184,41776,45184,24672,81232,32160,81232,41968,70016,37040,70016,28416,76864,19792,70016, + 14864,70016,24672,81232,16448,0,16448,4512,24560,4512,24560,27328,4976,58912,-976,58912,-976,63456,22608,63456, + 22608,58912,15216,58912,31072,33232,46928,58912,39776,58912,39776,63456,58224,63456,58224,58912,52240,58912,33152,28128, + 33152,4512,41264,4512,41264,0,16448,0,20240,69616,27376,69616,37360,53632,32432,53632,23808,64688,15184,53632, + 10256,53632,20240,69616,18784,-8288,21760,-768,4880,40624,-256,40624,-256,45184,20528,45184,20528,40624,13296,40624, + 26016,9568,38720,40624,31968,40624,31968,45184,48912,45184,48912,40624,43856,40624,23168,-10208,21040,-15472,18448,-17408, + 15856,-19344,11136,-19344,9136,-19344,7032,-19000,4928,-18656,2800,-18016,2800,-9392,6800,-9392,7056,-12288,8264,-13536, + 9472,-14784,12032,-14784,14368,-14784,15792,-13488,17216,-12192,18784,-8288,16448,0,16448,4512,24560,4512,24560,27328, + 4976,58912,-976,58912,-976,63456,22608,63456,22608,58912,15216,58912,31072,33232,46928,58912,39776,58912,39776,63456, + 58224,63456,58224,58912,52240,58912,33152,28128,33152,4512,41264,4512,41264,0,16448,0,20128,79584,22176,79584, + 23640,78096,25104,76608,25104,74640,25104,72528,23680,71104,22256,69680,20128,69680,18048,69680,16624,71104,15200,72528, + 15200,74640,15200,76608,16664,78096,18128,79584,20128,79584,36704,79584,38704,79584,40168,78096,41632,76608,41632,74640, + 41632,72528,40208,71104,38784,69680,36704,69680,34576,69680,33152,71104,31728,72528,31728,74640,31728,76608,33192,78096, + 34656,79584,36704,79584,35184,81232,43568,81232,32432,70016,27456,70016,35184,81232,3904,0,3904,3056,43440,58224, + 10624,58224,10624,48752,5392,48752,5392,63456,55552,63456,55552,60400,16016,5232,51888,5232,51888,14112,57072,14112, + 57072,0,3904,0,30736,67568,39200,67568,24752,51584,19776,51584,30736,67568,3488,0,3488,3648,31792,40624, + 9392,40624,9392,32816,4880,32816,4880,45184,41856,45184,41856,41520,13552,4512,38128,4512,38128,12704,42672,12704, + 42672,0,3488,0,30464,80688,32464,80688,33952,79200,35440,77712,35440,75760,35440,73632,34016,72208,32592,70784, + 30464,70784,28336,70784,26912,72208,25488,73632,25488,75760,25488,77712,26976,79200,28464,80688,30464,80688,3904,0, + 3904,3056,43440,58224,10624,58224,10624,48752,5392,48752,5392,63456,55552,63456,55552,60400,16016,5232,51888,5232, + 51888,14112,57072,14112,57072,0,3904,0,23808,63616,25856,63616,27320,62144,28784,60672,28784,58640,28784,56464, + 27376,55064,25968,53664,23808,53664,21648,53664,20240,55064,18832,56464,18832,58640,18832,60672,20304,62144,21776,63616, + 23808,63616,3488,0,3488,3648,31792,40624,9392,40624,9392,32816,4880,32816,4880,45184,41856,45184,41856,41520, + 13552,4512,38128,4512,38128,12704,42672,12704,42672,0,3488,0,3904,0,3904,3056,43440,58224,10624,58224, + 10624,48752,5392,48752,5392,63456,55552,63456,55552,60400,16016,5232,51888,5232,51888,14112,57072,14112,57072,0, + 3904,0,26720,68992,16912,80208,21840,80208,30464,73328,39088,80208,44016,80208,34208,68992,26720,68992,3488,0, + 3488,3648,31792,40624,9392,40624,9392,32816,4880,32816,4880,45184,41856,45184,41856,41520,13552,4512,38128,4512, + 38128,12704,42672,12704,42672,0,3488,0,19216,53632,9232,69616,14160,69616,22784,58560,31408,69616,36336,69616, + 26352,53632,19216,53632,18448,4512,28480,4512,28480,0,3152,0,3152,4512,10624,4512,10624,40624,3152,40624, + 3152,45184,10624,45184,10624,50832,10624,58400,14552,62264,18480,66128,26096,66128,28944,66128,31792,65616,34640,65104, + 37440,64048,37440,55456,33328,55456,33280,58656,31512,60312,29744,61968,26400,61968,22016,61968,20224,59584,18448,57072, + 18448,51008,18448,4512,10032,4512,10032,51424,2544,51424,2544,56608,10032,56608,10032,61632,2544,61632,2544,66128, + 17856,66128,17856,56608,31280,56608,31280,51424,17856,51424,17856,38128,20144,42368,23696,44392,27248,46416,32464,46416, + 40800,46416,46072,39824,51344,33232,51344,22608,51344,11984,46072,5376,40800,-1232,32464,-1232,27248,-1232,23696,784, + 20144,2800,17856,7056,17856,0,2512,0,2512,4512,10032,4512,17856,20352,17856,12192,20976,7920,24096,3648, + 30048,3648,36048,3648,39128,8456,42208,13264,42208,22608,42208,32000,39128,36760,36048,41520,30048,41520,24096,41520, + 20976,37232,17856,32944,17856,24816,17856,20352,12880,58912,3232,58912,336,55120,-2672,51248,-2672,43344,-8160,43344, + -8160,57968,-3824,61200,3824,62736,8720,63456,12880,63456,36128,63456,45648,63456,50576,59504,55456,55584,55456,47776, + 55456,42112,52112,38768,48704,35408,42208,34640,50368,33616,54480,29488,58656,25328,58656,18368,58656,8928,52704,4464, + 46752,0,34128,0,4800,0,4800,4512,12880,4512,12880,58912,21504,36640,32304,36640,39264,36640,42496,39312, + 45680,41984,45680,47776,45680,54448,42496,56272,37952,58912,32304,58912,21504,58912,21504,36640,21504,4512,34208,4512, + 41856,4512,45384,7824,48912,11136,48912,18368,48912,25456,45392,28816,41904,32128,34208,32128,21504,32128,21504,4512, + 21504,4512,34208,4512,41856,4512,45384,7824,48912,11136,48912,18368,48912,25536,45408,28832,41904,32128,34208,32128, + 21504,32128,21504,4512,4800,63456,55840,63456,55840,49296,50624,49296,50624,58224,21504,58224,21504,36640,32304,36640, + 48448,36640,53552,30560,58656,24480,58656,18368,58656,8928,52704,4464,46752,0,34128,0,4800,0,4800,4512, + 12880,4512,12880,58912,4800,58912,4800,63456,17856,20352,17856,12192,20992,7904,24096,3648,30048,3648,36048,3648, + 39104,8464,42208,13264,42208,22608,42208,32000,39104,36768,36048,41520,30048,41520,24096,41520,20992,37232,17856,32944, + 17856,24816,17856,20352,43008,66128,43008,54784,38544,54784,38544,60896,17856,60896,17856,38128,20144,42368,23712,44368, + 27248,46416,32464,46416,40800,46416,46072,39824,51344,33232,51344,22608,51344,11984,46064,5360,40800,-1232,32464,-1232, + 27248,-1232,23712,768,20144,2800,17856,7056,17856,0,2512,0,2512,4512,10032,4512,10032,61632,2512,61632, + 2512,66128,43008,66128,21504,4512,34208,4512,41856,4512,45384,7824,48912,11136,48912,18368,48912,25536,45408,28832, + 41904,32128,34208,32128,21504,32128,21504,4512,4800,46672,21504,63456,21504,36640,32304,36640,48448,36640,54480,29488, + 58656,24480,58656,18368,58656,8928,52704,4464,46752,0,34128,0,4800,0,4800,4512,12880,4512,12880,42160, + 4800,42160,4800,46672,17856,20352,17856,12192,20976,7920,24096,3648,30048,3648,36048,3648,39128,8456,42208,13264, + 42208,22608,42208,32000,39128,36760,36048,41520,30048,41520,24096,41520,20976,37232,17856,32944,17856,24816,17856,20352, + 17856,66128,17856,38128,20144,42368,23696,44392,27248,46416,32464,46416,40800,46416,46072,39824,51344,33232,51344,22608, + 51344,11984,46072,5376,40800,-1232,32464,-1232,27248,-1232,23696,784,20144,2800,17856,7056,17856,0,2512,0, + 2512,4512,10032,4512,10032,47808,2512,47808,2512,53168,17856,66128,4880,46576,7696,55456,14304,60032,20912,64608, + 31024,64608,37232,64608,42544,62480,47856,60352,51984,56224,56736,51472,59056,45416,61376,39360,61376,31712,61376,16912, + 52832,7840,44288,-1232,30304,-1232,25120,-1232,19256,128,13392,1488,6624,4256,6624,18864,11440,18864,13008,10880, + 17744,7096,22480,3312,31024,3312,41184,3312,46408,10520,51632,17728,51632,31712,51632,45648,46408,52848,41184,60048, + 31024,60048,23920,60048,19336,56672,14752,53296,12704,46576,4880,46576,61376,16784,58560,7904,51936,3312,45344,-1232, + 35232,-1232,29024,-1232,23712,896,18400,3024,14288,7136,9520,11904,7232,17936,4880,24016,4880,31664,4880,46448, + 13424,55504,21968,64608,35952,64608,41136,64608,47008,63248,51216,62256,55840,60560,55840,64256,59280,66720,62480,69280, + 67328,69280,70384,69280,73184,68592,75952,67872,78576,66464,78576,57168,74544,57168,74544,61248,72416,63152,70640,65072, + 67152,65072,63280,65072,61456,62480,59632,59888,59632,54352,59632,44496,54832,44496,53248,52480,48528,56272,43776,60048, + 35232,60048,25072,60048,19840,52864,14624,45648,14624,31664,14624,17728,19840,10544,25072,3312,35232,3312,42336,3312, + 46928,6720,51504,10080,53552,16784,61376,16784,44752,13552,43088,6336,38376,2552,33664,-1232,26176,-1232,16320,-1232, + 10320,5264,4336,11808,4336,22608,4336,33440,10320,39952,16320,46416,26176,46416,30480,46416,34720,45392,36800,44928, + 38928,44160,39648,50272,43136,53344,45680,55584,50960,55584,54016,55584,56784,54912,59584,54192,62224,52784,62224,43472, + 58176,43472,58176,47552,56096,49472,54272,51376,50784,51376,46928,51376,45056,48784,43264,46192,43264,40672,43264,30816, + 38720,30816,37824,36768,34848,39488,31840,42208,26272,42208,19936,42208,16704,37312,13472,32384,13472,22608,13472,12832, + 16656,7904,19888,2976,26272,2976,31328,2976,34344,5608,37360,8240,38464,13552,44752,13552,21840,4512,29840,4512, + 42208,4512,48832,11560,55456,18608,55456,31792,55456,44960,48848,51936,42240,58912,29840,58912,21840,58912,21840,35872, + 36128,35872,36128,30560,21840,30560,21840,4512,5232,0,5232,4512,13296,4512,13296,30560,4800,30560,4800,35872, + 13296,35872,13296,58912,5232,58912,5232,63456,30480,63456,46880,63456,56040,55080,65200,46704,65200,31792,65200,16832, + 56016,8416,46832,0,30480,0,5232,0,12880,58912,3232,58912,336,55120,-2672,51248,-2672,43344,-8160,43344, + -8160,57968,-2288,62352,3824,62736,7824,63456,12880,63456,30048,63456,46448,63456,55584,55088,64768,46704,64768,31792, + 64768,16832,55592,8416,46416,0,30048,0,4800,0,4800,4512,12880,4512,12880,58912,21504,4512,29408,4512, + 41776,4512,48368,11568,54992,18608,54992,31784,54992,44960,48408,51936,41824,58912,29408,58912,21504,58912,21504,4512, + 41952,4512,41952,32128,29248,32128,21552,32128,18016,28816,14528,25536,14528,18368,14528,11136,18056,7824,21584,4512, + 29248,4512,41952,4512,58656,63456,58656,58912,50576,58912,50576,4512,58656,4512,58656,0,29328,0,16704,0, + 10752,4464,4800,8928,4800,18368,4800,24480,8960,29488,15008,36640,31152,36640,41952,36640,41952,58224,12832,58224, + 12832,49344,7600,49344,7600,63456,58656,63456,36000,20352,36000,24816,36000,32944,32896,37232,29744,41520,23808,41520, + 17808,41520,14704,36768,11648,32000,11648,22608,11648,13264,14704,8464,17808,3648,23808,3648,29744,3648,32896,7904, + 36000,12192,36000,20352,10832,66128,51344,66128,51344,61632,43824,61632,43824,4512,51344,4512,51344,0,36000,0, + 36000,7056,33696,2800,30176,768,26608,-1232,21376,-1232,13040,-1232,7776,5360,2512,11984,2512,22608,2512,33232, + 7776,39824,13040,46416,21376,46416,26608,46416,30176,44368,33696,42368,36000,38128,36000,60896,15296,60896,15296,54784, + 10832,54784,10832,66128,36800,1152,39616,80,41008,-2000,42624,-4384,42624,-10208,42624,-15680,38464,-18576,34304,-21424, + 25968,-21424,23680,-21424,19248,-20736,14832,-20016,10080,-18704,10080,-10320,14656,-9264,15168,-13040,18240,-15008,21296,-16912, + 25288,-16912,29280,-16912,32208,-14832,35312,-12624,35184,-9824,35184,-5776,33616,-4416,30352,-1232,26176,-1232,16272,-1232, + 10288,5264,4336,11776,4336,22568,4336,33360,10288,39872,16272,46416,26176,46416,36048,46416,42032,39872,48032,33360, + 48032,22568,48032,11776,42080,5264,39392,2416,36800,1152,26176,42208,19888,42208,16656,37232,13472,32256,13472,22568, + 13472,12880,16656,7904,19888,2976,26176,2976,32464,2976,35696,7904,38880,12880,38880,22568,38880,32256,35656,37232, + 32432,42208,26176,42208,56560,0,4800,0,4800,14112,10032,14112,10032,5232,39872,5232,39872,31792,19088,31792, + 19088,23840,13856,23840,13856,44928,19088,44928,19088,36976,39872,36976,39872,58224,10704,58224,10704,49344,5488,49344, + 5488,63456,56560,63456,56560,58912,48496,58912,48496,4512,56560,4512,56560,0,36160,60048,28608,60048,24016,56688, + 19424,53296,17376,46576,9568,46576,12368,55456,18960,60016,25584,64608,35696,64608,49520,64608,58016,55552,66512,46496, + 66512,31664,66512,24048,64176,17936,61840,11904,57072,7136,52864,2976,47552,848,42208,-1232,35696,-1232,29248,-1232, + 23808,896,18400,3024,14288,7136,9520,11904,7232,17936,4880,23968,4880,31664,4880,34688,56656,34688,56656,46544, + 51424,52864,46112,60048,36160,60048,56688,29488,14656,29488,14656,17088,19936,10448,25248,3312,35696,3312,46112,3312, + 51424,10448,56688,17088,56688,29488,48752,60768,48752,49600,43984,49600,43440,54960,40272,57680,37104,60400,29872,60400, + 22656,60400,19592,57440,16528,54480,16528,48624,16528,42720,20208,39680,23888,36640,33152,36640,35280,36640,35280,32128, + 31232,32128,21936,32128,18112,28328,14288,24528,14288,17504,14288,10496,18048,6736,21808,2976,27632,2976,33408,2976, + 37400,5912,41392,8848,41696,11264,49520,11264,47904,6800,42776,2784,37648,-1232,27456,-1232,17248,-1232,11280,3504, + 5312,8240,5312,17120,5312,24400,9624,28968,13936,33536,21760,34640,15136,36000,11520,39848,7904,43696,7904,49424, + 7904,56560,13136,60584,18368,64608,29792,64608,38592,64608,48752,60768,3744,-18112,-2416,-18112,-8624,-15216,-8624,-5232, + -3776,-5232,-3776,-13552,3824,-13552,8880,-13552,10880,-10368,12928,-7104,12880,2080,12880,58912,4800,58912,4800,63456, + 56736,63456,56736,49344,51504,49344,51504,58224,21504,58224,21504,36976,43184,36976,43184,44928,48400,44928,48400,23840, + 43184,23840,43184,31792,21504,31792,21504,1744,21504,-11568,14448,-15760,10496,-18112,3744,-18112,37440,55456,33328,55456, + 33328,56352,33152,57168,32768,59120,31536,60304,29744,61968,26400,61968,22016,61968,20224,59584,18448,57168,18448,51008, + 18448,45184,31072,45184,31072,40624,18448,40624,18448,-800,18448,-8368,14528,-12240,10576,-16112,2976,-16112,128,-16112, + -2720,-15600,-5568,-15088,-8368,-14032,-8368,-5440,-4256,-5440,-4256,-6336,-4080,-7136,-3696,-9088,-2464,-10288,-688,-11936, + 2672,-11936,7056,-11936,8848,-9520,10624,-7136,10624,-800,10624,40624,3152,40624,3152,45184,10624,45184,10624,50832, + 10624,58400,14528,62256,18480,66128,26096,66128,28944,66128,31792,65616,34640,65104,37440,64048,37440,55456,68000,65072, + 62688,65072,61152,60048,60480,57760,60480,54352,60480,44496,55680,44496,55680,44704,53472,56064,44320,58944,40880,60048, + 36384,60048,25408,60048,20016,52992,14624,45936,14624,31664,14624,9136,28736,4464,32256,3312,36544,3312,46160,3312, + 54064,8080,54064,24432,42112,24432,42112,28992,62688,28992,62688,5312,51376,-1232,36544,-1232,22192,-1232,13520,7728, + 4880,16752,4880,31664,4880,46704,13552,55680,22224,64608,36896,64608,45904,64608,56480,61024,57552,64304,60144,66720, + 62864,69280,68176,69280,74160,69280,79440,66464,79440,57168,75392,57168,75392,63408,70720,64688,69536,65072,68000,65072, + 26096,31152,7568,58912,768,58912,768,63456,25920,63456,25920,58912,18448,58912,32048,38464,46032,58912,37872,58912, + 37872,63456,58656,63456,58656,58912,51504,58912,34720,34464,50192,14624,50192,3440,50192,-7984,30976,-7984,11984,-7984, + 11984,2592,11984,12368,26096,31152,28896,27024,17728,10112,17728,2384,17728,-3488,30976,-3488,40464,-3488,40464,1104, + 40464,11392,28896,27024,3568,0,3568,4512,10624,4512,10624,61632,3152,61632,3152,66128,18448,66128,18448,37152, + 20608,41728,24048,44080,27536,46416,32128,46416,39696,46416,43136,42112,46672,37744,46672,28736,46672,14912,46672,9344, + 48448,6800,50272,4256,54192,4208,59504,4208,64256,9728,68128,14288,68128,22352,68128,28896,65536,33280,62944,37616, + 57920,39568,57920,42080,62688,42080,69232,39360,73008,33872,76848,28352,76848,21680,76848,16960,75056,12880,73232,8720, + 69792,5568,66720,2720,62736,1232,58688,-304,54192,-304,47216,-304,42752,4000,38800,7520,38800,14912,38800,26272, + 38800,34560,36800,37568,34768,40624,29584,40624,24144,40624,21296,36672,18448,32720,18448,25168,18448,4512,25248,4512, + 25248,0,3568,0,21504,14912,21504,9344,23296,6800,25168,4208,29024,4208,29584,4208,29584,0,29024,0, + 20480,0,17856,2288,12880,6592,12880,14912,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912, + 21504,14912,21504,4512,29584,4512,29584,0,4800,0,4800,4512,12880,4512,12880,30560,4384,30560,4384,35872, + 12880,35872,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,35872,29920,35872,29920,30560, + 21504,30560,21504,4512,48832,58912,55168,64480,60432,64480,63280,64480,66048,63744,69056,62992,71488,61664,71488,52368, + 67440,52368,67440,56448,65360,58352,63792,59968,61200,60176,57504,60176,54320,57632,28640,34976,59120,4512,66336,4512, + 66336,0,51600,0,21504,30128,21504,4512,29584,4512,29584,0,4800,0,4800,4512,12880,4512,12880,58912, + 4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,34896,48832,58912,17888,23072,36896,40624,30384,40624, + 30384,45184,50832,45184,50832,40624,43088,40624,29664,28224,46832,4512,53344,4512,53344,0,31072,0,31072,4512, + 37520,4512,24016,23072,17856,17344,17856,4512,24912,4512,24912,0,2976,0,2976,4512,10032,4512,10032,51216, + 10032,58096,14192,62128,18320,66128,25584,66128,28864,66128,31456,65456,34208,64720,36848,63328,36848,54016,32816,54016, + 32816,58096,30688,60016,28896,61920,25408,61920,21552,61920,19728,59328,17888,56816,17888,51216,17888,23072,2544,19728, + 2544,24224,10032,24224,10032,61632,2512,61632,2512,66128,17856,66128,17856,24224,25248,24224,25248,19728,17856,19728, + 17856,4512,25248,4512,25248,0,2512,0,2512,4512,10032,4512,10032,19728,2544,19728,22608,55552,21040,59456, + 19600,60736,18112,62048,15856,62048,13296,62048,12112,60816,10880,59536,10624,56656,6624,56656,6624,65280,8752,65920, + 10832,66256,12960,66592,14960,66592,19680,66592,22272,64640,24864,62736,26992,57456,33232,61632,35792,57968,28688,53088, + 47680,4544,52736,4544,52736,0,35792,0,35792,4544,42544,4544,30512,35744,17120,4544,24352,4544,24352,0, + 3568,0,3568,4544,8720,4544,26272,46064,24656,50272,13296,42336,10704,45984,22944,54608,22608,55552,38208,8800, + 35952,3824,32448,1296,28944,-1232,24272,-1232,17216,-1232,13680,3152,10208,7520,10208,16448,10208,59040,3152,59040, + 3152,63536,24816,63536,24816,59040,18016,59040,18016,17344,18016,10416,20056,7480,22096,4544,26816,4544,32048,4544, + 34768,8496,37520,12496,37520,20016,37520,59040,30720,59040,30720,63536,52144,63536,52144,59040,45344,59040,45344,17040, + 45344,10288,47384,7416,49424,4544,54144,4544,59376,4544,62128,8496,64848,12496,64848,20016,64848,59040,58048,59040, + 58048,63536,79728,63536,79728,59040,72672,59040,72672,4464,80160,4464,80160,0,64848,0,64848,8032,62688,3520, + 59328,1144,55968,-1232,51728,-1232,46448,-1232,42920,1384,39392,4000,38208,8800,-8720,-15216,-8720,-5232,-3872,-5232, + -3872,-9440,-1872,-11472,0,-13552,3744,-13552,8800,-13552,10800,-10368,12800,-7184,12800,2080,12800,58912,4256,58912, + 4256,63456,20528,63456,58560,13392,58560,58912,50064,58912,50064,63456,72336,63456,72336,58912,63792,58912,63792,-1232, + 58656,-1232,18064,52192,18064,1744,18064,-8752,13856,-13432,9648,-18112,1488,-18112,640,-18112,-2464,-17376,-5616,-16656, + -8720,-15216,3568,0,3568,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,37152,20608,41728, + 24072,44072,27536,46416,32128,46416,39616,46416,43144,42120,46672,37824,46672,28736,46672,-13600,53632,-13600,53632,-18112, + 32048,-18112,32048,-13600,38800,-13600,38800,26272,38800,34560,36760,37640,34720,40720,29584,40720,24144,40720,21296,36744, + 18448,32768,18448,25168,18448,4512,25248,4512,25248,0,3568,0,35696,-1232,29248,-1232,23824,896,18400,3024, + 14288,7136,9520,11904,7200,17936,4880,23968,4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400, + 23800,62504,29152,64608,35696,64608,49520,64608,58016,55552,66512,46496,66512,31664,66512,24048,64176,17936,61840,11904, + 57072,7136,52864,2976,47552,848,42208,-1232,35696,-1232,35696,3312,46112,3312,51424,10448,56320,17088,56688,29488, + 14656,29488,15040,17088,19936,10448,25248,3312,35696,3312,56656,34688,56144,46544,51424,52864,46112,60048,35696,60048, + 25248,60048,19936,52864,15216,46544,14704,34688,56656,34688,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664, + 56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888,14624,45728,14624,31664,14624,17632,19936,10472, + 25248,3312,35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024,14288,7136,9520,11904,7200,17936,4880,23968, + 4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400,23800,62504,29152,64608,35696,64608,49520,64608, + 58016,55552,66512,46496,66512,31664,66512,24048,64176,17952,61840,11856,57072,7136,52912,2976,47560,872,42208,-1232, + 35696,-1232,51584,55376,51584,59360,51680,59328,56864,55616,58896,55616,60864,55616,62048,57040,63232,58464,63232,60848, + 63232,62000,62976,63232,62720,64464,62128,65744,67568,65696,67952,64160,68144,62736,68336,61312,68336,59952,68336,55152, + 66424,52520,64512,49888,61104,49888,59024,49888,56776,51160,54528,52432,51584,55376,26176,2976,32464,2976,35672,7952, + 38880,12928,38880,22608,38880,32304,35672,37256,32464,42208,26176,42208,19888,42208,16680,37256,13472,32304,13472,22608, + 13472,12928,16704,7952,19936,2976,26176,2976,26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608,4336,33408, + 10304,39912,16272,46416,26176,46416,36080,46416,42056,39912,48032,33408,48032,22608,48032,11808,42056,5288,36080,-1232, + 26176,-1232,39296,35920,39296,39904,39392,39872,44576,36160,46608,36160,48576,36160,49760,37584,50944,39008,50944,41392, + 50944,42544,50688,43776,50432,45008,49840,46288,55280,46240,55664,44704,55856,43280,56048,41856,56048,40496,56048,35696, + 54136,33064,52224,30432,48816,30432,46736,30432,44488,31704,42240,32976,39296,35920,35696,-1232,29248,-1232,23824,896, + 18400,3024,14288,7136,9520,11904,7200,17936,4880,23968,4880,31664,4880,39360,7200,45416,9520,51472,14288,56224, + 18448,60400,23800,62504,29152,64608,35696,64608,44368,64608,50912,61024,53504,62128,56096,62736,59200,63456,62224,63456, + 71568,63456,75776,58776,79984,54096,79984,43600,79984,-9088,88064,-9088,88064,-13648,61504,-13648,61504,-9088,71360,-9088, + 71360,43264,71360,52528,69360,55720,67360,58912,62304,58912,58560,58912,56688,56864,57376,56224,58016,55552,66512,46496, + 66512,31664,66512,24048,64176,17936,61840,11904,57072,7136,52864,2976,47552,848,42208,-1232,35696,-1232,35696,3312, + 46112,3312,51424,10472,56736,17632,56736,31664,56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888, + 14624,45728,14624,31664,14624,17632,19936,10472,25248,3312,35696,3312,36928,43904,36928,43984,38848,44448,41600,45184, + 44672,45184,51936,45184,56080,41208,60224,37232,60224,30256,60224,-13552,67696,-13552,67696,-18112,45008,-18112,45008,-13552, + 52400,-13552,52400,30256,52400,35744,50552,38360,48704,40976,44832,40976,42080,40976,41568,40416,42080,39904,48032,33408, + 48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608,4336,33408, + 10304,39912,16272,46416,26176,46416,32304,46416,36928,43904,26176,2976,32464,2976,35672,7952,38880,12928,38880,22616, + 38880,32304,35672,37256,32464,42208,26176,42208,19888,42208,16680,37256,13472,32304,13472,22616,13472,12928,16704,7952, + 19936,2976,26176,2976,12880,63456,34800,63456,44320,63456,49888,58656,55456,53808,55456,45600,55456,37440,49888,32600, + 44320,27760,34800,27760,21504,27760,21504,4512,31328,4512,31328,0,4800,0,4800,4512,12880,4512,12880,58912, + 3232,58912,336,55120,-2672,51248,-2672,43344,-8160,43344,-8160,57968,-4000,61072,3824,62736,8720,63456,12880,63456, + 21504,32304,32720,32304,39056,32304,42368,35696,45680,39136,45680,45600,45680,52112,42368,55512,39056,58912,32720,58912, + 21504,58912,21504,32304,17856,24816,17856,20352,17856,12192,20992,7904,24096,3648,30048,3648,36048,3648,39104,8464, + 42208,13264,42208,22608,42208,32000,39104,36768,36048,41520,30048,41520,24096,41520,20992,37232,17856,32944,17856,24816, + 9984,47392,9984,54448,14112,58352,18272,62304,25536,62304,28384,62304,31360,61584,34176,60896,36800,59504,36800,50192, + 32768,50192,32768,54272,30688,56192,28864,58096,25376,58096,21504,58096,19632,55456,17856,52912,17856,47392,17856,38128, + 20144,42368,23712,44368,27248,46416,32464,46416,40800,46416,46072,39824,51344,33232,51344,22608,51344,11984,46064,5360, + 40800,-1232,32464,-1232,27248,-1232,23712,768,20144,2800,17856,7056,17856,-13552,25248,-13552,25248,-18112,2512,-18112, + 2512,-13552,9984,-13552,9984,47392,12880,58912,4800,58912,4800,63456,30480,63456,30480,58912,21504,58912,21504,49648, + 36976,49648,46240,49648,51280,45224,56320,40800,56320,32688,56320,26144,52640,22376,48960,18608,41696,17680,44672,16880, + 46832,14960,48960,13008,50656,9520,59888,-9312,67616,-9312,67616,-13808,52656,-13808,42752,6368,39872,12288,37520,13936, + 35152,15680,30976,15680,21504,15680,21504,4512,30480,4512,30480,0,4800,0,4800,4512,12880,4512,12880,58912, + 21504,20224,34048,20224,40464,20224,43520,23264,46576,26304,46576,32680,46576,39056,43520,42072,40464,45088,34048,45088, + 21504,45088,21504,20224,52480,3056,46880,896,41488,-176,36048,-1232,30816,-1232,19120,-1232,13216,3440,7312,8112, + 7312,17344,7312,24096,10960,28128,14656,32128,23296,34720,31152,37056,39696,39616,42328,42208,44960,44800,44960,49344, + 44960,54576,41488,57296,37952,60048,31232,60048,23552,60048,19808,57040,16016,54064,15296,47344,10496,47344,10496,60864, + 16448,62688,21712,63664,26992,64608,31408,64608,41776,64608,47512,60144,53248,55680,53248,47600,53248,40416,49552,36288, + 45808,32176,36720,29408,28352,26896,20608,24560,18192,22096,15808,19632,15808,15040,15808,9312,19808,6288,23760,3312, + 31328,3312,39440,3312,43440,6800,47392,10240,47600,17504,52480,17504,52480,3056,40208,2512,36048,640,31880,-296, + 27712,-1232,23328,-1232,14704,-1232,9776,2464,4880,6128,4880,12544,4880,17248,7728,20224,10544,23248,16960,25248, + 23168,27152,28896,28944,30816,30688,32720,32384,32720,35232,32720,38720,30176,40464,27664,42208,22736,42208,17760,42208, + 14872,39744,11984,37280,11808,32896,7312,32896,7312,42752,11520,44544,15472,45480,19424,46416,22992,46416,31024,46416, + 35576,42888,40128,39360,40128,33152,40128,28816,37488,26016,34896,23200,29072,21328,23424,19424,16912,17344,14880,15520, + 12880,13680,12880,10704,12880,6928,15648,4928,18400,2976,23680,2976,29536,2976,32560,5488,35536,7984,35696,13040, + 40208,13040,40208,2512,40800,34592,17296,7984,50448,7984,50448,14112,55680,14112,55680,0,3520,0,31744,31792, + 3520,63456,55680,63456,55680,49344,50448,49344,50448,58224,20912,58224,40800,34592,7696,62000,944,62000,944,57456, + 944,52240,14160,52240,14752,52240,15344,52272,15696,56320,13440,59376,11488,62000,7696,62000,22704,56656,24016,59248, + 24016,63280,24016,66000,28272,66000,28224,63280,28096,53936,22912,50272,19136,27328,14544,-4464,13856,-9088,16368,-12544, + 18192,-15168,22064,-15168,25552,-15168,27376,-13216,29168,-11344,29456,-7264,33488,-7264,33488,-16528,30864,-17984,28096,-18656, + 25296,-19344,22240,-19344,14960,-19344,10848,-15392,5744,-10496,6672,-4464,6464,-3872,14704,47984,14496,47984,14336,47984, + -8544,47984,-8320,57760,-8160,66208,7776,66208,14624,66208,18960,62256,21728,59664,22704,56656,9392,40624,2512,40624, + 2512,45184,9392,45184,9392,59200,17248,59200,17248,45184,31968,45184,31968,40624,17248,40624,17248,11936,17248,6208, + 18360,4592,19472,2976,22448,2976,25504,2976,26904,4784,28304,6592,28384,10624,34304,10624,34304,-4416,34304,-11392, + 30160,-15368,26016,-19344,18736,-19344,15680,-19344,12896,-18640,10112,-17936,7488,-16528,7488,-7232,11520,-7232,11808,-11312, + 13616,-13224,15424,-15136,18912,-15136,22784,-15136,24656,-12496,26432,-9952,26432,-4416,26432,-720,24400,-1232,21760,-1232, + 15008,-1232,12200,1768,9392,4768,9392,11936,9392,40624,24736,63456,57200,63456,57200,48496,51984,48496,51984,58400, + 33328,58400,33328,4512,41440,4512,41440,0,16624,0,16624,4512,24736,4512,24736,58400,15088,58400,12160,54608, + 9184,50752,9184,42848,3696,42848,3696,57968,8032,61200,15680,62736,20784,63456,24736,63456,17248,45184,31968,45184, + 31968,40624,17248,40624,17248,11936,17248,6208,18360,4592,19472,2976,22448,2976,25504,2976,26896,4768,28304,6592, + 28384,10624,34304,10624,34304,4464,30944,1616,27920,-1232,21760,-1232,15008,-1232,12192,1792,9392,4768,9392,11936, + 9392,40624,2512,40624,2512,45184,9392,45184,9392,51216,9392,58096,13552,62128,17680,66128,24944,66128,28224,66128, + 30816,65456,33568,64720,36208,63328,36208,54016,32176,54016,32176,58096,30048,60016,28256,61920,24784,61920,20912,61920, + 19088,59328,17248,56816,17248,51216,17248,45184,54832,-15216,51728,-16656,48624,-17376,45472,-18112,42464,-18112,33104,-18112, + 28896,-13432,24688,-8752,24736,1744,24736,58400,6080,58400,6080,48496,848,48496,848,63456,57200,63456,57200,48496, + 51984,48496,51984,58400,33328,58400,33328,2080,33328,-7056,35312,-10368,37232,-13552,42368,-13552,46112,-13552,47984,-11472, + 49856,-9440,49984,-5232,54832,-5232,54832,-15216,12192,58912,4080,58912,4080,63456,28896,63456,28896,58912,20784,58912, + 20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336,52168,9136,56144,13936,56144,26096,56144,58912, + 48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232, + 23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,68992,59472,68992,63456,69088,63424,74272,59712,76304,59712, + 78272,59712,79456,61136,80640,62560,80640,64944,80640,66096,80384,67328,80128,68560,79536,69840,84976,69792,85360,68256, + 85552,66832,85744,65408,85744,64048,85744,59248,83832,56616,81920,53984,78512,53984,76432,53984,74184,55256,71936,56528, + 68992,59472,30816,45184,45440,45184,45440,4512,52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128, + 28560,-1232,24016,-1232,16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184, + 17248,18864,17248,10624,19272,7568,21296,4512,26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624, + 30816,40624,30816,45184,43392,35920,43392,39904,43488,39872,48672,36160,50704,36160,52672,36160,53856,37584,55040,39008, + 55040,41392,55040,42544,54784,43776,54528,45008,53936,46288,59376,46240,59760,44704,59952,43280,60144,41856,60144,40496, + 60144,35696,58232,33064,56320,30432,52912,30432,50832,30432,48584,31704,46336,32976,43392,35920,27712,63456,27712,58912, + 24096,54528,19568,47112,15040,39696,15040,29584,15040,17728,20864,10496,26688,3312,36128,3312,45568,3312,51376,10496, + 57200,17728,57200,29584,57200,39744,52696,47112,48192,54480,44544,58912,44544,63456,66848,63456,66848,58912,51856,58912, + 57632,53216,62288,45992,66944,38768,66944,28640,66944,22224,64512,16656,62000,10960,57376,6720,53168,2848,47728,808, + 42288,-1232,36128,-1232,30000,-1232,24560,808,19120,2848,14960,6720,10240,11088,7776,16704,5312,22272,5312,28640, + 5312,38768,9968,45992,14624,53216,20400,58912,5392,58912,5392,63456,27712,63456,30096,0,21040,-464,17856,2288, + 12880,6592,12880,14912,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,14912,21504,9600, + 23296,6800,24560,4800,30096,4544,39184,4160,45344,11728,51168,18960,51168,30816,51168,41392,47264,47296,43520,52864, + 37056,54064,37056,58912,41648,58912,51088,55376,55584,47936,60896,39104,60896,29872,60896,23456,58480,17888,55968,12192, + 51344,7952,47136,4080,41696,2048,37232,384,30096,0,33152,4512,41264,4512,41264,0,16448,0,16448,4512, + 24560,4512,24560,27328,4976,58912,-976,58912,-976,63456,22608,63456,22608,58912,15216,58912,31072,33232,46928,58912, + 52448,63456,58224,63456,61072,63456,64048,62736,66848,62048,69488,60640,69488,51344,65456,51344,65152,55424,63360,57328, + 61536,59248,58048,59248,52704,59248,50528,56192,33152,28128,33152,4512,41696,35056,23168,-10208,21040,-15472,18448,-17408, + 15856,-19344,11136,-19344,9136,-19344,7032,-19000,4928,-18656,2800,-18016,2800,-9392,6800,-9392,7056,-12288,8264,-13536, + 9472,-14784,12032,-14784,14368,-14784,15792,-13488,17216,-12192,18784,-8288,21760,-768,4880,40624,-256,40624,-256,45184, + 20528,45184,20528,40624,13296,40624,26016,9568,37312,36976,39440,42240,42032,44176,44624,46112,49344,46112,51344,46112, + 53448,45776,55552,45440,57680,44800,57680,36160,53680,36160,53424,39056,52216,40312,51008,41568,48448,41568,46112,41568, + 44688,40272,43264,38976,41696,35056,3904,0,3904,3056,23632,30560,10624,30560,10624,35872,27408,35872,43440,58224, + 10624,58224,10624,48752,5392,48752,5392,63456,55552,63456,55552,60400,38000,35872,51888,35872,51888,30560,34176,30560, + 16016,5232,51888,5232,51888,14112,57072,14112,57072,0,3904,0,3488,0,3488,3648,15760,19728,9392,19728, + 9392,24224,19248,24224,31792,40624,9392,40624,9392,32816,4880,32816,4880,45184,41856,45184,41856,41520,28640,24224, + 38128,24224,38128,19728,25200,19728,13552,4512,38128,4512,38128,12704,42672,12704,42672,0,3488,0,22448,36208, + 18400,36208,18400,40544,33024,58224,10624,58224,10624,48752,5392,48752,5392,63456,42496,63456,42496,58144,26816,39232, + 30176,38928,38000,37696,42336,32560,46624,27456,46624,19296,46624,9344,40624,4032,34688,-1232,23456,-1232,18480,-1232, + 13776,-48,9008,1152,4336,3568,4336,17344,9088,17344,9520,10496,13216,6968,16912,3440,23632,3440,30128,3440, + 33920,7696,37648,11904,37648,19216,37648,27584,33792,31920,29920,36208,22448,36208,28512,36208,21040,36208,17168,31920, + 13296,27584,13296,19216,13296,11904,17040,7696,20832,3440,27328,3440,34048,3440,37744,6968,41440,10496,41856,17344, + 46624,17344,46624,3568,41952,1152,37184,-48,32464,-1232,27504,-1232,16272,-1232,10320,4032,4336,9344,4336,19296, + 4336,27456,8624,32560,12960,37696,20784,38928,24144,39232,8464,58144,8464,63456,45568,63456,45568,48752,40336,48752, + 40336,58224,17936,58224,32560,40544,32560,36208,28512,36208,28512,17984,21040,17984,17168,13680,13296,9344,13296,976, + 13296,-6336,17040,-10544,20832,-14784,27328,-14784,34048,-14784,37744,-11256,41440,-7728,41856,-896,46624,-896,46624,-14656, + 41952,-17088,37184,-18272,32464,-19472,27504,-19472,16272,-19472,10320,-14192,4336,-8880,4336,1056,4336,9216,8624,14320, + 12960,19472,20784,20704,24144,20992,8464,41520,8464,45184,45440,45184,45440,32816,40928,32816,40928,40624,18528,40624, + 32560,22320,32560,17984,28512,17984,22448,17984,18400,17984,18400,22320,32432,40624,10032,40624,10032,32816,5520,32816, + 5520,45184,42496,45184,42496,41520,26816,20992,45472,19344,45472,11984,45472,3776,29496,-832,13520,-5440,13520,-9824, + 13520,-14784,25400,-14784,37280,-14784,39136,-5520,43184,-5520,43184,-12064,38080,-19472,21800,-19472,5520,-19472,5520,-10448, + 5520,-2640,21080,1064,36640,4768,36640,12416,36640,17984,22448,17984,11136,48320,6368,48320,6368,59632,10928,62048, + 15536,63328,20144,64608,24560,64608,34464,64608,40200,59800,45936,54992,45936,46752,45936,41824,42288,35872,47680,35872, + 47680,30560,38512,30560,36128,27632,32944,24480,31408,22992,15392,6976,41856,6976,41856,14784,46832,14784,46832,0, + 5904,0,5904,4640,25168,23840,28688,27376,31072,30560,11136,30560,11136,35872,34432,35872,36976,41056,36976,46752, + 36976,53168,33640,56784,30304,60400,24432,60400,18368,60400,15048,57376,11728,54352,11136,48320,36848,35696,44672,34592, + 48984,30024,53296,25456,53296,17120,53296,8240,47328,3504,41360,-1232,30128,-1232,25168,-1232,20424,-168,15680,896, + 11008,3056,11008,15392,15760,15392,16192,9264,19888,6120,23584,2976,30304,2976,36800,2976,40560,6736,44320,10496, + 44320,17040,44320,24528,40456,28368,36592,32208,29120,32208,12880,32208,12880,58912,4800,58912,4800,63456,50912,63456, + 50912,49344,45680,49344,45680,58224,21504,58224,21504,36544,27200,36544,30816,36544,36848,35696,22448,22320,30176,21424, + 38000,20192,42336,15040,46624,9952,46624,1056,46624,-8880,40624,-14192,34688,-19472,23456,-19472,18480,-19472,13776,-18272, + 9008,-17088,4336,-14656,4336,-896,9088,-896,9520,-7728,13216,-11256,16912,-14784,23632,-14784,30128,-14784,33920,-10544, + 37648,-6336,37648,976,37648,9344,33792,13680,29920,17984,22448,17984,9184,17984,9184,40720,1664,40720,1664,45184, + 42160,45184,42160,33824,37696,33824,37696,39952,17008,39952,17008,22320,22448,22320,16912,59200,24736,59200,24736,45216, + 32128,45216,32128,40720,24736,40720,24736,33440,29584,33104,33072,29840,37232,25840,37232,16144,37232,6624,33072,2672, + 28944,-1280,21680,-1280,18608,-1280,15808,-592,13040,80,10416,1536,10416,10800,14448,10800,14752,6720,16576,4848, + 18368,2896,21840,2896,25712,2896,27536,5520,29360,8080,29360,16144,29360,24400,27536,26944,25712,29584,21840,29584, + 16912,29584,16912,40720,9440,40720,9440,45216,16912,45216,16912,59200,17856,40368,24432,48752,36048,48752,43856,48752, + 47152,43968,50448,39184,50448,32688,50448,13392,17856,-5184,17856,-13552,25248,-13552,25248,-18112,2512,-18112,2512,-13552, + 10032,-13552,10032,40624,2512,40624,2512,45184,17856,45184,17856,40368,17856,-432,42624,15216,42624,32688,42624,38336, + 40072,41520,37520,44704,32432,44704,25200,44704,17856,34560,17856,-432,16272,63456,16272,0,9392,0,9392,63456, + 16272,63456,33680,63456,33680,0,26800,0,26800,63456,33680,63456,16272,63456,16272,0,9392,0,9392,63456, + 16272,63456,16528,36160,768,36160,768,43056,16528,43056,16528,63456,23424,63456,23424,43056,39184,43056,39184,36160, + 23424,36160,23424,27280,39184,27280,39184,20400,23424,20400,23424,0,16528,0,16528,20400,768,20400,768,27280, + 16528,27280,16528,36160,16272,6624,16272,0,9392,0,9392,6624,16272,6624,16272,63456,16272,13264,9392,13264, + 9392,63456,16272,63456,73536,0,73536,3056,113072,58224,80256,58224,80256,48752,75024,48752,75024,63456,125184,63456, + 125184,60400,85648,5232,121520,5232,121520,14112,126704,14112,126704,0,73536,0,96352,68992,86544,80208,91472,80208, + 100096,73328,108720,80208,113648,80208,103840,68992,96352,68992,21504,4512,29408,4512,41776,4512,48384,11560,54992,18608, + 54992,31792,54992,44960,48408,51936,41824,58912,29408,58912,21504,58912,21504,4512,4800,0,4800,4512,12880,4512, + 12880,58912,4800,58912,4800,63456,30048,63456,46448,63456,55608,55080,64768,46704,64768,31792,64768,16832,55592,8416, + 46416,0,30048,0,4800,0,73120,0,73120,3648,101424,40624,79024,40624,79024,32816,74512,32816,74512,45184, + 111488,45184,111488,41520,83184,4512,107760,4512,107760,12704,112304,12704,112304,0,73120,0,88848,53632,78864,69616, + 83792,69616,92416,58560,101040,69616,105968,69616,95984,53632,88848,53632,21504,4512,29408,4512,41776,4512,48384,11560, + 54992,18608,54992,31792,54992,44960,48408,51936,41824,58912,29408,58912,21504,58912,21504,4512,4800,0,4800,4512, + 12880,4512,12880,58912,4800,58912,4800,63456,30048,63456,46448,63456,55608,55080,64768,46704,64768,31792,64768,16832, + 55592,8416,46416,0,30048,0,4800,0,58784,0,58784,3648,87088,40624,64688,40624,64688,32816,60176,32816, + 60176,45184,97152,45184,97152,41520,68848,4512,93424,4512,93424,12704,97968,12704,97968,0,58784,0,74512,53632, + 64528,69616,69456,69616,78080,58560,86704,69616,91632,69616,81648,53632,74512,53632,45680,4512,53168,4512,53168,0, + 37872,0,37872,7056,35568,2800,32024,784,28480,-1232,23248,-1232,14912,-1232,9624,5376,4336,11984,4336,22608, + 4336,33232,9608,39824,14880,46416,23248,46416,28480,46416,32024,44392,35568,42368,37872,38128,37872,61632,30480,61632, + 30480,66128,45680,66128,45680,4512,37872,20352,37872,24816,37872,32944,34744,37232,31616,41520,25664,41520,19632,41520, + 16552,36760,13472,32000,13472,22608,13472,13264,16552,8456,19632,3648,25664,3648,31616,3648,34744,7920,37872,12192, + 37872,20352,50032,-15216,50032,-5232,54880,-5232,55008,-9440,56880,-11496,58752,-13552,62480,-13552,67552,-13552,69544,-10368, + 71536,-7184,71536,2080,71536,58912,61680,58912,61680,63456,88240,63456,88240,58912,80160,58912,80160,1744,80160,-8752, + 75952,-13432,71744,-18112,62400,-18112,59392,-18112,56264,-17384,53136,-16656,50032,-15216,4800,0,4800,4512,12880,4512, + 12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,5232,50496,5232,50496,15856,55712,15856, + 55712,0,4800,0,66064,59200,66064,61152,67488,62600,68912,64048,70896,64048,72864,64048,74288,62600,75712,61152, + 75712,59200,75712,57200,74328,55800,72944,54400,70896,54400,68912,54400,67488,55800,66064,57200,66064,59200,67968,40624, + 60576,40624,60576,45184,75792,45184,75792,-4416,75792,-11392,71648,-15368,67504,-19344,60240,-19344,57168,-19344,54384,-18640, + 51600,-17936,48976,-16528,48976,-7232,53008,-7232,53312,-11312,55112,-13224,56912,-15136,60400,-15136,64272,-15136,66120,-12520, + 67968,-9904,67968,-4416,67968,40624,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456, + 29584,58912,21504,58912,21504,5232,50496,5232,50496,15856,55712,15856,55712,0,4800,0,36368,59200,36368,61152, + 37792,62600,39216,64048,41200,64048,43168,64048,44592,62600,46016,61152,46016,59200,46016,57200,44632,55800,43248,54400, + 41200,54400,39216,54400,37792,55800,36368,57200,36368,59200,38272,40624,30880,40624,30880,45184,46096,45184,46096,-4416, + 46096,-11392,41952,-15368,37808,-19344,30544,-19344,27472,-19344,24688,-18640,21904,-17936,19280,-16528,19280,-7232,23312,-7232, + 23616,-11312,25416,-13224,27216,-15136,30704,-15136,34576,-15136,36424,-12520,38272,-9904,38272,-4416,38272,40624,17856,4512, + 25248,4512,25248,0,2512,0,2512,4512,10032,4512,10032,61632,2512,61632,2512,66128,17856,66128,17856,4512, + 68464,-15216,68464,-5232,73312,-5232,73440,-9440,75312,-11496,77184,-13552,80912,-13552,85984,-13552,87976,-10368,89968,-7184, + 89968,2080,89968,58912,80112,58912,80112,63456,106672,63456,106672,58912,98592,58912,98592,1744,98592,-8752,94384,-13432, + 90176,-18112,80832,-18112,77824,-18112,74696,-17384,71568,-16656,68464,-15216,4256,0,4256,4512,12800,4512,12800,58912, + 4256,58912,4256,63456,20528,63456,58560,13392,58560,58912,50064,58912,50064,63456,72336,63456,72336,58912,63792,58912, + 63792,-1232,58656,-1232,18016,52240,18016,4512,26560,4512,26560,0,4256,0,84496,59200,84496,61152,85920,62600, + 87344,64048,89328,64048,91296,64048,92720,62600,94144,61152,94144,59200,94144,57200,92760,55800,91376,54400,89328,54400, + 87344,54400,85920,55800,84496,57200,84496,59200,86400,40624,79008,40624,79008,45184,94224,45184,94224,-4416,94224,-11392, + 90080,-15368,85936,-19344,78672,-19344,75600,-19344,72816,-18640,70032,-17936,67408,-16528,67408,-7232,71440,-7232,71744,-11312, + 73544,-13224,75344,-15136,78832,-15136,82704,-15136,84552,-12520,86400,-9904,86400,-4416,86400,40624,4256,0,4256,4512, + 12800,4512,12800,58912,4256,58912,4256,63456,20528,63456,58560,13392,58560,58912,50064,58912,50064,63456,72336,63456, + 72336,58912,63792,58912,63792,-1232,58656,-1232,18016,52240,18016,4512,26560,4512,26560,0,4256,0,65040,59200, + 65040,61152,66464,62600,67888,64048,69872,64048,71840,64048,73264,62600,74688,61152,74688,59200,74688,57200,73304,55800, + 71920,54400,69872,54400,67888,54400,66464,55800,65040,57200,65040,59200,66944,40624,59552,40624,59552,45184,74768,45184, + 74768,-4416,74768,-11392,70624,-15368,66480,-19344,59216,-19344,56144,-19344,53360,-18640,50576,-17936,47952,-16528,47952,-7232, + 51984,-7232,52288,-11312,54088,-13224,55888,-15136,59376,-15136,63248,-15136,65096,-12520,66944,-9904,66944,-4416,66944,40624, + 3568,0,3568,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,37152,20608,41728,24072,44072, + 27536,46416,32128,46416,39616,46416,43144,42120,46672,37824,46672,28736,46672,4512,53632,4512,53632,0,32048,0, + 32048,4512,38800,4512,38800,26272,38800,34560,36760,37640,34720,40720,29584,40720,24144,40720,21296,36744,18448,32768, + 18448,25168,18448,4512,25248,4512,25248,0,3568,0,17424,22992,40720,22992,29072,53168,17424,22992,-512,0, + -512,4512,5056,4512,27664,63456,34800,63456,57456,4512,63712,4512,63712,0,40624,0,40624,4512,47680,4512, + 42368,18448,15680,18448,10368,4512,17344,4512,17344,0,-512,0,27744,68992,17936,80208,22864,80208,31488,73328, + 40112,80208,45040,80208,35232,68992,27744,68992,34640,14192,34640,23760,24560,23760,18736,23760,15888,21248,13040,18736, + 13040,13552,13040,8848,15936,6080,18832,3312,23760,3312,28640,3312,31640,6328,34640,9344,34640,14192,42464,28224, + 42464,4512,49424,4512,49424,0,34640,0,34640,4880,32048,1744,28648,256,25248,-1232,20704,-1232,13168,-1232, + 8752,2760,4336,6752,4336,13552,4336,20576,9392,24440,14448,28304,23680,28304,34640,28304,34640,31408,34640,36544, + 31512,39376,28384,42208,22736,42208,18064,42208,15304,40080,12544,37952,11856,33792,7824,33792,7824,42928,11904,44672, + 15752,45544,19600,46416,23248,46416,32640,46416,37552,41760,42464,37104,42464,28224,20240,53632,10256,69616,15184,69616, + 23808,58560,32432,69616,37360,69616,27376,53632,20240,53632,21504,4512,29584,4512,29584,0,4800,0,4800,4512, + 12880,4512,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912,21504,58912,21504,4512,13408,68992,3600,80208, + 8528,80208,17152,73328,25776,80208,30704,80208,20896,68992,13408,68992,18448,4512,25840,4512,25840,0,3152,0, + 3152,4512,10624,4512,10624,40624,3152,40624,3152,45184,18448,45184,18448,4512,10000,53632,16,69616,4944,69616, + 13568,58560,22192,69616,27120,69616,17136,53632,10000,53632,35696,3312,46112,3312,51424,10472,56736,17632,56736,31664, + 56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888,14624,45728,14624,31664,14624,17632,19936,10472, + 25248,3312,35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024,14288,7136,9520,11904,7200,17936,4880,23968, + 4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400,23800,62504,29152,64608,35696,64608,49520,64608, + 58016,55552,66512,46496,66512,31664,66512,24048,64176,17952,61840,11856,57072,7136,52912,2976,47560,872,42208,-1232, + 35696,-1232,31840,68992,22032,80208,26960,80208,35584,73328,44208,80208,49136,80208,39328,68992,31840,68992,26176,2976, + 32464,2976,35672,7952,38880,12928,38880,22608,38880,32304,35672,37256,32464,42208,26176,42208,19888,42208,16680,37256, + 13472,32304,13472,22608,13472,12928,16704,7952,19936,2976,26176,2976,26176,-1232,16320,-1232,10328,5288,4336,11808, + 4336,22608,4336,33408,10304,39912,16272,46416,26176,46416,36080,46416,42056,39912,48032,33408,48032,22608,48032,11808, + 42056,5288,36080,-1232,26176,-1232,22288,53632,12304,69616,17232,69616,25856,58560,34480,69616,39408,69616,29424,53632, + 22288,53632,12192,58912,4080,58912,4080,63456,28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136, + 28736,4336,38464,4336,48192,4336,52168,9136,56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456, + 69440,58912,61376,58912,61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832, + 12192,25248,12192,58912,34912,68992,25104,80208,30032,80208,38656,73328,47280,80208,52208,80208,42400,68992,34912,68992, + 30816,45184,45440,45184,45440,4512,52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232, + 24016,-1232,16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864, + 17248,10624,19272,7568,21296,4512,26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624, + 30816,45184,21264,53632,11280,69616,16208,69616,24832,58560,33456,69616,38384,69616,28400,53632,21264,53632,29344,78560, + 31392,78560,32856,77072,34320,75584,34320,73616,34320,71504,32896,70080,31472,68656,29344,68656,27264,68656,25840,70080, + 24416,71504,24416,73616,24416,75584,25880,77072,27344,78560,29344,78560,45920,78560,47920,78560,49384,77072,50848,75584, + 50848,73616,50848,71504,49424,70080,48000,68656,45920,68656,43792,68656,42368,70080,40944,71504,40944,73616,40944,75584, + 42408,77072,43872,78560,45920,78560,25440,89424,50848,89424,50848,83136,25440,83136,25440,89424,12192,58912,4080,58912, + 4080,63456,28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336, + 52168,9136,56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248, + 61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,16032,66272, + 18080,66272,19544,64784,21008,63296,21008,61328,21008,59216,19584,57792,18160,56368,16032,56368,13952,56368,12528,57792, + 11104,59216,11104,61328,11104,63296,12568,64784,14032,66272,16032,66272,32608,66272,34608,66272,36072,64784,37536,63296, + 37536,61328,37536,59216,36112,57792,34688,56368,32608,56368,30480,56368,29056,57792,27632,59216,27632,61328,27632,63296, + 29096,64784,30560,66272,32608,66272,12128,77136,37536,77136,37536,70848,12128,70848,12128,77136,30816,45184,45440,45184, + 45440,4512,52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232, + 12944,3040,9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568, + 21296,4512,26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,12192,58912, + 4080,58912,4080,63456,28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336, + 48192,4336,52168,9136,56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912, + 61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912, + 29344,78560,31392,78560,32856,77072,34320,75584,34320,73616,34320,71504,32896,70080,31472,68656,29344,68656,27264,68656, + 25840,70080,24416,71504,24416,73616,24416,75584,25880,77072,27344,78560,29344,78560,45920,78560,47920,78560,49384,77072, + 50848,75584,50848,73616,50848,71504,49424,70080,48000,68656,45920,68656,43792,68656,42368,70080,40944,71504,40944,73616, + 40944,75584,42408,77072,43872,78560,45920,78560,42352,90448,50736,90448,39600,79232,34624,79232,42352,90448,16032,66272, + 18080,66272,19544,64784,21008,63296,21008,61328,21008,59216,19584,57792,18160,56368,16032,56368,13952,56368,12528,57792, + 11104,59216,11104,61328,11104,63296,12568,64784,14032,66272,16032,66272,32608,66272,34608,66272,36072,64784,37536,63296, + 37536,61328,37536,59216,36112,57792,34688,56368,32608,56368,30480,56368,29056,57792,27632,59216,27632,61328,27632,63296, + 29096,64784,30560,66272,32608,66272,29040,78160,37424,78160,26288,66944,21312,66944,29040,78160,30816,45184,45440,45184, + 45440,4512,52832,4512,52832,0,37616,0,37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232, + 12944,3040,9392,7312,9392,16448,9392,40624,2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568, + 21296,4512,26480,4512,31920,4512,34768,8504,37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,12192,58912, + 4080,58912,4080,63456,28896,63456,28896,58912,20784,58912,20784,26096,20784,13936,24760,9136,28736,4336,38464,4336, + 48192,4336,52168,9136,56144,13936,56144,26096,56144,58912,48032,58912,48032,63456,69440,63456,69440,58912,61376,58912, + 61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232,23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912, + 29344,78560,31392,78560,32856,77072,34320,75584,34320,73616,34320,71504,32896,70080,31472,68656,29344,68656,27264,68656, + 25840,70080,24416,71504,24416,73616,24416,75584,25880,77072,27344,78560,29344,78560,45920,78560,47920,78560,49384,77072, + 50848,75584,50848,73616,50848,71504,49424,70080,48000,68656,45920,68656,43792,68656,42368,70080,40944,71504,40944,73616, + 40944,75584,42408,77072,43872,78560,45920,78560,33888,79232,24080,90448,29008,90448,37632,83568,46256,90448,51184,90448, + 41376,79232,33888,79232,16032,66272,18080,66272,19544,64784,21008,63296,21008,61328,21008,59216,19584,57792,18160,56368, + 16032,56368,13952,56368,12528,57792,11104,59216,11104,61328,11104,63296,12568,64784,14032,66272,16032,66272,32608,66272, + 34608,66272,36072,64784,37536,63296,37536,61328,37536,59216,36112,57792,34688,56368,32608,56368,30480,56368,29056,57792, + 27632,59216,27632,61328,27632,63296,29096,64784,30560,66272,32608,66272,20576,66944,10768,78160,15696,78160,24320,71280, + 32944,78160,37872,78160,28064,66944,20576,66944,30816,45184,45440,45184,45440,4512,52832,4512,52832,0,37616,0, + 37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624, + 2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568,21296,4512,26480,4512,31920,4512,34768,8504, + 37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,29344,78560,31392,78560,32856,77072,34320,75584,34320,73616, + 34320,71504,32896,70080,31472,68656,29344,68656,27264,68656,25840,70080,24416,71504,24416,73616,24416,75584,25880,77072, + 27344,78560,29344,78560,45920,78560,47920,78560,49384,77072,50848,75584,50848,73616,50848,71504,49424,70080,48000,68656, + 45920,68656,43792,68656,42368,70080,40944,71504,40944,73616,40944,75584,42408,77072,43872,78560,45920,78560,32608,90448, + 40384,79232,35408,79232,24272,90448,32608,90448,12192,58912,4080,58912,4080,63456,28896,63456,28896,58912,20784,58912, + 20784,26096,20784,13936,24760,9136,28736,4336,38464,4336,48192,4336,52168,9136,56144,13936,56144,26096,56144,58912, + 48032,58912,48032,63456,69440,63456,69440,58912,61376,58912,61376,25248,61376,10752,55808,4760,50240,-1232,36896,-1232, + 23552,-1232,17872,4800,12192,10832,12192,25248,12192,58912,16032,66272,18080,66272,19544,64784,21008,63296,21008,61328, + 21008,59216,19584,57792,18160,56368,16032,56368,13952,56368,12528,57792,11104,59216,11104,61328,11104,63296,12568,64784, + 14032,66272,16032,66272,32608,66272,34608,66272,36072,64784,37536,63296,37536,61328,37536,59216,36112,57792,34688,56368, + 32608,56368,30480,56368,29056,57792,27632,59216,27632,61328,27632,63296,29096,64784,30560,66272,32608,66272,19296,78160, + 27072,66944,22096,66944,10960,78160,19296,78160,30816,45184,45440,45184,45440,4512,52832,4512,52832,0,37616,0, + 37616,7984,35440,3488,32000,1128,28560,-1232,24016,-1232,16496,-1232,12944,3040,9392,7312,9392,16448,9392,40624, + 2336,40624,2336,45184,17248,45184,17248,18864,17248,10624,19272,7568,21296,4512,26480,4512,31920,4512,34768,8504, + 37616,12496,37616,20096,37616,40624,30816,40624,30816,45184,4336,23424,38032,23424,38032,23760,38032,32896,34592,37568, + 31152,42208,24432,42208,19296,42208,15984,39520,12704,36800,11392,31488,5104,31488,6976,38928,11984,42672,17040,46416, + 25248,46416,35152,46416,41136,39872,47168,33360,47168,22560,47168,11856,41264,5312,35360,-1232,25760,-1232,15520,-1232, + 10032,5104,4544,11392,4336,23424,13552,18912,13808,11008,16912,6976,19968,2976,25760,2976,31152,2976,34256,7016, + 37360,11056,38032,18912,13552,18912,23200,78560,25248,78560,26712,77072,28176,75584,28176,73616,28176,71504,26752,70080, + 25328,68656,23200,68656,21120,68656,19696,70080,18272,71504,18272,73616,18272,75584,19736,77072,21200,78560,23200,78560, + 39776,78560,41776,78560,43240,77072,44704,75584,44704,73616,44704,71504,43280,70080,41856,68656,39776,68656,37648,68656, + 36224,70080,34800,71504,34800,73616,34800,75584,36264,77072,37728,78560,39776,78560,19296,89424,44704,89424,44704,83136, + 19296,83136,19296,89424,17424,22992,40720,22992,29072,53168,17424,22992,-512,0,-512,4512,5056,4512,27664,63456, + 34800,63456,57456,4512,63712,4512,63712,0,40624,0,40624,4512,47680,4512,42368,18448,15680,18448,10368,4512, + 17344,4512,17344,0,-512,0,16032,66272,18080,66272,19544,64784,21008,63296,21008,61328,21008,59216,19584,57792, + 18160,56368,16032,56368,13952,56368,12528,57792,11104,59216,11104,61328,11104,63296,12568,64784,14032,66272,16032,66272, + 32608,66272,34608,66272,36072,64784,37536,63296,37536,61328,37536,59216,36112,57792,34688,56368,32608,56368,30480,56368, + 29056,57792,27632,59216,27632,61328,27632,63296,29096,64784,30560,66272,32608,66272,12128,77136,37536,77136,37536,70848, + 12128,70848,12128,77136,34640,14192,34640,23760,24560,23760,18736,23760,15888,21248,13040,18736,13040,13552,13040,8848, + 15936,6080,18832,3312,23760,3312,28640,3312,31640,6328,34640,9344,34640,14192,42464,28224,42464,4512,49424,4512, + 49424,0,34640,0,34640,4880,32048,1744,28648,256,25248,-1232,20704,-1232,13168,-1232,8752,2760,4336,6752, + 4336,13552,4336,20576,9392,24440,14448,28304,23680,28304,34640,28304,34640,31408,34640,36544,31512,39376,28384,42208, + 22736,42208,18064,42208,15304,40080,12544,37952,11856,33792,7824,33792,7824,42928,11904,44672,15752,45544,19600,46416, + 23248,46416,32640,46416,37552,41760,42464,37104,42464,28224,19296,89424,44704,89424,44704,83136,19296,83136,19296,89424, + 31488,78640,33488,78640,34976,77152,36464,75664,36464,73712,36464,71584,35040,70160,33616,68736,31488,68736,29360,68736, + 27936,70160,26512,71584,26512,73712,26512,75664,28000,77152,29488,78640,31488,78640,17424,22992,40720,22992,29072,53168, + 17424,22992,-512,0,-512,4512,5056,4512,27664,63456,34800,63456,57456,4512,63712,4512,63712,0,40624,0, + 40624,4512,47680,4512,42368,18448,15680,18448,10368,4512,17344,4512,17344,0,-512,0,12128,77136,37536,77136, + 37536,70848,12128,70848,12128,77136,24320,66352,26320,66352,27808,64864,29296,63376,29296,61424,29296,59296,27872,57872, + 26448,56448,24320,56448,22192,56448,20768,57872,19344,59296,19344,61424,19344,63376,20832,64864,22320,66352,24320,66352, + 34640,14192,34640,23760,24560,23760,18736,23760,15888,21248,13040,18736,13040,13552,13040,8848,15936,6080,18832,3312, + 23760,3312,28640,3312,31640,6328,34640,9344,34640,14192,42464,28224,42464,4512,49424,4512,49424,0,34640,0, + 34640,4880,32048,1744,28648,256,25248,-1232,20704,-1232,13168,-1232,8752,2760,4336,6752,4336,13552,4336,20576, + 9392,24440,14448,28304,23680,28304,34640,28304,34640,31408,34640,36544,31512,39376,28384,42208,22736,42208,18064,42208, + 15304,40080,12544,37952,11856,33792,7824,33792,7824,42928,11904,44672,15752,45544,19600,46416,23248,46416,32640,46416, + 37552,41760,42464,37104,42464,28224,38752,78160,64160,78160,64160,71872,38752,71872,38752,78160,18112,22992,38880,22992, + 38880,58912,34640,58912,18112,22992,30816,0,30816,4512,38880,4512,38880,18448,16016,18448,9568,4512,16528,4512, + 16528,0,-1488,0,-1488,4512,4080,4512,29152,58912,20016,58912,20016,63456,81904,63456,81904,49344,76672,49344, + 76672,58224,47424,58224,47424,36976,68336,36976,68336,44928,73568,44928,73568,23840,68336,23840,68336,31792,47424,31792, + 47424,5232,77392,5232,77392,14112,82624,14112,82624,0,30816,0,26464,64848,51872,64848,51872,58560,26464,58560, + 26464,64848,34640,14192,34640,23760,24560,23760,18736,23760,15888,21248,13040,18736,13040,13552,13040,8848,15936,6080, + 18832,3312,23760,3312,28640,3312,31640,6328,34640,9344,34640,14192,39264,6368,35744,2512,31448,640,27152,-1232, + 21840,-1232,13472,-1232,8904,2632,4336,6496,4336,13552,4336,20576,9416,24440,14496,28304,23680,28304,34640,28304, + 34640,31408,34640,36512,31576,39360,28512,42208,23072,42208,18144,42208,15344,40104,12544,38000,11856,33792,7824,33792, + 7824,42928,11904,44672,15752,45544,19600,46416,23248,46416,29248,46416,33344,44568,37440,42720,39776,38880,42928,42624, + 47008,44520,51088,46416,56064,46416,66304,46416,71784,40080,77264,33744,77440,21760,43776,21760,43776,21424,43776,12288, + 47200,7632,50624,2976,57376,2976,62512,2976,65808,5672,69104,8368,70416,13680,76672,13680,74848,6240,69784,2504, + 64720,-1232,56560,-1232,51376,-1232,46984,704,42592,2640,39264,6368,68256,26272,68000,34176,64920,38192,61840,42208, + 56064,42208,50656,42208,47536,38168,44416,34128,43776,26272,68256,26272,55712,44496,54224,52448,49512,56248,44800,60048, + 36384,60048,25408,60048,20016,52992,14624,45936,14624,31664,14624,17680,20192,10496,25760,3312,36544,3312,41360,3312, + 45736,4504,50112,5696,54064,8080,54064,13600,35184,13600,35184,18144,54064,18144,54064,24432,42112,24432,42112,28992, + 62688,28992,62688,18144,71232,18144,71232,13600,62688,13600,62688,5312,57040,2048,50512,408,43984,-1232,36544,-1232, + 22192,-1232,13536,7760,4880,16752,4880,31664,4880,46704,13552,55656,22224,64608,36896,64608,42336,64608,48136,63352, + 53936,62096,60480,59536,60480,44496,55712,44496,37872,20352,27632,20352,27632,24912,37872,24912,37872,32976,34768,37232, + 31616,41520,25664,41520,19632,41520,16552,36760,13472,32000,13472,22608,13472,13264,16552,8456,19632,3648,25664,3648, + 31616,3648,34744,7920,37872,12192,37872,20352,45680,20352,45680,976,45680,-8752,40328,-14048,34976,-19344,25072,-19344, + 20608,-19344,16528,-18536,12448,-17728,8720,-16112,8720,-6624,12800,-6624,13552,-11056,16400,-13096,19248,-15136,24560,-15136, + 31456,-15136,34664,-11248,37872,-7360,37872,976,37872,7056,35568,2800,32024,784,28480,-1232,23248,-1232,14912,-1232, + 9624,5376,4336,11984,4336,22608,4336,33232,9608,39824,14880,46416,23248,46416,28480,46416,32024,44392,35568,42368, + 37872,38128,37872,45184,53168,45184,53168,40624,45680,40624,45680,24912,53168,24912,53168,20352,45680,20352,32864,68992, + 23056,80208,27984,80208,36608,73328,45232,80208,50160,80208,40352,68992,32864,68992,55712,44496,54224,52448,49512,56248, + 44800,60048,36384,60048,25408,60048,20016,52992,14624,45936,14624,31664,14624,17680,20192,10496,25760,3312,36544,3312, + 41360,3312,45736,4504,50112,5696,54064,8080,54064,24432,42112,24432,42112,28992,62688,28992,62688,5312,57040,2048, + 50512,408,43984,-1232,36544,-1232,22192,-1232,13536,7760,4880,16752,4880,31664,4880,46704,13552,55656,22224,64608, + 36896,64608,42336,64608,48136,63352,53936,62096,60480,59536,60480,44496,55712,44496,22288,53632,12304,69616,17232,69616, + 25856,58560,34480,69616,39408,69616,29424,53632,22288,53632,45680,40624,45680,976,45680,-8752,40328,-14048,34976,-19344, + 25072,-19344,20608,-19344,16528,-18536,12448,-17728,8720,-16112,8720,-6624,12800,-6624,13552,-11056,16400,-13096,19248,-15136, + 24560,-15136,31456,-15136,34664,-11248,37872,-7360,37872,976,37872,7056,35568,2800,32024,784,28480,-1232,23248,-1232, + 14912,-1232,9624,5376,4336,11984,4336,22608,4336,33232,9608,39824,14880,46416,23248,46416,28480,46416,32024,44392, + 35568,42368,37872,38128,37872,45184,53168,45184,53168,40624,45680,40624,37872,24816,37872,32944,34744,37232,31616,41520, + 25664,41520,19632,41520,16552,36760,13472,32000,13472,22608,13472,13264,16552,8456,19632,3648,25664,3648,31616,3648, + 34744,7920,37872,12192,37872,20352,37872,24816,31840,68992,22032,80208,26960,80208,35584,73328,44208,80208,49136,80208, + 39328,68992,31840,68992,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,29584,63456,29584,58912, + 21504,58912,21504,34896,48832,58912,41952,58912,41952,63456,63024,63456,63024,58912,55888,58912,28640,34976,59120,4512, + 66336,4512,66336,0,51600,0,21504,30128,21504,4512,29584,4512,29584,0,4800,0,10336,72064,528,83280, + 5456,83280,14080,76400,22704,83280,27632,83280,17824,72064,10336,72064,24912,0,2976,0,2976,4512,10032,4512, + 10032,61632,2512,61632,2512,66128,17856,66128,17856,23072,36896,40624,30384,40624,30384,45184,50832,45184,50832,40624, + 43088,40624,29664,28224,46832,4512,53344,4512,53344,0,31072,0,31072,4512,37520,4512,24016,23072,17856,17344, + 17856,4512,24912,4512,24912,0,33936,-1024,37920,-1024,37888,-1104,34176,-6336,34176,-8336,34176,-10288,35600,-11480, + 37024,-12672,39408,-12672,40560,-12672,41792,-12392,43024,-12112,44304,-11568,44256,-16960,42720,-17344,41296,-17536,39872,-17728, + 38512,-17728,33712,-17728,31080,-15840,28448,-13952,28448,-10496,28448,-8416,29720,-6184,30992,-3952,33936,-1024,35696,3312, + 46112,3312,51424,10472,56736,17632,56736,31664,56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888, + 14624,45728,14624,31664,14624,17632,19936,10472,25248,3312,35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024, + 14288,7136,9520,11904,7200,17936,4880,23968,4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400, + 23800,62504,29152,64608,35696,64608,49520,64608,58016,55552,66512,46496,66512,31664,66512,24048,64176,17952,61840,11856, + 57072,7136,52912,2976,47560,872,42208,-1232,35696,-1232,23696,-1024,27680,-1024,27648,-1104,23936,-6336,23936,-8336, + 23936,-10288,25360,-11480,26784,-12672,29168,-12672,30320,-12672,31552,-12392,32784,-12112,34064,-11568,34016,-16960,32480,-17344, + 31056,-17536,29632,-17728,28272,-17728,23472,-17728,20840,-15840,18208,-13952,18208,-10496,18208,-8416,19480,-6184,20752,-3952, + 23696,-1024,26176,2976,32464,2976,35672,7952,38880,12928,38880,22608,38880,32304,35672,37256,32464,42208,26176,42208, + 19888,42208,16680,37256,13472,32304,13472,22608,13472,12928,16704,7952,19936,2976,26176,2976,26176,-1232,16320,-1232, + 10328,5288,4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416,36080,46416,42056,39912,48032,33408, + 48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,23392,78160,48800,78160,48800,71872,23392,71872,23392,78160, + 33936,-1024,37920,-1024,37888,-1104,34176,-6336,34176,-8336,34176,-10288,35600,-11480,37024,-12672,39408,-12672,40560,-12672, + 41792,-12392,43024,-12112,44304,-11568,44256,-16960,42720,-17344,41296,-17536,39872,-17728,38512,-17728,33712,-17728,31080,-15840, + 28448,-13952,28448,-10496,28448,-8416,29720,-6184,30992,-3952,33936,-1024,35696,3312,46112,3312,51424,10472,56736,17632, + 56736,31664,56736,45728,51424,52888,46112,60048,35696,60048,25248,60048,19936,52888,14624,45728,14624,31664,14624,17632, + 19936,10472,25248,3312,35696,3312,35696,-1232,29248,-1232,23824,896,18400,3024,14288,7136,9520,11904,7200,17936, + 4880,23968,4880,31664,4880,39360,7200,45416,9520,51472,14288,56224,18448,60400,23800,62504,29152,64608,35696,64608, + 49520,64608,58016,55552,66512,46496,66512,31664,66512,24048,64176,17952,61840,11856,57072,7136,52912,2976,47560,872, + 42208,-1232,35696,-1232,13152,64848,38560,64848,38560,58560,13152,58560,13152,64848,23696,-1024,27680,-1024,27648,-1104, + 23936,-6336,23936,-8336,23936,-10288,25360,-11480,26784,-12672,29168,-12672,30320,-12672,31552,-12392,32784,-12112,34064,-11568, + 34016,-16960,32480,-17344,31056,-17536,29632,-17728,28272,-17728,23472,-17728,20840,-15840,18208,-13952,18208,-10496,18208,-8416, + 19480,-6184,20752,-3952,23696,-1024,26176,2976,32464,2976,35672,7952,38880,12928,38880,22608,38880,32304,35672,37256, + 32464,42208,26176,42208,19888,42208,16680,37256,13472,32304,13472,22608,13472,12928,16704,7952,19936,2976,26176,2976, + 26176,-1232,16320,-1232,10328,5288,4336,11808,4336,22608,4336,33408,10304,39912,16272,46416,26176,46416,36080,46416, + 42056,39912,48032,33408,48032,22608,48032,11808,42056,5288,36080,-1232,26176,-1232,21600,68992,11792,80208,16720,80208, + 25344,73328,33968,80208,38896,80208,29088,68992,21600,68992,22448,36208,18400,36208,18400,40544,33024,58224,10624,58224, + 10624,48752,5392,48752,5392,63456,42496,63456,42496,58144,26816,39232,30176,38928,38000,37696,42336,32560,46624,27456, + 46624,19296,46624,9344,40624,4032,34688,-1232,23456,-1232,18480,-1232,13776,-48,9008,1152,4336,3568,4336,17344, + 9088,17344,9520,10496,13216,6968,16912,3440,23632,3440,30128,3440,33920,7696,37648,11904,37648,19216,37648,27584, + 33792,31920,29920,36208,22448,36208,19216,53632,9232,69616,14160,69616,22784,58560,31408,69616,36336,69616,26352,53632, + 19216,53632,22448,17984,18400,17984,18400,22320,32432,40624,10032,40624,10032,32816,5520,32816,5520,45184,42496,45184, + 42496,41520,26816,20992,30176,20704,38000,19472,42336,14320,46624,9216,46624,1056,46624,-8880,40624,-14192,34688,-19472, + 23456,-19472,18480,-19472,13776,-18272,9008,-17088,4336,-14656,4336,-896,9088,-896,9520,-7728,13216,-11256,16912,-14784, + 23632,-14784,30128,-14784,33920,-10544,37648,-6336,37648,976,37648,9344,33792,13680,29920,17984,22448,17984,10624,40624, + 3232,40624,3232,45184,18448,45184,18448,-4416,18448,-11392,14304,-15368,10160,-19344,2896,-19344,-176,-19344,-2960,-18640, + -5744,-17936,-8368,-16528,-8368,-7232,-4336,-7232,-4032,-11312,-2232,-13224,-432,-15136,3056,-15136,6928,-15136,8776,-12520, + 10624,-9904,10624,-4416,10624,40624,10000,53632,16,69616,4944,69616,13568,58560,22192,69616,27120,69616,17136,53632, + 10000,53632,73536,0,73536,3056,113072,58224,80256,58224,80256,48752,75024,48752,75024,63456,125184,63456,125184,60400, + 85648,5232,121520,5232,121520,14112,126704,14112,126704,0,73536,0,21504,4512,29408,4512,41776,4512,48384,11560, + 54992,18608,54992,31792,54992,44960,48408,51936,41824,58912,29408,58912,21504,58912,21504,4512,4800,0,4800,4512, + 12880,4512,12880,58912,4800,58912,4800,63456,30048,63456,46448,63456,55608,55080,64768,46704,64768,31792,64768,16832, + 55592,8416,46416,0,30048,0,4800,0,73120,0,73120,3648,101424,40624,79024,40624,79024,32816,74512,32816, + 74512,45184,111488,45184,111488,41520,83184,4512,107760,4512,107760,12704,112304,12704,112304,0,73120,0,21504,4512, + 29408,4512,41776,4512,48384,11560,54992,18608,54992,31792,54992,44960,48408,51936,41824,58912,29408,58912,21504,58912, + 21504,4512,4800,0,4800,4512,12880,4512,12880,58912,4800,58912,4800,63456,30048,63456,46448,63456,55608,55080, + 64768,46704,64768,31792,64768,16832,55592,8416,46416,0,30048,0,4800,0,58784,0,58784,3648,87088,40624, + 64688,40624,64688,32816,60176,32816,60176,45184,97152,45184,97152,41520,68848,4512,93424,4512,93424,12704,97968,12704, + 97968,0,58784,0,45680,4512,53168,4512,53168,0,37872,0,37872,7056,35568,2800,32024,784,28480,-1232, + 23248,-1232,14912,-1232,9624,5376,4336,11984,4336,22608,4336,33232,9608,39824,14880,46416,23248,46416,28480,46416, + 32024,44392,35568,42368,37872,38128,37872,61632,30480,61632,30480,66128,45680,66128,45680,4512,37872,20352,37872,24816, + 37872,32944,34744,37232,31616,41520,25664,41520,19632,41520,16552,36760,13472,32000,13472,22608,13472,13264,16552,8456, + 19632,3648,25664,3648,31616,3648,34744,7920,37872,12192,37872,20352 ); + + DejaVuSerif_glyphAdvances:array[0..467] of Integer = ( + 27664,34976,40032,72928,55376,82704,77472,23920,33952,33952,43520,72928,27664,29408,27664,29328,55376,55376,55376,55376, + 55376,55376,55376,55376,55376,55376,29328,29328,72928,72928,72928,46672,87040,62864,63968,66592,69792,63536,60400,69536, + 75904,34384,34896,65024,57808,89120,76160,71360,58560,71360,65536,59632,58048,73360,62864,89456,61968,57456,60480,33952, + 29328,33952,72928,43520,43520,51888,55712,48752,55712,51504,32208,55712,56064,27840,26992,52736,27840,82528,56064,52400, + 55712,55712,41600,44672,34976,56064,49168,74496,49088,49168,45856,55376,29328,55376,72928,52240,52240,52240,52240,52240, + 52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240, + 52240,52240,52240,52240,52240,52240,52240,52240,27664,34976,55376,55376,55376,55376,29328,43520,43520,87040,41360,53248, + 72928,29408,87040,43520,43520,72928,34896,34896,43520,56560,55376,27664,43520,34896,40928,53248,84368,84368,84368,46672, + 62864,62864,62864,62864,62864,62864,87120,66592,63536,63536,63536,63536,34384,34384,34384,34384,70256,76160,71360,71360, + 71360,71360,71360,72928,71360,73360,73360,73360,73360,57456,58816,58144,51888,51888,51888,51888,51888,51888,81808,48752, + 51504,51504,51504,51504,27840,27840,27840,27840,52400,56064,52400,52400,52400,52400,52400,72928,52400,56064,56064,56064, + 56064,49168,55712,49168,62864,51888,62864,51888,62864,51888,66592,48752,66592,48752,66592,48752,66592,48752,69792,55712, + 70256,55712,63536,51504,63536,51504,63536,51504,63536,51504,63536,51504,69536,55712,69536,55712,69536,55712,69536,55712, + 75904,56064,75904,56064,34384,27840,34384,27840,34384,27840,34384,27840,34384,27840,69744,46416,34896,26992,65024,52736, + 52736,57808,27840,57808,27840,57808,27840,57808,27840,58224,28224,76160,56064,76160,56064,76160,56064,75392,73360,56064, + 71360,52400,71360,52400,71360,52400,98976,86064,65536,41600,65536,41600,65536,41600,59632,44672,59632,44672,59632,44672, + 59632,44672,58048,34976,58048,34976,58048,34976,73360,56064,73360,56064,73360,56064,73360,56064,73360,56064,73360,56064, + 89456,74496,57456,49168,57456,60480,45856,60480,45856,60480,45856,32208,55712,63968,63968,55712,63968,55712,66592,66592, + 48752,70256,69792,63968,55712,52400,63536,71360,54224,60400,32208,69536,61968,81136,34384,34384,65024,52736,27840,55168, + 82528,76160,56064,71360,71360,52400,90480,70256,58560,55712,65536,59632,44672,61536,28224,34976,58048,34976,58048,73360, + 56064,72160,66128,64256,57680,60480,45856,49136,49136,49136,49136,55376,59760,49136,46672,55248,25664,42848,39952,25664, + 130256,115648,101568,92688,84784,54832,111056,103152,83040,62864,51888,34384,27840,71360,52400,73360,56064,73360,56064,73360, + 56064,73360,56064,73360,56064,51504,62864,51888,62864,51888,87120,81808,73776,55712,69536,55712,65024,52736,71360,52400, + 71360,52400,49136,49136,27840,130256,115648,101568 ); + + DejaVuSerif_descender_height:Integer = -21424; + DejaVuSerif_font_height:Integer = 91776; + DejaVuSerif_glyphCount:Integer = 468; + DejaVuSerif_characterMap:array[0..499] of Smallint = ( + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7, + 8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, + 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, + 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67, + 68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87, + 88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107, + 108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, + 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147, + 148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167, + 168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187, + 188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, + 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227, + 228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247, + 248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267, + 268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287, + 288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307, + 308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327, + 328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347, + 348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367, + 368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387, + 388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407, + 408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427, + 428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447, + 448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467 ); diff --git a/source/packages/ultibounits/src/vgshapes.pas b/source/packages/ultibounits/src/vgshapes.pas new file mode 100644 index 0000000..e6bc360 --- /dev/null +++ b/source/packages/ultibounits/src/vgshapes.pas @@ -0,0 +1,1880 @@ +{VGShapes Library: + + Ported to FreePascal by Garry Wood + + From C source available at https://github.com/ajstarks/openvg + + Original Copyright: + + Copyright (C) 2012 Anthony Starks + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE + AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + The images in this repository are Licensed under + the Creative Commons Attribution 3.0 license as described in + http://creativecommons.org/licenses/by/3.0/us/ + +} + +unit VGShapes; + +{$mode delphi} {Default to Delphi compatible syntax} +{$H+} {Default to AnsiString} +{$inline on} {Allow use of Inline procedures} + +interface + +uses GlobalConst,SysUtils,Classes,EGL,DispmanX,OpenVG,VC4,JPEGLib,Jerror,JDataSrc,JdAPImin,JdAPIstd; + +{==============================================================================} +const + {Font Information} + VGSHAPES_MAXFONTPATH = 500; + +{==============================================================================} +type + {Font Information} + PVGShapesFontInfo = ^TVGShapesFontInfo; + TVGShapesFontInfo = record + CharacterMap:PSmallint; + GlyphAdvances:PInteger; + Count:Integer; + DescenderHeight:Integer; + FontHeight:Integer; + Glyphs:array[0..VGSHAPES_MAXFONTPATH - 1] of VGPath; + end; + + {Color Information} + PVGShapesColor = ^TVGShapesColor; + TVGShapesColor = array[0..3] of VGfloat; + +{==============================================================================} +var + {Font Information} + VGShapesSansTypeface:TVGShapesFontInfo; + VGShapesSerifTypeface:TVGShapesFontInfo; + VGShapesMonoTypeface:TVGShapesFontInfo; + +{==============================================================================} +{Library Functions} +{Initialization} +procedure VGShapesInitWindowSize(x,y:Integer;w,h:LongWord); +procedure VGShapesInit(var w,h:Integer); +procedure VGShapesFinish; + +{Font} +function VGShapesLoadFont(Points,PointIndices:PInteger;Instructions:PByte;InstructionIndices,InstructionCounts,adv:PInteger;cmap:PSmallInt;ng:Integer):TVGShapesFontInfo; +procedure VGShapesUnloadFont(glyphs:PVGPath;n:Integer); + +{Image} +procedure VGShapesMakeImage(x,y:VGfloat;w,h:Integer;data:PVGubyte); +procedure VGShapesImage(x,y:VGfloat;w,h:Integer;const filename:String); +function VGShapesCreateImageFromJpeg(const filename:String):VGImage; + +{Transformation} +procedure VGShapesTranslate(x,y:VGfloat); inline; +procedure VGShapesRotate(r:VGfloat); inline; +procedure VGShapesShear(x,y:VGfloat); inline; +procedure VGShapesScale(x,y:VGfloat); inline; + +{Style} +procedure VGShapesSetFill(const color:TVGShapesColor); +procedure VGShapesSetStroke(const color:TVGShapesColor); +procedure VGShapesStrokeWidth(width:VGfloat); + +{Color} +procedure VGShapesRGBA(r,g,b:LongWord;a:VGfloat;var color:TVGShapesColor); +procedure VGShapesRGB(r,g,b:LongWord;var color:TVGShapesColor); inline; + +procedure VGShapesStroke(r,g,b:LongWord;a:VGfloat); +procedure VGShapesFill(r,g,b:LongWord;a:VGfloat); +procedure VGShapesFillLinearGradient(x1,y1,x2,y2:VGfloat;stops:PVGfloat;ns:Integer); +procedure VGShapesFillRadialGradient(cx,cy,fx,fy,radius:VGfloat;stops:PVGfloat;ns:Integer); +procedure VGShapesClipRect(x,y,w,h:VGint); +procedure VGShapesClipEnd; inline; + +{Text} +procedure VGShapesText(x,y:VGfloat;const s:UTF8String;const f:TVGShapesFontInfo;pointsize:Integer); +function VGShapesTextWidth(const s:UTF8String;const f:TVGShapesFontInfo;pointsize:Integer):VGfloat; +procedure VGShapesTextMid(x,y:VGfloat;const s:UTF8String;const f:TVGShapesFontInfo;pointsize:Integer); +procedure VGShapesTextEnd(x,y:VGfloat;const s:UTF8String;const f:TVGShapesFontInfo;pointsize:Integer); +function VGShapesTextHeight(const f:TVGShapesFontInfo;pointsize:Integer):VGfloat; +function VGShapesTextDepth(const f:TVGShapesFontInfo;pointsize:Integer):VGfloat; + +{Shape} +procedure VGShapesCbezier(sx,sy,cx,cy,px,py,ex,ey:VGfloat); +procedure VGShapesQbezier(sx,sy,cx,cy,ex,ey:VGfloat); +procedure VGShapesPolygon(x,y:PVGfloat;n:VGint); +procedure VGShapesPolyline(x,y:PVGfloat;n:VGint); +procedure VGShapesRect(x,y,w,h:VGfloat); +procedure VGShapesLine(x1,y1,x2,y2:VGfloat); +procedure VGShapesRoundrect(x,y,w,h,rw,rh:VGfloat); +procedure VGShapesEllipse(x,y,w,h:VGfloat); +procedure VGShapesCircle(x,y,r:VGfloat); inline; +procedure VGShapesArc(x,y,w,h,sa,aext:VGfloat); + +{Rendering} +procedure VGShapesStart(width,height:Integer); +function VGShapesEnd:Boolean; +function VGShapesSaveEnd(const filename:String):Boolean; +procedure VGShapesBackground(r,g,b:LongWord); +procedure VGShapesBackgroundRGB(r,g,b:LongWord;a:VGfloat); +procedure VGShapesWindowClear; inline; +procedure VGShapesAreaClear(x,y,w,h:LongWord); inline; +procedure VGShapesWindowOpacity(a:LongWord); +procedure VGShapesWindowPosition(x,y:Integer); + +{Outlined Shapes} +procedure VGShapesCbezierOutline(sx,sy,cx,cy,px,py,ex,ey:VGfloat); +procedure VGShapesQbezierOutline(sx,sy,cx,cy,ex,ey:VGfloat); +procedure VGShapesRectOutline(x,y,w,h:VGfloat); +procedure VGShapesRoundrectOutline(x,y,w,h,rw,rh:VGfloat); +procedure VGShapesEllipseOutline(x,y,w,h:VGfloat); +procedure VGShapesCircleOutline(x,y,r:VGfloat); inline; +procedure VGShapesArcOutline(x,y,w,h,sa,aext:VGfloat); + +{==============================================================================} +{==============================================================================} + +implementation + +{==============================================================================} +{==============================================================================} +type + {EGL State Type} + PEGLState = ^TEGLState; + TEGLState = record + {Screen dimentions} + ScreenWidth:LongWord; + ScreenHeight:LongWord; + {Window dimentions} + WindowX:LongInt; + WindowY:LongInt; + WindowWidth:LongWord; + WindowHeight:LongWord; + {DispmanX window} + Element:DISPMANX_ELEMENT_HANDLE_T; + {EGL data} + Display:EGLDisplay; + Surface:EGLSurface; + Context:EGLContext; + {EGL config} + Alpha:VC_DISPMANX_ALPHA_T; + NativeWindow:EGL_DISPMANX_WINDOW_T; + AttributeList:array[0..10] of EGLint; + end; + +{==============================================================================} +{==============================================================================} +var + {Global Variables} + VGShapesState:TEGLState; + + VGShapesInitX:Integer = 0; {Initial Window Position and Size} + VGShapesInitY:Integer = 0; + VGShapesInitW:LongWord = 0; + VGShapesInitH:LongWord = 0; + + VGShapesInitialized:Boolean; + +{==============================================================================} +{Included Fonts} +{$INCLUDE .\vgfonts\DejaVuSans.inc} +{$INCLUDE .\vgfonts\DejaVuSansMono.inc} +{$INCLUDE .\vgfonts\DejaVuSerif.inc} + +{==============================================================================} +{==============================================================================} +{Internal Functions} +procedure SetWindowParams(State:PEGLState;X,Y:Integer;SourceRect,DestRect:PVC_RECT_T); +{SetWindowParams sets the window's position, adjusting if need be to prevent + it from going fully off screen. Also sets the dispman rects for displaying} +var + dx:LongWord; + dy:LongWord; + w:LongWord; + h:LongWord; + sx:LongWord; + sy:LongWord; +begin + {} + {Check State} + if State = nil then Exit; + + {Set source & destination rectangles so that the image is clipped if it goes off screen (else dispman won't show it properly)} + if X < (1 - Integer(State.WindowWidth)) then {Too far off left} + begin + X:=1; + dx:=0; + sx:=State.WindowWidth - 1; + w:=1; + end + else if X < 0 then {Part of left is off} + begin + dx:=0; + sx:=-X; + w:=State.WindowWidth - sx; + end + else if X < (State.ScreenWidth - State.WindowWidth) then + begin + dx:=X; + sx:=0; + w:=State.WindowWidth; + end + else if X < State.ScreenWidth then {Part of right is off} + begin + dx:=X; + sx:=0; + w:=State.ScreenWidth - X; + end + else {Too far off right} + begin + X:=State.ScreenWidth - 1; + dx:=State.ScreenWidth - 1; + sx:=0; + w:=1; + end; + + if Y < (1 - Integer(State.WindowHeight)) then {Too far off top} + begin + Y:=1 - Integer(State.WindowHeight); + dy:=0; + sy:=State.WindowHeight - 1; + h:=1; + end + else if Y < 0 then {Part of top is off} + begin + dy:=0; + sy:=-Y; + h:=State.WindowHeight - sy; + end + else if Y < (State.ScreenHeight - State.WindowHeight) then + begin + dy:=Y; + sy:=0; + h:=State.WindowHeight; + end + else if Y < State.ScreenHeight then {Part of bottom is off} + begin + dy:=Y; + sy:=0; + h:=State.ScreenHeight - Y; + end + else {Wholly off bottom} + begin + Y:=State.ScreenHeight - 1; + dy:=State.ScreenHeight - 1; + sy:=0; + h:=1; + end; + + {Update Position} + State.WindowX:=X; + State.WindowY:=Y; + + vc_dispmanx_rect_set(DestRect,dx,dy,w,h); + vc_dispmanx_rect_set(SourceRect,sx shl 16,sy shl 16,w shl 16,h shl 16); +end; + +{==============================================================================} + +function eglInit(State:PEGLState):Boolean; +{eglInit sets the display, context and screen information, state holds the display information} +var + Config:EGLConfig; + ConfigCount:EGLint; + EGLResult:EGLBoolean; + + DestRect:VC_RECT_T; + SourceRect:VC_RECT_T; + DispmanDisplay:DISPMANX_DISPLAY_HANDLE_T; + DispmanUpdate:DISPMANX_UPDATE_HANDLE_T; + DispmanElement:DISPMANX_ELEMENT_HANDLE_T; +begin + {} + Result:=False; + + {Check State} + if State = nil then Exit; + + {Setup Defaults} + DispmanDisplay:=DISPMANX_NO_HANDLE; + DispmanUpdate:=DISPMANX_NO_HANDLE; + DispmanElement:=DISPMANX_NO_HANDLE; + State.Display:=EGL_NO_DISPLAY; + State.Surface:=EGL_NO_SURFACE; + State.Context:=EGL_NO_CONTEXT; + + {Setup Alpha} + State.Alpha.flags:=DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS; + State.Alpha.opacity:=255; + State.Alpha.mask:=0; + + {Setup Attribute List} + State.AttributeList[0]:=EGL_RED_SIZE; + State.AttributeList[1]:=8; + State.AttributeList[2]:=EGL_GREEN_SIZE; + State.AttributeList[3]:=8; + State.AttributeList[4]:=EGL_BLUE_SIZE; + State.AttributeList[5]:=8; + State.AttributeList[6]:=EGL_ALPHA_SIZE; + State.AttributeList[7]:=8; + State.AttributeList[8]:=EGL_SURFACE_TYPE; + State.AttributeList[9]:=EGL_WINDOW_BIT; + State.AttributeList[10]:=EGL_NONE; + + try + {Get an EGL display connection} + State.Display:=eglGetDisplay(EGL_DEFAULT_DISPLAY); + if State.Display = EGL_NO_DISPLAY then Exit; + + {Initialize the EGL display connection} + EGLResult:=eglInitialize(State.Display,nil,nil); + if EGLResult = EGL_FALSE then Exit; + + {Bind OpenVG API} + EGLResult:=eglBindAPI(EGL_OPENVG_API); + if EGLResult = EGL_FALSE then Exit; + + {Get an appropriate EGL framebuffer configuration} + EGLResult:=eglChooseConfig(State.Display,@State.AttributeList,@Config,1,@ConfigCount); + if EGLResult = EGL_FALSE then Exit; + + {Create an EGL rendering context} + State.Context:=eglCreateContext(State.Display,Config,EGL_NO_CONTEXT,nil); + if State.Context = EGL_NO_CONTEXT then Exit; + + {Create an EGL window surface} + if BCMHostGraphicsGetDisplaySize(DISPMANX_ID_MAIN_LCD,State.ScreenWidth,State.ScreenHeight) < 0 then Exit; + + if (State.WindowWidth = 0) or (State.WindowWidth > State.ScreenWidth) then + begin + State.WindowWidth:=State.ScreenWidth; + end; + + if (State.WindowHeight = 0) or (State.WindowHeight > State.ScreenHeight) then + begin + State.WindowHeight:=State.ScreenHeight; + end; + + {Adjust position so that at least one pixel is on screen and set up the dispman rects} + SetWindowParams(State,State.WindowX,State.WindowY,@SourceRect,@DestRect); + + {Open Dispman Display} + DispmanDisplay:=vc_dispmanx_display_open(DISPMANX_ID_MAIN_LCD); + if DispmanDisplay = DISPMANX_NO_HANDLE then Exit; + + {Start Dispman Update} + DispmanUpdate:=vc_dispmanx_update_start(0); + if DispmanUpdate = DISPMANX_NO_HANDLE then Exit; + + {Add Dispman Element} + DispmanElement:=vc_dispmanx_element_add(DispmanUpdate,DispmanDisplay,0 {Layer},@DestRect,0 {Source},@SourceRect,DISPMANX_PROTECTION_NONE,@State.Alpha,nil {Clamp},DISPMANX_NO_ROTATE {Transform}); + if DispmanElement = DISPMANX_NO_HANDLE then Exit; + + State.Element:=DispmanElement; + State.NativeWindow.Element:=DispmanElement; + State.NativeWindow.Width:=State.WindowWidth; + State.NativeWindow.Height:=State.WindowHeight; + + {Submit Dispman Update} + vc_dispmanx_update_submit_sync(DispmanUpdate); + + {Create an EGL window surface} + State.Surface:=eglCreateWindowSurface(State.Display,Config,@State.NativeWindow,nil); + if State.Surface = EGL_NO_SURFACE then Exit; + + {Preserve the buffers on swap} + EGLResult:=eglSurfaceAttrib(State.Display,State.Surface,EGL_SWAP_BEHAVIOR,EGL_BUFFER_PRESERVED); + if EGLResult = EGL_FALSE then Exit; + + {Connect the context to the surface} + EGLResult:=eglMakeCurrent(State.Display,State.Surface,State.Surface,State.Context); + if EGLResult = EGL_FALSE then Exit; + + Result:=True; + finally + if not Result then + begin + {Close Dispman Display} + if DispmanDisplay <> DISPMANX_NO_HANDLE then vc_dispmanx_display_close(DispmanDisplay); + + if State.Display <> EGL_NO_DISPLAY then + begin + {Terminate EGL} + eglMakeCurrent(State.Display,EGL_NO_SURFACE,EGL_NO_SURFACE,EGL_NO_CONTEXT); + + {Destroy Surface} + if State.Surface <> EGL_NO_SURFACE then eglDestroySurface(State.Display,State.Surface); + + {Destroy Context} + if State.Context <> EGL_NO_CONTEXT then eglDestroyContext(State.Display,State.Context); + + {Terminate Display} + eglTerminate(State.Display); + end; + end; + end; +end; + +{==============================================================================} + +procedure DispmanXMoveWindow(State:PEGLState;X,Y:Integer); +{DispmanXMoveWindow repositions the openVG window to given coords -ve coords are allowed upto (1-width,1-height), + max (screen_width-1,screen_height-1). i.e. at least one pixel must be on the screen} +var + DestRect:VC_RECT_T; + SourceRect:VC_RECT_T; + DispmanUpdate:DISPMANX_UPDATE_HANDLE_T; +begin + {} + {Check State} + if State = nil then Exit; + + {Update Window} + SetWindowParams(State,X,Y,@SourceRect,@DestRect); + + {Start Update} + DispmanUpdate:=vc_dispmanx_update_start(0); + + {Change Element} + vc_dispmanx_element_change_attributes(DispmanUpdate,State.Element,0,0,0,@DestRect,@SourceRect,0,DISPMANX_NO_ROTATE); + + {Submit Update} + vc_dispmanx_update_submit_sync(DispmanUpdate); +end; + +{==============================================================================} + +procedure DispmanXChangeWindowOpacity(State:PEGLState;Alpha:LongWord); +{DispmanXChangeWindowOpacity changes the window's opacity 0 = transparent, 255 = opaque} +var + DispmanUpdate:DISPMANX_UPDATE_HANDLE_T; +begin + {} + {Check State} + if State = nil then Exit; + + {Check Alpha} + if Alpha > 255 then Alpha:=255; + + {Start Update} + DispmanUpdate:=vc_dispmanx_update_start(0); + + {Change Element (1 shl 1 equals the Alpha value)} + vc_dispmanx_element_change_attributes(DispmanUpdate,State.Element,1 shl 1,0,Alpha,nil,nil,0,DISPMANX_NO_ROTATE); + + {Submit Update} + vc_dispmanx_update_submit_sync(DispmanUpdate); +end; + +{==============================================================================} +{==============================================================================} +{Library Functions} +{Initialization} +procedure VGShapesInitWindowSize(x,y:Integer;w,h:LongWord); +{InitWindowSize requests a specific window size & position, if not called then VGShapesInit() will open a full screen window} +begin + {} + if VGShapesInitialized then Exit; + + VGShapesInitX:=x; + VGShapesInitY:=y; + VGShapesInitW:=w; + VGShapesInitH:=h; +end; + +{==============================================================================} + +procedure VGShapesInit(var w,h:Integer); +{Init sets the system to its initial state} +begin + {} + {Setup Defaults} + w:=-1; + h:=-1; + + if not VGShapesInitialized then + begin + {Initialize Host} + BCMHostInit; + + {Setup State} + FillChar(VGShapesState,SizeOf(TEGLState),0); + VGShapesState.WindowX:=VGShapesInitX; + VGShapesState.WindowY:=VGShapesInitY; + VGShapesState.WindowWidth:=VGShapesInitW; + VGShapesState.WindowHeight:=VGShapesInitH; + + {Initialize EGL} + if not eglInit(@VGShapesState) then + begin + BCMHostDeinit; + Exit; + end; + + {Load Sans Font} + VGShapesSansTypeface:=VGShapesLoadFont(@DejaVuSans_glyphPoints, + @DejaVuSans_glyphPointIndices, + @DejaVuSans_glyphInstructions, + @DejaVuSans_glyphInstructionIndices, + @DejaVuSans_glyphInstructionCounts, + @DejaVuSans_glyphAdvances, + @DejaVuSans_characterMap, + DejaVuSans_glyphCount); + VGShapesSansTypeface.DescenderHeight:=DejaVuSans_descender_height; + VGShapesSansTypeface.FontHeight:=DejaVuSans_font_height; + + {Load Serif Font} + VGShapesSerifTypeface:=VGShapesLoadFont(@DejaVuSerif_glyphPoints, + @DejaVuSerif_glyphPointIndices, + @DejaVuSerif_glyphInstructions, + @DejaVuSerif_glyphInstructionIndices, + @DejaVuSerif_glyphInstructionCounts, + @DejaVuSerif_glyphAdvances, + @DejaVuSerif_characterMap, + DejaVuSerif_glyphCount); + VGShapesSerifTypeface.DescenderHeight:=DejaVuSerif_descender_height; + VGShapesSerifTypeface.FontHeight:=DejaVuSerif_font_height; + + {Load Mono Font} + VGShapesMonoTypeface:=VGShapesLoadFont(@DejaVuSansMono_glyphPoints, + @DejaVuSansMono_glyphPointIndices, + @DejaVuSansMono_glyphInstructions, + @DejaVuSansMono_glyphInstructionIndices, + @DejaVuSansMono_glyphInstructionCounts, + @DejaVuSansMono_glyphAdvances, + @DejaVuSansMono_characterMap, + DejaVuSansMono_glyphCount); + VGShapesMonoTypeface.DescenderHeight:=DejaVuSansMono_descender_height; + VGShapesMonoTypeface.FontHeight:=DejaVuSansMono_font_height; + + VGShapesInitialized:=True; + end; + + {Return Window Size} + w:=VGShapesState.WindowWidth; + h:=VGShapesState.WindowHeight; +end; + +{==============================================================================} + +procedure VGShapesFinish; +{Finish cleans up} +begin + {} + if not VGShapesInitialized then Exit; + + {Unload Sans Font} + VGShapesUnloadFont(VGShapesSansTypeface.Glyphs,VGShapesSansTypeface.Count); + + {Unload Serif Font} + VGShapesUnloadFont(VGShapesSerifTypeface.Glyphs,VGShapesSerifTypeface.Count); + + {Unload Mono Font} + VGShapesUnloadFont(VGShapesMonoTypeface.Glyphs,VGShapesMonoTypeface.Count); + + {Terminate EGL} + eglSwapBuffers(VGShapesState.Display,VGShapesState.Surface); + eglMakeCurrent(VGShapesState.Display,EGL_NO_SURFACE,EGL_NO_SURFACE,EGL_NO_CONTEXT); + eglDestroySurface(VGShapesState.Display,VGShapesState.Surface); + eglDestroyContext(VGShapesState.Display,VGShapesState.Context); + eglTerminate(VGShapesState.Display); + + VGShapesInitialized:=False; +end; + +{==============================================================================} +{Font} +function VGShapesLoadFont(Points,PointIndices:PInteger;Instructions:PByte;InstructionIndices,InstructionCounts,adv:PInteger;cmap:PSmallInt;ng:Integer):TVGShapesFontInfo; +{Loadfont loads font path data derived from http://web.archive.org/web/20070808195131/http://developer.hybrid.fi/font2openvg/renderFont.cpp.txt} +var + Count:Integer; + Path:VGPath; + Point:PInteger; + Instruction:PByte; + InstructionCount:Integer; +begin + {} + FillChar(Result,SizeOf(TVGShapesFontInfo),0); + + {Check Parameters} + if Points = nil then Exit; + if PointIndices = nil then Exit; + if Instructions = nil then Exit; + if InstructionIndices = nil then Exit; + if InstructionCounts = nil then Exit; + if adv = nil then Exit; + if cmap = nil then Exit; + + if ng > VGSHAPES_MAXFONTPATH then Exit; + + for Count:=0 to ng - 1 do + begin + Point:=@Points[PointIndices[Count] * 2]; + Instruction:=@Instructions[InstructionIndices[Count]]; + InstructionCount:=InstructionCounts[Count]; + + {Create Path} + Path:=vgCreatePath(VG_PATH_FORMAT_STANDARD,VG_PATH_DATATYPE_S_32,1.0 / 65536.0,0.0,0,0,VG_PATH_CAPABILITY_ALL); + Result.Glyphs[Count]:=Path; + + if InstructionCount <> 0 then + begin + vgAppendPathData(Path,InstructionCount,Instruction,Point); + end; + end; + + Result.CharacterMap:=cmap; + Result.GlyphAdvances:=adv; + Result.Count:=ng; + Result.DescenderHeight:=0; {Updated by caller} + Result.FontHeight:=0; {Updated by caller} +end; + +{==============================================================================} + +procedure VGShapesUnloadFont(glyphs:PVGPath;n:Integer); +{Unloadfont frees font path data} +var + Count:Integer; +begin + {} + {Check Glyphs} + if glyphs = nil then Exit; + + for Count:=0 to n - 1 do + begin + {Destroy Path} + vgDestroyPath(glyphs[Count]); + end; +end; + +{==============================================================================} +{Image} +procedure VGShapesMakeImage(x,y:VGfloat;w,h:Integer;data:PVGubyte); +{MakeImage makes an image from a raw raster of red, green, blue, alpha values} +var + Stride:LongWord; + Image:VGImage; + ImageFormat:VGImageFormat; +begin + {} + {Setup Stride} + Stride:=w * 4; + + {Setup Format} + ImageFormat:=VG_sABGR_8888; + + {Create Image} + Image:=vgCreateImage(ImageFormat,w,h,VG_IMAGE_QUALITY_BETTER); + if Image = VG_INVALID_HANDLE then Exit; + + {Copy Pixels to Image} + vgImageSubData(Image,data,Stride,ImageFormat,0,0,w,h); + + {Display Image} + vgSetPixels(Trunc(x),Trunc(y),Image,0,0,w,h); + + {Destroy Image} + vgDestroyImage(Image); +end; + +{==============================================================================} + +procedure VGShapesImage(x,y:VGfloat;w,h:Integer;const filename:String); +{Image places an image at the specifed location} +var + Image:VGImage; +begin + {} + {Create Image} + Image:=VGShapesCreateImageFromJpeg(filename); + if Image = VG_INVALID_HANDLE then Exit; + + {Display Image} + vgSetPixels(Trunc(x),Trunc(y),Image,0,0,w,h); + + {Destroy Image} + vgDestroyImage(Image); +end; + +{==============================================================================} + +function VGShapesCreateImageFromJpeg(const filename:String):VGImage; +{CreateImageFromJpeg decompresses a JPEG image to the standard image format + source: https://github.com/ileben/ShivaVG/blob/master/examples/test_image.c} +var + FileStream:TFileStream; + + jerr:jpeg_error_mgr; + jdc:jpeg_decompress_struct; + + Data:PVGubyte; + DataStride:LongWord; + DataBPP:LongWord; + + Buffer:JSAMPARRAY; + BufferStride:LongWord; + BufferBPP:LongWord; + + Image:VGImage; + Width:LongWord; + Height:LongWord; + + X:LongWord; + DataRow:PVGubyte; + BufferRow:PVGubyte; + EndianTest:LongWord; + ImageFormat:VGImageFormat; +begin + {} + Result:=VG_INVALID_HANDLE; + + {Check for endianness} + EndianTest:=1; + if PByte(@EndianTest)[0] = 1 then + begin + ImageFormat:=VG_sABGR_8888; + end + else + begin + ImageFormat:=VG_sRGBA_8888; + end; + + {Try to open image file} + FileStream:=TFileStream.Create(Filename,fmOpenRead or fmShareDenyNone); + try + {Setup default error handling} + jdc.err:=jpeg_std_error(jerr); + jpeg_create_decompress(@jdc); + + {Set input file} + jpeg_stdio_src(@jdc,@FileStream); + + {Read header and start} + jpeg_read_header(@jdc,True); + jpeg_start_decompress(@jdc); + Width:=jdc.output_width; + Height:=jdc.output_height; + + {Allocate buffer using jpeg allocator} + BufferBPP:=jdc.output_components; + BufferStride:=Width * BufferBPP; + Buffer:=jdc.mem.alloc_sarray(@jdc,JPOOL_IMAGE,BufferStride,1); + + {Allocate image data buffer} + DataBPP:=4; + DataStride:=Width * DataBPP; + Data:=GetMem(DataStride * Height); + + {Iterate until all scanlines processed} + while jdc.output_scanline < Height do + begin + {Read scanline into buffer} + jpeg_read_scanlines(@jdc,Buffer,1); + + {Get Rows} + DataRow:=Data + (Height - jdc.output_scanline) * DataStride; + BufferRow:=PVGubyte(Buffer[0]); + + {Expand to RGBA} + X:=0; + while X < Width do + begin + case BufferBPP of + 4:begin + {RGBA} + DataRow[0]:=BufferRow[0]; + DataRow[1]:=BufferRow[1]; + DataRow[2]:=BufferRow[2]; + DataRow[3]:=BufferRow[3]; + end; + 3:begin + {RGB} + DataRow[0]:=BufferRow[0]; + DataRow[1]:=BufferRow[1]; + DataRow[2]:=BufferRow[2]; + DataRow[3]:=255; + end; + end; + + {Update X} + Inc(X); + + {Update Rows} + DataRow:=DataRow + DataBPP; + BufferRow:=BufferRow + BufferBPP; + end; + end; + + {Create VG image} + Image:=vgCreateImage(ImageFormat,Width,Height,VG_IMAGE_QUALITY_BETTER); + vgImageSubData(Image,Data,DataStride,ImageFormat,0,0,Width,Height); + + {Destroy decompress} + jpeg_destroy_decompress(@jdc); + + {Free data} + FreeMem(Data); + + {Return Image} + Result:=Image; + finally + FileStream.Free; + end; +end; + +{==============================================================================} +{Transformation} +procedure VGShapesTranslate(x,y:VGfloat); inline; +{Translate the coordinate system to x,y} +begin + {} + vgTranslate(x,y); +end; + +{==============================================================================} + +procedure VGShapesRotate(r:VGfloat); inline; +{Rotate around angle r} +begin + {} + vgRotate(r); +end; + +{==============================================================================} + +procedure VGShapesShear(x,y:VGfloat); inline; +{Shear shears the x coordinate by x degrees, the y coordinate by y degrees} +begin + {} + vgShear(x,y); +end; + +{==============================================================================} + +procedure VGShapesScale(x,y:VGfloat); inline; +{Scale scales by x, y} +begin + {} + vgScale(x,y); +end; + +{==============================================================================} +{Style} +procedure VGShapesSetFill(const color:TVGShapesColor); +{SetFill sets the fill color} +var + fillPaint:VGPaint; +begin + {} + {Create Paint} + fillPaint:=vgCreatePaint; + + {Set Parameters} + vgSetParameteri(fillPaint,VG_PAINT_TYPE,VG_PAINT_TYPE_COLOR); + vgSetParameterfv(fillPaint,VG_PAINT_COLOR,4,@color); + + {Set Paint} + vgSetPaint(fillPaint,VG_FILL_PATH); + + {Destroy Paint} + vgDestroyPaint(fillPaint); +end; + +{==============================================================================} + +procedure VGShapesSetStroke(const color:TVGShapesColor); +{SetStroke sets the stroke color} +var + strokePaint:VGPaint; +begin + {} + {Create Paint} + strokePaint:=vgCreatePaint; + + {Set Parameters} + vgSetParameteri(strokePaint,VG_PAINT_TYPE,VG_PAINT_TYPE_COLOR); + vgSetParameterfv(strokePaint,VG_PAINT_COLOR,4,@color); + + {Set Paint} + vgSetPaint(strokePaint,VG_STROKE_PATH); + + {Destroy Paint} + vgDestroyPaint(strokePaint); +end; + +{==============================================================================} + +procedure VGShapesStrokeWidth(width:VGfloat); +{StrokeWidth sets the stroke width} +begin + {} + vgSetf(VG_STROKE_LINE_WIDTH,width); + vgSeti(VG_STROKE_CAP_STYLE,VG_CAP_BUTT); + vgSeti(VG_STROKE_JOIN_STYLE,VG_JOIN_MITER); +end; + +{==============================================================================} +{Color} +procedure VGShapesRGBA(r,g,b:LongWord;a:VGfloat;var color:TVGShapesColor); +{RGBA fills a color vectors from a RGBA quad} +begin + {} + {Check Red} + if r > 255 then r:=0; + + {Check Green} + if g > 255 then g:=0; + + {Check Blue} + if b > 255 then b:=0; + + {Check Alpha} + if (a < 0.0) or (a > 1.0) then a:=1.0; + + {Set Color} + Color[0]:=r / 255.0; + Color[1]:=g / 255.0; + Color[2]:=b / 255.0; + Color[3]:=a; +end; + +{==============================================================================} + +procedure VGShapesRGB(r,g,b:LongWord;var color:TVGShapesColor); inline; +{RGB returns a solid color from a RGB triple} +begin + {} + VGShapesRGBA(r,g,b,1.0,color); +end; + +{==============================================================================} + +procedure VGShapesStroke(r,g,b:LongWord;a:VGfloat); +{Stroke sets the stroke color, defined as a RGB triple.} +var + Color:TVGShapesColor; +begin + {} + VGShapesRGBA(r,g,b,a,Color); + VGShapesSetStroke(Color); +end; + +{==============================================================================} + +procedure VGShapesFill(r,g,b:LongWord;a:VGfloat); +{Fill sets the fillcolor, defined as a RGBA quad} +var + Color:TVGShapesColor; +begin + {} + VGShapesRGBA(r,g,b,a,Color); + VGShapesSetFill(Color); +end; + +{==============================================================================} + +procedure VGShapesSetStops(paint:VGPaint;stops:PVGfloat;n:Integer); +{SetStops sets color stops for gradients} +var + MultiMode:VGboolean; + SpreadMode:VGColorRampSpreadMode; +begin + {} + {Set Defaults} + MultiMode:=VG_FALSE; + SpreadMode:=VG_COLOR_RAMP_SPREAD_REPEAT; + + {Set Parameters} + vgSetParameteri(paint,VG_PAINT_COLOR_RAMP_SPREAD_MODE,SpreadMode); + vgSetParameteri(paint,VG_PAINT_COLOR_RAMP_PREMULTIPLIED,MultiMode); + vgSetParameterfv(paint,VG_PAINT_COLOR_RAMP_STOPS,5 * n,stops); + vgSetPaint(paint,VG_FILL_PATH); +end; + +{==============================================================================} + +procedure VGShapesFillLinearGradient(x1,y1,x2,y2:VGfloat;stops:PVGfloat;ns:Integer); +{LinearGradient fills with a linear gradient} +var + Paint:VGPaint; + LinearCoordinates:array[0..3] of VGfloat; +begin + {} + {Setup Coordinates} + LinearCoordinates[0]:=x1; + LinearCoordinates[1]:=y1; + LinearCoordinates[2]:=x2; + LinearCoordinates[3]:=y2; + + {Create Paint} + Paint:=vgCreatePaint; + + {Set Parameters} + vgSetParameteri(Paint,VG_PAINT_TYPE,VG_PAINT_TYPE_LINEAR_GRADIENT); + vgSetParameterfv(Paint,VG_PAINT_LINEAR_GRADIENT,4,@LinearCoordinates); + + {Set Stops} + VGShapesSetStops(Paint,stops,ns); + + {Destroy Paint} + vgDestroyPaint(Paint); +end; + +{==============================================================================} + +procedure VGShapesFillRadialGradient(cx,cy,fx,fy,radius:VGfloat;stops:PVGfloat;ns:Integer); +{RadialGradient fills with a linear gradient} +var + Paint:VGPaint; + RadialCoordinates:array[0..4] of VGfloat; +begin + {} + {Setup Coordinates} + RadialCoordinates[0]:=cx; + RadialCoordinates[1]:=cy; + RadialCoordinates[2]:=fx; + RadialCoordinates[3]:=fy; + RadialCoordinates[4]:=radius; + + {Create Paint} + Paint:=vgCreatePaint; + + {Set Parameters} + vgSetParameteri(Paint,VG_PAINT_TYPE,VG_PAINT_TYPE_RADIAL_GRADIENT); + vgSetParameterfv(Paint,VG_PAINT_RADIAL_GRADIENT,5,@RadialCoordinates); + + {Set Stops} + VGShapesSetStops(Paint,stops,ns); + + {Destroy Paint} + vgDestroyPaint(Paint); +end; + +{==============================================================================} + +procedure VGShapesClipRect(x,y,w,h:VGint); +{ClipRect limits the drawing area to specified rectangle} +var + Coordinates:array[0..3] of VGint; +begin + {} + {Setup Coordinates} + Coordinates[0]:=x; + Coordinates[1]:=y; + Coordinates[2]:=w; + Coordinates[3]:=h; + + {Set Scissor} + vgSeti(VG_SCISSORING,VG_TRUE); + vgSetiv(VG_SCISSOR_RECTS,4,@Coordinates); +end; + +{==============================================================================} + +procedure VGShapesClipEnd; inline; +{ClipEnd stops limiting drawing area to specified rectangle} +begin + {} + vgSeti(VG_SCISSORING,VG_FALSE); +end; + +{==============================================================================} +{Text} +function VGShapesNextUTF8Char(utf8:PChar;var codepoint:Integer):PChar; +{Next UTF8 char handles UTF encoding} +var + Next:PChar; + DataLength:Integer; + SequenceLength:Integer; +begin + {} + Result:=nil; + + {Check UTF8} + if utf8 = nil then Exit; + + {Get Next} + Next:=utf8; + + {Get Data Length} + DataLength:=StrLen(utf8); + + if (DataLength < 1) or (Next^ = #0) then Exit; {End of string} + + if (Ord(utf8[0]) and $80) = 0 then {0xxxxxxx} + begin + codepoint:=Ord(utf8[0]); + SequenceLength:=1; + end + else if (Ord(utf8[0]) and $E0) = $C0 then {110xxxxx} + begin + codepoint:=((Ord(utf8[0]) and $1F) shl 6) or (Ord(utf8[1]) and $3F); + SequenceLength:=2; + end + else if (Ord(utf8[0]) and $F0) = $E0 then {1110xxxx} + begin + codepoint:=((Ord(utf8[0]) and $0F) shl 12) or ((Ord(utf8[1]) and $3F) shl 6) or (Ord(utf8[2]) and $3F); + SequenceLength:=3; + end + else + begin + Exit; {No code points this high here} + end; + + {Return Next} + Result:=Next + SequenceLength; +end; + +{==============================================================================} + +procedure VGShapesText(x,y:VGfloat;const s:UTF8String;const f:TVGShapesFontInfo;pointsize:Integer); +{Text renders a string of text at a specified location, size, using the specified font glyphs derived + from http://web.archive.org/web/20070808195131/http://developer.hybrid.fi/font2openvg/renderFont.cpp.txt} +var + Size:VGfloat; + Next:PChar; + NextX:VGfloat; + Glyph:Integer; + Character:Integer; + Matrix:array[0..8] of VGfloat; + CharMatrix:array[0..8] of VGfloat; +begin + {} + {Setup Next} + NextX:=x; + + {Setup Size} + Size:=pointsize; + + {Get Matrix} + vgGetMatrix(Matrix); + + {Get Character} + Next:=PChar(s); + Next:=VGShapesNextUTF8Char(Next,Character); + while Next <> nil do + begin + {Get Glyph} + Glyph:=f.CharacterMap[Character]; + if Glyph <> -1 then + begin + {Create Matrix} + CharMatrix[0]:=Size; + CharMatrix[1]:=0.0; + CharMatrix[2]:=0.0; + CharMatrix[3]:=0.0; + CharMatrix[4]:=Size; + CharMatrix[5]:=0.0; + CharMatrix[6]:=NextX; + CharMatrix[7]:=y; + CharMatrix[8]:=1.0; + + {Load Matrix} + vgLoadMatrix(Matrix); + + {Multiply Matrix} + vgMultMatrix(CharMatrix); + + {Draw Path} + vgDrawPath(f.Glyphs[Glyph],VG_FILL_PATH); + + {Update Next} + NextX:=NextX + (Size * f.GlyphAdvances[Glyph] / 65536.0); + end; + + {Get Next Character} + Next:=VGShapesNextUTF8Char(Next,Character); + end; + + {Load Matrix} + vgLoadMatrix(Matrix); +end; + +{==============================================================================} + +function VGShapesTextWidth(const s:UTF8String;const f:TVGShapesFontInfo;pointsize:Integer):VGfloat; +{TextWidth returns the width of a text string at the specified font and size} +var + Width:VGfloat; + Size:VGfloat; + Next:PChar; + Glyph:Integer; + Character:Integer; +begin + {} + Result:=0; + + {Setup Width} + Width:=0.0; + + {Setup Size} + Size:=pointsize; + + {Get Character} + Next:=PChar(s); + Next:=VGShapesNextUTF8Char(Next,Character); + while Next <> nil do + begin + {Get Glyph} + Glyph:=f.CharacterMap[Character]; + if Glyph <> -1 then + begin + {Update Width} + Width:=Width + (Size * f.GlyphAdvances[Glyph] / 65536.0); + end; + + {Get Next Character} + Next:=VGShapesNextUTF8Char(Next,Character); + end; + + Result:=Width; +end; + +{==============================================================================} + +procedure VGShapesTextMid(x,y:VGfloat;const s:UTF8String;const f:TVGShapesFontInfo;pointsize:Integer); +{TextMid draws text, centered on (x,y)} +var + Width:VGfloat; +begin + {} + {Get Width} + Width:=VGShapesTextWidth(s,f,pointsize); + + {Draw Text} + VGShapesText(x - (Width / 2.0),y,s,f,pointsize); +end; + +{==============================================================================} + +procedure VGShapesTextEnd(x,y:VGfloat;const s:UTF8String;const f:TVGShapesFontInfo;pointsize:Integer); +{TextEnd draws text, with its end aligned to (x,y)} +var + Width:VGfloat; +begin + {} + {Get Width} + Width:=VGShapesTextWidth(s,f,pointsize); + + {Draw Text} + VGShapesText(x - Width,y,s,f,pointsize); +end; + +{==============================================================================} + +function VGShapesTextHeight(const f:TVGShapesFontInfo;pointsize:Integer):VGfloat; +{TextHeight reports a font's height} +begin + {} + Result:=(f.FontHeight * pointsize) / 65536; +end; + +{==============================================================================} + +function VGShapesTextDepth(const f:TVGShapesFontInfo;pointsize:Integer):VGfloat; +{TextDepth reports a font's depth (how far under the baseline it goes)} +begin + {} + Result:=(-f.DescenderHeight * pointsize) / 65536; +end; + +{==============================================================================} +{Shape} +function VGShapesNewPath:VGPath; inline; +{Newpath creates path data} +begin + {} + Result:=vgCreatePath(VG_PATH_FORMAT_STANDARD,VG_PATH_DATATYPE_F,1.0,0.0,0,0,VG_PATH_CAPABILITY_APPEND_TO); {Other capabilities not needed} +end; + +{==============================================================================} + +procedure VGShapesMakeCurve(segments:PVGubyte;coords:PVGfloat;flags:VGbitfield); +{Makecurve makes path data using specified segments and coordinates} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Append Path} + vgAppendPathData(Path,2,segments,coords); + + {Draw Path} + vgDrawPath(Path,flags); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} + +procedure VGShapesCbezier(sx,sy,cx,cy,px,py,ex,ey:VGfloat); +{CBezier makes a quadratic bezier curve} +var + Segments:array[0..1] of VGubyte; + Coordinates:array[0..7] of VGfloat; +begin + {} + {Setup Segments} + Segments[0]:=VG_MOVE_TO_ABS; + Segments[1]:=VG_CUBIC_TO; + + {Setup Coordinates} + Coordinates[0]:=sx; + Coordinates[1]:=sy; + Coordinates[2]:=cx; + Coordinates[3]:=cy; + Coordinates[4]:=px; + Coordinates[5]:=py; + Coordinates[6]:=ex; + Coordinates[7]:=ey; + + {Make Curve} + VGShapesMakeCurve(@Segments,@Coordinates,VG_FILL_PATH or VG_STROKE_PATH); +end; + +{==============================================================================} + +procedure VGShapesQbezier(sx,sy,cx,cy,ex,ey:VGfloat); +{QBezier makes a quadratic bezier curve} +var + Segments:array[0..1] of VGubyte; + Coordinates:array[0..5] of VGfloat; +begin + {} + {Setup Segments} + Segments[0]:=VG_MOVE_TO_ABS; + Segments[1]:=VG_QUAD_TO; + + {Setup Coordinates} + Coordinates[0]:=sx; + Coordinates[1]:=sy; + Coordinates[2]:=cx; + Coordinates[3]:=cy; + Coordinates[4]:=ex; + Coordinates[5]:=ey; + + {Make Curve} + VGShapesMakeCurve(@Segments,@Coordinates,VG_FILL_PATH or VG_STROKE_PATH); +end; + +{==============================================================================} + +procedure VGShapesInterleave(x,y:PVGfloat;n:Integer;points:PVGfloat); +{Interleave interleaves arrays of x, y into a single array} +begin + {} + while n > 0 do + begin + {Update Points X} + points^:=x^; + Inc(points); + Inc(x); + + {Update Points Y} + points^:=y^; + Inc(points); + Inc(y); + + {Update n} + Dec(n); + end; +end; + +{==============================================================================} + +procedure VGShapesPoly(x,y:PVGfloat;n:VGint;flag:VGbitfield); +{Poly makes either a polygon or polyline} +var + Path:VGPath; + Points:array of VGfloat; +begin + {} + {Setup Points} + SetLength(Points,n * 2); + + {Create Path} + Path:=VGShapesNewPath; + + {Interleave Points} + VGShapesInterleave(x,y,n,@Points[0]); + + {Create Polygon} + vguPolygon(Path,@Points[0],n,VG_FALSE); + + {Draw Path} + vgDrawPath(Path,flag); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} + +procedure VGShapesPolygon(x,y:PVGfloat;n:VGint); +{Polygon makes a filled polygon with vertices in x, y arrays} +begin + {} + VGShapesPoly(x,y,n,VG_FILL_PATH); +end; + +{==============================================================================} + +procedure VGShapesPolyline(x,y:PVGfloat;n:VGint); +{Polyline makes a polyline with vertices at x, y arrays} +begin + {} + VGShapesPoly(x,y,n,VG_STROKE_PATH); +end; + +{==============================================================================} + +procedure VGShapesRect(x,y,w,h:VGfloat); +{Rect makes a rectangle at the specified location and dimensions} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Create Rect} + vguRect(Path,x,y,w,h); + + {Draw Path} + vgDrawPath(Path,VG_FILL_PATH or VG_STROKE_PATH); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} + +procedure VGShapesLine(x1,y1,x2,y2:VGfloat); +{Line makes a line from (x1,y1) to (x2,y2)} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Create Line} + vguLine(Path,x1,y1,x2,y2); + + {Draw Path} + vgDrawPath(Path,VG_STROKE_PATH); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} + +procedure VGShapesRoundrect(x,y,w,h,rw,rh:VGfloat); +{Roundrect makes an rounded rectangle at the specified location and dimensions} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Create Round Rect} + vguRoundRect(Path,x,y,w,h,rw,rh); + + {Draw Path} + vgDrawPath(Path,VG_FILL_PATH or VG_STROKE_PATH); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} + +procedure VGShapesEllipse(x,y,w,h:VGfloat); +{Ellipse makes an ellipse at the specified location and dimensions} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Create Ellipse} + vguEllipse(Path,x,y,w,h); + + {Draw Path} + vgDrawPath(Path,VG_FILL_PATH or VG_STROKE_PATH); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} + +procedure VGShapesCircle(x,y,r:VGfloat); inline; +{Circle makes a circle at the specified location and dimensions} +begin + {} + VGShapesEllipse(x,y,r,r); +end; + +{==============================================================================} + +procedure VGShapesArc(x,y,w,h,sa,aext:VGfloat); +{Arc makes an elliptical arc at the specified location and dimensions} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Create Arc} + vguArc(Path,x,y,w,h,sa,aext,VGU_ARC_OPEN); + + {Draw Path} + vgDrawPath(Path,VG_FILL_PATH or VG_STROKE_PATH); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} +{Rendering} +procedure VGShapesDumpscreen(w,h:Integer;fp:THandle); +{Dumpscreen writes a raster of the current screen to a file} +var + ScreenBuffer:Pointer; +begin + {} + {Allocate Buffer} + ScreenBuffer:=GetMem(w * h * 4); + + {Read Pixels} + vgReadPixels(ScreenBuffer,(w * 4),VG_sABGR_8888,0,0,w,h); + + {Write to File} + FileWrite(fp,ScreenBuffer^,w * h * 4); + + {Free Buffer} + FreeMem(ScreenBuffer); +end; + +{==============================================================================} + +procedure VGShapesStart(width,height:Integer); +{Start begins the picture, clearing a rectangular region with a specified color} +var + Color:TVGShapesColor; +begin + {} + {Set Color} + Color[0]:=1; + Color[1]:=1; + Color[2]:=1; + Color[3]:=1; + + {Clear} + vgSetfv(VG_CLEAR_COLOR,4,@Color); + vgClear(0,0,width,height); + + {Set Color} + Color[0]:=0; + Color[1]:=0; + Color[2]:=0; + + {Set Fill and Stroke} + VGShapesSetFill(Color); + VGShapesSetStroke(Color); + VGShapesStrokeWidth(0); + + vgLoadIdentity; +end; + +{==============================================================================} + +function VGShapesEnd:Boolean; +{End checks for errors, and renders to the display} +begin + {} + Result:=False; + + {Check Errors} + if vgGetError <> VG_NO_ERROR then Exit; + + {Swap Buffers} + eglSwapBuffers(VGShapesState.Display,VGShapesState.Surface); + + {Check Errors} + if eglGetError <> EGL_SUCCESS then Exit; + + Result:=True; +end; + +{==============================================================================} + +function VGShapesSaveEnd(const filename:String):Boolean; +{SaveEnd dumps the raster before rendering to the display} +var + Handle:THandle; +begin + {} + Result:=False; + + {Check Errors} + if vgGetError <> VG_NO_ERROR then Exit; + + if Length(filename) <> 0 then + begin + {Create File} + Handle:=FileCreate(filename); + if Handle <> INVALID_HANDLE_VALUE then + begin + {Dump Screen} + VGShapesDumpscreen(VGShapesState.ScreenWidth,VGShapesState.ScreenHeight,Handle); + + {Close File} + FileClose(Handle); + end; + end; + + {Swap Buffers} + eglSwapBuffers(VGShapesState.Display,VGShapesState.Surface); + + {Check Errors} + if eglGetError <> EGL_SUCCESS then Exit; + + Result:=True; +end; + +{==============================================================================} + +procedure VGShapesBackground(r,g,b:LongWord); +{Backgroud clears the screen to a solid background color} +var + Color:TVGShapesColor; +begin + {} + VGShapesRGB(r,g,b,Color); + vgSetfv(VG_CLEAR_COLOR,4,@Color); + vgClear(0,0,VGShapesState.WindowWidth,VGShapesState.WindowHeight); +end; + +{==============================================================================} + +procedure VGShapesBackgroundRGB(r,g,b:LongWord;a:VGfloat); +{BackgroundRGB clears the screen to a background color with alpha} +var + Color:TVGShapesColor; +begin + {} + VGShapesRGBA(r,g,b,a,Color); + vgSetfv(VG_CLEAR_COLOR,4,@Color); + vgClear(0,0,VGShapesState.WindowWidth,VGShapesState.WindowHeight); +end; + +{==============================================================================} + +procedure VGShapesWindowClear; inline; +{WindowClear clears the window to previously set background colour} +begin + {} + vgClear(0,0,VGShapesState.WindowWidth,VGShapesState.WindowHeight); +end; + +{==============================================================================} + +procedure VGShapesAreaClear(x,y,w,h:LongWord); inline; +{AreaClear clears a given rectangle in window coordinates (not affected by transformations)} +begin + {} + vgClear(x,y,w,h); +end; + +{==============================================================================} + +procedure VGShapesWindowOpacity(a:LongWord); +{WindowOpacity sets the window opacity} +begin + {} + DispmanXChangeWindowOpacity(@VGShapesState,a); +end; + +{==============================================================================} + +procedure VGShapesWindowPosition(x,y:Integer); +{WindowPosition moves the window to given position} +begin + {} + DispmanXMoveWindow(@VGShapesState,x,y); +end; + +{==============================================================================} +{Outlined Shapes} +procedure VGShapesCbezierOutline(sx,sy,cx,cy,px,py,ex,ey:VGfloat); +{CBezier makes a quadratic bezier curve, stroked} +var + Segments:array[0..1] of VGubyte; + Coordinates:array[0..7] of VGfloat; +begin + {} + {Setup Segments} + Segments[0]:=VG_MOVE_TO_ABS; + Segments[1]:=VG_CUBIC_TO; + + {Setup Coordinates} + Coordinates[0]:=sx; + Coordinates[1]:=sy; + Coordinates[2]:=cx; + Coordinates[3]:=cy; + Coordinates[4]:=px; + Coordinates[5]:=py; + Coordinates[6]:=ex; + Coordinates[7]:=ey; + + {Make Curve} + VGShapesMakeCurve(@Segments,@Coordinates,VG_STROKE_PATH); +end; + +{==============================================================================} + +procedure VGShapesQbezierOutline(sx,sy,cx,cy,ex,ey:VGfloat); +{QBezierOutline makes a quadratic bezier curve, outlined} +var + Segments:array[0..1] of VGubyte; + Coordinates:array[0..5] of VGfloat; +begin + {} + {Setup Segments} + Segments[0]:=VG_MOVE_TO_ABS; + Segments[1]:=VG_QUAD_TO; + + {Setup Coordinates} + Coordinates[0]:=sx; + Coordinates[1]:=sy; + Coordinates[2]:=cx; + Coordinates[3]:=cy; + Coordinates[4]:=ex; + Coordinates[5]:=ey; + + {Make Curve} + VGShapesMakeCurve(@Segments,@Coordinates,VG_STROKE_PATH); +end; + +{==============================================================================} + +procedure VGShapesRectOutline(x,y,w,h:VGfloat); +{RectOutline makes a rectangle at the specified location and dimensions, outlined} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Create Rect} + vguRect(Path,x,y,w,h); + + {Draw Path} + vgDrawPath(Path,VG_STROKE_PATH); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} + +procedure VGShapesRoundrectOutline(x,y,w,h,rw,rh:VGfloat); +{RoundrectOutline makes an rounded rectangle at the specified location and dimensions, outlined} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Create Round Rect} + vguRoundRect(Path,x,y,w,h,rw,rh); + + {Draw Path} + vgDrawPath(Path,VG_STROKE_PATH); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} + +procedure VGShapesEllipseOutline(x,y,w,h:VGfloat); +{EllipseOutline makes an ellipse at the specified location and dimensions, outlined} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Create Ellipse} + vguEllipse(Path,x,y,w,h); + + {Draw Path} + vgDrawPath(Path, VG_STROKE_PATH); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} + +procedure VGShapesCircleOutline(x,y,r:VGfloat); inline; +{CircleOutline makes a circle at the specified location and dimensions, outlined} +begin + {} + VGShapesEllipseOutline(x,y,r,r); +end; + +{==============================================================================} + +procedure VGShapesArcOutline(x,y,w,h,sa,aext:VGfloat); +{ArcOutline makes an elliptical arc at the specified location and dimensions, outlined} +var + Path:VGPath; +begin + {} + {Create Path} + Path:=VGShapesNewPath; + + {Create Arc} + vguArc(Path,x,y,w,h,sa,aext,VGU_ARC_OPEN); + + {Draw Path} + vgDrawPath(Path,VG_STROKE_PATH); + + {Destroy Path} + vgDestroyPath(Path); +end; + +{==============================================================================} +{==============================================================================} + +end. diff --git a/source/rtl/ultibo/Makefile b/source/rtl/ultibo/Makefile index 86908c3..c6a72f2 100644 --- a/source/rtl/ultibo/Makefile +++ b/source/rtl/ultibo/Makefile @@ -403,7 +403,8 @@ ULTIBO_UNITS=globalconfig \ dab \ dfu \ tftframebuffer \ - vc4 \ + vc4v3d \ + vc4vchiq \ gc880 \ gc2000 \ mali400 \ @@ -463,7 +464,8 @@ ULTIBO_UNITS=globalconfig \ services \ shell \ graphicsconsole \ - syscalls + syscalls \ + vc4 ULTIBO_FONTS=Latin1_8x8 \ Latin1_8x10 \ Latin1_8x12 \ @@ -637,262 +639,262 @@ endif OBJPASDIR=$(RTL)/objpas GRAPHDIR=$(INC)/graph ifeq ($(FULL_TARGET),i386-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-go32v2) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-win32) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-os2) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-freebsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-beos) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-netbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-solaris) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-qnx) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-netware) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-openbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-wdosx) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-emx) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-watcom) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-netwlibc) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-wince) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-symbian) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-nativent) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-iphonesim) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-android) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-aros) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-ultibo) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),m68k-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),m68k-freebsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),m68k-netbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),m68k-amiga) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),m68k-atari) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),m68k-openbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),m68k-palmos) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),m68k-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc-amiga) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc-macos) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc-morphos) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc-wii) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc-aix) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),sparc-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),sparc-netbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),sparc-solaris) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),sparc-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-netbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-solaris) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-openbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-win64) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-iphonesim) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-aros) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-dragonfly) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),x86_64-ultibo) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-palmos) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-wince) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-gba) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-nds) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-symbian) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-android) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),arm-ultibo) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc64-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc64-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc64-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),powerpc64-aix) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),mips-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),mipsel-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),mipsel-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),mipsel-android) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),jvm-java) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),jvm-android) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i8086-msdos) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i8086-win16) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),aarch64-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),aarch64-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),aarch64-ultibo) -override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos ctypes charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) +override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings sysutils math classes fgl macpas typinfo types rtlconsts getopts lineinfo ctypes $(ULTIBO_UNITS) $(ULTIBO_CPU_UNITS) $(ULTIBO_DRIVER_UNITS) $(ULTIBO_KEYMAP_UNITS) $(ULTIBO_CODEPAGE_UNITS) dos charset cpall sysconst character fpwidestring $(ULTIBO_FONTS) $(ULTIBO_EXTRAS) $(ULTIBO_CPU_EXTRAS) endif ifeq ($(FULL_TARGET),i386-linux) override TARGET_IMPLICITUNITS+=exeinfo cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852 unicodenumtable unicodedata diff --git a/source/rtl/ultibo/Makefile.fpc b/source/rtl/ultibo/Makefile.fpc index ab9bc23..8b8e50f 100644 --- a/source/rtl/ultibo/Makefile.fpc +++ b/source/rtl/ultibo/Makefile.fpc @@ -23,13 +23,13 @@ units=$(SYSTEMUNIT) \ rtlconsts \ getopts \ lineinfo \ + ctypes \ $(ULTIBO_UNITS) \ $(ULTIBO_CPU_UNITS) \ $(ULTIBO_DRIVER_UNITS) \ $(ULTIBO_KEYMAP_UNITS) \ $(ULTIBO_CODEPAGE_UNITS) \ dos \ - ctypes \ charset \ cpall \ sysconst \ @@ -143,7 +143,8 @@ ULTIBO_UNITS=globalconfig \ dab \ dfu \ tftframebuffer \ - vc4 \ + vc4v3d \ + vc4vchiq \ gc880 \ gc2000 \ mali400 \ @@ -203,7 +204,8 @@ ULTIBO_UNITS=globalconfig \ services \ shell \ graphicsconsole \ - syscalls + syscalls \ + vc4 ULTIBO_FONTS=Latin1_8x8 \ Latin1_8x10 \ diff --git a/source/rtl/ultibo/core/bcm2708.pas b/source/rtl/ultibo/core/bcm2708.pas index 0c1f4be..10c0652 100644 --- a/source/rtl/ultibo/core/bcm2708.pas +++ b/source/rtl/ultibo/core/bcm2708.pas @@ -9958,7 +9958,7 @@ function BCM2708FramebufferSetOffset(Framebuffer:PFramebufferDevice;X,Y:LongWord Result:=FramebufferSetOffset(X,Y); if Result <> ERROR_SUCCESS then Exit; - {Udpate Offset} + {Update Offset} if not(Pan) then begin Framebuffer.OffsetX:=X; diff --git a/source/rtl/ultibo/core/bcm2709.pas b/source/rtl/ultibo/core/bcm2709.pas index 5e319e1..1bd616e 100644 --- a/source/rtl/ultibo/core/bcm2709.pas +++ b/source/rtl/ultibo/core/bcm2709.pas @@ -9936,7 +9936,7 @@ function BCM2709FramebufferSetOffset(Framebuffer:PFramebufferDevice;X,Y:LongWord Result:=FramebufferSetOffset(X,Y); if Result <> ERROR_SUCCESS then Exit; - {Udpate Offset} + {Update Offset} if not(Pan) then begin Framebuffer.OffsetX:=X; diff --git a/source/rtl/ultibo/core/bcm2710.pas b/source/rtl/ultibo/core/bcm2710.pas index b33fba0..cd51f32 100644 --- a/source/rtl/ultibo/core/bcm2710.pas +++ b/source/rtl/ultibo/core/bcm2710.pas @@ -9929,7 +9929,7 @@ function BCM2710FramebufferSetOffset(Framebuffer:PFramebufferDevice;X,Y:LongWord Result:=FramebufferSetOffset(X,Y); if Result <> ERROR_SUCCESS then Exit; - {Udpate Offset} + {Update Offset} if not(Pan) then begin Framebuffer.OffsetX:=X; diff --git a/source/rtl/ultibo/core/console.pas b/source/rtl/ultibo/core/console.pas index b294e59..615cf84 100644 --- a/source/rtl/ultibo/core/console.pas +++ b/source/rtl/ultibo/core/console.pas @@ -651,7 +651,7 @@ procedure ConsoleInit; {Setup Framebuffer Console} FRAMEBUFFER_CONSOLE_DEFAULT_DESKTOPOFFSET:=48; - FRAMEBUFFER_CONSOLE_DEFAULT_DESKTOPCOLOR:=COLOR_ORANGE; + FRAMEBUFFER_CONSOLE_DEFAULT_DESKTOPCOLOR:=COLOR_ULTIBO; {Check Environment Variables} //To Do //CONSOLE_DEFAULT_FONT_NAME / WINDOW_DEFAULT_FONT_NAME diff --git a/source/rtl/ultibo/core/dwcotg.pas b/source/rtl/ultibo/core/dwcotg.pas index 44f5391..76d7073 100644 --- a/source/rtl/ultibo/core/dwcotg.pas +++ b/source/rtl/ultibo/core/dwcotg.pas @@ -309,7 +309,7 @@ interface DWC_HOST_PORT_CTRLSTATUS_RESUME = (1 shl 6); {Bit 6} {Set by software to suspend the port} DWC_HOST_PORT_CTRLSTATUS_SUSPENDED = (1 shl 7); {Bit 7} - {Software can set this to start a reset on this port. Software must clear this after waiting 60 milliseconds for the reset is complete} + {Software can set this to start a reset on this port. Software must clear this after waiting 60 milliseconds for the reset to complete} DWC_HOST_PORT_CTRLSTATUS_RESET = (1 shl 8); {Bit 8} DWC_HOST_PORT_CTRLSTATUS_RESERVED = (1 shl 9); {Bit 9} {Current logic of data lines (10: logic of D+; 11: logic of D-). Changed by hardware only} @@ -455,7 +455,7 @@ interface DWC_HOST_CHANNEL_TRANSFER_PACKET_COUNT = ($3FF shl 19); {Bits 19-28} {High 2 bits of the Packet ID used in the USB protocol. When performing the SETUP phase of a control transfer, specify 0x3 here to generate the needed SETUP token. When performing the DATA phase of a control transfer, initially specify 0x2 here to begin the DATA packets with the needed DATA1 Packet ID. - When performing the STATUS phase of a control transfer, specify 0x2 here to generate the neeed DATA1 Packet ID. + When performing the STATUS phase of a control transfer, specify 0x2 here to generate the needed DATA1 Packet ID. When starting a bulk, isochronous, or interrupt transfer, specify 0x0 here to generate the needed DATA0 Packet ID. In the case of a transfer consisting of multiple DATA packets, the hardware will update this field with the Packet ID to use for the next packet. This field therefore only needs to be re-programmed if the transfer is moved to a different channel or the channel is re-used before the transfer is complete. When doing so, software must save this @@ -1425,7 +1425,7 @@ function DWCHostSubmit(Host:PUSBHost;Request:PUSBRequest):LongWord; function DWCHostCancel(Host:PUSBHost;Request:PUSBRequest):LongWord; {Implementation of USBHostCancel for the DesignWare Hi-Speed USB 2.0 On-The-Go Controller. - See usb.pas for the documentation of thisinterface of the Host Controller Driver} + See usb.pas for the documentation of this interface of the Host Controller Driver} {Return: USB_STATUS_SUCCESS if completed or another error code on failure} {Note: Caller must hold the device lock} @@ -2815,15 +2815,18 @@ function DWCChannelStartTransfer(Host:PDWCUSBHost;Channel:LongWord;Request:PUSBR Host.ChannelRequests[Channel]:=Request; {$IF (DEFINED(DWCOTG_DEBUG) or DEFINED(USB_DEBUG)) and DEFINED(INTERRUPT_DEBUG)} - if USB_LOG_ENABLED then USBLogDebug(Request.Device,'DWCOTG: Setting up transaction on channel ' + IntToStr(Channel) + ':'); - if USB_LOG_ENABLED then USBLogDebug(Request.Device,'DWCOTG: CHARACTERISTICS_MAX_PACKET_SIZE=' + IntToStr(Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_MAX_PACKET_SIZE) + ', CHARACTERISTICS_ENDPOINT_NUMBER=' + IntToStr((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_ENDPOINT_NUMBER) shr 11) + ','); - if USB_LOG_ENABLED then USBLogDebug(Request.Device,'DWCOTG: CHARACTERISTICS_ENDPOINT_DIRECTION=' + USBDirectionToString((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_ENDPOINT_DIRECTION) shr 15) + ', CHARACTERISTICS_LOWSPEED=' + IntToStr((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_LOWSPEED) shr 17) + ','); - if USB_LOG_ENABLED then USBLogDebug(Request.Device,'DWCOTG: CHARACTERISTICS_ENDPOINT_TYPE=' + USBTransferTypeToString((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_ENDPOINT_TYPE) shr 18) + ', CHARACTERISTICS_DEVICE_ADDRESS=' + IntToStr((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_DEVICE_ADDRESS) shr 22) + ','); - if USB_LOG_ENABLED then USBLogDebug(Request.Device,'DWCOTG: TRANSFER_SIZE=' + IntToStr(Transfer and DWC_HOST_CHANNEL_TRANSFER_SIZE) + ', TRANSFER_PACKET_COUNT=' + IntToStr((Transfer and DWC_HOST_CHANNEL_TRANSFER_PACKET_COUNT) shr 19) + ','); - if USB_LOG_ENABLED then USBLogDebug(Request.Device,'DWCOTG: TRANSFER_PACKET_ID=' + IntToStr((Transfer and DWC_HOST_CHANNEL_TRANSFER_PACKET_ID) shr 29) + ', SPLIT_CONTROL_SPLIT_ENABLE=' + IntToStr((SplitControl and DWC_HOST_CHANNEL_SPLIT_CONTROL_SPLIT_ENABLE) shr 31) + ','); - if USB_LOG_ENABLED then USBLogDebug(Request.Device,'DWCOTG: CompleteSplit=' + BooleanToString(Request.CompleteSplit)); - if USB_LOG_ENABLED then USBLogDebug(Request.Device,'DWCOTG: DMAAddress=' + IntToHex(HostChannel.DMAAddress,8) + ', CurrentData=' + IntToHex(LongWord(Request.CurrentData),8)); - if USB_LOG_ENABLED then USBLogDebug(Request.Device,'DWCOTG: AttemptedSize=' + IntToStr(Request.AttemptedSize) + ', AttemptedBytesRemaining=' + IntToStr(Request.AttemptedBytesRemaining) + ', AttemptedPacketsRemaining=' + IntToStr(Request.AttemptedPacketsRemaining)); + if USB_LOG_ENABLED then + begin + USBLogDebug(Request.Device,'DWCOTG: Setting up transaction on channel ' + IntToStr(Channel) + ':'); + USBLogDebug(Request.Device,'DWCOTG: CHARACTERISTICS_MAX_PACKET_SIZE=' + IntToStr(Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_MAX_PACKET_SIZE) + ', CHARACTERISTICS_ENDPOINT_NUMBER=' + IntToStr((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_ENDPOINT_NUMBER) shr 11) + ','); + USBLogDebug(Request.Device,'DWCOTG: CHARACTERISTICS_ENDPOINT_DIRECTION=' + USBDirectionToString((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_ENDPOINT_DIRECTION) shr 15) + ', CHARACTERISTICS_LOWSPEED=' + IntToStr((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_LOWSPEED) shr 17) + ','); + USBLogDebug(Request.Device,'DWCOTG: CHARACTERISTICS_ENDPOINT_TYPE=' + USBTransferTypeToString((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_ENDPOINT_TYPE) shr 18) + ', CHARACTERISTICS_DEVICE_ADDRESS=' + IntToStr((Characteristics and DWC_HOST_CHANNEL_CHARACTERISTICS_DEVICE_ADDRESS) shr 22) + ','); + USBLogDebug(Request.Device,'DWCOTG: TRANSFER_SIZE=' + IntToStr(Transfer and DWC_HOST_CHANNEL_TRANSFER_SIZE) + ', TRANSFER_PACKET_COUNT=' + IntToStr((Transfer and DWC_HOST_CHANNEL_TRANSFER_PACKET_COUNT) shr 19) + ','); + USBLogDebug(Request.Device,'DWCOTG: TRANSFER_PACKET_ID=' + IntToStr((Transfer and DWC_HOST_CHANNEL_TRANSFER_PACKET_ID) shr 29) + ', SPLIT_CONTROL_SPLIT_ENABLE=' + IntToStr((SplitControl and DWC_HOST_CHANNEL_SPLIT_CONTROL_SPLIT_ENABLE) shr 31) + ','); + USBLogDebug(Request.Device,'DWCOTG: CompleteSplit=' + BooleanToString(Request.CompleteSplit)); + USBLogDebug(Request.Device,'DWCOTG: DMAAddress=' + IntToHex(HostChannel.DMAAddress,8) + ', CurrentData=' + IntToHex(LongWord(Request.CurrentData),8)); + USBLogDebug(Request.Device,'DWCOTG: AttemptedSize=' + IntToStr(Request.AttemptedSize) + ', AttemptedBytesRemaining=' + IntToStr(Request.AttemptedBytesRemaining) + ', AttemptedPacketsRemaining=' + IntToStr(Request.AttemptedPacketsRemaining)); + end; {$ENDIF} {Program the channel registers} @@ -3155,7 +3158,7 @@ function DWCHostPortClearFeature(Host:PDWCUSBHost;Feature:Word):LongWord; Result:=USB_STATUS_SUCCESS; end; USB_C_PORT_ENABLE:begin - {Clear Enaled Change} + {Clear Enabled Change} Host.PortStatus.wPortChange:=Host.PortStatus.wPortChange and not(USB_PORT_CHANGE_ENABLED); {Return Result} diff --git a/source/rtl/ultibo/core/filesystem.pas b/source/rtl/ultibo/core/filesystem.pas index 41f031c..bcc3248 100644 --- a/source/rtl/ultibo/core/filesystem.pas +++ b/source/rtl/ultibo/core/filesystem.pas @@ -1665,8 +1665,8 @@ TFileSysDriver = class(TObject) function GetVolumeTotalSpaceEx(const AVolume:String):Int64; {File Methods} - function FileOpen(const AFileName:String;AMode:Integer):Integer; - function FileCreate(const AFileName:String):Integer; + function FileOpen(const AFileName:String;AMode:Integer):THandle; + function FileCreate(const AFileName:String;AMode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; function DeleteFile(const AFileName:String):Boolean; procedure FileClose(AHandle:Integer); function RenameFile(const AOldName,ANewName:String):Boolean; @@ -1756,7 +1756,7 @@ TFileSysDriver = class(TObject) function DeleteSlash(const AFilePath:String;ALeading,ATrailing:Boolean):String; {Extended Methods} - function FileCreateEx(const AFileName,AShortName:String):Integer; + function FileCreateEx(const AFileName,AShortName:String;AMode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; function CreateDirEx(const ADirName,AShortName:String):Boolean; function FileSeekEx(AHandle:THandle;const AOffset:Int64;AOrigin:LongInt):Int64; @@ -3705,8 +3705,8 @@ TFileSystem = class(TListObject) function GetDriveInformation(var AClusterSize:LongWord;var ATotalClusterCount,AFreeClusterCount:Int64):Boolean; virtual; {File Functions} - function FileOpen(const FileName:String;Mode:Integer):Integer; virtual; - function FileCreate(const FileName:String):Integer; virtual; + function FileOpen(const FileName:String;Mode:Integer):THandle; virtual; + function FileCreate(const FileName:String;Mode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; virtual; function DeleteFile(const FileName:String):Boolean; virtual; procedure FileClose(Handle:Integer); virtual; function RenameFile(const OldName,NewName:String):Boolean; virtual; @@ -3783,7 +3783,7 @@ TFileSystem = class(TListObject) function GetTrueName(const FileName:String):String; virtual; {Extended Functions} - function FileCreateEx(const FileName,ShortName:String):Integer; virtual; + function FileCreateEx(const FileName,ShortName:String;Mode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; virtual; function CreateDirEx(const DirName,ShortName:String):Boolean; virtual; function FileGetAttrEx(Handle:Integer):Integer; virtual; @@ -5175,8 +5175,8 @@ function FSGetCurrentDrive:Byte; inline; function FSSetCurrentDrive(const ADrive:String):Boolean; inline; {File Functions} -function FSFileOpen(const AFileName:String;AMode:Integer):Integer; inline; -function FSFileCreate(const AFileName:String):Integer; inline; +function FSFileOpen(const AFileName:String;AMode:Integer):THandle; inline; +function FSFileCreate(const AFileName:String):THandle; inline; function FSDeleteFile(const AFileName:String):Boolean; inline; procedure FSFileClose(AHandle:Integer); inline; function FSRenameFile(const AOldName,ANewName:String):Boolean; inline; @@ -5337,7 +5337,7 @@ function DosGetLongName(var p:ShortString):Boolean; {SysUtils File Functions} function SysUtilsFileOpen(const FileName:RawByteString;Mode:Integer):THandle; -function SysUtilsFileCreate(const FileName:RawByteString):THandle; +function SysUtilsFileCreate(const FileName:RawByteString;ShareMode:Integer):THandle; function SysUtilsDeleteFile(const FileName:RawByteString):Boolean; procedure SysUtilsFileClose(Handle:THandle); function SysUtilsRenameFile(const OldName,NewName:RawByteString):Boolean; @@ -15409,13 +15409,13 @@ function TFileSysDriver.GetVolumeTotalSpaceEx(const AVolume:String):Int64; {==============================================================================} -function TFileSysDriver.FileOpen(const AFileName:String;AMode:Integer):Integer; +function TFileSysDriver.FileOpen(const AFileName:String;AMode:Integer):THandle; var Drive:TDiskDrive; Volume:TDiskVolume; begin {} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; if not ReaderLock then Exit; try @@ -15455,18 +15455,18 @@ function TFileSysDriver.FileOpen(const AFileName:String;AMode:Integer):Integer; {==============================================================================} -function TFileSysDriver.FileCreate(const AFileName:String):Integer; +function TFileSysDriver.FileCreate(const AFileName:String;AMode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; var Drive:TDiskDrive; Volume:TDiskVolume; begin {} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; if not ReaderLock then Exit; try {$IFDEF FILESYS_DEBUG} - if FILESYS_LOG_ENABLED then FileSysLogDebug('TFileSysDriver.FileCreate FileName = ' + AFileName); + if FILESYS_LOG_ENABLED then FileSysLogDebug('TFileSysDriver.FileCreate FileName = ' + AFileName + ' Mode = ' + IntToHex(AMode,4)); {$ENDIF} Drive:=GetDriveFromPath(AFileName,True,FILESYS_LOCK_READ); @@ -15477,7 +15477,7 @@ function TFileSysDriver.FileCreate(const AFileName:String):Integer; try if Volume.FileSystem = nil then Exit; - Result:=Volume.FileSystem.FileCreate(AFileName); + Result:=Volume.FileSystem.FileCreate(AFileName,AMode); finally {Unlock Volume} Volume.ReaderUnlock; @@ -15488,7 +15488,7 @@ function TFileSysDriver.FileCreate(const AFileName:String):Integer; try if Drive.FileSystem = nil then Exit; - Result:=Drive.FileSystem.FileCreate(AFileName); + Result:=Drive.FileSystem.FileCreate(AFileName,AMode); finally {Unlock Drive} Drive.ReaderUnlock; @@ -18393,19 +18393,19 @@ function TFileSysDriver.DeleteSlash(const AFilePath:String;ALeading,ATrailing:Bo {==============================================================================} -function TFileSysDriver.FileCreateEx(const AFileName,AShortName:String):Integer; +function TFileSysDriver.FileCreateEx(const AFileName,AShortName:String;AMode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; {Note: ShortName must not include drive or path (Name only)} var Drive:TDiskDrive; Volume:TDiskVolume; begin {} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; if not ReaderLock then Exit; try {$IFDEF FILESYS_DEBUG} - if FILESYS_LOG_ENABLED then FileSysLogDebug('TFileSysDriver.FileCreateEx FileName = ' + AFileName + ' ShortName = ' + AShortName); + if FILESYS_LOG_ENABLED then FileSysLogDebug('TFileSysDriver.FileCreateEx FileName = ' + AFileName + ' ShortName = ' + AShortName + ' Mode = ' + IntToHex(AMode,4)); {$ENDIF} Drive:=GetDriveFromPath(AFileName,True,FILESYS_LOCK_READ); @@ -18416,7 +18416,7 @@ function TFileSysDriver.FileCreateEx(const AFileName,AShortName:String):Integer; try if Volume.FileSystem = nil then Exit; - Result:=Volume.FileSystem.FileCreateEx(AFileName,AShortName); + Result:=Volume.FileSystem.FileCreateEx(AFileName,AShortName,AMode); finally {Unlock Volume} Volume.ReaderUnlock; @@ -18427,7 +18427,7 @@ function TFileSysDriver.FileCreateEx(const AFileName,AShortName:String):Integer; try if Drive.FileSystem = nil then Exit; - Result:=Drive.FileSystem.FileCreateEx(AFileName,AShortName); + Result:=Drive.FileSystem.FileCreateEx(AFileName,AShortName,AMode); finally {Unlock Drive} Drive.ReaderUnlock; @@ -19531,7 +19531,7 @@ function TFileSysDriver.CreateFile(const AFileName:String;AAccessMode,AShareMode if FileExists(AFileName) then Exit; {Create File} - Result:=FileCreate(AFileName); + Result:=FileCreate(AFileName,OpenMode or ShareMode); end; CREATE_ALWAYS:begin {Check Exists} @@ -19553,7 +19553,7 @@ function TFileSysDriver.CreateFile(const AFileName:String;AAccessMode,AShareMode if DirectoryExists(AFileName) then Exit; {Create File} - Result:=FileCreate(AFileName); + Result:=FileCreate(AFileName,OpenMode or ShareMode); end; end; OPEN_EXISTING:begin @@ -19573,7 +19573,7 @@ function TFileSysDriver.CreateFile(const AFileName:String;AAccessMode,AShareMode if DirectoryExists(AFileName) then Exit; {Create File} - Result:=FileCreate(AFileName); + Result:=FileCreate(AFileName,OpenMode or ShareMode); end; end; TRUNCATE_EXISTING:begin @@ -33553,7 +33553,7 @@ function TFileSystem.GetDriveInformation(var AClusterSize:LongWord;var ATotalClu {==============================================================================} -function TFileSystem.FileOpen(const FileName:String;Mode:Integer):Integer; +function TFileSystem.FileOpen(const FileName:String;Mode:Integer):THandle; {Open existing entry and return Handle} {Note: FileOpen can also open Folders but the handle can only be used for Get/SetFileTime} {Note: Cannot create with FileOpen} @@ -33571,7 +33571,7 @@ function TFileSystem.FileOpen(const FileName:String;Mode:Integer):Integer; Current:TDiskEntry; begin {Base Implementation} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; if not ReaderLock then Exit; try @@ -33679,7 +33679,7 @@ function TFileSystem.FileOpen(const FileName:String;Mode:Integer):Integer; {==============================================================================} -function TFileSystem.FileCreate(const FileName:String):Integer; +function TFileSystem.FileCreate(const FileName:String;Mode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; {Create new entry or truncate existing entry and return Handle} {Note: Cannot create Folders with FileCreate} var @@ -33696,7 +33696,7 @@ function TFileSystem.FileCreate(const FileName:String):Integer; Current:TDiskEntry; begin {Base Implementation} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; if not ReaderLock then Exit; try @@ -33817,7 +33817,7 @@ function TFileSystem.FileCreate(const FileName:String):Integer; end; try {Open Handle} - FileHandle:=FDriver.OpenFileHandle(FVolume,FDrive,Parent,Current,fmOpenReadWrite or fmShareExclusive,True,FILESYS_LOCK_WRITE); + FileHandle:=FDriver.OpenFileHandle(FVolume,FDrive,Parent,Current,Mode,True,FILESYS_LOCK_WRITE); if FileHandle = nil then Exit; {Set the Size} {In case of existing file} @@ -37237,7 +37237,7 @@ function TFileSystem.GetTrueName(const FileName:String):String; {==============================================================================} -function TFileSystem.FileCreateEx(const FileName,ShortName:String):Integer; +function TFileSystem.FileCreateEx(const FileName,ShortName:String;Mode:Integer = fmOpenReadWrite or fmShareExclusive):THandle; {Create new entry or truncate existing entry and return Handle} {Note: Cannot create Folders with FileCreateEx} {Note: ShortName does not apply to Streams} @@ -37255,7 +37255,7 @@ function TFileSystem.FileCreateEx(const FileName,ShortName:String):Integer; Current:TDiskEntry; begin {Base Implementation} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; if not ReaderLock then Exit; try @@ -37384,7 +37384,7 @@ function TFileSystem.FileCreateEx(const FileName,ShortName:String):Integer; end; try {Open Handle} - FileHandle:=FDriver.OpenFileHandle(FVolume,FDrive,Parent,Current,fmOpenReadWrite or fmShareExclusive,True,FILESYS_LOCK_WRITE); + FileHandle:=FDriver.OpenFileHandle(FVolume,FDrive,Parent,Current,Mode,True,FILESYS_LOCK_WRITE); if FileHandle = nil then Exit; {Set the Size} {In case of existing file} @@ -52253,10 +52253,10 @@ function FSSetCurrentDrive(const ADrive:String):Boolean; inline; {==============================================================================} {File Functions} -function FSFileOpen(const AFileName:String;AMode:Integer):Integer; inline; +function FSFileOpen(const AFileName:String;AMode:Integer):THandle; inline; begin {} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; {Check Driver} if FileSysDriver = nil then Exit; @@ -52267,10 +52267,10 @@ function FSFileOpen(const AFileName:String;AMode:Integer):Integer; inline; {==============================================================================} -function FSFileCreate(const AFileName:String):Integer; inline; +function FSFileCreate(const AFileName:String):THandle; inline; begin {} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; {Check Driver} if FileSysDriver = nil then Exit; @@ -54199,7 +54199,7 @@ function DosGetLongName(var p:ShortString):Boolean; function SysUtilsFileOpen(const FileName:RawByteString;Mode:Integer):THandle; begin {} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; {Check Driver} if FileSysDriver = nil then Exit; @@ -54210,16 +54210,16 @@ function SysUtilsFileOpen(const FileName:RawByteString;Mode:Integer):THandle; {==============================================================================} -function SysUtilsFileCreate(const FileName:RawByteString):THandle; +function SysUtilsFileCreate(const FileName:RawByteString;ShareMode:Integer):THandle; begin {} - Result:=-1; + Result:=INVALID_HANDLE_VALUE; {Check Driver} if FileSysDriver = nil then Exit; {Create File} - Result:=FileSysDriver.FileCreate(FileName); + Result:=FileSysDriver.FileCreate(FileName,fmOpenReadWrite or ShareMode); end; {==============================================================================} diff --git a/source/rtl/ultibo/core/globalconfig.pas b/source/rtl/ultibo/core/globalconfig.pas index 92754d1..443c8ed 100644 --- a/source/rtl/ultibo/core/globalconfig.pas +++ b/source/rtl/ultibo/core/globalconfig.pas @@ -67,6 +67,24 @@ interface _bss_start: record end; external name '_bss_start'; _bss_end: record end; external name '_bss_end'; +var + {Library Initialization and Finalization sections} + {Note: To access these from Pascal code use the address of the variable (eg @__ctors_start). Empty record definition prevents access to contents} + __preinit_array_start: record end; external name '__preinit_array_start'; + __preinit_array_end: record end; external name '__preinit_array_end'; + + __init_array_start: record end; external name '__init_array_start'; + __init_array_end: record end; external name '__init_array_end'; + + __fini_array_start: record end; external name '__fini_array_start'; + __fini_array_end: record end; external name '__fini_array_end'; + + __ctors_start: record end; external name '__ctors_start'; + __ctors_end: record end; external name '__ctors_end'; + + __dtors_start: record end; external name '__dtors_start'; + __dtors_end: record end; external name '__dtors_end'; + {==============================================================================} var {RTL Initial Heap allocation} @@ -87,11 +105,11 @@ interface {Memory and Peripheral mapping configuration} var {Physical to IO Address Mapping} - IO_BASE:LongWord; {The base for conversion from a Physical Address to an IO Address and back (Where Applicable)} - IO_ALIAS:LongWord; {The alias for conversion from a Physical Address to an IO Address and back (Where Applicable)} + IO_BASE:PtrUInt; {The base for conversion from a Physical Address to an IO Address and back (Where Applicable)} + IO_ALIAS:PtrUInt; {The alias for conversion from a Physical Address to an IO Address and back (Where Applicable)} {Physical to Bus Address Mapping} - BUS_ALIAS:LongWord; {The mask for conversion from a Physical Address to a Bus Address and back (Where Applicable)} + BUS_ALIAS:PtrUInt; {The mask for conversion from a Physical Address to a Bus Address and back (Where Applicable)} {==============================================================================} var @@ -290,6 +308,9 @@ interface {Condition defaults} CONDITION_SHARED_MEMORY:LongBool; {Condition variables are allocated from Shared memory regions if True} + + {Completion defaults} + COMPLETION_SHARED_MEMORY:LongBool; {Completion variables are allocated from Shared memory regions if True} {Critical Section defaults} CRITICAL_SECTION_SHARED_MEMORY:LongBool; {Critical Sections are allocated from Shared memory regions if True} @@ -677,17 +698,19 @@ interface {USB Hub} USB_HUB_MESSAGESLOT_MAXIMUM:LongWord = SIZE_512; {Maximum number of messages for the USB hub messageslot} + USB_HUB_REGISTER_DRIVER:LongBool = True; {If True then register the USB HUB driver during boot (Only if USB unit included)(Note: USB cannot function correctly without a hub driver)} {USB Keyboard} - USB_KEYBOARD_POLLING_INTERVAL:LongWord = 10; {Override the default polling interval for a USB keyboard (Milliseconds)} + USB_KEYBOARD_POLLING_INTERVAL:LongWord = 10; {Override the default polling interval for a USB keyboard (Milliseconds)} + USB_KEYBOARD_REGISTER_DRIVER:LongBool = True; {If True then register the USB Keyboard driver during boot (Only if Keyboard unit included)} {USB Mouse} - USB_MOUSE_POLLING_INTERVAL:LongWord = 10; {Override the default polling interval for a USB mouse (Milliseconds)} + USB_MOUSE_POLLING_INTERVAL:LongWord = 10; {Override the default polling interval for a USB mouse (Milliseconds)} + USB_MOUSE_REGISTER_DRIVER:LongBool = True; {If True then register the USB Mouse driver during boot (Only if Mouse unit included)} {USB Storage} - USB_STORAGE_FORCE_REMOVABLE:LongBool; {If True then all USB storage devices will be assumed to be removable} - - //To Do //More + USB_STORAGE_FORCE_REMOVABLE:LongBool; {If True then all USB storage devices will be assumed to be removable} + USB_STORAGE_REGISTER_DRIVER:LongBool = True; {If True then register the USB Storage driver during boot (Only if Storage unit included)} {==============================================================================} {Specific Peripheral configuration (Set by PeripheralInit)} @@ -1023,9 +1046,9 @@ interface {==============================================================================} {Shell configuration} var - CONSOLE_SHELL_ENABLED:LongBool = True; {If True then automatically create a console shell window when a new console is registers (Only if ConsoleShell unit included)} + CONSOLE_SHELL_ENABLED:LongBool = True; {If True then automatically create a console shell window when a new console is registered (Only if ConsoleShell unit included)} CONSOLE_SHELL_POSITION:LongWord = CONSOLE_POSITION_RIGHT; {The default Console Window position for the console shell} - CONSOLE_SHELL_DEVICE:String; {The console device Name (or Desription) to create the shell window on, if blank create on default device unless forced (Only if ConsoleShell unit included)} + CONSOLE_SHELL_DEVICE:String; {The console device Name (or Description) to create the shell window on, if blank create on default device unless forced (Only if ConsoleShell unit included)} {==============================================================================} {Specific Service configuration} diff --git a/source/rtl/ultibo/core/globalconst.pas b/source/rtl/ultibo/core/globalconst.pas index f9eaee0..8b3ba29 100644 --- a/source/rtl/ultibo/core/globalconst.pas +++ b/source/rtl/ultibo/core/globalconst.pas @@ -50,12 +50,12 @@ interface {Global constants} const {Version constants} - ULTIBO_RELEASE_DATE = '11 September 2017'; - ULTIBO_RELEASE_NAME = 'Cucumber'; - ULTIBO_RELEASE_VERSION = '1.3.461'; - ULTIBO_RELEASE_VERSION_MAJOR = 1; - ULTIBO_RELEASE_VERSION_MINOR = 3; - ULTIBO_RELEASE_VERSION_REVISION = 461; + ULTIBO_RELEASE_DATE = '18 September 2017'; + ULTIBO_RELEASE_NAME = 'Beetroot'; + ULTIBO_RELEASE_VERSION = '2.0.029'; + ULTIBO_RELEASE_VERSION_MAJOR = 2; + ULTIBO_RELEASE_VERSION_MINOR = 0; + ULTIBO_RELEASE_VERSION_REVISION = 029; {==============================================================================} const @@ -886,6 +886,14 @@ interface COLOR_CYAN = $FF00FFFF; COLOR_WHITE = $FFFFFFFF; + {Ultibo release RGB colors} + COLOR_ULTIBO_LETTUCE = $FF000000; {Ultibo Version 0.0 (Lettuce)} + COLOR_ULTIBO_POTATO = $FF0000A0; {Ultibo Version 1.0 (Potato)} + COLOR_ULTIBO_CUCUMBER = $FFFF8500; {Ultibo Version 1.x (Cucumber)} + COLOR_ULTIBO_BEETROOT = $FF00BB00; {Ultibo Version 2.x (Beetroot)} + + COLOR_ULTIBO = COLOR_ULTIBO_BEETROOT; + {Color format constants} {See: https://en.wikipedia.org/wiki/Color_depth and https://en.wikipedia.org/wiki/RGBA_color_space} COLOR_FORMAT_ARGB32 = 0; {32 bits per pixel Alpha/Red/Green/Blue (ARGB8888)} @@ -1688,19 +1696,20 @@ interface HANDLE_TYPE_SEMAPHORE = 4; HANDLE_TYPE_SYNCHRONIZER = 5; HANDLE_TYPE_CONDITION = 6; - HANDLE_TYPE_LIST = 7; - HANDLE_TYPE_QUEUE = 8; - HANDLE_TYPE_THREAD = 9; - HANDLE_TYPE_MESSAGESLOT = 10; - HANDLE_TYPE_MAILSLOT = 11; - HANDLE_TYPE_BUFFER = 12; - HANDLE_TYPE_EVENT = 13; + HANDLE_TYPE_COMPLETION = 7; + HANDLE_TYPE_LIST = 8; + HANDLE_TYPE_QUEUE = 9; + HANDLE_TYPE_THREAD = 10; + HANDLE_TYPE_MESSAGESLOT = 11; + HANDLE_TYPE_MAILSLOT = 12; + HANDLE_TYPE_BUFFER = 13; + HANDLE_TYPE_EVENT = 14; - HANDLE_TYPE_TIMER = 14; - HANDLE_TYPE_WORKER = 15; - HANDLE_TYPE_WINDOW = 16; - HANDLE_TYPE_FONT = 17; - HANDLE_TYPE_KEYMAP = 18; + HANDLE_TYPE_TIMER = 15; + HANDLE_TYPE_WORKER = 16; + HANDLE_TYPE_WINDOW = 17; + HANDLE_TYPE_FONT = 18; + HANDLE_TYPE_KEYMAP = 19; HANDLE_TYPE_FILE = 100; HANDLE_TYPE_PIPE = 101; diff --git a/source/rtl/ultibo/core/globaldefines.inc b/source/rtl/ultibo/core/globaldefines.inc index 79a6145..f6e99ea 100644 --- a/source/rtl/ultibo/core/globaldefines.inc +++ b/source/rtl/ultibo/core/globaldefines.inc @@ -59,6 +59,7 @@ Global Defines {$DEFINE SEMAPHORE_INLINE} {Inline parts of Semaphore handling for performance (Default: On)} {$DEFINE SYNCHRONIZER_INLINE} {Inline parts of Synchronizer handling for performance (Default: On)} {$DEFINE CONDITION_INLINE} {Inline parts of Condition handling for performance (Default: On)} +{$DEFINE COMPLETION_INLINE} {Inline parts of Completion handling for performance (Default: On)} {$DEFINE LIST_INLINE} {Inline parts of List handling for performance (Default: On)} {$DEFINE QUEUE_INLINE} {Inline parts of Queue handling for performance (Default: On)} {$DEFINE THREAD_INLINE} {Inline parts of Thread handling for performance (Default: On)} @@ -258,7 +259,7 @@ Global Defines {--$DEFINE PL18X_DEBUG} {Enable debug output/counters for PL18X driver (Default: Off)} {GPU} -{--$DEFINE VC4_DEBUG} {Enable debug output/counters for VC4 driver (Default: Off)} +{--$DEFINE VC4_DEBUG} {Enable debug output/counters for VC4 interface (Default: Off)} {--$DEFINE VC4VCHIQ_DEBUG} {Enable debug output/counters for VC4 VCHIQ driver (Default: Off)} {--$DEFINE VC4VCSM_DEBUG} {Enable debug output/counters for VC4 VCSM driver (Default: Off)} {--$DEFINE VC4V3D_DEBUG} {Enable debug output/counters for VC4 V3D interface (Default: Off)} diff --git a/source/rtl/ultibo/core/globalsock.pas b/source/rtl/ultibo/core/globalsock.pas index 801d2d3..7452aab 100644 --- a/source/rtl/ultibo/core/globalsock.pas +++ b/source/rtl/ultibo/core/globalsock.pas @@ -582,7 +582,7 @@ interface WSA_IF_TYPE_IEEE1394 = 144; {An IEEE 1394 (Firewire) high performance serial bus network interface} WSA_IF_TYPE_IEEE80216_WMAN = 237; {A mobile broadband interface for WiMax devices} WSA_IF_TYPE_WWANPP = 243; {A mobile broadband interface for GSM-based devices} - WSA_IF_TYPE_WWANPP2 = 244; {An mobile broadband interface for CDMA-based devices} + WSA_IF_TYPE_WWANPP2 = 244; {A mobile broadband interface for CDMA-based devices} const WSA_IF_ADMIN_STATUS_UP = 1; diff --git a/source/rtl/ultibo/core/globaltypes.pas b/source/rtl/ultibo/core/globaltypes.pas index 45ad8b4..88e8d5e 100644 --- a/source/rtl/ultibo/core/globaltypes.pas +++ b/source/rtl/ultibo/core/globaltypes.pas @@ -56,6 +56,7 @@ interface TSemaphoreHandle = THandle; TSynchronizerHandle = THandle; TConditionHandle = THandle; + TCompletionHandle = THandle; TListHandle = THandle; TQueueHandle = THandle; TThreadHandle = THandle; @@ -78,6 +79,7 @@ interface PSemaphoreHandle = ^TSemaphoreHandle; PSynchronizerHandle = ^TSynchronizerHandle; PConditionHandle = ^TConditionHandle; + PCompletionHandle = ^TCompletionHandle; PListHandle = ^TListHandle; PQueueHandle = ^TQueueHandle; PThreadHandle = ^TThreadHandle; @@ -301,6 +303,15 @@ interface FARPROC = function: Integer; {C types} + int8_t = Shortint; + pint8_t = PShortint; + + uint8_t = Byte; + puint8_t = PByte; + + int16_t = Smallint; + pint16_t = PSmallint; + uint16_t = Word; puint16_t = PWord; @@ -316,6 +327,12 @@ interface uint64_t = QWord; puint64_t = PQWord; + float_t = Single; + pfloat_t = PSingle; + + double_t = Double; + pdouble_t = PDouble; + patomic_t = ^atomic_t; atomic_t = record counter: LongInt; diff --git a/source/rtl/ultibo/core/keyboard.pas b/source/rtl/ultibo/core/keyboard.pas index 87e9b19..0679801 100644 --- a/source/rtl/ultibo/core/keyboard.pas +++ b/source/rtl/ultibo/core/keyboard.pas @@ -187,18 +187,25 @@ interface USBKEYBOARD_KEYBOARD_DESCRIPTION = 'USB HID Keyboard'; {Description of USB keyboard device} {HID Interface Subclass types (See USB HID v1.11 specification)} + USB_HID_SUBCLASS_NONE = 0; {Section 4.2} USB_HID_SUBCLASS_BOOT = 1; {Section 4.2} {HID Interface Protocol types (See USB HID v1.11 specification)} + USB_HID_BOOT_PROTOCOL_NONE = 0; {Section 4.3} USB_HID_BOOT_PROTOCOL_KEYBOARD = 1; {Section 4.3} USB_HID_BOOT_PROTOCOL_MOUSE = 2; {Section 4.3} + {HID Class Descriptor Types (See USB HID v1.11 specification)} + USB_HID_DESCRIPTOR_TYPE_HID = $21; {Section 7.1} + USB_HID_DESCRIPTOR_TYPE_REPORT = $22; {Section 7.1} + USB_HID_DESCRIPTOR_TYPE_PHYSICAL_DESCRIPTOR = $23; {Section 7.1} + {HID Request types} - USB_HID_REQUEST_GET_REPORT = $01; - USB_HID_REQUEST_GET_IDLE = $02; + USB_HID_REQUEST_GET_REPORT = $01; {Section 7.2} + USB_HID_REQUEST_GET_IDLE = $02; {Section 7.2} USB_HID_REQUEST_GET_PROTOCOL = $03; {Section 7.2} - USB_HID_REQUEST_SET_REPORT = $09; - USB_HID_REQUEST_SET_IDLE = $0A; + USB_HID_REQUEST_SET_REPORT = $09; {Section 7.2} + USB_HID_REQUEST_SET_IDLE = $0A; {Section 7.2} USB_HID_REQUEST_SET_PROTOCOL = $0B; {Section 7.2} {HID Protocol types} @@ -233,7 +240,7 @@ interface USB_HID_BOOT_COMPOSE_LED = (1 shl 3); USB_HID_BOOT_KANA_LED = (1 shl 4); - USB_HIB_BOOT_LEDMASK = USB_HID_BOOT_NUMLOCK_LED or USB_HID_BOOT_CAPSLOCK_LED or USB_HID_BOOT_SCROLLLOCK_LED or USB_HID_BOOT_COMPOSE_LED or USB_HID_BOOT_KANA_LED; + USB_HID_BOOT_LEDMASK = USB_HID_BOOT_NUMLOCK_LED or USB_HID_BOOT_CAPSLOCK_LED or USB_HID_BOOT_SCROLLLOCK_LED or USB_HID_BOOT_COMPOSE_LED or USB_HID_BOOT_KANA_LED; {HID Boot Protocol Output data} USB_HID_BOOT_OUTPUT_SIZE = 1; {Appendix B of HID Device Class Definition 1.11} @@ -765,27 +772,30 @@ procedure KeyboardInit; end; {Create USB Keyboard Driver} - USBKeyboardDriver:=USBDriverCreate; - if USBKeyboardDriver <> nil then + if USB_KEYBOARD_REGISTER_DRIVER then begin - {Update USB Keyboard Driver} - {Driver} - USBKeyboardDriver.Driver.DriverName:=USBKEYBOARD_DRIVER_NAME; - {USB} - USBKeyboardDriver.DriverBind:=USBKeyboardDriverBind; - USBKeyboardDriver.DriverUnbind:=USBKeyboardDriverUnbind; - - {Register USB Keyboard Driver} - Status:=USBDriverRegister(USBKeyboardDriver); - if Status <> USB_STATUS_SUCCESS then + USBKeyboardDriver:=USBDriverCreate; + if USBKeyboardDriver <> nil then begin - if USB_LOG_ENABLED then USBLogError(nil,'Keyboard: Failed to register USB keyboard driver: ' + USBStatusToString(Status)); + {Update USB Keyboard Driver} + {Driver} + USBKeyboardDriver.Driver.DriverName:=USBKEYBOARD_DRIVER_NAME; + {USB} + USBKeyboardDriver.DriverBind:=USBKeyboardDriverBind; + USBKeyboardDriver.DriverUnbind:=USBKeyboardDriverUnbind; + + {Register USB Keyboard Driver} + Status:=USBDriverRegister(USBKeyboardDriver); + if Status <> USB_STATUS_SUCCESS then + begin + if USB_LOG_ENABLED then USBLogError(nil,'Keyboard: Failed to register USB keyboard driver: ' + USBStatusToString(Status)); + end; + end + else + begin + if KEYBOARD_LOG_ENABLED then KeyboardLogError(nil,'Failed to create USB keyboard driver'); end; - end - else - begin - if KEYBOARD_LOG_ENABLED then KeyboardLogError(nil,'Failed to create USB keyboard driver'); - end; + end; {Setup Platform Console Handlers} ConsoleGetKeyHandler:=SysConsoleGetKey; diff --git a/source/rtl/ultibo/core/logging.pas b/source/rtl/ultibo/core/logging.pas index d361ed0..0711195 100644 --- a/source/rtl/ultibo/core/logging.pas +++ b/source/rtl/ultibo/core/logging.pas @@ -78,7 +78,7 @@ interface type {Logging specific types} PLoggingEntry = ^TLoggingEntry; - TLoggingEntry = record {Note: Overlayed on TMessage to avoid memory allocation on each output} + TLoggingEntry = record {Note: Overlaid on TMessage to avoid memory allocation on each output} Data:String; {TMessage.Msg:LongWord} Reserved1:LongInt; {TMessage.wParam:LongInt} Reserved2:LongInt; {TMessage.lParam:LongInt} @@ -86,7 +86,7 @@ TLoggingEntry = record {Note: Overlayed on TMessage to avoid memory allocation end; PLoggingEntryEx = ^TLoggingEntryEx; - TLoggingEntryEx = record {Note: Overlayed on TMessage to avoid memory allocation on each output} + TLoggingEntryEx = record {Note: Overlaid on TMessage to avoid memory allocation on each output} Content:String; {TMessage.Msg:LongWord} Tag:String; {TMessage.wParam:LongInt} Severity:LongInt; {TMessage.lParam:LongInt} @@ -1187,8 +1187,17 @@ function SysTextIOWriteChar(ACh:Char;AUserData:Pointer):Boolean; #10:begin case DefaultTextLineBreakStyle of tlbsLF,tlbsCRLF:begin - {Output Logging} - LoggingDeviceOutput(LoggingTextIOOutputDevice,LoggingTextIOBuffer); + {Check Default} + if LoggingTextIOOutputDevice = LoggingDeviceDefault then + begin + {Output Logging} + LoggingOutput(LoggingTextIOBuffer); + end + else + begin + {Output Logging} + LoggingDeviceOutput(LoggingTextIOOutputDevice,LoggingTextIOBuffer); + end; {Clear Buffer} SetLength(LoggingTextIOBuffer,0); @@ -1198,8 +1207,17 @@ function SysTextIOWriteChar(ACh:Char;AUserData:Pointer):Boolean; #13:begin case DefaultTextLineBreakStyle of tlbsCR:begin - {Output Logging} - LoggingDeviceOutput(LoggingTextIOOutputDevice,LoggingTextIOBuffer); + {Check Default} + if LoggingTextIOOutputDevice = LoggingDeviceDefault then + begin + {Output Logging} + LoggingOutput(LoggingTextIOBuffer); + end + else + begin + {Output Logging} + LoggingDeviceOutput(LoggingTextIOOutputDevice,LoggingTextIOBuffer); + end; {Clear Buffer} SetLength(LoggingTextIOBuffer,0); @@ -1228,10 +1246,23 @@ function SysTextIOWriteBuffer(ABuffer:PChar;ACount:LongInt;AUserData:Pointer):Lo if (ABuffer <> nil) and (ACount > 0) then begin + {Allocate Buffer} SetLength(WorkBuffer,ACount); + + {Copy Buffer} StrLCopy(PChar(WorkBuffer),ABuffer,ACount); - if LoggingDeviceOutput(LoggingTextIOOutputDevice,WorkBuffer) <> ERROR_SUCCESS then Exit; + {Check Default} + if LoggingTextIOOutputDevice = LoggingDeviceDefault then + begin + {Output Logging} + LoggingOutput(WorkBuffer); + end + else + begin + {Output Logging} + if LoggingDeviceOutput(LoggingTextIOOutputDevice,WorkBuffer) <> ERROR_SUCCESS then Exit; + end; end; Result:=ACount; diff --git a/source/rtl/ultibo/core/mouse.pas b/source/rtl/ultibo/core/mouse.pas index 25a850e..421935f 100644 --- a/source/rtl/ultibo/core/mouse.pas +++ b/source/rtl/ultibo/core/mouse.pas @@ -150,12 +150,19 @@ interface USBMOUSE_MOUSE_DESCRIPTION = 'USB HID Mouse'; {Description of USB mouse device} {HID Interface Subclass types (See USB HID v1.11 specification)} + USB_HID_SUBCLASS_NONE = 0; {Section 4.2} USB_HID_SUBCLASS_BOOT = 1; {Section 4.2} {HID Interface Protocol types (See USB HID v1.11 specification)} + USB_HID_BOOT_PROTOCOL_NONE = 0; {Section 4.3} USB_HID_BOOT_PROTOCOL_KEYBOARD = 1; {Section 4.3} USB_HID_BOOT_PROTOCOL_MOUSE = 2; {Section 4.3} + {HID Class Descriptor Types (See USB HID v1.11 specification)} + USB_HID_DESCRIPTOR_TYPE_HID = $21; {Section 7.1} + USB_HID_DESCRIPTOR_TYPE_REPORT = $22; {Section 7.1} + USB_HID_DESCRIPTOR_TYPE_PHYSICAL_DESCRIPTOR = $23; {Section 7.1} + {HID Request types} USB_HID_REQUEST_GET_REPORT = $01; USB_HID_REQUEST_GET_IDLE = $02; @@ -411,27 +418,30 @@ procedure MouseInit; end; {Create USB Mouse Driver} - USBMouseDriver:=USBDriverCreate; - if USBMouseDriver <> nil then + if USB_MOUSE_REGISTER_DRIVER then begin - {Update USB Mouse Driver} - {Driver} - USBMouseDriver.Driver.DriverName:=USBMOUSE_DRIVER_NAME; - {USB} - USBMouseDriver.DriverBind:=USBMouseDriverBind; - USBMouseDriver.DriverUnbind:=USBMouseDriverUnbind; - - {Register USB Mouse Driver} - Status:=USBDriverRegister(USBMouseDriver); - if Status <> USB_STATUS_SUCCESS then + USBMouseDriver:=USBDriverCreate; + if USBMouseDriver <> nil then begin - if USB_LOG_ENABLED then USBLogError(nil,'Mouse: Failed to register USB mouse driver: ' + USBStatusToString(Status)); + {Update USB Mouse Driver} + {Driver} + USBMouseDriver.Driver.DriverName:=USBMOUSE_DRIVER_NAME; + {USB} + USBMouseDriver.DriverBind:=USBMouseDriverBind; + USBMouseDriver.DriverUnbind:=USBMouseDriverUnbind; + + {Register USB Mouse Driver} + Status:=USBDriverRegister(USBMouseDriver); + if Status <> USB_STATUS_SUCCESS then + begin + if USB_LOG_ENABLED then USBLogError(nil,'Mouse: Failed to register USB mouse driver: ' + USBStatusToString(Status)); + end; + end + else + begin + if MOUSE_LOG_ENABLED then MouseLogError(nil,'Failed to create USB mouse driver'); end; - end - else - begin - if MOUSE_LOG_ENABLED then MouseLogError(nil,'Failed to create USB mouse driver'); - end; + end; {Setup Platform Console Handlers} ConsoleHideMouseHandler:=SysConsoleHideMouse; @@ -560,7 +570,7 @@ function MouseReadEx(Buffer:Pointer;Size,Flags:LongWord;var Count:LongWord):Long {Update Count} Inc(Count); - {Upate Size and Offset} + {Update Size and Offset} Dec(Size,SizeOf(TMouseData)); Inc(Offset,SizeOf(TMouseData)); finally @@ -637,7 +647,7 @@ function MouseWrite(Buffer:Pointer;Size,Count:LongWord):LongWord; {Update Count} Dec(Count); - {Upate Size and Offset} + {Update Size and Offset} Dec(Size,SizeOf(TMouseData)); Inc(Offset,SizeOf(TMouseData)); @@ -782,7 +792,7 @@ function MouseDeviceRead(Mouse:PMouseDevice;Buffer:Pointer;Size:LongWord;var Cou {Update Count} Inc(Count); - {Upate Size and Offset} + {Update Size and Offset} Dec(Size,SizeOf(TMouseData)); Inc(Offset,SizeOf(TMouseData)); finally @@ -1471,7 +1481,7 @@ function USBMouseDeviceRead(Mouse:PMouseDevice;Buffer:Pointer;Size:LongWord;var {Update Count} Inc(Count); - {Upate Size and Offset} + {Update Size and Offset} Dec(Size,SizeOf(TMouseData)); Inc(Offset,SizeOf(TMouseData)); finally diff --git a/source/rtl/ultibo/core/network.pas b/source/rtl/ultibo/core/network.pas index e3685df..c9e0faa 100644 --- a/source/rtl/ultibo/core/network.pas +++ b/source/rtl/ultibo/core/network.pas @@ -237,8 +237,8 @@ interface {Media Types} MEDIA_TYPE_UNKNOWN = $0000; - MEDIA_TYPE_ETHERNET = $0001; {ARP type of Ethernet Hardware (This values must not change, they are the actual values used by ARP packets)} - MEDIA_TYPE_TOKENRING = $0006; {ARP type of Token-Ring Hardware (This values must not change, they are the actual values used by ARP packets)} + MEDIA_TYPE_ETHERNET = $0001; {ARP type of Ethernet Hardware (This value must not change, it is the actual values used by ARP packets)} + MEDIA_TYPE_TOKENRING = $0006; {ARP type of Token-Ring Hardware (This value must not change, it is the actual values used by ARP packets)} MEDIA_TYPE_IEEE80211 = $1000; MEDIA_TYPE_LOOPBACK = $1001; MEDIA_TYPE_PPP = $1002; diff --git a/source/rtl/ultibo/core/platform.pas b/source/rtl/ultibo/core/platform.pas index 2d7cd7d..361ae5a 100644 --- a/source/rtl/ultibo/core/platform.pas +++ b/source/rtl/ultibo/core/platform.pas @@ -906,9 +906,14 @@ TPlatformSemaphore = record {Prototypes for PageTable Handlers} TPageTableGetBase = function:PtrUInt; TPageTableGetSize = function:LongWord; - TPageTableGetEntry = function(Address:PtrUInt):TPageTableEntry; + + TPageTableGetEntry = procedure(Address:PtrUInt;var Entry:TPageTableEntry); TPageTableSetEntry = function(const Entry:TPageTableEntry):LongWord; + TPageTableGetPageSize = function(Address:PtrUInt):LongWord; + TPageTableGetPageFlags = function(Address:PtrUInt):LongWord; + TPageTableGetPagePhysical = function(Address:PtrUInt):PtrUInt; + type {Prototypes for PageTables Handlers} TPageTablesGetAddress = function:PtrUInt; @@ -1612,9 +1617,14 @@ EUndefinedInstruction = class(EHardwareException); {PageTable Handlers} PageTableGetBaseHandler:TPageTableGetBase; PageTableGetSizeHandler:TPageTableGetSize; + PageTableGetEntryHandler:TPageTableGetEntry; PageTableSetEntryHandler:TPageTableSetEntry; + PageTableGetPageSizeHandler:TPageTableGetPageSize; + PageTableGetPageFlagsHandler:TPageTableGetPageFlags; + PageTableGetPagePhysicalHandler:TPageTableGetPagePhysical; + var {PageTables Handlers} PageTablesGetAddressHandler:TPageTablesGetAddress; @@ -2226,9 +2236,15 @@ function InterlockedCompareExchange(var Target:LongInt;Source,Compare:LongInt):L function PageTableGetBase:PtrUInt; inline; function PageTableGetSize:LongWord; inline; -function PageTableGetEntry(Address:PtrUInt):TPageTableEntry; inline; + +function PageTableGetEntry(Address:PtrUInt):TPageTableEntry; overload; +procedure PageTableGetEntry(Address:PtrUInt;var Entry:TPageTableEntry); inline; overload; function PageTableSetEntry(const Entry:TPageTableEntry):LongWord; inline; +function PageTableGetPageSize(Address:PtrUInt):LongWord; inline; +function PageTableGetPageFlags(Address:PtrUInt):LongWord; inline; +function PageTableGetPagePhysical(Address:PtrUInt):PtrUInt; inline; + function PageTablesGetAddress:PtrUInt; inline; function PageTablesGetLength:LongWord; inline; function PageTablesGetCount:LongWord; inline; @@ -2299,11 +2315,11 @@ procedure LoggingOutputEx(AFacility,ASeverity:LongWord;const ATag,AContent:Strin function FirstBitSet(Value:LongWord):LongWord; inline; function CountLeadingZeros(Value:LongWord):LongWord; inline; -function PhysicalToIOAddress(Address:Pointer):LongWord; inline; -function IOAddressToPhysical(Address:Pointer):LongWord; inline; +function PhysicalToIOAddress(Address:Pointer):PtrUInt; inline; +function IOAddressToPhysical(Address:Pointer):PtrUInt; inline; -function PhysicalToBusAddress(Address:Pointer):LongWord; inline; -function BusAddressToPhysical(Address:Pointer):LongWord; inline; +function PhysicalToBusAddress(Address:Pointer):PtrUInt; inline; +function BusAddressToPhysical(Address:Pointer):PtrUInt; inline; procedure NanosecondDelay(Nanoseconds:LongWord); procedure MicrosecondDelay(Microseconds:LongWord); @@ -8702,17 +8718,26 @@ function PageTableGetSize:LongWord; inline; {==============================================================================} -function PageTableGetEntry(Address:PtrUInt):TPageTableEntry; inline; +function PageTableGetEntry(Address:PtrUInt):TPageTableEntry; +{Get the Page Table entry that corresponds to the supplied virtual address} +begin + {} + PageTableGetEntry(Address,Result); +end; + +{==============================================================================} + +procedure PageTableGetEntry(Address:PtrUInt;var Entry:TPageTableEntry); inline; {Get the Page Table entry that corresponds to the supplied virtual address} begin {} if Assigned(PageTableGetEntryHandler) then begin - Result:=PageTableGetEntryHandler(Address); + PageTableGetEntryHandler(Address,Entry); end else begin - FillChar(Result,SizeOf(TPageTableEntry),0); + FillChar(Entry,SizeOf(TPageTableEntry),0); end; end; @@ -8734,6 +8759,72 @@ function PageTableSetEntry(const Entry:TPageTableEntry):LongWord; inline; {==============================================================================} +function PageTableGetPageSize(Address:PtrUInt):LongWord; inline; +{Get the Size from the Page Table page that corresponds to the supplied virtual address} +var + Entry:TPageTableEntry; +begin + {} + if Assigned(PageTableGetPageSizeHandler) then + begin + Result:=PageTableGetPageSizeHandler(Address); + end + else + begin + {Default Method} + PageTableGetEntry(Address,Entry); + + {Get Page Size} + Result:=Entry.Size; + end; +end; + +{==============================================================================} + +function PageTableGetPageFlags(Address:PtrUInt):LongWord; inline; +{Get the Flags from the Page Table page that corresponds to the supplied virtual address} +var + Entry:TPageTableEntry; +begin + {} + if Assigned(PageTableGetPageFlagsHandler) then + begin + Result:=PageTableGetPageFlagsHandler(Address); + end + else + begin + {Default Method} + PageTableGetEntry(Address,Entry); + + {Get Page Flags} + Result:=Entry.Flags; + end; +end; + +{==============================================================================} + +function PageTableGetPagePhysical(Address:PtrUInt):PtrUInt; inline; +{Get the Physical Address from the Page Table page that corresponds to the supplied virtual address} +var + Entry:TPageTableEntry; +begin + {} + if Assigned(PageTableGetPagePhysicalHandler) then + begin + Result:=PageTableGetPagePhysicalHandler(Address); + end + else + begin + {Default Method} + PageTableGetEntry(Address,Entry); + + {Get Page Physical Address} + Result:=Entry.PhysicalAddress; + end; +end; + +{==============================================================================} + function PageTablesGetAddress:PtrUInt; inline; {Get the address of the second level page tables} begin @@ -9513,38 +9604,38 @@ function CountLeadingZeros(Value:LongWord):LongWord; inline; {==============================================================================} -function PhysicalToIOAddress(Address:Pointer):LongWord; inline; +function PhysicalToIOAddress(Address:Pointer):PtrUInt; inline; {Convert Physical address to an IO addresses (Where Applicable)} begin {} - Result:=(LongWord(Address) - IO_BASE) + IO_ALIAS; + Result:=(PtrUInt(Address) - IO_BASE) + IO_ALIAS; end; {==============================================================================} -function IOAddressToPhysical(Address:Pointer):LongWord; inline; +function IOAddressToPhysical(Address:Pointer):PtrUInt; inline; {Convert an IO address to a Physical address (Where Applicable)} begin {} - Result:=(LongWord(Address) - IO_ALIAS) + IO_BASE; + Result:=(PtrUInt(Address) - IO_ALIAS) + IO_BASE; end; {==============================================================================} -function PhysicalToBusAddress(Address:Pointer):LongWord; inline; +function PhysicalToBusAddress(Address:Pointer):PtrUInt; inline; {Convert a Physical address to a Bus address (Where Applicable)} begin {} - Result:=LongWord(Address) or BUS_ALIAS; + Result:=PtrUInt(Address) or BUS_ALIAS; end; {==============================================================================} -function BusAddressToPhysical(Address:Pointer):LongWord; inline; +function BusAddressToPhysical(Address:Pointer):PtrUInt; inline; {Convert a Bus address to a Physical address (Where Applicable)} begin {} - Result:=LongWord(Address) and not(BUS_ALIAS); + Result:=PtrUInt(Address) and not(BUS_ALIAS); end; {==============================================================================} diff --git a/source/rtl/ultibo/core/platformarmv6.pas b/source/rtl/ultibo/core/platformarmv6.pas index b523331..9cad940 100644 --- a/source/rtl/ultibo/core/platformarmv6.pas +++ b/source/rtl/ultibo/core/platformarmv6.pas @@ -603,7 +603,7 @@ function ARMv6InterlockedExchange(var Target:LongInt;Source:LongInt):LongInt; function ARMv6InterlockedAddExchange(var Target:LongInt;Source:LongInt):LongInt; function ARMv6InterlockedCompareExchange(var Target:LongInt;Source,Compare:LongInt):LongInt; -function ARMv6PageTableGetEntry(Address:PtrUInt):TPageTableEntry; +procedure ARMv6PageTableGetEntry(Address:PtrUInt;var Entry:TPageTableEntry); function ARMv6PageTableSetEntry(const Entry:TPageTableEntry):LongWord; function ARMv6VectorTableGetEntry(Number:LongWord):PtrUInt; @@ -2237,13 +2237,13 @@ function ARMv6InterlockedCompareExchange(var Target:LongInt;Source,Compare:LongI {==============================================================================} -function ARMv6PageTableGetEntry(Address:PtrUInt):TPageTableEntry; +procedure ARMv6PageTableGetEntry(Address:PtrUInt;var Entry:TPageTableEntry); {Get and Decode the entry in the Page Table that corresponds to the supplied virtual address} var TableEntry:LongWord; begin {} - FillChar(Result,SizeOf(TPageTableEntry),0); + FillChar(Entry,SizeOf(TPageTableEntry),0); {Check Address} {Zero may be valid} @@ -2257,67 +2257,67 @@ function ARMv6PageTableGetEntry(Address:PtrUInt):TPageTableEntry; if TableEntry <> 0 then begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV6_L2D_SMALL_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV6_L2D_SMALL_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV6_L2D_SMALL_BASE_MASK); - Result.Size:=SIZE_4K; + Entry.PhysicalAddress:=(TableEntry and ARMV6_L2D_SMALL_BASE_MASK); + Entry.Size:=SIZE_4K; {Get Flags} {ARMv6 uses the standard L2D values (Not Cacheable or TEX Remap values)} - Result.Flags:=PAGE_TABLE_FLAG_NONE; + Entry.Flags:=PAGE_TABLE_FLAG_NONE; {Check Normal/Cacheable/WriteBack/WriteThrough} if (TableEntry and (ARMV6_L2D_SMALL_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_SMALL_CACHE_NORMAL_NONCACHED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL; end else if (TableEntry and (ARMV6_L2D_SMALL_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_SMALL_CACHE_NORMAL_WRITE_BACK then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; end else if (TableEntry and (ARMV6_L2D_SMALL_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_SMALL_CACHE_NORMAL_WRITE_THROUGH then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; end; {Check Device} if (TableEntry and (ARMV6_L2D_SMALL_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_SMALL_CACHE_SHARED_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE or PAGE_TABLE_FLAG_SHARED; end else if (TableEntry and (ARMV6_L2D_SMALL_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_SMALL_CACHE_NONSHARED_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE; end; {Check Ordered} if (TableEntry and (ARMV6_L2D_SMALL_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_SMALL_CACHE_STRONGLY_ORDERED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_ORDERED or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_ORDERED or PAGE_TABLE_FLAG_SHARED; end; {Check Shared} if (TableEntry and ARMV6_L2D_FLAG_SHARED) = ARMV6_L2D_FLAG_SHARED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_SHARED; end; {Check ReadOnly} if (TableEntry and (ARMV6_L2D_AP_MASK or ARMV6_L2D_FLAG_APX)) = ARMV6_L2D_ACCESS_READONLY then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READONLY; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READONLY; end; {Check ReadWrite} if (TableEntry and (ARMV6_L2D_AP_MASK or ARMV6_L2D_FLAG_APX)) = ARMV6_L2D_ACCESS_READWRITE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READWRITE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READWRITE; end; {Check Executable} if (TableEntry and ARMV6_L2D_FLAG_SMALL_XN) <> ARMV6_L2D_FLAG_SMALL_XN then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_EXECUTABLE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_EXECUTABLE; end; end else @@ -2327,67 +2327,67 @@ function ARMv6PageTableGetEntry(Address:PtrUInt):TPageTableEntry; if TableEntry <> 0 then begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV6_L2D_LARGE_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV6_L2D_LARGE_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV6_L2D_LARGE_BASE_MASK); - Result.Size:=SIZE_64K; + Entry.PhysicalAddress:=(TableEntry and ARMV6_L2D_LARGE_BASE_MASK); + Entry.Size:=SIZE_64K; {Get Flags} {ARMv6 uses the standard L2D values (Not Cacheable or TEX Remap values)} - Result.Flags:=PAGE_TABLE_FLAG_NONE; + Entry.Flags:=PAGE_TABLE_FLAG_NONE; {Check Normal/Cacheable/WriteBack/WriteThrough} if (TableEntry and (ARMV6_L2D_LARGE_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_LARGE_CACHE_NORMAL_NONCACHED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL; end else if (TableEntry and (ARMV6_L2D_LARGE_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_LARGE_CACHE_NORMAL_WRITE_BACK then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; end else if (TableEntry and (ARMV6_L2D_LARGE_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_LARGE_CACHE_NORMAL_WRITE_THROUGH then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; end; {Check Device} if (TableEntry and (ARMV6_L2D_LARGE_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_LARGE_CACHE_SHARED_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE or PAGE_TABLE_FLAG_SHARED; end else if (TableEntry and (ARMV6_L2D_LARGE_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_LARGE_CACHE_NONSHARED_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE; end; {Check Ordered} if (TableEntry and (ARMV6_L2D_LARGE_TEX_MASK or ARMV6_L2D_FLAG_C or ARMV6_L2D_FLAG_B)) = ARMV6_L2D_LARGE_CACHE_STRONGLY_ORDERED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_ORDERED or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_ORDERED or PAGE_TABLE_FLAG_SHARED; end; {Check Shared} if (TableEntry and ARMV6_L2D_FLAG_SHARED) = ARMV6_L2D_FLAG_SHARED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_SHARED; end; {Check ReadOnly} if (TableEntry and (ARMV6_L2D_AP_MASK or ARMV6_L2D_FLAG_APX)) = ARMV6_L2D_ACCESS_READONLY then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READONLY; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READONLY; end; {Check ReadWrite} if (TableEntry and (ARMV6_L2D_AP_MASK or ARMV6_L2D_FLAG_APX)) = ARMV6_L2D_ACCESS_READWRITE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READWRITE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READWRITE; end; {Check Executable} if (TableEntry and ARMV6_L2D_FLAG_LARGE_XN) <> ARMV6_L2D_FLAG_LARGE_XN then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_EXECUTABLE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_EXECUTABLE; end; end; end; @@ -2402,77 +2402,77 @@ function ARMv6PageTableGetEntry(Address:PtrUInt):TPageTableEntry; if (TableEntry and ARMV6_L1D_FLAG_SUPERSECTION) = 0 then begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV6_L1D_SECTION_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV6_L1D_SECTION_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV6_L1D_SECTION_BASE_MASK); - Result.Size:=SIZE_1M; + Entry.PhysicalAddress:=(TableEntry and ARMV6_L1D_SECTION_BASE_MASK); + Entry.Size:=SIZE_1M; end else begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV6_L1D_SUPERSECTION_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV6_L1D_SUPERSECTION_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV6_L1D_SUPERSECTION_BASE_MASK); - Result.Size:=SIZE_16M; + Entry.PhysicalAddress:=(TableEntry and ARMV6_L1D_SUPERSECTION_BASE_MASK); + Entry.Size:=SIZE_16M; end; {Get Flags} {ARMv6 uses the standard L1D values (Not Cacheable or TEX Remap values)} - Result.Flags:=PAGE_TABLE_FLAG_NONE; + Entry.Flags:=PAGE_TABLE_FLAG_NONE; {Check Normal/Cacheable/WriteBack/WriteThrough} if (TableEntry and (ARMV6_L1D_TEX_MASK or ARMV6_L1D_FLAG_C or ARMV6_L1D_FLAG_B)) = ARMV6_L1D_CACHE_NORMAL_NONCACHED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL; end else if (TableEntry and (ARMV6_L1D_TEX_MASK or ARMV6_L1D_FLAG_C or ARMV6_L1D_FLAG_B)) = ARMV6_L1D_CACHE_NORMAL_WRITE_BACK then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; end else if (TableEntry and (ARMV6_L1D_TEX_MASK or ARMV6_L1D_FLAG_C or ARMV6_L1D_FLAG_B)) = ARMV6_L1D_CACHE_NORMAL_WRITE_THROUGH then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; end; {Check Device} if (TableEntry and (ARMV6_L1D_TEX_MASK or ARMV6_L1D_FLAG_C or ARMV6_L1D_FLAG_B)) = ARMV6_L1D_CACHE_SHARED_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE or PAGE_TABLE_FLAG_SHARED; end else if (TableEntry and (ARMV6_L1D_TEX_MASK or ARMV6_L1D_FLAG_C or ARMV6_L1D_FLAG_B)) = ARMV6_L1D_CACHE_NONSHARED_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE; end; {Check Ordered} if (TableEntry and (ARMV6_L1D_TEX_MASK or ARMV6_L1D_FLAG_C or ARMV6_L1D_FLAG_B)) = ARMV6_L1D_CACHE_STRONGLY_ORDERED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_ORDERED or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_ORDERED or PAGE_TABLE_FLAG_SHARED; end; {Check Shared} if (TableEntry and ARMV6_L1D_FLAG_SHARED) = ARMV6_L1D_FLAG_SHARED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_SHARED; end; {Check ReadOnly} if (TableEntry and (ARMV6_L1D_AP_MASK or ARMV6_L1D_FLAG_APX)) = ARMV6_L1D_ACCESS_READONLY then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READONLY; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READONLY; end; {Check ReadWrite} if (TableEntry and (ARMV6_L1D_AP_MASK or ARMV6_L1D_FLAG_APX)) = ARMV6_L1D_ACCESS_READWRITE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READWRITE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READWRITE; end; {Check Executable} if (TableEntry and ARMV6_L1D_FLAG_XN) <> ARMV6_L1D_FLAG_XN then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_EXECUTABLE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_EXECUTABLE; end; end; end; @@ -2781,7 +2781,7 @@ function ARMv6VectorTableGetEntry(Number:LongWord):PtrUInt; Offset:=VECTOR_TABLE_BASE + (Number shl 2) + 32; {Vector entries use "ldr pc, [pc, #24]" for each entry} {Get Page Table Entry} - Entry:=ARMv6PageTableGetEntry(Offset); + ARMv6PageTableGetEntry(Offset,Entry); {Check for Read Only or Read Write} if (Entry.Flags and (PAGE_TABLE_FLAG_READONLY or PAGE_TABLE_FLAG_READWRITE)) <> 0 then @@ -2816,7 +2816,7 @@ function ARMv6VectorTableSetEntry(Number:LongWord;Address:PtrUInt):LongWord; Offset:=VECTOR_TABLE_BASE + (Number shl 2) + 32; {Vector entries use "ldr pc, [pc, #24]" for each entry} {Get Page Table Entry} - Entry:=ARMv6PageTableGetEntry(Offset); + ARMv6PageTableGetEntry(Offset,Entry); {Check for Read Only} if (Entry.Flags and PAGE_TABLE_FLAG_READONLY) <> 0 then diff --git a/source/rtl/ultibo/core/platformarmv7.pas b/source/rtl/ultibo/core/platformarmv7.pas index f57636f..a88732c 100644 --- a/source/rtl/ultibo/core/platformarmv7.pas +++ b/source/rtl/ultibo/core/platformarmv7.pas @@ -932,7 +932,7 @@ function ARMv7InterlockedExchange(var Target:LongInt;Source:LongInt):LongInt; function ARMv7InterlockedAddExchange(var Target:LongInt;Source:LongInt):LongInt; function ARMv7InterlockedCompareExchange(var Target:LongInt;Source,Compare:LongInt):LongInt; -function ARMv7PageTableGetEntry(Address:PtrUInt):TPageTableEntry; +procedure ARMv7PageTableGetEntry(Address:PtrUInt;var Entry:TPageTableEntry); function ARMv7PageTableSetEntry(const Entry:TPageTableEntry):LongWord; function ARMv7VectorTableGetEntry(Number:LongWord):PtrUInt; @@ -3291,13 +3291,13 @@ function ARMv7InterlockedCompareExchange(var Target:LongInt;Source,Compare:LongI {==============================================================================} -function ARMv7PageTableGetEntry(Address:PtrUInt):TPageTableEntry; +procedure ARMv7PageTableGetEntry(Address:PtrUInt;var Entry:TPageTableEntry); {Get and Decode the entry in the Page Table that corresponds to the supplied virtual address} var TableEntry:LongWord; begin {} - FillChar(Result,SizeOf(TPageTableEntry),0); + FillChar(Entry,SizeOf(TPageTableEntry),0); {Check Address} {Zero may be valid} @@ -3311,67 +3311,67 @@ function ARMv7PageTableGetEntry(Address:PtrUInt):TPageTableEntry; if TableEntry <> 0 then begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV7_L2D_SMALL_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV7_L2D_SMALL_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV7_L2D_SMALL_BASE_MASK); - Result.Size:=SIZE_4K; + Entry.PhysicalAddress:=(TableEntry and ARMV7_L2D_SMALL_BASE_MASK); + Entry.Size:=SIZE_4K; {Get Flags} {ARMv7 uses the TEX Remap L2D values (Not Standard or Cacheable values)} - Result.Flags:=PAGE_TABLE_FLAG_NONE; + Entry.Flags:=PAGE_TABLE_FLAG_NONE; {Check Normal/Cacheable/WriteBack/WriteThrough} if (TableEntry and (ARMV7_L2D_SMALL_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_SMALL_CACHE_REMAP_NORMAL_NONCACHED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL; end else if (TableEntry and (ARMV7_L2D_SMALL_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_SMALL_CACHE_REMAP_NORMAL_WRITE_BACK then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; end else if (TableEntry and (ARMV7_L2D_SMALL_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_SMALL_CACHE_REMAP_NORMAL_WRITE_THROUGH then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; end else if (TableEntry and (ARMV7_L2D_SMALL_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_SMALL_CACHE_REMAP_NORMAL_WRITE_ALLOCATE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; end; {Check Device} if (TableEntry and (ARMV7_L2D_SMALL_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_SMALL_CACHE_REMAP_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE; end; {Check Ordered} if (TableEntry and (ARMV7_L2D_SMALL_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_SMALL_CACHE_REMAP_STRONGLY_ORDERED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_ORDERED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_ORDERED; end; {Check Shared} if (TableEntry and ARMV7_L2D_FLAG_SHARED) = ARMV7_L2D_FLAG_SHARED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_SHARED; end; {Check ReadOnly} if (TableEntry and (ARMV7_L2D_AP_MASK or ARMV7_L2D_FLAG_AP2)) = ARMV7_L2D_ACCESS_READONLY then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READONLY; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READONLY; end; {Check ReadWrite} if (TableEntry and (ARMV7_L2D_AP_MASK or ARMV7_L2D_FLAG_AP2)) = ARMV7_L2D_ACCESS_READWRITE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READWRITE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READWRITE; end; {Check Executable} if (TableEntry and ARMV7_L2D_FLAG_SMALL_XN) <> ARMV7_L2D_FLAG_SMALL_XN then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_EXECUTABLE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_EXECUTABLE; end; end else @@ -3381,67 +3381,67 @@ function ARMv7PageTableGetEntry(Address:PtrUInt):TPageTableEntry; if TableEntry <> 0 then begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV7_L2D_LARGE_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV7_L2D_LARGE_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV7_L2D_LARGE_BASE_MASK); - Result.Size:=SIZE_64K; + Entry.PhysicalAddress:=(TableEntry and ARMV7_L2D_LARGE_BASE_MASK); + Entry.Size:=SIZE_64K; {Get Flags} {ARMv7 uses the TEX Remap L2D values (Not Standard or Cacheable values)} - Result.Flags:=PAGE_TABLE_FLAG_NONE; + Entry.Flags:=PAGE_TABLE_FLAG_NONE; {Check Normal/Cacheable/WriteBack/WriteThrough} if (TableEntry and (ARMV7_L2D_LARGE_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_LARGE_CACHE_REMAP_NORMAL_NONCACHED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL; end else if (TableEntry and (ARMV7_L2D_LARGE_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_LARGE_CACHE_REMAP_NORMAL_WRITE_BACK then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; end else if (TableEntry and (ARMV7_L2D_LARGE_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_LARGE_CACHE_REMAP_NORMAL_WRITE_THROUGH then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; end else if (TableEntry and (ARMV7_L2D_LARGE_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_LARGE_CACHE_REMAP_NORMAL_WRITE_ALLOCATE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; end; {Check Device} if (TableEntry and (ARMV7_L2D_LARGE_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_LARGE_CACHE_REMAP_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE; end; {Check Ordered} if (TableEntry and (ARMV7_L2D_LARGE_TEX_MASK or ARMV7_L2D_FLAG_C or ARMV7_L2D_FLAG_B)) = ARMV7_L2D_LARGE_CACHE_REMAP_STRONGLY_ORDERED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_ORDERED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_ORDERED; end; {Check Shared} if (TableEntry and ARMV7_L2D_FLAG_SHARED) = ARMV7_L2D_FLAG_SHARED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_SHARED; end; {Check ReadOnly} if (TableEntry and (ARMV7_L2D_AP_MASK or ARMV7_L2D_FLAG_AP2)) = ARMV7_L2D_ACCESS_READONLY then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READONLY; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READONLY; end; {Check ReadWrite} if (TableEntry and (ARMV7_L2D_AP_MASK or ARMV7_L2D_FLAG_AP2)) = ARMV7_L2D_ACCESS_READWRITE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READWRITE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READWRITE; end; {Check Executable} if (TableEntry and ARMV7_L2D_FLAG_LARGE_XN) <> ARMV7_L2D_FLAG_LARGE_XN then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_EXECUTABLE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_EXECUTABLE; end; end; end; @@ -3456,77 +3456,77 @@ function ARMv7PageTableGetEntry(Address:PtrUInt):TPageTableEntry; if (TableEntry and ARMV7_L1D_FLAG_SUPERSECTION) = 0 then begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV7_L1D_SECTION_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV7_L1D_SECTION_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV7_L1D_SECTION_BASE_MASK); - Result.Size:=SIZE_1M; + Entry.PhysicalAddress:=(TableEntry and ARMV7_L1D_SECTION_BASE_MASK); + Entry.Size:=SIZE_1M; end else begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV7_L1D_SUPERSECTION_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV7_L1D_SUPERSECTION_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV7_L1D_SUPERSECTION_BASE_MASK); - Result.Size:=SIZE_16M; + Entry.PhysicalAddress:=(TableEntry and ARMV7_L1D_SUPERSECTION_BASE_MASK); + Entry.Size:=SIZE_16M; end; {Get Flags} {ARMv7 uses the TEX Remap L1D values (Not Standard or Cacheable values)} - Result.Flags:=PAGE_TABLE_FLAG_NONE; + Entry.Flags:=PAGE_TABLE_FLAG_NONE; {Check Normal/Cacheable/WriteBack/WriteThrough} if (TableEntry and (ARMV7_L1D_TEX_MASK or ARMV7_L1D_FLAG_C or ARMV7_L1D_FLAG_B)) = ARMV7_L1D_CACHE_REMAP_NORMAL_NONCACHED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL; end else if (TableEntry and (ARMV7_L1D_TEX_MASK or ARMV7_L1D_FLAG_C or ARMV7_L1D_FLAG_B)) = ARMV7_L1D_CACHE_REMAP_NORMAL_WRITE_BACK then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; end else if (TableEntry and (ARMV7_L1D_TEX_MASK or ARMV7_L1D_FLAG_C or ARMV7_L1D_FLAG_B)) = ARMV7_L1D_CACHE_REMAP_NORMAL_WRITE_THROUGH then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; end else if (TableEntry and (ARMV7_L1D_TEX_MASK or ARMV7_L1D_FLAG_C or ARMV7_L1D_FLAG_B)) = ARMV7_L1D_CACHE_REMAP_NORMAL_WRITE_ALLOCATE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; end; {Check Device} if (TableEntry and (ARMV7_L1D_TEX_MASK or ARMV7_L1D_FLAG_C or ARMV7_L1D_FLAG_B)) = ARMV7_L1D_CACHE_REMAP_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE; end; {Check Ordered} if (TableEntry and (ARMV7_L1D_TEX_MASK or ARMV7_L1D_FLAG_C or ARMV7_L1D_FLAG_B)) = ARMV7_L1D_CACHE_REMAP_STRONGLY_ORDERED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_ORDERED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_ORDERED; end; {Check Shared} if (TableEntry and ARMV7_L1D_FLAG_SHARED) = ARMV7_L1D_FLAG_SHARED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_SHARED; end; {Check ReadOnly} if (TableEntry and (ARMV7_L1D_AP_MASK or ARMV7_L1D_FLAG_AP2)) = ARMV7_L1D_ACCESS_READONLY then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READONLY; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READONLY; end; {Check ReadWrite} if (TableEntry and (ARMV7_L1D_AP_MASK or ARMV7_L1D_FLAG_AP2)) = ARMV7_L1D_ACCESS_READWRITE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READWRITE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READWRITE; end; {Check Executable} if (TableEntry and ARMV7_L1D_FLAG_XN) <> ARMV7_L1D_FLAG_XN then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_EXECUTABLE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_EXECUTABLE; end; end; end; @@ -3834,7 +3834,7 @@ function ARMv7VectorTableGetEntry(Number:LongWord):PtrUInt; Offset:=VECTOR_TABLE_BASE + (Number shl 2) + 32; {Vector entries use "ldr pc, [pc, #24]" for each entry} {Get Page Table Entry} - Entry:=ARMv7PageTableGetEntry(Offset); + ARMv7PageTableGetEntry(Offset,Entry); {Check for Read Only or Read Write} if (Entry.Flags and (PAGE_TABLE_FLAG_READONLY or PAGE_TABLE_FLAG_READWRITE)) <> 0 then @@ -3869,7 +3869,7 @@ function ARMv7VectorTableSetEntry(Number:LongWord;Address:PtrUInt):LongWord; Offset:=VECTOR_TABLE_BASE + (Number shl 2) + 32; {Vector entries use "ldr pc, [pc, #24]" for each entry} {Get Page Table Entry} - Entry:=ARMv7PageTableGetEntry(Offset); + ARMv7PageTableGetEntry(Offset,Entry); {Check for Read Only} if (Entry.Flags and PAGE_TABLE_FLAG_READONLY) <> 0 then diff --git a/source/rtl/ultibo/core/platformarmv8.pas b/source/rtl/ultibo/core/platformarmv8.pas index d364998..5f40224 100644 --- a/source/rtl/ultibo/core/platformarmv8.pas +++ b/source/rtl/ultibo/core/platformarmv8.pas @@ -915,7 +915,7 @@ function ARMv8InterlockedExchange(var Target:LongInt;Source:LongInt):LongInt; function ARMv8InterlockedAddExchange(var Target:LongInt;Source:LongInt):LongInt; function ARMv8InterlockedCompareExchange(var Target:LongInt;Source,Compare:LongInt):LongInt; -function ARMv8PageTableGetEntry(Address:PtrUInt):TPageTableEntry; +procedure ARMv8PageTableGetEntry(Address:PtrUInt;var Entry:TPageTableEntry); function ARMv8PageTableSetEntry(const Entry:TPageTableEntry):LongWord; function ARMv8VectorTableGetEntry(Number:LongWord):PtrUInt; @@ -3604,13 +3604,13 @@ function ARMv8InterlockedCompareExchange(var Target:LongInt;Source,Compare:LongI {==============================================================================} -function ARMv8PageTableGetEntry(Address:PtrUInt):TPageTableEntry; +procedure ARMv8PageTableGetEntry(Address:PtrUInt;var Entry:TPageTableEntry); {Get and Decode the entry in the Page Table that corresponds to the supplied virtual address} var TableEntry:LongWord; begin {} - FillChar(Result,SizeOf(TPageTableEntry),0); + FillChar(Entry,SizeOf(TPageTableEntry),0); {Check Address} {Zero may be valid} @@ -3624,67 +3624,67 @@ function ARMv8PageTableGetEntry(Address:PtrUInt):TPageTableEntry; if TableEntry <> 0 then begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV8_L2D_SMALL_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV8_L2D_SMALL_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV8_L2D_SMALL_BASE_MASK); - Result.Size:=SIZE_4K; + Entry.PhysicalAddress:=(TableEntry and ARMV8_L2D_SMALL_BASE_MASK); + Entry.Size:=SIZE_4K; {Get Flags} {ARMv8 uses the TEX Remap L2D values (Not Standard or Cacheable values)} - Result.Flags:=PAGE_TABLE_FLAG_NONE; + Entry.Flags:=PAGE_TABLE_FLAG_NONE; {Check Normal/Cacheable/WriteBack/WriteThrough} if (TableEntry and (ARMV8_L2D_SMALL_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_SMALL_CACHE_REMAP_NORMAL_NONCACHED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL; end else if (TableEntry and (ARMV8_L2D_SMALL_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_SMALL_CACHE_REMAP_NORMAL_WRITE_BACK then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; end else if (TableEntry and (ARMV8_L2D_SMALL_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_SMALL_CACHE_REMAP_NORMAL_WRITE_THROUGH then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; end else if (TableEntry and (ARMV8_L2D_SMALL_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_SMALL_CACHE_REMAP_NORMAL_WRITE_ALLOCATE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; end; {Check Device} if (TableEntry and (ARMV8_L2D_SMALL_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_SMALL_CACHE_REMAP_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE; end; {Check Ordered} if (TableEntry and (ARMV8_L2D_SMALL_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_SMALL_CACHE_REMAP_STRONGLY_ORDERED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_ORDERED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_ORDERED; end; {Check Shared} if (TableEntry and ARMV8_L2D_FLAG_SHARED) = ARMV8_L2D_FLAG_SHARED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_SHARED; end; {Check ReadOnly} if (TableEntry and (ARMV8_L2D_AP_MASK or ARMV8_L2D_FLAG_AP2)) = ARMV8_L2D_ACCESS_READONLY then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READONLY; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READONLY; end; {Check ReadWrite} if (TableEntry and (ARMV8_L2D_AP_MASK or ARMV8_L2D_FLAG_AP2)) = ARMV8_L2D_ACCESS_READWRITE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READWRITE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READWRITE; end; {Check Executable} if (TableEntry and ARMV8_L2D_FLAG_SMALL_XN) <> ARMV8_L2D_FLAG_SMALL_XN then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_EXECUTABLE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_EXECUTABLE; end; end else @@ -3694,67 +3694,67 @@ function ARMv8PageTableGetEntry(Address:PtrUInt):TPageTableEntry; if TableEntry <> 0 then begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV8_L2D_LARGE_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV8_L2D_LARGE_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV8_L2D_LARGE_BASE_MASK); - Result.Size:=SIZE_64K; + Entry.PhysicalAddress:=(TableEntry and ARMV8_L2D_LARGE_BASE_MASK); + Entry.Size:=SIZE_64K; {Get Flags} {ARMv8 uses the TEX Remap L2D values (Not Standard or Cacheable values)} - Result.Flags:=PAGE_TABLE_FLAG_NONE; + Entry.Flags:=PAGE_TABLE_FLAG_NONE; {Check Normal/Cacheable/WriteBack/WriteThrough} if (TableEntry and (ARMV8_L2D_LARGE_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_LARGE_CACHE_REMAP_NORMAL_NONCACHED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL; end else if (TableEntry and (ARMV8_L2D_LARGE_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_LARGE_CACHE_REMAP_NORMAL_WRITE_BACK then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; end else if (TableEntry and (ARMV8_L2D_LARGE_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_LARGE_CACHE_REMAP_NORMAL_WRITE_THROUGH then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; end else if (TableEntry and (ARMV8_L2D_LARGE_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_LARGE_CACHE_REMAP_NORMAL_WRITE_ALLOCATE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; end; {Check Device} if (TableEntry and (ARMV8_L2D_LARGE_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_LARGE_CACHE_REMAP_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE; end; {Check Ordered} if (TableEntry and (ARMV8_L2D_LARGE_TEX_MASK or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B)) = ARMV8_L2D_LARGE_CACHE_REMAP_STRONGLY_ORDERED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_ORDERED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_ORDERED; end; {Check Shared} if (TableEntry and ARMV8_L2D_FLAG_SHARED) = ARMV8_L2D_FLAG_SHARED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_SHARED; end; {Check ReadOnly} if (TableEntry and (ARMV8_L2D_AP_MASK or ARMV8_L2D_FLAG_AP2)) = ARMV8_L2D_ACCESS_READONLY then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READONLY; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READONLY; end; {Check ReadWrite} if (TableEntry and (ARMV8_L2D_AP_MASK or ARMV8_L2D_FLAG_AP2)) = ARMV8_L2D_ACCESS_READWRITE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READWRITE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READWRITE; end; {Check Executable} if (TableEntry and ARMV8_L2D_FLAG_LARGE_XN) <> ARMV8_L2D_FLAG_LARGE_XN then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_EXECUTABLE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_EXECUTABLE; end; end; end; @@ -3769,77 +3769,77 @@ function ARMv8PageTableGetEntry(Address:PtrUInt):TPageTableEntry; if (TableEntry and ARMV8_L1D_FLAG_SUPERSECTION) = 0 then begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV8_L1D_SECTION_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV8_L1D_SECTION_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV8_L1D_SECTION_BASE_MASK); - Result.Size:=SIZE_1M; + Entry.PhysicalAddress:=(TableEntry and ARMV8_L1D_SECTION_BASE_MASK); + Entry.Size:=SIZE_1M; end else begin {Get Virtual Address} - Result.VirtualAddress:=(Address and ARMV8_L1D_SUPERSECTION_BASE_MASK); + Entry.VirtualAddress:=(Address and ARMV8_L1D_SUPERSECTION_BASE_MASK); {Get Physical Address and Size} - Result.PhysicalAddress:=(TableEntry and ARMV8_L1D_SUPERSECTION_BASE_MASK); - Result.Size:=SIZE_16M; + Entry.PhysicalAddress:=(TableEntry and ARMV8_L1D_SUPERSECTION_BASE_MASK); + Entry.Size:=SIZE_16M; end; {Get Flags} {ARMv8 uses the TEX Remap L1D values (Not Standard or Cacheable values)} - Result.Flags:=PAGE_TABLE_FLAG_NONE; + Entry.Flags:=PAGE_TABLE_FLAG_NONE; {Check Normal/Cacheable/WriteBack/WriteThrough} if (TableEntry and (ARMV8_L1D_TEX_MASK or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B)) = ARMV8_L1D_CACHE_REMAP_NORMAL_NONCACHED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL; end else if (TableEntry and (ARMV8_L1D_TEX_MASK or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B)) = ARMV8_L1D_CACHE_REMAP_NORMAL_WRITE_BACK then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEBACK; end else if (TableEntry and (ARMV8_L1D_TEX_MASK or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B)) = ARMV8_L1D_CACHE_REMAP_NORMAL_WRITE_THROUGH then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITETHROUGH; end else if (TableEntry and (ARMV8_L1D_TEX_MASK or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B)) = ARMV8_L1D_CACHE_REMAP_NORMAL_WRITE_ALLOCATE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_NORMAL or PAGE_TABLE_FLAG_CACHEABLE or PAGE_TABLE_FLAG_WRITEALLOCATE; end; {Check Device} if (TableEntry and (ARMV8_L1D_TEX_MASK or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B)) = ARMV8_L1D_CACHE_REMAP_DEVICE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_DEVICE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_DEVICE; end; {Check Ordered} if (TableEntry and (ARMV8_L1D_TEX_MASK or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B)) = ARMV8_L1D_CACHE_REMAP_STRONGLY_ORDERED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_ORDERED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_ORDERED; end; {Check Shared} if (TableEntry and ARMV8_L1D_FLAG_SHARED) = ARMV8_L1D_FLAG_SHARED then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_SHARED; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_SHARED; end; {Check ReadOnly} if (TableEntry and (ARMV8_L1D_AP_MASK or ARMV8_L1D_FLAG_AP2)) = ARMV8_L1D_ACCESS_READONLY then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READONLY; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READONLY; end; {Check ReadWrite} if (TableEntry and (ARMV8_L1D_AP_MASK or ARMV8_L1D_FLAG_AP2)) = ARMV8_L1D_ACCESS_READWRITE then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_READWRITE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_READWRITE; end; {Check Executable} if (TableEntry and ARMV8_L1D_FLAG_XN) <> ARMV8_L1D_FLAG_XN then begin - Result.Flags:=Result.Flags or PAGE_TABLE_FLAG_EXECUTABLE; + Entry.Flags:=Entry.Flags or PAGE_TABLE_FLAG_EXECUTABLE; end; end; end; @@ -4147,7 +4147,7 @@ function ARMv8VectorTableGetEntry(Number:LongWord):PtrUInt; Offset:=VECTOR_TABLE_BASE + (Number shl 2) + 32; {Vector entries use "ldr pc, [pc, #24]" for each entry} {Get Page Table Entry} - Entry:=ARMv8PageTableGetEntry(Offset); + ARMv8PageTableGetEntry(Offset,Entry); {Check for Read Only or Read Write} if (Entry.Flags and (PAGE_TABLE_FLAG_READONLY or PAGE_TABLE_FLAG_READWRITE)) <> 0 then @@ -4182,7 +4182,7 @@ function ARMv8VectorTableSetEntry(Number:LongWord;Address:PtrUInt):LongWord; Offset:=VECTOR_TABLE_BASE + (Number shl 2) + 32; {Vector entries use "ldr pc, [pc, #24]" for each entry} {Get Page Table Entry} - Entry:=ARMv8PageTableGetEntry(Offset); + ARMv8PageTableGetEntry(Offset,Entry); {Check for Read Only} if (Entry.Flags and PAGE_TABLE_FLAG_READONLY) <> 0 then diff --git a/source/rtl/ultibo/core/platformrpi.pas b/source/rtl/ultibo/core/platformrpi.pas index 5c390c9..301ef94 100644 --- a/source/rtl/ultibo/core/platformrpi.pas +++ b/source/rtl/ultibo/core/platformrpi.pas @@ -1643,7 +1643,7 @@ procedure RPiPageTableInit; if GPU_MEMORY_SIZE > 0 then begin Address:=(GPU_MEMORY_BASE and ARMV6_L1D_SECTION_BASE_MASK); - while Address < (GPU_MEMORY_BASE + GPU_MEMORY_SIZE) do + while (Address < (GPU_MEMORY_BASE + GPU_MEMORY_SIZE)) and (Address < (PERIPHERALS_BASE and ARMV6_L1D_SECTION_BASE_MASK)) do begin if GPU_MEMORY_CACHED then begin @@ -6397,7 +6397,7 @@ function RPiTouchGetBuffer(var Address:LongWord):LongWord; {Note: On current firmware versions calling TouchGetBuffer will allocate a buffer from GPU memory and render subsequent calls to TouchSetBuffer ineffective. - After an intial call to TouchSetBuffer calls to TouchGetBuffer will always + After an initial call to TouchSetBuffer calls to TouchGetBuffer will always return the CPU allocated buffer} var Size:LongWord; diff --git a/source/rtl/ultibo/core/platformrpi2.pas b/source/rtl/ultibo/core/platformrpi2.pas index 8b290b2..39885e0 100644 --- a/source/rtl/ultibo/core/platformrpi2.pas +++ b/source/rtl/ultibo/core/platformrpi2.pas @@ -7312,7 +7312,7 @@ function RPi2TouchGetBuffer(var Address:LongWord):LongWord; {Note: On current firmware versions calling TouchGetBuffer will allocate a buffer from GPU memory and render subsequent calls to TouchSetBuffer ineffective. - After an intial call to TouchSetBuffer calls to TouchGetBuffer will always + After an initial call to TouchSetBuffer calls to TouchGetBuffer will always return the CPU allocated buffer} var Size:LongWord; diff --git a/source/rtl/ultibo/core/platformrpi3.pas b/source/rtl/ultibo/core/platformrpi3.pas index bb95991..747c903 100644 --- a/source/rtl/ultibo/core/platformrpi3.pas +++ b/source/rtl/ultibo/core/platformrpi3.pas @@ -7200,7 +7200,7 @@ function RPi3TouchGetBuffer(var Address:LongWord):LongWord; {Note: On current firmware versions calling TouchGetBuffer will allocate a buffer from GPU memory and render subsequent calls to TouchSetBuffer ineffective. - After an intial call to TouchSetBuffer calls to TouchGetBuffer will always + After an initial call to TouchSetBuffer calls to TouchGetBuffer will always return the CPU allocated buffer} var Size:LongWord; diff --git a/source/rtl/ultibo/core/ps2.pas b/source/rtl/ultibo/core/ps2.pas index c398d4f..3385353 100644 --- a/source/rtl/ultibo/core/ps2.pas +++ b/source/rtl/ultibo/core/ps2.pas @@ -1303,7 +1303,7 @@ function PS2KeyboardScancodeMatch(KeyboardScancode:PPS2KeyboardScancode;var Inde Break; end; - {Udpate Offset} + {Update Offset} Inc(Offset); end; diff --git a/source/rtl/ultibo/core/sockets.pas b/source/rtl/ultibo/core/sockets.pas index 23991d7..6223550 100644 --- a/source/rtl/ultibo/core/sockets.pas +++ b/source/rtl/ultibo/core/sockets.pas @@ -500,6 +500,7 @@ function CloseSocket(Sock:Longint):Longint; function Inet_Addr(cp: PChar): Longint; function Inet_Ntoa(inaddr: TInAddr): PChar; +function Inet_Aton(cp: PChar; inaddr: PInAddr): Longint; function Inet_Pton(family: Longint; Source: PChar; Dest: Pointer): Longint; function Inet_Ntop(family: Longint; Source: Pointer; Dest: PChar; Size: Longint): PChar; @@ -1124,6 +1125,28 @@ function Inet_Ntoa(inaddr: TInAddr): PChar; {==============================================================================} +function Inet_Aton(cp: PChar; inaddr: PInAddr): Longint; +begin + {} + Result:=SOCKET_ERROR; + NetworkSetLastError(WSAEFAULT); + + {Check Name} + if cp = nil then Exit; + + {Check Address} + if inaddr = nil then Exit; + + inaddr^:=StringToInAddr(cp); + + //To Do //Check result, if not valid return 0 + + Result:=1; {As per Spec} + NetworkSetLastError(ERROR_SUCCESS); +end; + +{==============================================================================} + function Inet_Pton(family: Longint; Source: PChar; Dest: Pointer): Longint; begin {} diff --git a/source/rtl/ultibo/core/storage.pas b/source/rtl/ultibo/core/storage.pas index 9d80440..0e9bb46 100644 --- a/source/rtl/ultibo/core/storage.pas +++ b/source/rtl/ultibo/core/storage.pas @@ -521,27 +521,30 @@ procedure StorageInit; end; {Create USB Storage Driver} - USBStorageDriver:=USBDriverCreate; - if USBStorageDriver <> nil then + if USB_STORAGE_REGISTER_DRIVER then begin - {Update USB Storage Driver} - {Driver} - USBStorageDriver.Driver.DriverName:=USBSTORAGE_DRIVER_NAME; - {USB} - USBStorageDriver.DriverBind:=USBStorageDriverBind; - USBStorageDriver.DriverUnbind:=USBStorageDriverUnbind; - - {Register USB Storage driver} - Status:=USBDriverRegister(USBStorageDriver); - if Status <> USB_STATUS_SUCCESS then + USBStorageDriver:=USBDriverCreate; + if USBStorageDriver <> nil then begin - if USB_LOG_ENABLED then USBLogError(nil,'Storage: Failed to register USB storage driver: ' + USBStatusToString(Status)); + {Update USB Storage Driver} + {Driver} + USBStorageDriver.Driver.DriverName:=USBSTORAGE_DRIVER_NAME; + {USB} + USBStorageDriver.DriverBind:=USBStorageDriverBind; + USBStorageDriver.DriverUnbind:=USBStorageDriverUnbind; + + {Register USB Storage driver} + Status:=USBDriverRegister(USBStorageDriver); + if Status <> USB_STATUS_SUCCESS then + begin + if USB_LOG_ENABLED then USBLogError(nil,'Storage: Failed to register USB storage driver: ' + USBStatusToString(Status)); + end; + end + else + begin + if STORAGE_LOG_ENABLED then StorageLogError(nil,'Failed to create USB storage driver'); end; - end - else - begin - if STORAGE_LOG_ENABLED then StorageLogError(nil,'Failed to create USB storage driver'); - end; + end; StorageInitialized:=True; end; diff --git a/source/rtl/ultibo/core/syscalls.pas b/source/rtl/ultibo/core/syscalls.pas index 2f96051..9d8edc8 100644 --- a/source/rtl/ultibo/core/syscalls.pas +++ b/source/rtl/ultibo/core/syscalls.pas @@ -33,6 +33,11 @@ Libm - https://www.sourceware.org/newlib/libm.html + POSIX Threads (pthreads) - http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread.h.html + http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html + + POSIX Sockets - http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/socket.h.html + Syscalls ======== @@ -181,6 +186,29 @@ https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html + Memory management for the C library and code compiled to use it is handled by Newlib itself + which provides a complete implementation of malloc(), free(), calloc(), realloc() and others. + + This implementation relies on the underlying platform to implement sbrk() (_sbrk_r for the + reentrant build of the library) and this unit provides all of the necessary details of this + to allow full functionality of the memory management within the C library. + + Because sbrk() expects a contiguous heap space that grows upward in response to each request + the Ultibo implementation uses the virtual memory functionality of the processor to map + blocks of (possibly not contiguous) memory allocated from the Ultibo heap manager into + an address space dedicated to supporting the C library. + + There are a number of parameters in the GlobalConfig unit which can be used to adjust the + default behaviour of this as follows: + + SYSCALLS_HEAP_BASE - The starting point (bottom) of the virtual heap provided by sbrk() (Default: $C0000000) + SYSCALLS_HEAP_MIN - The minimum (initial) allocation made to the virtual heap during startup (Default: 2MB) + SYSCALLS_HEAP_MAX - The maximum size the virtual heap will be allowed to grow to (Default: 1GB) + SYSCALLS_HEAP_BLOCKSIZE - The size of each block added to the virtual heap (Default: 1MB) + + Under normal usage these parameters should not need to be changed but they are available for + advanced use cases which may require them. + } {--$mode delphi} {Default to Delphi compatible syntax} {Not compatible with external definitions below} @@ -192,13 +220,20 @@ interface -uses GlobalConfig,GlobalConst,GlobalTypes,Platform,Threads,HeapManager,Devices,FileSystem,Sockets,SysUtils; +uses GlobalConfig,GlobalConst,GlobalTypes,GlobalSock,Platform,Threads,HeapManager,Devices,FileSystem,Sockets,SysUtils; -//To Do //Sockets support - //Libstdc++ support +//To Do //Libstdc++ support //To Do //Which Pthreads functions are cancellation points? (Find a list) + //See: http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09_05 + +//To Do //Implementation (dummy / wrapper) for pthread_kill() and others from later specifications (barrier, spinlock etc) ? + //See: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html +//To Do //statfs / fstatfs / statfs64 / fstatfs64 + +//To Do //opendir / readdir / closedir and dirent + {==============================================================================} {Global definitions} {$INCLUDE GlobalDefines.inc} @@ -207,8 +242,12 @@ interface {==============================================================================} {Local definitions} +{$DEFINE SYSCALLS_ERROR_UNINITIALIZED} {Log use of uninitialized mutex, condition and rwlock variables as an error (Default: On)} +{$DEFINE SYSCALLS_CREATE_UNINITIALIZED} {Allow uninitialized mutex, condition and rwlock variables to be created on first use (Default: On)} + {--$DEFINE SYSCALLS_LARGE64_FILES} {Enable 64-bit file support for Libc calls (Default: Off)} +{--$DEFINE _POSIX_THREAD_GUARDSIZE} {Enable Pthread Guard Size attribute (Default: Off) (Not used by Ultibo} {--$DEFINE _POSIX_THREAD_CPUTIME} {Enable Pthread CPU Time Clock Allowed attribute (Default: Off) (Not used by Ultibo} {--$DEFINE _POSIX_THREAD_SPORADIC_SERVER} {Enable Pthread Scheduling for Sporadic server (Default: Off) (Not used by Ultibo} @@ -690,7 +729,7 @@ interface _IOC_NONE = 0; _IOC_WRITE = 1; _IOC_READ = 2; - + const {Library names} libc = 'c'; @@ -1050,6 +1089,44 @@ Ttimespec = record tv_nsec: long; {and nanoseconds} end; +type + {From sys/statfs.h} + fsid_t = record + val: array[0..1] of int; + end; + + Pstatfs = ^Tstatfs; + Tstatfs = record + f_type: uint32_t; + f_bsize: uint32_t; + f_blocks: uint32_t; + f_bfree: uint32_t; + f_bavail: uint32_t; + f_files: uint32_t; + f_ffree: uint32_t; + f_fsid: fsid_t; + f_namelen: uint32_t; + f_frsize: uint32_t; + f_flags: uint32_t; + f_spare: array[0..3] of uint32_t; + end; + + Pstatfs64 = ^Tstatfs64; + Tstatfs64 = record + f_type: uint64_t; + f_bsize: uint64_t; + f_blocks: uint64_t; + f_bfree: uint64_t; + f_bavail: uint64_t; + f_files: uint64_t; + f_ffree: uint64_t; + f_fsid: fsid_t; + f_namelen: uint32_t; + f_frsize: uint32_t; + f_flags: uint32_t; + f_spare: array[0..3] of uint32_t; + end; + type {From sched.h} Psched_param = ^Tsched_param; @@ -1078,7 +1155,9 @@ Tpthread_attr_t = record inheritsched: int; schedpolicy: int; schedparam: Tsched_param; - guardsize: size_t; + {$IFDEF _POSIX_THREAD_GUARDSIZE} + guardsize: size_t; {Note: This is defined in the Linux version of pthread_attr_t but not for other platforms. Ultibo uses THREAD_STACK_GUARD_ENABLED from GlobalConfig} + {$ENDIF} {$IFDEF _POSIX_THREAD_CPUTIME} cputime_clock_allowed: int; {See time.h} {$ENDIF} @@ -1167,6 +1246,15 @@ Tpthread_rwlockattr_t = record sem_t = Cardinal; {uint32_t} {sem_t should be opaque to the user} Psem_t = ^sem_t; +type + {From linux/netdb.h} + {Socket types} + Psocklen_t = ^socklen_t; + socklen_t = uint; + + {From linux/arpa/inet.h} + in_addr_t = Cardinal; {uint32_t} + {==============================================================================} var {Syscalls specific variables} @@ -1252,7 +1340,8 @@ function _write_r(ptr: P_reent; fd: int; buf: Pointer; cnt: size_t): _ssize_t; c {==============================================================================} {Syscalls Functions (Stat)} -function mkdir(path: PChar; mode: int): int; cdecl; public name 'mkdir'; +function mkdir(path: PChar; mode: mode_t): int; cdecl; public name 'mkdir'; +function chmod(path: PChar; mode: mode_t): int; cdecl; public name 'chmod'; {==============================================================================} {Syscalls Functions (Stdlib)} @@ -1272,7 +1361,12 @@ function getpagesize: int; cdecl; public name 'getpagesize'; function ssleep(seconds: uint): uint; cdecl; public name 'sleep'; function usleep(useconds: useconds_t): int; cdecl; public name 'usleep'; - + +function symlink(path1, path2: PChar): int; cdecl; public name 'symlink'; + +function ftruncate(fd: int; length: off_t): int; cdecl; public name 'ftruncate'; +function truncate(path: PChar; length: off_t): int; cdecl; public name 'truncate'; + {==============================================================================} {Syscalls Functions (Mman)} function mmap(addr: Pointer; length: size_t; prot, flags, fd: int; offset: off_t): Pointer; cdecl; public name 'mmap'; @@ -1288,6 +1382,14 @@ function clock_settime(clk_id: clockid_t; tp: Ptimespec): int; cdecl; public nam function nanosleep(req, rem: Ptimespec): int; cdecl; public name 'nanosleep'; +{==============================================================================} +{Syscalls Functions (Statfs)} +function statfs(path: PChar; buf: Pstatfs): int; cdecl; public name 'statfs'; +function fstatfs(fd: int; buf: Pstatfs): int; cdecl; public name 'fstatfs'; + +function statfs64(path: PChar; buf: Pstatfs64): int; cdecl; public name 'statfs64'; +function fstatfs64(fd: int; buf: Pstatfs64): int; cdecl; public name 'fstatfs64'; + {==============================================================================} {Syscalls Functions (Sched)} //To Do //http://man7.org/linux/man-pages/man2/sched_setaffinity.2.html @@ -1407,7 +1509,55 @@ function sem_wait(sem: Psem_t): int; cdecl; public name 'sem_wait'; {==============================================================================} {Syscalls Functions (Sockets)} -//To Do +{From sys/socket.h} +function socket_accept(socket: int; address: psockaddr; address_len: Psocklen_t): int; cdecl; public name 'accept'; +function socket_bind(socket: int; address: psockaddr; address_len: socklen_t): int; cdecl; public name 'bind'; +function socket_connect(socket: int; address: psockaddr; address_len: socklen_t): int; cdecl; public name 'connect'; +function socket_getpeername(socket: int; address: psockaddr; address_len: Psocklen_t): int; cdecl; public name 'getpeername'; +function socket_getsockname(socket: int; address: psockaddr; address_len: Psocklen_t): int; cdecl; public name 'getsockname'; +function socket_getsockopt(socket: int; level, option_name: int; option_value: Pointer; option_len: Psocklen_t): int; cdecl; public name 'getsockopt'; +function socket_listen(socket: int; backlog: int): int; cdecl; public name 'listen'; +function socket_recv(socket: int; buffer: Pointer; len: size_t; flags: int): ssize_t; cdecl; public name 'recv'; +function socket_recvfrom(socket: int; buffer: Pointer; len: size_t; flags: int; address: psockaddr; address_len: Psocklen_t): ssize_t; cdecl; public name 'recvfrom'; +//function socket_recvmsg //ssize_t recvmsg(int socket, struct msghdr *message, int flags); //To Do +function socket_send(socket: int; buffer: Pointer; len: size_t; flags: int): ssize_t; cdecl; public name 'send'; +function socket_sendto(socket: int; buffer: Pointer; len: size_t; flags: int; dest_addr: psockaddr; dest_len: socklen_t): ssize_t; cdecl; public name 'sendto'; +//function socket_sendmsg //ssize_t sendmsg(int socket, const struct msghdr *message, int flags); //To Do +function socket_setsockopt(socket: int; level, option_name: int; option_value: Pointer; option_len: socklen_t): int; cdecl; public name 'setsockopt'; +function socket_shutdown(socket: int; how: int): int; cdecl; public name 'shutdown'; +function socket_socket(domain, sockettype, protocol: int): int; cdecl; public name 'socket'; +function socket_socketpair(domain, sockettype, protocol: int; socket_vector: Pint): int; cdecl; public name 'socketpair'; + +{From arpa/inet.h} +function socket_htonl(hostlong: uint32_t): uint32_t; cdecl; public name 'htonl'; +function socket_htons(hostshort: uint16_t): uint16_t; cdecl; public name 'htons'; +function socket_ntohl(netlong: uint32_t): uint32_t; cdecl; public name 'ntohl'; +function socket_ntohs(netshort: uint16_t): uint16_t; cdecl; public name 'ntohs'; + +function socket_inet_addr(cp: PChar): in_addr_t; cdecl; public name '__inet_addr'; {Note: Linux has defines that remap to these names} +function socket_inet_ntoa(inaddr: TInAddr): PChar; cdecl; public name '__inet_ntoa'; +function socket_inet_aton(cp: PChar; inaddr: PInAddr): int; cdecl; public name '__inet_aton'; + +{From netdb.h} +function socket_gethostbyaddr(addr: Pointer; len: socklen_t; family: int): PHostEnt; cdecl; public name 'gethostbyaddr'; +function socket_gethostbyname(name: PChar): PHostEnt; cdecl; public name 'gethostbyname'; + +function socket_getnetbyaddr(net: uint32_t; family: int): PNetEnt; cdecl; public name 'getnetbyaddr'; +function socket_getnetbyname(name: PChar): PNetEnt; cdecl; public name 'getnetbyname'; + +function socket_getservbyport(port: int; proto: PChar): PServEnt; cdecl; public name 'getservbyport'; +function socket_getservbyname(name, proto: PChar): PServEnt; cdecl; public name 'getservbyname'; + +function socket_getprotobynumber(proto: int): PProtoEnt; cdecl; public name 'getprotobynumber'; +function socket_getprotobyname(name: PChar): PProtoEnt; cdecl; public name 'getprotobyname'; + +//function socket_getaddrinfo //To Do //Include when added to DNS and updated in Sockets +//function socket_getnameinfo //To Do //Include when added to DNS and updated in Sockets +//function socket_freeaddrinfo //To Do //Include when added to DNS and updated in Sockets + +{==============================================================================} +{Syscalls Functions (Non Standard)} +procedure msleep(msecs: uint); cdecl; public name 'msleep'; {==============================================================================} {Syscalls Helper Functions} @@ -1502,6 +1652,12 @@ TSyscallsPthreadData = record Arg:Pointer; end; + TSyscallsPreinit = procedure; cdecl; + TSyscallsInit = procedure; cdecl; + TSyscallsFini = procedure; cdecl; + TSyscallsCtor = procedure; cdecl; + TSyscallsDtor = procedure; cdecl; + {==============================================================================} {==============================================================================} var @@ -1524,19 +1680,15 @@ TSyscallsPthreadData = record SyscallsHeapLock:TMutexHandle = INVALID_HANDLE_VALUE; SyscallsPthreadSize:LongWord; - SyscallsPthreadIndex:LongWord; {Pthread TLS index (For Cleanup handler and Cancellation states)} + SyscallsPthreadIndex:LongWord; {Pthread TLS index (For Cleanup handlers)} SyscallsPthreadLock:TMutexHandle = INVALID_HANDLE_VALUE; SyscallsPthreadConcurrency:Integer; {Pthread concurrency level (Not used by Ultibo)} SyscallsKeyDestructor:array[0..THREAD_TLS_MAXIMUM - 1] of Tpthread_destructor_routine; - //__exidx_end //__exidx_start //TestingLIBSTDC++ //Possibly not required, used internally by Libgcc etc? - - //__preinit_array_start //__preinit_array_end //TestingLIBSTDC++ + //To Do //Continuing - //__init_array_start //__init_array_end //TestingLIBSTDC++ - - //__fini_array_start //__fini_array_end //TestingLIBSTDC++ + //__exidx_end //__exidx_start //__dso_handle //TestingLIBSTDC++ //Possibly not required, used internally by Libgcc etc? {==============================================================================} {==============================================================================} @@ -1566,6 +1718,9 @@ procedure SyscallsInit; {Note: Called only during system startup} var Count:LongWord; + TableStart:PPointer; + TableEnd:PPointer; + TableProc:procedure; cdecl; begin {} {Check Initialized} @@ -1645,8 +1800,46 @@ procedure SyscallsInit; environ[Count]:=StrNew(envp[Count]); end; - {Constructors of Static Objects (cin / cout / cerr / clog etc)} - //TestingLIBSTDC++ + {Execute Preinit functions} + TableStart:=@__preinit_array_start; + TableEnd:=@__preinit_array_end; + while TableStart < TableEnd do + begin + {Call Preinit} + TableProc:=TSyscallsPreinit(TableStart^); + TableProc(); + + {Update Start} + Inc(TableStart); {Increment PPointer increments by SizeOf(Pointer)} + end; + + {Execute Init functions} + TableStart:=@__init_array_start; + TableEnd:=@__init_array_end; + while TableStart < TableEnd do + begin + {Call Init} + TableProc:=TSyscallsPreinit(TableStart^); + TableProc(); + + {Update Start} + Inc(TableStart); {Increment PPointer increments by SizeOf(Pointer)} + end; + + {Execute Constructor (ctor) functions} + TableStart:=@__ctors_start; + TableEnd:=@__ctors_end; + while TableStart < TableEnd do + begin + {Call Constructor} + TableProc:=TSyscallsPreinit(TableStart^); + TableProc(); + + {Update Start} + Inc(TableStart); {Increment PPointer increments by SizeOf(Pointer)} + end; + + //To Do //Register SyscallsQuit as a Shutdown handler SyscallsInitialized:=True; end; @@ -1657,13 +1850,40 @@ procedure SyscallsQuit; {Terminate the Syscalls unit and Syscalls handle table} {Note: Called only during system shutdown} +var + TableStart:PPointer; + TableEnd:PPointer; + TableProc:procedure; cdecl; begin {} {Check Initialized} if not SyscallsInitialized then Exit; - {Destructors of Static Objects (cin / cout / cerr / clog etc)} - //TestingLIBSTDC++ + {Execute Destructor (dtor) functions} + TableStart:=@__dtors_start; + TableEnd:=@__dtors_end; + while TableStart < TableEnd do + begin + {Call Destructor} + TableProc:=TSyscallsPreinit(TableStart^); + TableProc(); + + {Update Start} + Inc(TableStart); {Increment PPointer increments by SizeOf(Pointer)} + end; + + {Execute Fini functions} + TableStart:=@__fini_array_start; + TableEnd:=@__fini_array_end; + while TableStart < TableEnd do + begin + {Call Fini} + TableProc:=TSyscallsPreinit(TableStart^); + TableProc(); + + {Update Start} + Inc(TableStart); {Increment PPointer increments by SizeOf(Pointer)} + end; SyscallsInitialized:=False; end; @@ -2318,7 +2538,7 @@ function _open_r(ptr: P_reent; name: PChar; flags: int; mode: int): int; cdecl; end; {Get Share Mode} - ShareMode:=0; + ShareMode:=FILE_SHARE_READ or FILE_SHARE_WRITE; {Get Create Flags} CreateFlags:=OPEN_EXISTING; @@ -2839,7 +3059,7 @@ function _write_r(ptr: P_reent; fd: int; buf: Pointer; cnt: size_t): _ssize_t; c {==============================================================================} {==============================================================================} {Syscalls Functions (Stat)} -function mkdir(path: PChar; mode: int): int; cdecl; +function mkdir(path: PChar; mode: mode_t): int; cdecl; {Create a directory} {Note: Exported function for use by C libraries, not intended to be called by applications} @@ -2852,6 +3072,21 @@ function mkdir(path: PChar; mode: int): int; cdecl; Result:=_mkdir_r(__getreent,path,mode); end; +{==============================================================================} + +function chmod(path: PChar; mode: mode_t): int; cdecl; +{Change mode of a file} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls chmod (path=' + StrPas(path) + ' mode=' + IntToStr(mode) + ')'); + {$ENDIF} + + Result:=0; +end; + {==============================================================================} {==============================================================================} {Syscalls Functions (Stdlib)} @@ -3024,6 +3259,8 @@ function usleep(useconds: useconds_t): int; cdecl; {Note: Does not support interruption by signal} {Note: Exported function for use by C libraries, not intended to be called by applications} +var + Remain: PtrUInt; begin {} Result:=0; @@ -3032,7 +3269,150 @@ function usleep(useconds: useconds_t): int; cdecl; if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls usleep (useconds=' + IntToStr(useconds) + ')'); {$ENDIF} - ThreadSleep(useconds div 1000); + Remain:=useconds; + + if useconds > 1000 then + begin + ThreadSleep(useconds div 1000); + Remain:=useconds mod 1000; + end; + + if Remain > 0 then + begin + MicrosecondDelay(Remain); + end; +end; + +{==============================================================================} + +function symlink(path1, path2: PChar): int; cdecl; public name 'symlink'; +{Make a symbolic link to a file} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls symlink (path1=' + StrPas(path1) + ' path2=' + StrPas(path2) + ')'); + {$ENDIF} + + Result:=_link_r(__getreent,path1,path2); +end; + +{==============================================================================} + +function ftruncate(fd: int; length: off_t): int; cdecl; public name 'ftruncate'; +{Truncate a file to a specified length} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Entry:PSyscallsEntry; +begin + {} + Result:=-1; + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls ftruncate (fd=' + IntToStr(fd) + ' length=' + IntToStr(length) + ')'); + {$ENDIF} + + {Check Length} + if length < 0 then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + Exit; + end; + + {Check descriptor} + if (fd = STDIN_FILENO) or (fd = STDOUT_FILENO) or (fd = STDERR_FILENO) then + begin + {Stdin, Stdout, Stderr} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EBADF; + Exit; + end + else + begin + {Normal file} + Entry:=SyscallsGetEntry(fd); + if Entry <> nil then + begin + {Truncate} + FSFileSeekEx(Entry^.Handle,length,FILE_BEGIN); + if not FSFileTruncate(Entry^.Handle) then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EIO; + Exit; + end; + + {Return Result} + Result:=0; + end + else + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EBADF; + end; + end; +end; + +{==============================================================================} + +function truncate(path: PChar; length: off_t): int; cdecl; public name 'truncate'; +{Truncate a file to a specified length} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Handle:THandle; +begin + {} + Result:=-1; + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls truncate (path=' + StrPas(path) + ' length=' + IntToStr(length) + ')'); + {$ENDIF} + + {Check Length} + if length < 0 then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + Exit; + end; + + {Open file} + Handle:=FSCreateFile(path,GENERIC_READ or GENERIC_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL); + if Handle = INVALID_HANDLE_VALUE then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=ENOENT; + Exit; + end; + + {Truncate} + FSFileSeekEx(Handle,length,FILE_BEGIN); + if FSFileTruncate(Handle) then + begin + {Return Result} + Result:=0; + end + else + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EIO; + Exit; + end; + + {Close File} + FSFileClose(Handle); end; {==============================================================================} @@ -3334,6 +3714,79 @@ function nanosleep(req, rem: Ptimespec): int; cdecl; end; end; +{==============================================================================} +{==============================================================================} +{Syscalls Functions (Statfs)} +function statfs(path: PChar; buf: Pstatfs): int; cdecl; public name 'statfs'; +{Get filesystem statistics} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + Result:=-1; + + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=ENOSYS; + + {Not yet implemented} +end; + +{==============================================================================} + +function fstatfs(fd: int; buf: Pstatfs): int; cdecl; public name 'fstatfs'; +{Get filesystem statistics} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + Result:=-1; + + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=ENOSYS; + + {Not yet implemented} +end; + +{==============================================================================} + +function statfs64(path: PChar; buf: Pstatfs64): int; cdecl; public name 'statfs64'; +{Get filesystem statistics} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + Result:=-1; + + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=ENOSYS; + + {Not yet implemented} +end; + +{==============================================================================} + +function fstatfs64(fd: int; buf: Pstatfs64): int; cdecl; public name 'fstatfs64'; +{Get filesystem statistics} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + Result:=-1; + + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=ENOSYS; + + {Not yet implemented} +end; + {==============================================================================} {==============================================================================} {Syscalls Functions (Sched)} @@ -3415,7 +3868,9 @@ function pthread_attr_init(attr: Ppthread_attr_t): int; cdecl; attr^.inheritsched:=PTHREAD_EXPLICIT_SCHED; attr^.schedpolicy:=SCHED_OTHER; attr^.schedparam.sched_priority:=THREAD_PRIORITY_DEFAULT; + {$IFDEF _POSIX_THREAD_GUARDSIZE} attr^.guardsize:=MEMORY_PAGE_SIZE; + {$ENDIF} {$IFDEF _POSIX_THREAD_CPUTIME} attr^.cputime_clock_allowed:=0; {$ENDIF} @@ -3516,6 +3971,7 @@ function pthread_attr_getguardsize(attr: Ppthread_attr_t; guardsize: Psize_t): i if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls pthread_attr_getguardsize (attr=' + IntToHex(PtrUInt(attr),8) + ')'); {$ENDIF} + {$IFDEF _POSIX_THREAD_GUARDSIZE} {Check guardsize} if guardsize = nil then Exit; @@ -3523,6 +3979,10 @@ function pthread_attr_getguardsize(attr: Ppthread_attr_t; guardsize: Psize_t): i guardsize^:=attr^.guardsize; Result:=0; + {$ELSE} + {Not supported} + Result:=ENOSYS; + {$ENDIF} end; {==============================================================================} @@ -3542,6 +4002,7 @@ function pthread_attr_setguardsize(attr: Ppthread_attr_t; guardsize: size_t): in if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls pthread_attr_setguardsize (attr=' + IntToHex(PtrUInt(attr),8) + ')'); {$ENDIF} + {$IFDEF _POSIX_THREAD_GUARDSIZE} {Check guardsize} if (guardsize > attr^.stacksize) then Exit; @@ -3549,6 +4010,10 @@ function pthread_attr_setguardsize(attr: Ppthread_attr_t; guardsize: size_t): in attr^.guardsize:=guardsize; Result:=0; + {$ELSE} + {Not supported} + Result:=ENOSYS; + {$ENDIF} end; {==============================================================================} @@ -4032,11 +4497,26 @@ function pthread_cond_broadcast(cond: Ppthread_cond_t): int; cdecl; if Result <> 0 then Exit; end; - {Wake All Condition} - if ConditionWakeAll(TConditionHandle(cond^)) <> ERROR_SUCCESS then Exit; - - Result:=0; -end; + {Check cond} + if cond^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized cond} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized condition in call to pthread_cond_broadcast'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize cond} + Result:=pthread_cond_init(cond,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + + {Wake All Condition} + if ConditionWakeAll(TConditionHandle(cond^)) <> ERROR_SUCCESS then Exit; + + Result:=0; +end; {==============================================================================} @@ -4063,6 +4543,21 @@ function pthread_cond_signal(cond: Ppthread_cond_t): int; cdecl; if Result <> 0 then Exit; end; + {Check cond} + if cond^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized cond} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized condition in call to pthread_cond_signal'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize cond} + Result:=pthread_cond_init(cond,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Wake Condition} if ConditionWake(TConditionHandle(cond^)) <> ERROR_SUCCESS then Exit; @@ -4097,6 +4592,21 @@ function pthread_cond_wait(cond: Ppthread_cond_t; mutex: Ppthread_mutex_t): int; if Result <> 0 then Exit; end; + {Check cond} + if cond^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized cond} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized condition in call to pthread_cond_wait'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize cond} + Result:=pthread_cond_init(cond,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Wait Condition Mutex} ResultCode:=ConditionWaitMutex(TConditionHandle(cond^),TMutexHandle(mutex^),INFINITE); if ResultCode = ERROR_SUCCESS then @@ -4170,6 +4680,21 @@ function pthread_cond_timedwait(cond: Ppthread_cond_t; mutex: Ppthread_mutex_t; if Result <> 0 then Exit; end; + {Check cond} + if cond^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized cond} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized condition in call to pthread_cond_timedwait'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize cond} + Result:=pthread_cond_init(cond,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Wait Condition Mutex} ResultCode:=ConditionWaitMutex(TConditionHandle(cond^),TMutexHandle(mutex^),Timeout); if ResultCode = ERROR_SUCCESS then @@ -4326,6 +4851,12 @@ function pthread_create(thread: Ppthread_t; attr: Ppthread_attr_t; start_routine {Check attr} if attr = nil then + begin + Flags:=THREAD_FLAG_PERSIST; + Priority:=THREAD_PRIORITY_DEFAULT; + StackSize:=THREAD_STACK_DEFAULT_SIZE; + end + else begin StackSize:=attr^.stacksize; Priority:=attr^.schedparam.sched_priority; @@ -4334,12 +4865,6 @@ function pthread_create(thread: Ppthread_t; attr: Ppthread_attr_t; start_routine begin Flags:=THREAD_FLAG_PERSIST; end; - end - else - begin - Flags:=THREAD_FLAG_PERSIST; - Priority:=THREAD_PRIORITY_DEFAULT; - StackSize:=THREAD_STACK_DEFAULT_SIZE; end; {Allocate Data} @@ -4475,7 +5000,7 @@ procedure pthread_exit(value_ptr: Pointer); cdecl; {$IFDEF SYSCALLS_DEBUG} if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls pthread_exit (value_ptr=' + IntToHex(PtrUInt(value_ptr),8) + ')'); {$ENDIF} - + {Call Thread End} SyscallsPthreadEnd(value_ptr); end; @@ -4570,7 +5095,7 @@ function pthread_join(thread: pthread_t; value_ptr: PPointer): int; cdecl; if State = THREAD_STATE_TERMINATED then begin {Destroy Thread} - ThreadDestroy(TThreadHandle(thread)); + ThreadDestroy(TThreadHandle(thread)); end; Result:=0; @@ -4914,7 +5439,22 @@ function pthread_mutex_lock(mutex: Ppthread_mutex_t): int; cdecl; Result:=pthread_mutex_init(mutex,nil); if Result <> 0 then Exit; end; - + + {Check mutex} + if mutex^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized mutex} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized mutex in call to pthread_mutex_lock'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize mutex} + Result:=pthread_mutex_init(mutex,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Lock Mutex} ResultCode:=MutexLock(TMutexHandle(mutex^)); if ResultCode = ERROR_SUCCESS then @@ -4954,6 +5494,21 @@ function pthread_mutex_trylock(mutex: Ppthread_mutex_t): int; cdecl; if Result <> 0 then Exit; end; + {Check mutex} + if mutex^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized mutex} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized mutex in call to pthread_mutex_trylock'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize mutex} + Result:=pthread_mutex_init(mutex,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Try Lock Mutex} ResultCode:=MutexTryLock(TMutexHandle(mutex^)); if ResultCode = ERROR_SUCCESS then @@ -4993,6 +5548,21 @@ function pthread_mutex_unlock(mutex: Ppthread_mutex_t): int; cdecl; if Result <> 0 then Exit; end; + {Check mutex} + if mutex^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized mutex} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized mutex in call to pthread_mutex_unlock'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize mutex} + Result:=pthread_mutex_init(mutex,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Unlock Mutex} ResultCode:=MutexUnlock(TMutexHandle(mutex^)); if ResultCode = ERROR_SUCCESS then @@ -5034,6 +5604,21 @@ function pthread_mutex_setprioceiling(mutex: Ppthread_mutex_t; prioceiling: int; if Result <> 0 then Exit; end; + {Check mutex} + if mutex^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized mutex} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized mutex in call to pthread_mutex_setprioceiling'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize mutex} + Result:=pthread_mutex_init(mutex,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {$IFDEF _POSIX_THREAD_PRIO_PROTECT} {Not supported} Result:=ENOSYS; @@ -5068,6 +5653,21 @@ function pthread_mutex_getprioceiling(mutex: Ppthread_mutex_t; prioceiling: Pint if Result <> 0 then Exit; end; + {Check mutex} + if mutex^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized mutex} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized mutex in call to pthread_mutex_getprioceiling'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize mutex} + Result:=pthread_mutex_init(mutex,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {$IFDEF _POSIX_THREAD_PRIO_PROTECT} {Not supported} Result:=ENOSYS; @@ -5534,6 +6134,21 @@ function pthread_rwlock_rdlock(rwlock: Ppthread_rwlock_t): int; cdecl; if Result <> 0 then Exit; end; + {Check rwlock} + if rwlock^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized rwlock} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized rwlock in call to pthread_rwlock_rdlock'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize rwlock} + Result:=pthread_rwlock_init(rwlock,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Check Owner} if SynchronizerWriterOwner(TSynchronizerHandle(rwlock^)) = ThreadGetCurrent then begin @@ -5577,6 +6192,21 @@ function pthread_rwlock_wrlock(rwlock: Ppthread_rwlock_t): int; cdecl; if Result <> 0 then Exit; end; + {Check rwlock} + if rwlock^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized rwlock} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized rwlock in call to pthread_rwlock_wrlock'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize rwlock} + Result:=pthread_rwlock_init(rwlock,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Check Last} if SynchronizerReaderLast(TSynchronizerHandle(rwlock^)) = ThreadGetCurrent then begin @@ -5620,6 +6250,21 @@ function pthread_rwlock_tryrdlock(rwlock: Ppthread_rwlock_t): int; cdecl; if Result <> 0 then Exit; end; + {Check rwlock} + if rwlock^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized rwlock} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized rwlock in call to pthread_rwlock_tryrdlock'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize rwlock} + Result:=pthread_rwlock_init(rwlock,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Check Owner} if SynchronizerWriterOwner(TSynchronizerHandle(rwlock^)) = ThreadGetCurrent then begin @@ -5667,6 +6312,21 @@ function pthread_rwlock_trywrlock(rwlock: Ppthread_rwlock_t): int; cdecl; if Result <> 0 then Exit; end; + {Check rwlock} + if rwlock^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized rwlock} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized rwlock in call to pthread_rwlock_trywrlock'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize rwlock} + Result:=pthread_rwlock_init(rwlock,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Check Last} if SynchronizerReaderLast(TSynchronizerHandle(rwlock^)) = ThreadGetCurrent then begin @@ -5714,6 +6374,21 @@ function pthread_rwlock_unlock(rwlock: Ppthread_rwlock_t): int; cdecl; if Result <> 0 then Exit; end; + {Check rwlock} + if rwlock^ = 0 then + begin + {$IFDEF SYSCALLS_ERROR_UNINITIALIZED} + {Uninitialized rwlock} + if PLATFORM_LOG_ENABLED then PlatformLogError('Unitialized rwlock in call to pthread_rwlock_unlock'); + {$ENDIF} + + {$IFDEF SYSCALLS_CREATE_UNINITIALIZED} + {Initialize rwlock} + Result:=pthread_rwlock_init(rwlock,nil); + if Result <> 0 then Exit; + {$ENDIF} + end; + {Check Owner} if SynchronizerWriterOwner(TSynchronizerHandle(rwlock^)) = ThreadGetCurrent then begin @@ -6623,107 +7298,755 @@ function sem_wait(sem: Psem_t): int; cdecl; {==============================================================================} {==============================================================================} {Syscalls Functions (Sockets)} +function socket_get_error(error: int): int; +{Map a Socket error to a POSIX error} -{==============================================================================} -{==============================================================================} -{Syscalls Helper Functions} -procedure __malloc_lock(ptr: P_reent); cdecl; -{Note: Exported function for use by C libraries, not intended to be called by applications} +{Note: Internal function, not intended to be called by applications} begin {} - {Check reent} - if ptr = nil then Exit; - - {$IFDEF SYSCALLS_DEBUG} - if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls __malloc_lock (ptr=' + IntToHex(PtrUInt(ptr),8) + ')'); - {$ENDIF} + Result:=EINVAL; - {Lock Mutex} - MutexLock(SyscallsMallocLock); + case error of + {Windows Sockets definitions of regular Microsoft C error constants} + WSAEINTR..WSAEMFILE:Result:=error - WSABASEERR; + + {Windows Sockets definitions of regular Berkeley error constants} + WSAEWOULDBLOCK:Result:=EWOULDBLOCK; + WSAEINPROGRESS:Result:=EINPROGRESS; + WSAEALREADY:Result:=EALREADY; + WSAENOTSOCK:Result:=ENOTSOCK; + WSAEDESTADDRREQ:Result:=EDESTADDRREQ; + WSAEMSGSIZE:Result:=EMSGSIZE; + WSAEPROTOTYPE:Result:=EPROTOTYPE; + WSAENOPROTOOPT:Result:=ENOPROTOOPT; + WSAEPROTONOSUPPORT:Result:=EPROTONOSUPPORT; + WSAESOCKTNOSUPPORT:Result:=ESOCKTNOSUPPORT; + WSAEOPNOTSUPP:Result:=EOPNOTSUPP; + WSAEPFNOSUPPORT:Result:=EPFNOSUPPORT; + WSAEAFNOSUPPORT:Result:=EAFNOSUPPORT; + WSAEADDRINUSE:Result:=EADDRINUSE; + WSAEADDRNOTAVAIL:Result:=EADDRNOTAVAIL; + WSAENETDOWN:Result:=ENETDOWN; + WSAENETUNREACH:Result:=ENETUNREACH; + WSAENETRESET:Result:=ENETRESET; + WSAECONNABORTED:Result:=ECONNABORTED; + WSAECONNRESET:Result:=ECONNRESET; + WSAENOBUFS:Result:=ENOBUFS; + WSAEISCONN:Result:=EISCONN; + WSAENOTCONN:Result:=ENOTCONN; + WSAESHUTDOWN:Result:=ESHUTDOWN; + WSAETOOMANYREFS:Result:=ETOOMANYREFS; + WSAETIMEDOUT:Result:=ETIMEDOUT; + WSAECONNREFUSED:Result:=ECONNREFUSED; + WSAELOOP:Result:=ELOOP; + WSAENAMETOOLONG:Result:=ENAMETOOLONG; + WSAEHOSTDOWN:Result:=EHOSTDOWN; + WSAEHOSTUNREACH:Result:=EHOSTUNREACH; + WSAENOTEMPTY:Result:=ENOTEMPTY; + WSAEPROCLIM:Result:=EPROCLIM; + WSAEUSERS:Result:=EUSERS; + WSAEDQUOT:Result:=EDQUOT; + WSAESTALE:Result:=ESTALE; + WSAEREMOTE:Result:=EREMOTE; + WSAEDISCON:Result:=ENOTCONN; + + {Extended Windows Sockets error constant definitions} + WSASYSNOTREADY:Result:=EIO; + WSAVERNOTSUPPORTED:Result:=ENOTSUP; + WSANOTINITIALISED:Result:=EIO; + + WSAENOMORE:Result:=ENOMEM; + WSAECANCELLED:Result:=ECANCELED; + WSAEINVALIDPROCTABLE:Result:=EINVAL; + WSAEINVALIDPROVIDER:Result:=EINVAL; + WSAEPROVIDERFAILEDINIT:Result:=EFAULT; + WSASYSCALLFAILURE:Result:=EFAULT; + WSASERVICE_NOT_FOUND:Result:=ESRCH; + WSATYPE_NOT_FOUND:Result:=ESRCH; + WSA_E_NO_MORE:Result:=ENOMEM; + WSA_E_CANCELLED:Result:=ECANCELED; + WSAEREFUSED:Result:=ECONNREFUSED; + end; end; {==============================================================================} -procedure __malloc_unlock(ptr: P_reent); cdecl; +function socket_accept(socket: int; address: psockaddr; address_len: Psocklen_t): int; cdecl; +{Accept a new connection on a socket} + {Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; begin {} - {Check reent} - if ptr = nil then Exit; - {$IFDEF SYSCALLS_DEBUG} - if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls __malloc_unlock (ptr=' + IntToHex(PtrUInt(ptr),8) + ')'); + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls accept (socket=' + IntToHex(socket,8) + ' address=' + IntToHex(PtrUInt(address),8) + ' address_len=' + IntToHex(PtrUInt(address_len),8) + ')'); {$ENDIF} - - {Unlock Mutex} - MutexUnlock(SyscallsMallocLock); + + Result:=fpaccept(socket,address,psocklen(address_len)); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; end; {==============================================================================} -procedure __env_lock(ptr: P_reent); cdecl; +function socket_bind(socket: int; address: psockaddr; address_len: socklen_t): int; cdecl; +{Bind a name to a socket} + {Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; begin {} - {Check reent} - if ptr = nil then Exit; - {$IFDEF SYSCALLS_DEBUG} - if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls __env_lock (ptr=' + IntToHex(PtrUInt(ptr),8) + ')'); + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls bind (socket=' + IntToHex(socket,8) + ' address=' + IntToHex(PtrUInt(address),8) + ' address_len=' + IntToStr(address_len) + ')'); {$ENDIF} - - {Lock Mutex} - MutexLock(SyscallsEnvLock); + + Result:=fpbind(socket,address,address_len); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; end; {==============================================================================} -procedure __env_unlock(ptr: P_reent); cdecl; +function socket_connect(socket: int; address: psockaddr; address_len: socklen_t): int; cdecl; +{Connect a socket} + {Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; begin {} - {Check reent} - if ptr = nil then Exit; - {$IFDEF SYSCALLS_DEBUG} - if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls __env_unlock (ptr=' + IntToHex(PtrUInt(ptr),8) + ')'); + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls connect (socket=' + IntToHex(socket,8) + ' address=' + IntToHex(PtrUInt(address),8) + ' address_len=' + IntToStr(address_len) + ')'); {$ENDIF} - - {Unlock Mutex} - MutexUnlock(SyscallsEnvLock); + + Result:=fpconnect(socket,address,address_len); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; end; {==============================================================================} -{==============================================================================} -{Syscalls Macro Functions (Ioctl)} -function _IOC(dir,_type,nr,size: LongWord): LongWord; -begin - {} - Result:=(dir shl _IOC_DIRSHIFT) or (_type shl _IOC_TYPESHIFT) or (nr shl _IOC_NRSHIFT) or (size shl _IOC_SIZESHIFT); -end; -{==============================================================================} +function socket_getpeername(socket: int; address: psockaddr; address_len: Psocklen_t): int; cdecl; +{Get the name of the peer socket} -function _IO(_type,nr: LongWord): LongWord; +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; begin {} - Result:=_IOC(_IOC_NONE,_type,nr,0); + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getpeername (socket=' + IntToHex(socket,8) + ' address=' + IntToHex(PtrUInt(address),8) + ' address_len=' + IntToHex(PtrUInt(address_len),8) + ')'); + {$ENDIF} + + Result:=fpgetpeername(socket,address,psocklen(address_len)); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; end; {==============================================================================} -function _IOR(_type,nr,size: LongWord): LongWord; +function socket_getsockname(socket: int; address: psockaddr; address_len: Psocklen_t): int; cdecl; +{Get the socket name} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; begin {} - Result:=_IOC(_IOC_READ,_type,nr,size); + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getsockname (socket=' + IntToHex(socket,8) + ' address=' + IntToHex(PtrUInt(address),8) + ' address_len=' + IntToHex(PtrUInt(address_len),8) + ')'); + {$ENDIF} + + Result:=fpgetsockname(socket,address,psocklen(address_len)); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; end; {==============================================================================} -function _IOW(_type,nr,size: LongWord): LongWord; +function socket_getsockopt(socket: int; level, option_name: int; option_value: Pointer; option_len: Psocklen_t): int; cdecl; +{Get the socket options} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; begin {} - Result:=_IOC(_IOC_WRITE,_type,nr,size); + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getsockopt (socket=' + IntToHex(socket,8) + ' level=' + IntToStr(level) + ' option_name=' + IntToStr(option_name) + ' option_value=' + IntToHex(PtrUInt(option_value),8) + ' option_len=' + IntToHex(PtrUInt(option_len),8) + ')'); + {$ENDIF} + + Result:=fpgetsockopt(socket,level,option_name,option_value,psocklen(option_len)); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_listen(socket: int; backlog: int): int; cdecl; +{Listen for socket connections and limit the queue of incoming connections} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls listen (socket=' + IntToHex(socket,8) + ' backlog=' + IntToStr(backlog) + ')'); + {$ENDIF} + + Result:=fplisten(socket,backlog); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_recv(socket: int; buffer: Pointer; len: size_t; flags: int): ssize_t; cdecl; +{Receive a message from a connected socket} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls recv (socket=' + IntToHex(socket,8) + ' buffer=' + IntToHex(PtrUInt(buffer),8) + ' len=' + IntToStr(len) + ' flags=' + IntToHex(flags,8) + ')'); + {$ENDIF} + + Result:=fprecv(socket,buffer,len,flags); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_recvfrom(socket: int; buffer: Pointer; len: size_t; flags: int; address: psockaddr; address_len: Psocklen_t): ssize_t; cdecl; +{Receive a message from a socket} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls recv (socket=' + IntToHex(socket,8) + ' buffer=' + IntToHex(PtrUInt(buffer),8) + ' len=' + IntToStr(len) + ' flags=' + IntToHex(flags,8) + ' address=' + IntToHex(PtrUInt(address),8) + ' address_len=' + IntToHex(PtrUInt(address_len),8) + ')'); + {$ENDIF} + + Result:=fprecvfrom(socket,buffer,len,flags,address,psocklen(address_len)); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_send(socket: int; buffer: Pointer; len: size_t; flags: int): ssize_t; cdecl; +{Send a message on a socket} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls send (socket=' + IntToHex(socket,8) + ' buffer=' + IntToHex(PtrUInt(buffer),8) + ' len=' + IntToStr(len) + ' flags=' + IntToHex(flags,8) + ')'); + {$ENDIF} + + Result:=fpsend(socket,buffer,len,flags); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_sendto(socket: int; buffer: Pointer; len: size_t; flags: int; dest_addr: psockaddr; dest_len: socklen_t): ssize_t; cdecl; +{Send a message on a socket} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls sendto (socket=' + IntToHex(socket,8) + ' buffer=' + IntToHex(PtrUInt(buffer),8) + ' len=' + IntToStr(len) + ' flags=' + IntToHex(flags,8) + ' dest_addr=' + IntToHex(PtrUInt(dest_addr),8) + ' dest_len=' + IntToStr(dest_len) + ')'); + {$ENDIF} + + Result:=fpsendto(socket,buffer,len,flags,dest_addr,dest_len); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_setsockopt(socket: int; level, option_name: int; option_value: Pointer; option_len: socklen_t): int; cdecl; +{Set the socket options} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls setsockopt (socket=' + IntToHex(socket,8) + ' level=' + IntToStr(level) + ' option_name=' + IntToStr(option_name) + ' option_value=' + IntToHex(PtrUInt(option_value),8) + ' option_len=' + IntToStr(option_len) + ')'); + {$ENDIF} + + Result:=fpsetsockopt(socket,level,option_name,option_value,option_len); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_shutdown(socket: int; how: int): int; cdecl; +{Shut down socket send and receive operations} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls shutdown (socket=' + IntToHex(socket,8) + ' how=' + IntToStr(how) + ')'); + {$ENDIF} + + Result:=fpshutdown(socket,how); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_socket(domain, sockettype, protocol: int): int; cdecl; +{Create an endpoint for communication} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls socket (domain=' + IntToStr(domain) + ' type=' + IntToStr(sockettype) + ' protocol=' + IntToStr(protocol) + ')'); + {$ENDIF} + + Result:=fpsocket(domain,sockettype,protocol); + if Result = Integer(INVALID_SOCKET) then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_socketpair(domain, sockettype, protocol: int; socket_vector: Pint): int; cdecl; +{Create a pair of connected sockets} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls socketpair (domain=' + IntToStr(domain) + ' type=' + IntToStr(sockettype) + ' protocol=' + IntToStr(protocol) + ' socket_vector=' + IntToHex(PtrUInt(socket_vector),8) + ')'); + {$ENDIF} + + Result:=fpsocketpair(domain,sockettype,protocol,socket_vector); + if Result = SOCKET_ERROR then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=socket_get_error(SocketError()); + end; +end; + +{==============================================================================} + +function socket_htonl(hostlong: uint32_t): uint32_t; cdecl; +{Convert values between host and network byte order} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=htonl(hostlong); +end; + +{==============================================================================} + +function socket_htons(hostshort: uint16_t): uint16_t; cdecl; +{Convert values between host and network byte order} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=htons(hostshort); +end; + +{==============================================================================} + +function socket_ntohl(netlong: uint32_t): uint32_t; cdecl; +{Convert values between host and network byte order} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=ntohl(netlong); +end; + +{==============================================================================} + +function socket_ntohs(netshort: uint16_t): uint16_t; cdecl; +{Convert values between host and network byte order} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=ntohs(netshort); +end; + +{==============================================================================} + +function socket_inet_addr(cp: PChar): in_addr_t; cdecl; +{IPv4 address manipulation} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=Inet_Addr(cp); +end; +{==============================================================================} + +function socket_inet_ntoa(inaddr: TInAddr): PChar; cdecl; +{IPv4 address manipulation} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=Inet_Ntoa(inaddr); +end; + +{==============================================================================} + +function socket_inet_aton(cp: PChar; inaddr: PInAddr): int; cdecl; +{IPv4 address manipulation} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=Inet_Aton(cp,inaddr) +end; + +{==============================================================================} + +function socket_gethostbyaddr(addr: Pointer; len: socklen_t; family: int): PHostEnt; cdecl; +{Network host database functions} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + //To Do //Resolve the discrepency in field sizes between PHostEnt from Winsock and hostent from POSIX (short versus int) + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getservbyport (addr=' + IntToHex(PtrUInt(addr),8) + ' len=' + IntToStr(len) + ' family=' + IntToStr(family) + ')'); + {$ENDIF} + + Result:=GetHostByAddr(addr,len,family); +end; + +{==============================================================================} + +function socket_gethostbyname(name: PChar): PHostEnt; cdecl; +{Network host database functions} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + //To Do //Resolve the discrepency in field sizes between PHostEnt from Winsock and hostent from POSIX (short versus int) + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls gethostbyname (name=' + StrPas(name) + ')'); + {$ENDIF} + + Result:=GetHostByName(name); +end; + +{==============================================================================} + +function socket_getnetbyaddr(net: uint32_t; family: int): PNetEnt; cdecl; +{Network database functions} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + Addr:TInAddr; +begin + {} + //To Do //Resolve the discrepency in field sizes between PNetEnt from Winsock and netent from POSIX (short versus int) + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getservbyport (net=' + IntToHex(net,8) + ' family=' + IntToStr(family) + ')'); + {$ENDIF} + + Addr.S_addr:=htonl(net); + + Result:=GetNetByAddr(@Addr,SizeOf(TInAddr),family); +end; + +{==============================================================================} + +function socket_getnetbyname(name: PChar): PNetEnt; cdecl; +{Network database functions} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + //To Do //Resolve the discrepency in field sizes between PNetEnt from Winsock and netent from POSIX (short versus int) + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getnetbyname (name=' + StrPas(name) + ')'); + {$ENDIF} + + Result:=GetNetByName(name); +end; + +{==============================================================================} + +function socket_getservbyport(port: int; proto: PChar): PServEnt; cdecl; +{Network services database functions} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + //To Do //Resolve the discrepency in field sizes between PServEnt from Winsock and servent from POSIX (short versus int) + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getservbyport (port=' + IntToStr(port) + ' proto=' + StrPas(proto) + ')'); + {$ENDIF} + + Result:=GetServByPort(port,proto); +end; + +{==============================================================================} + +function socket_getservbyname(name, proto: PChar): PServEnt; cdecl; +{Network services database functions} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + //To Do //Resolve the discrepency in field sizes between PServEnt from Winsock and servent from POSIX (short versus int) + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getservbyname (name=' + StrPas(name) + ' proto=' + StrPas(proto) + ')'); + {$ENDIF} + + Result:=GetServByName(name,proto); +end; + +{==============================================================================} + +function socket_getprotobynumber(proto: int): PProtoEnt; cdecl; +{Network protocol database functions} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + //To Do //Resolve the discrepency in field sizes between PProtoEnt from Winsock and protoent from POSIX (short versus int) + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getprotobynumber (proto=' + IntToStr(proto) + ')'); + {$ENDIF} + + Result:=GetProtoByNumber(proto); +end; + +{==============================================================================} + +function socket_getprotobyname(name: PChar): PProtoEnt; cdecl; +{Network protocol database functions} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + //To Do //Resolve the discrepency in field sizes between PProtoEnt from Winsock and protoent from POSIX (short versus int) + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls getprotobyname (name=' + StrPas(name) + ')'); + {$ENDIF} + + Result:=GetProtoByName(name); +end; + +{==============================================================================} +{==============================================================================} +{Syscalls Functions (Non Standard)} +procedure msleep(msecs: uint); cdecl; +{Sleep for a specified number of milliseconds} + +{Note: Does not support interruption by signal} +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls msleep (msecs=' + IntToStr(msecs) + ')'); + {$ENDIF} + + ThreadSleep(msecs); +end; + +{==============================================================================} +{==============================================================================} +{Syscalls Helper Functions} +procedure __malloc_lock(ptr: P_reent); cdecl; +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {Check reent} + if ptr = nil then Exit; + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls __malloc_lock (ptr=' + IntToHex(PtrUInt(ptr),8) + ')'); + {$ENDIF} + + {Lock Mutex} + MutexLock(SyscallsMallocLock); +end; + +{==============================================================================} + +procedure __malloc_unlock(ptr: P_reent); cdecl; +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {Check reent} + if ptr = nil then Exit; + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls __malloc_unlock (ptr=' + IntToHex(PtrUInt(ptr),8) + ')'); + {$ENDIF} + + {Unlock Mutex} + MutexUnlock(SyscallsMallocLock); +end; + +{==============================================================================} + +procedure __env_lock(ptr: P_reent); cdecl; +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {Check reent} + if ptr = nil then Exit; + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls __env_lock (ptr=' + IntToHex(PtrUInt(ptr),8) + ')'); + {$ENDIF} + + {Lock Mutex} + MutexLock(SyscallsEnvLock); +end; + +{==============================================================================} + +procedure __env_unlock(ptr: P_reent); cdecl; +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {Check reent} + if ptr = nil then Exit; + + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls __env_unlock (ptr=' + IntToHex(PtrUInt(ptr),8) + ')'); + {$ENDIF} + + {Unlock Mutex} + MutexUnlock(SyscallsEnvLock); +end; + +{==============================================================================} +{==============================================================================} +{Syscalls Macro Functions (Ioctl)} +function _IOC(dir,_type,nr,size: LongWord): LongWord; +begin + {} + Result:=(dir shl _IOC_DIRSHIFT) or (_type shl _IOC_TYPESHIFT) or (nr shl _IOC_NRSHIFT) or (size shl _IOC_SIZESHIFT); +end; + +{==============================================================================} + +function _IO(_type,nr: LongWord): LongWord; +begin + {} + Result:=_IOC(_IOC_NONE,_type,nr,0); +end; + +{==============================================================================} + +function _IOR(_type,nr,size: LongWord): LongWord; +begin + {} + Result:=_IOC(_IOC_READ,_type,nr,size); +end; + +{==============================================================================} + +function _IOW(_type,nr,size: LongWord): LongWord; +begin + {} + Result:=_IOC(_IOC_WRITE,_type,nr,size); end; {==============================================================================} @@ -7138,7 +8461,7 @@ function SyscallsInitializeHeap:Boolean; begin {Dynamic Heap} {Check Block} - PageTableEntry:=PageTableGetEntry(SyscallsHeapFirst^.PhysicalAddress); + PageTableGetEntry(SyscallsHeapFirst^.PhysicalAddress,PageTableEntry); if PageTableEntry.Size <> MEMORY_PAGE_SIZE then begin {Map Block} @@ -7153,7 +8476,7 @@ function SyscallsInitializeHeap:Boolean; end; {Remap Block} - PageTableEntry:=PageTableGetEntry(SyscallsHeapFirst^.PhysicalAddress); + PageTableGetEntry(SyscallsHeapFirst^.PhysicalAddress,PageTableEntry); PageTableEntry.VirtualAddress:=SYSCALLS_HEAP_BASE; PageTableEntry.Size:=MEMORY_PAGE_SIZE; while PageTableEntry.VirtualAddress < (SYSCALLS_HEAP_BASE + SYSCALLS_HEAP_MIN) do @@ -7335,7 +8658,7 @@ function SyscallsIncreaseHeap(Size:LongWord):Pointer; end; {Check Block} - PageTableEntry:=PageTableGetEntry(Block^.PhysicalAddress); + PageTableGetEntry(Block^.PhysicalAddress,PageTableEntry); if PageTableEntry.Size <> MEMORY_PAGE_SIZE then begin {Map Block} @@ -7350,7 +8673,7 @@ function SyscallsIncreaseHeap(Size:LongWord):Pointer; end; {Remap Block} - PageTableEntry:=PageTableGetEntry(Block^.PhysicalAddress); + PageTableGetEntry(Block^.PhysicalAddress,PageTableEntry); PageTableEntry.VirtualAddress:=PtrUInt(SyscallsHeapEnd); PageTableEntry.Size:=MEMORY_PAGE_SIZE; while PageTableEntry.VirtualAddress < (PtrUInt(SyscallsHeapEnd) + SYSCALLS_HEAP_BLOCKSIZE) do @@ -7554,7 +8877,7 @@ procedure SyscallsPthreadEnd(Value:Pointer); begin {} {$IFDEF SYSCALLS_DEBUG} - if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls Pthread End (Thread=' + IntToHex(ThreadGetCurrent,8) + ')'); + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls Pthread End (Thread=' + IntToHex(ThreadGetCurrent,8) + ' Value=' + IntToHex(PtrUInt(Value),8) + ')'); {$ENDIF} {Call Key Destructors} @@ -7588,6 +8911,10 @@ procedure SyscallsPthreadEnd(Value:Pointer); Cleanup:=Pthread^.Cleanup; while Cleanup <> nil do begin + {$IFDEF SYSCALLS_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('Syscalls Pthread End (Cleanup=' + IntToHex(PtrUInt(Cleanup),8) + ' Routine=' + IntToHex(PtrUInt(Cleanup^.Routine),8) + ' Arg=' + IntToHex(PtrUInt(Cleanup^.Arg),8) + ')'); + {$ENDIF} + {Check Routine} if Assigned(Cleanup^.Routine) then begin diff --git a/source/rtl/ultibo/core/threads.pas b/source/rtl/ultibo/core/threads.pas index 66f9d26..7424b72 100644 --- a/source/rtl/ultibo/core/threads.pas +++ b/source/rtl/ultibo/core/threads.pas @@ -151,6 +151,34 @@ Create/Destroy //To Do + + Completion - A completion is similar in concept to both condition variables and events but behaves differently to each of them. Completions are designed to be similar to the Linux + synchronization object of the same name and provide a light weight mechanism for allowing one or more threads to wait for a signal that they can proceed. The + completion differs from a condition variable because it maintains an internal state, once the state has been set (complete) threads pass through the completion + without waiting (until the state is reset). This is similar to an event (see below) but in the case of a completion the state remains set indefinately or until + reset is called, a completion also allows explicitly releasing one thread at a time or all threads at once. More generally the event was created to model a + behavour that is similar to the same object in Windows and the completion models the Linux object instead. + + Completions can use a counted state rather than a single state if they are created with COMPLETION_FLAG_COUNTED, this is to mimic the implementation of the + Linux variation however there is a slight but important change in the way counted completions are implemented in Ultibo. The Linux completion sets the count + to UMAX_INT / 2 on complete_all() which is documented as "effectively infinite". This is of course incorrect and seriously flawed because the count value is + only set to a little over 2 billion, a long running application could easily consume this count with calls to wait_for_completion() and then the application + would potentially fail without explanation. + + To prevent this same fatal flaw the Ultibo implementation sets the count at LongWord(-1) on CompletionCompleteAll() and all other operations check for this + value before incrementing or decrementing the count further. In this way the setting of complete all is geniunely infinite and will not fail on a long running + application. + + Suitable for use by Interrupt handlers to call complete only if created with COMPLETION_FLAG_IRQ or FIQ (Interrupt handlers must not call wait). + Suitable for use on multiprocessor systems. + Access is serialized, the next thread released when a completion is set will be the thread that has been waiting longest (See also stolen wakeups below). + + Usage: + ------ + + Create/Destroy + + //To Do Thread Handling --------------- @@ -354,6 +382,20 @@ interface CONDITION_LOCK_FLAG_NONE = $00000000; CONDITION_LOCK_FLAG_WRITER = $00000001; {Condition should release and acquire the writer lock on a Synchronizer when ConditionWaitSynchronizer is called (otherwise release and acquire the reader lock)} + {Completion constants} + COMPLETION_SIGNATURE = $FCE24CA1; + + {Completion state constants} + COMPLETION_STATE_RESET = 0; + COMPLETION_STATE_COMPLETE = 1; + + {Completion flag constants} + COMPLETION_FLAG_NONE = LOCK_FLAG_NONE; + COMPLETION_FLAG_IRQ = LOCK_FLAG_IRQ; {Disable IRQ during completion operations (Wait/Reset/Complete)} + COMPLETION_FLAG_FIQ = LOCK_FLAG_FIQ; {Disable FIQ during completion operations (Wait/Reset/Complete)} + COMPLETION_FLAG_IRQFIQ = LOCK_FLAG_IRQFIQ; {Disable IRQ and FIQ during completion operations (Wait/Reset/Complete)} + COMPLETION_FLAG_COUNTED = $00000008; {Use a counted value instead of a single state (Affects behaviour of Wait and Complete)} + {List constants} LIST_SIGNATURE = $4A98BE2A; @@ -363,10 +405,11 @@ interface LIST_TYPE_WAIT_SEMAPHORE = 2; {A Semaphore Wait List} LIST_TYPE_WAIT_SYNCHRONIZER = 3; {A Synchronizer Wait List} LIST_TYPE_WAIT_CONDITION = 4; {A Condition Wait List} - LIST_TYPE_WAIT_EVENT = 5; {An Event Wait List} - LIST_TYPE_WAIT_THREAD = 6; {A Thread Wait List} - LIST_TYPE_WAIT_MESSAGESLOT = 7; {A Messageslot Wait List} - LIST_TYPE_WAIT_OTHER = 8; {Another type of Wait List (Suitable for passing to ThreadWait/ThreadWaitEx/ThreadWaitMultiple/ThreadRelease)} + LIST_TYPE_WAIT_COMPLETION = 5; {A Condition Wait List} + LIST_TYPE_WAIT_EVENT = 6; {An Event Wait List} + LIST_TYPE_WAIT_THREAD = 7; {A Thread Wait List} + LIST_TYPE_WAIT_MESSAGESLOT = 8; {A Messageslot Wait List} + LIST_TYPE_WAIT_OTHER = 9; {Another type of Wait List (Suitable for passing to ThreadWait/ThreadWaitEx/ThreadWaitMultiple/ThreadRelease)} {List flag constants} LIST_FLAG_NONE = LOCK_FLAG_NONE; @@ -757,6 +800,27 @@ TConditionEntry = record Next:PConditionEntry; {Next entry in Condition table} {Statistics Properties} end; + + {Completion entry} + {Note: Changes to this structure need to be accounted for in platform specific handlers} + PCompletionEntry = ^TCompletionEntry; + TCompletionEntry = record + {Completion Properties} + Signature:LongWord; {Signature for entry validation} + State:LongWord; {State of the completion (Reset/Complete)} + Count:LongWord; {Count of the completion (Only applicable if COMPLETION_FLAG_COUNTED)} + Flags:LongWord; {Completion Flags (eg COMPLETION_FLAG_IRQ)} + Lock:TSpinHandle; {Completion Lock} + List:TListHandle; {List of threads waiting on this Completion (or INVALID_HANDLE_VALUE if never used)} + Wait:TThreadWait; {Wait function to call to wait on the Completion} + WaitEx:TThreadWaitEx; {Wait function to call to wait with timeout on the Completion} + Release:TThreadRelease; {Release function to call if any threads are waiting when Completion is completed} + Abandon:TThreadAbandon; {Abandon function to call if any threads are waiting when Completion is destroyed} + {Internal Properties} + Prev:PCompletionEntry; {Previous entry in Completion table} + Next:PCompletionEntry; {Next entry in Completion table} + {Statistics Properties} + end; {List entry} {Note: Changes to this structure need to be accounted for in platform specific handlers} @@ -1171,12 +1235,21 @@ TThreadInfo = record type {Prototypes for Condition Wait/Wake/WakeAll Handlers} + TConditionWait = function(Condition:PConditionEntry;Timeout:LongWord):LongWord; TConditionWaitMutex = function(Condition:PConditionEntry;Mutex:TMutexHandle;Timeout:LongWord):LongWord; TConditionWaitSynchronizer = function(Condition:PConditionEntry;Synchronizer:TSynchronizerHandle;Flags,Timeout:LongWord):LongWord; TConditionWaitCriticalSection = function(Condition:PConditionEntry;CriticalSection:TCriticalSectionHandle;Timeout:LongWord):LongWord; TConditionWake = function(Condition:PConditionEntry):LongWord; TConditionWakeAll = function(Condition:PConditionEntry):LongWord; +type + {Prototypes for Completion Wait/TryWait/Reset/Complete/CompleteAll Handlers} + TCompletionWait = function(Completion:PCompletionEntry;Timeout:LongWord):LongWord; + TCompletionTryWait = function(Completion:PCompletionEntry):LongWord; + TCompletionReset = function(Completion:PCompletionEntry):LongWord; + TCompletionComplete = function(Completion:PCompletionEntry):LongWord; + TCompletionCompleteAll = function(Completion:PCompletionEntry):LongWord; + type {Prototypes for Messageslot Send/Receive Handlers} TMessageslotSend = function(Messageslot:PMessageslotEntry;Message:PMessage):LongWord; @@ -1359,6 +1432,7 @@ TThreadInfo = record SynchronizerDeadlockCounter:Int64; SynchronizerRecursionCounter:Int64; ConditionDeadlockCounter:Int64; + CompletionDeadlockCounter:Int64; MessageslotDeadlockCounter:Int64; MailslotDeadlockCounter:Int64; BufferDeadlockCounter:Int64; @@ -1473,12 +1547,21 @@ TThreadInfo = record var {Condition Wait/Wake/WakeAll Handlers} + ConditionWaitHandler:TConditionWait; ConditionWaitMutexHandler:TConditionWaitMutex; ConditionWaitSynchronizerHandler:TConditionWaitSynchronizer; ConditionWaitCriticalSectionHandler:TConditionWaitCriticalSection; ConditionWakeHandler:TConditionWake; ConditionWakeAllHandler:TConditionWakeAll; +var + {Completion Wait/TryWait/Reset/Complete/CompleteAll Handlers} + CompletionWaitHandler:TCompletionWait; + CompletionTryWaitHandler:TCompletionTryWait; + CompletionResetHandler:TCompletionReset; + CompletionCompleteHandler:TCompletionComplete; + CompletionCompleteAllHandler:TCompletionCompleteAll; + var {Messageslot Send/Receive Handlers} MessageslotSendHandler:TMessageslotSend; @@ -1596,6 +1679,9 @@ function SpinUnlockFIQ(Spin:TSpinHandle):LongWord; {$IFDEF SPIN_INLINE}inline;{$ function SpinLockIRQFIQ(Spin:TSpinHandle):LongWord; {$IFDEF SPIN_INLINE}inline;{$ENDIF} function SpinUnlockIRQFIQ(Spin:TSpinHandle):LongWord; {$IFDEF SPIN_INLINE}inline;{$ENDIF} +function SpinLockPreempt(Spin:TSpinHandle):LongWord; {$IFDEF SPIN_INLINE}inline;{$ENDIF} +function SpinUnlockPreempt(Spin:TSpinHandle):LongWord; {$IFDEF SPIN_INLINE}inline;{$ENDIF} + function SpinCheckIRQ(Spin:TSpinHandle):Boolean; function SpinCheckFIQ(Spin:TSpinHandle):Boolean; @@ -1674,6 +1760,7 @@ function SynchronizerWriterConvert(Synchronizer:TSynchronizerHandle):LongWord; function ConditionCreate:TConditionHandle; function ConditionDestroy(Condition:TConditionHandle):LongWord; +function ConditionWait(Condition:TConditionHandle;Timeout:LongWord = INFINITE):LongWord; {Timeout = 0 then No Wait, Timeout = INFINITE then Wait forever} function ConditionWaitMutex(Condition:TConditionHandle;Mutex:TMutexHandle;Timeout:LongWord = INFINITE):LongWord; {Timeout = 0 then No Wait, Timeout = INFINITE then Wait forever} function ConditionWaitSynchronizer(Condition:TConditionHandle;Synchronizer:TSynchronizerHandle;Flags:LongWord;Timeout:LongWord = INFINITE):LongWord; {Timeout = 0 then No Wait, Timeout = INFINITE then Wait forever} function ConditionWaitCriticalSection(Condition:TConditionHandle;CriticalSection:TCriticalSectionHandle;Timeout:LongWord = INFINITE):LongWord; {Timeout = 0 then No Wait, Timeout = INFINITE then Wait forever} @@ -1681,6 +1768,20 @@ function ConditionWaitCriticalSection(Condition:TConditionHandle;CriticalSection function ConditionWake(Condition:TConditionHandle):LongWord; function ConditionWakeAll(Condition:TConditionHandle):LongWord; +{==============================================================================} +{Completion Functions} +function CompletionCreate(Flags:LongWord = COMPLETION_FLAG_NONE):TCompletionHandle; +function CompletionDestroy(Completion:TCompletionHandle):LongWord; + +function CompletionState(Completion:TCompletionHandle):LongWord; + +function CompletionWait(Completion:TCompletionHandle;Timeout:LongWord = INFINITE):LongWord; +function CompletionTryWait(Completion:TCompletionHandle):LongWord; + +function CompletionReset(Completion:TCompletionHandle):LongWord; +function CompletionComplete(Completion:TCompletionHandle):LongWord; +function CompletionCompleteAll(Completion:TCompletionHandle):LongWord; + {==============================================================================} {List Functions} function ListCreate:TListHandle; {$IFDEF LIST_INLINE}inline;{$ENDIF} @@ -2035,6 +2136,8 @@ function SynchronizerGetCount:LongWord; inline; function ConditionGetCount:LongWord; inline; +function CompletionGetCount:LongWord; inline; + function ListGetCount:LongWord; inline; function QueueGetCount:LongWord; inline; @@ -2200,6 +2303,10 @@ implementation ConditionTable:PConditionEntry; ConditionTableLock:TSpinHandle; ConditionTableCount:LongWord; + + CompletionTable:PCompletionEntry; + CompletionTableLock:TSpinHandle; + CompletionTableCount:LongWord; ListTable:PListEntry; ListTableLock:TSpinHandle; @@ -2342,6 +2449,11 @@ procedure LocksInit; ConditionTable:=nil; ConditionTableLock:=SpinCreate; ConditionTableCount:=0; + + {Initialize Completion Table} + CompletionTable:=nil; + CompletionTableLock:=SpinCreate; + CompletionTableCount:=0; {Initialize List Table} ListTable:=nil; @@ -5130,6 +5242,48 @@ function SpinUnlockIRQFIQ(Spin:TSpinHandle):LongWord; {$IFDEF SPIN_INLINE}inline {==============================================================================} +function SpinLockPreempt(Spin:TSpinHandle):LongWord; {$IFDEF SPIN_INLINE}inline;{$ENDIF} +{Lock an existing Spin entry, disable IRQ or IRQ/FIQ and save the previous IRQ or IRQ/FIQ state} +{Spin: Handle of Spin entry to lock} +{Return: ERROR_SUCCESS if completed or another error code on failure} + +{Note: This is a convenience wrapper which determines the appropriate SpinLock call to disable preemption} +begin + {} + {Check Scheduler FIQ} + if SCHEDULER_FIQ_ENABLED then + begin + Result:=SpinLockIRQFIQ(Spin); + end + else + begin + Result:=SpinLockIRQ(Spin); + end; +end; + +{==============================================================================} + +function SpinUnlockPreempt(Spin:TSpinHandle):LongWord; {$IFDEF SPIN_INLINE}inline;{$ENDIF} +{Unlock an existing Spin entry and restore the previous IRQ or IRQ/FIQ state} +{Spin: Handle of Spin entry to unlock} +{Return: ERROR_SUCCESS if completed or another error code on failure} + +{Note: This is a convenience wrapper which determines the appropriate SpinUnlock call to enable preemption} +begin + {} + {Check Scheduler FIQ} + if SCHEDULER_FIQ_ENABLED then + begin + Result:=SpinUnlockIRQFIQ(Spin); + end + else + begin + Result:=SpinUnlockIRQ(Spin); + end; +end; + +{==============================================================================} + function SpinCheckIRQ(Spin:TSpinHandle):Boolean; {Check the mask that stores the previous IRQ state to determine if IRQ is enabled} {Spin: Handle of Spin entry to check} @@ -7209,7 +7363,7 @@ function SemaphoreCreateEx(Count,Maximum:LongWord;Flags:LongWord):TSemaphoreHand {Check Semaphore flags} if (Flags and (SEMAPHORE_FLAG_IRQ or SEMAPHORE_FLAG_FIQ or SEMAPHORE_FLAG_IRQFIQ)) <> 0 then begin - {Create Messageslot List} + {Create Semaphore List} SemaphoreEntry.List:=ListCreateEx(LIST_TYPE_WAIT_SEMAPHORE,SchedulerGetListFlags(LIST_TYPE_WAIT_SEMAPHORE)); end; @@ -9459,6 +9613,145 @@ function ConditionDestroy(Condition:TConditionHandle):LongWord; {==============================================================================} +function ConditionWait(Condition:TConditionHandle;Timeout:LongWord):LongWord; +{Wait on an existing Condition} +{Condition: Condition to wait on} +{Timeout: Time in milliseconds to wait to be woken + 0 = No Wait + INFINITE = Wait Indefinitely} +{Return: ERROR_SUCCESS if completed or another error code on failure} +var + Unlock:Boolean; + WaitResult:LongWord; + ConditionEntry:PConditionEntry; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Check Condition} + if Condition = INVALID_HANDLE_VALUE then Exit; + + {Check the Handle} + ConditionEntry:=PConditionEntry(Condition); + if ConditionEntry = nil then Exit; + if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; + + {$IFDEF LOCK_DEBUG} + if SCHEDULER_FIQ_ENABLED then + begin + if not(GetFIQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(ConditionDeadlockCounter); + end; + end + else + begin + if not(GetIRQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(ConditionDeadlockCounter); + end; + end; + {$ENDIF} + + {Check the Handler} + if Assigned(ConditionWaitHandler) then + begin + {Use the Handler method} + Result:=ConditionWaitHandler(ConditionEntry,Timeout); + end + else + begin + {Use the Default method} + {Lock the Condition} + if SpinLock(ConditionEntry.Lock) = ERROR_SUCCESS then + begin + Unlock:=True; + try + {Check Signature} + if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; + + {Check Timeout} + if Timeout = 0 then + begin + {Return Error} + Result:=ERROR_WAIT_TIMEOUT; + end + else + begin + {Check List} + if ConditionEntry.List = INVALID_HANDLE_VALUE then + begin + {Create List} + ConditionEntry.List:=ListCreateEx(LIST_TYPE_WAIT_CONDITION,SchedulerGetListFlags(LIST_TYPE_WAIT_CONDITION)); + end; + + {Check Timeout} + if Timeout = INFINITE then + begin + {Wait on Condition} + ConditionEntry.Wait(ConditionEntry.List,ConditionEntry.Lock,LOCK_FLAG_NONE); + Unlock:=False; + + {Check Result} + WaitResult:=ThreadGetWaitResult; + if WaitResult = WAIT_TIMEOUT then + begin + Result:=ERROR_WAIT_TIMEOUT; + Exit; + end + else if WaitResult = WAIT_ABANDONED then + begin + Result:=ERROR_WAIT_ABANDONED; + Exit; + end + else if WaitResult <> ERROR_SUCCESS then + begin + Result:=WaitResult; + Exit; + end; + end + else + begin + {Wait on Condition with Timeout} + ConditionEntry.WaitEx(ConditionEntry.List,ConditionEntry.Lock,LOCK_FLAG_NONE,Timeout); + Unlock:=False; + + {Check Result} + WaitResult:=ThreadGetWaitResult; + if WaitResult = WAIT_TIMEOUT then + begin + Result:=ERROR_WAIT_TIMEOUT; + Exit; + end + else if WaitResult = WAIT_ABANDONED then + begin + Result:=ERROR_WAIT_ABANDONED; + Exit; + end + else if WaitResult <> ERROR_SUCCESS then + begin + Result:=WaitResult; + Exit; + end; + end; + + {Return Result} + Result:=ERROR_SUCCESS; + end; + finally + {Unlock the Condition} + if Unlock then SpinUnlock(ConditionEntry.Lock); + end; + end + else + begin + Result:=ERROR_CAN_NOT_COMPLETE; + end; + end; +end; + +{==============================================================================} + function ConditionWaitMutex(Condition:TConditionHandle;Mutex:TMutexHandle;Timeout:LongWord):LongWord; {Release a Mutex and Wait on an existing Condition in an atomic operation} {Condition: Condition to wait on} @@ -9865,22 +10158,643 @@ function ConditionWaitCriticalSection(Condition:TConditionHandle;CriticalSection Result:=ERROR_WAIT_TIMEOUT; end else - begin - {Release the Critical Section} - if CriticalSectionUnlock(CriticalSection) <> ERROR_SUCCESS then Exit; - + begin + {Release the Critical Section} + if CriticalSectionUnlock(CriticalSection) <> ERROR_SUCCESS then Exit; + + {Check List} + if ConditionEntry.List = INVALID_HANDLE_VALUE then + begin + {Create List} + ConditionEntry.List:=ListCreateEx(LIST_TYPE_WAIT_CONDITION,SchedulerGetListFlags(LIST_TYPE_WAIT_CONDITION)); + end; + + {Check Timeout} + if Timeout = INFINITE then + begin + {Wait on Condition} + ConditionEntry.Wait(ConditionEntry.List,ConditionEntry.Lock,LOCK_FLAG_NONE); + Unlock:=False; + + {Check Result} + WaitResult:=ThreadGetWaitResult; + if WaitResult = WAIT_TIMEOUT then + begin + Result:=ERROR_WAIT_TIMEOUT; + Exit; + end + else if WaitResult = WAIT_ABANDONED then + begin + Result:=ERROR_WAIT_ABANDONED; + Exit; + end + else if WaitResult <> ERROR_SUCCESS then + begin + Result:=WaitResult; + Exit; + end; + end + else + begin + {Wait on Condition with Timeout} + ConditionEntry.WaitEx(ConditionEntry.List,ConditionEntry.Lock,LOCK_FLAG_NONE,Timeout); + Unlock:=False; + + {Check Result} + WaitResult:=ThreadGetWaitResult; + if WaitResult = WAIT_TIMEOUT then + begin + Result:=ERROR_WAIT_TIMEOUT; + Exit; + end + else if WaitResult = WAIT_ABANDONED then + begin + Result:=ERROR_WAIT_ABANDONED; + Exit; + end + else if WaitResult <> ERROR_SUCCESS then + begin + Result:=WaitResult; + Exit; + end; + end; + + {Acquire the Critical Section} + if CriticalSectionLock(CriticalSection) <> ERROR_SUCCESS then Exit; + + {Return Result} + Result:=ERROR_SUCCESS; + end; + finally + {Unlock the Condition} + if Unlock then SpinUnlock(ConditionEntry.Lock); + end; + end + else + begin + Result:=ERROR_CAN_NOT_COMPLETE; + end; + end; +end; + +{==============================================================================} + +function ConditionWake(Condition:TConditionHandle):LongWord; +{Wake one thread waiting on an existing Condition} +{Condition: Condition to wake} +{Return: ERROR_SUCCESS if completed or another error code on failure} +var + ConditionEntry:PConditionEntry; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Check Condition} + if Condition = INVALID_HANDLE_VALUE then Exit; + + {Check the Handle} + ConditionEntry:=PConditionEntry(Condition); + if ConditionEntry = nil then Exit; + if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; + + {$IFDEF LOCK_DEBUG} + if SCHEDULER_FIQ_ENABLED then + begin + if not(GetFIQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(ConditionDeadlockCounter); + end; + end + else + begin + if not(GetIRQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(ConditionDeadlockCounter); + end; + end; + {$ENDIF} + + {Check the Handler} + if Assigned(ConditionWakeHandler) then + begin + {Use the Handler method} + Result:=ConditionWakeHandler(ConditionEntry); + end + else + begin + {Use the Default method} + {Lock the Condition} + if SpinLock(ConditionEntry.Lock) = ERROR_SUCCESS then + begin + try + {Check Signature} + if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; + + {Check List} + if ListNotEmpty(ConditionEntry.List) then + begin + {Release thread waiting on Condition} + ConditionEntry.Release(ConditionEntry.List); + end; + + {Return Result} + Result:=ERROR_SUCCESS; + finally + {Unlock the Condition} + SpinUnlock(ConditionEntry.Lock); + end; + end + else + begin + Result:=ERROR_CAN_NOT_COMPLETE; + end; + end; +end; + +{==============================================================================} + +function ConditionWakeAll(Condition:TConditionHandle):LongWord; +{Wake all threads waiting on an existing Condition} +{Condition: Condition to wake} +{Return: ERROR_SUCCESS if completed or another error code on failure} +var + ConditionEntry:PConditionEntry; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Check Condition} + if Condition = INVALID_HANDLE_VALUE then Exit; + + {Check the Handle} + ConditionEntry:=PConditionEntry(Condition); + if ConditionEntry = nil then Exit; + if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; + + {$IFDEF LOCK_DEBUG} + if SCHEDULER_FIQ_ENABLED then + begin + if not(GetFIQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(ConditionDeadlockCounter); + end; + end + else + begin + if not(GetIRQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(ConditionDeadlockCounter); + end; + end; + {$ENDIF} + + {Check the Handler} + if Assigned(ConditionWakeAllHandler) then + begin + {Use the Handler method} + Result:=ConditionWakeAllHandler(ConditionEntry); + end + else + begin + {Use the Default method} + {Lock the Condition} + if SpinLock(ConditionEntry.Lock) = ERROR_SUCCESS then + begin + try + {Check Signature} + if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; + + {Check List} + while ListNotEmpty(ConditionEntry.List) do + begin + {Release thread waiting on Condition} + ConditionEntry.Release(ConditionEntry.List); + end; + + {Return Result} + Result:=ERROR_SUCCESS; + finally + {Unlock the Condition} + SpinUnlock(ConditionEntry.Lock); + end; + end + else + begin + Result:=ERROR_CAN_NOT_COMPLETE; + end; + end; +end; + +{==============================================================================} +{==============================================================================} +{Completion Functions} +function CompletionLock(Completion:PCompletionEntry):LongWord; {$IFDEF COMPLETION_INLINE}inline;{$ENDIF} +{Internal function to lock an existing Completion entry based on the entry flags} +{Return: ERROR_SUCCESS if completed or another error code on failure} + +{Note: Not intended to be called directly by applications} +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Check Completion} + if Completion = nil then Exit; + + {Acquire the Lock} + if (Completion.Flags and COMPLETION_FLAG_IRQFIQ) <> 0 then + begin + Result:=SpinLockIRQFIQ(Completion.Lock); + end + else if (Completion.Flags and COMPLETION_FLAG_FIQ) <> 0 then + begin + Result:=SpinLockFIQ(Completion.Lock); + end + else if (Completion.Flags and COMPLETION_FLAG_IRQ) <> 0 then + begin + Result:=SpinLockIRQ(Completion.Lock); + end + else + begin + Result:=SpinLock(Completion.Lock); + end; +end; + +{==============================================================================} + +function CompletionUnlock(Completion:PCompletionEntry):LongWord; {$IFDEF COMPLETION_INLINE}inline;{$ENDIF} +{Internal function to unlock an existing Completion entry based on the entry flags} +{Return: ERROR_SUCCESS if completed or another error code on failure} + +{Note: Not intended to be called directly by applications} +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Check Completion} + if Completion = nil then Exit; + + {Release the Lock} + if (Completion.Flags and COMPLETION_FLAG_IRQFIQ) <> 0 then + begin + Result:=SpinUnlockIRQFIQ(Completion.Lock); + end + else if (Completion.Flags and COMPLETION_FLAG_FIQ) <> 0 then + begin + Result:=SpinUnlockFIQ(Completion.Lock); + end + else if (Completion.Flags and COMPLETION_FLAG_IRQ) <> 0 then + begin + Result:=SpinUnlockIRQ(Completion.Lock); + end + else + begin + Result:=SpinUnlock(Completion.Lock); + end; +end; + +{==============================================================================} + +function CompletionCreate(Flags:LongWord):TCompletionHandle; +{Create and insert a new Completion entry} +{Flags: The flags for the Completion entry (eg COMPLETION_FLAG_IRQ)} +{Return: Handle of new Completion entry or INVALID_HANDLE_VALUE if entry could not be created} +var + CompletionEntry:PCompletionEntry; +begin + {} + Result:=INVALID_HANDLE_VALUE; + + {Create Completion entry} + if COMPLETION_SHARED_MEMORY then + begin + CompletionEntry:=AllocSharedMem(SizeOf(TCompletionEntry)); + end + else + begin + CompletionEntry:=AllocMem(SizeOf(TCompletionEntry)); + end; + if CompletionEntry = nil then Exit; + + {Setup Completion entry} + CompletionEntry.Signature:=COMPLETION_SIGNATURE; + CompletionEntry.State:=COMPLETION_STATE_RESET; + CompletionEntry.Count:=0; + CompletionEntry.Flags:=Flags; + CompletionEntry.Lock:=SpinCreate; + CompletionEntry.List:=INVALID_HANDLE_VALUE; + CompletionEntry.Wait:=ThreadWait; + CompletionEntry.WaitEx:=ThreadWaitEx; + CompletionEntry.Release:=ThreadRelease; + CompletionEntry.Abandon:=ThreadAbandon; + + {Check Completion flags} + if (Flags and (COMPLETION_FLAG_IRQ or COMPLETION_FLAG_FIQ or COMPLETION_FLAG_IRQFIQ)) <> 0 then + begin + {Create Completion List} + CompletionEntry.List:=ListCreateEx(LIST_TYPE_WAIT_COMPLETION,SchedulerGetListFlags(LIST_TYPE_WAIT_COMPLETION)); + end; + + {Insert Completion entry} + if SpinLock(CompletionTableLock) = ERROR_SUCCESS then + begin + try + {Link Completion entry} + if CompletionTable = nil then + begin + CompletionTable:=CompletionEntry; + end + else + begin + CompletionEntry.Next:=CompletionTable; + CompletionTable.Prev:=CompletionEntry; + CompletionTable:=CompletionEntry; + end; + + {Increment Completion Count} + Inc(CompletionTableCount); + + {Return Completion entry} + Result:=TCompletionHandle(CompletionEntry); + finally + SpinUnlock(CompletionTableLock); + end; + end + else + begin + {Free Completion List} + if CompletionEntry.List <> INVALID_HANDLE_VALUE then + begin + ListDestroy(CompletionEntry.List); + end; + + {Free Completion Lock} + SpinDestroy(CompletionEntry.Lock); + + {Free Completion Entry} + FreeMem(CompletionEntry); + end; +end; + +{==============================================================================} + +function CompletionDestroy(Completion:TCompletionHandle):LongWord; +{Destroy and remove an existing Completion entry} +{Completion: Handle of Completion entry to destroy} +{Return: ERROR_SUCCESS if completed or another error code on failure} +var + CompletionEntry:PCompletionEntry; + PrevEntry:PCompletionEntry; + NextEntry:PCompletionEntry; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Check Completion} + if Completion = INVALID_HANDLE_VALUE then Exit; + + {Check the Handle} + CompletionEntry:=PCompletionEntry(Completion); + if CompletionEntry = nil then Exit; + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; + + {Remove Completion entry} + if SpinLock(CompletionTableLock) = ERROR_SUCCESS then + begin + try + {Acquire the Lock} + Result:=CompletionLock(CompletionEntry); + if Result <> ERROR_SUCCESS then Exit; + + {Check Signature} + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then + begin + {Release the Lock} + Result:=CompletionUnlock(CompletionEntry); + if Result <> ERROR_SUCCESS then Exit; + + {Return Result} + Result:=ERROR_INVALID_PARAMETER; + Exit; + end; + + {Invalidate Completion entry} + CompletionEntry.Signature:=0; + + {Check Waiting Threads} + while ListNotEmpty(CompletionEntry.List) do + begin + {Abandon waiting thread} + CompletionEntry.Abandon(CompletionEntry.List); + end; + + {Unlink Completion entry} + PrevEntry:=CompletionEntry.Prev; + NextEntry:=CompletionEntry.Next; + if PrevEntry = nil then + begin + CompletionTable:=NextEntry; + if NextEntry <> nil then + begin + NextEntry.Prev:=nil; + end; + end + else + begin + PrevEntry.Next:=NextEntry; + if NextEntry <> nil then + begin + NextEntry.Prev:=PrevEntry; + end; + end; + + {Decrement Completion Count} + Dec(CompletionTableCount); + + {Release the Lock} + Result:=CompletionUnlock(CompletionEntry); + if Result <> ERROR_SUCCESS then Exit; + + {Free Completion List} + if CompletionEntry.List <> INVALID_HANDLE_VALUE then + begin + ListDestroy(CompletionEntry.List); + end; + + {Free Completion Lock} + SpinDestroy(CompletionEntry.Lock); + + {Free Completion Entry} + FreeMem(CompletionEntry); + + {Return Result} + Result:=ERROR_SUCCESS; + finally + SpinUnlock(CompletionTableLock); + end; + end + else + begin + {Return Result} + Result:=ERROR_CAN_NOT_COMPLETE; + end; +end; + +{==============================================================================} + +function CompletionState(Completion:TCompletionHandle):LongWord; +{Get the current state of an existing Completion entry} +{Completion: Completion to get the state for} +{Return: Current state (eg COMPLETION_STATE_COMPLETE) or INVALID_HANDLE_VALUE on error} +var + CompletionEntry:PCompletionEntry; +begin + {} + Result:=LongWord(INVALID_HANDLE_VALUE); + + {Check Completion} + if Completion = INVALID_HANDLE_VALUE then Exit; + + {Check the Handle} + CompletionEntry:=PCompletionEntry(Completion); + if CompletionEntry = nil then Exit; + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; + + {Lock the Completion} + if CompletionLock(CompletionEntry) = ERROR_SUCCESS then + begin + try + {Check Signature} + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; + + {Get the State} + Result:=CompletionEntry.State; + finally + {Unlock the Completion} + CompletionUnlock(CompletionEntry); + end; + end; +end; + +{==============================================================================} + +function CompletionWait(Completion:TCompletionHandle;Timeout:LongWord):LongWord; +{Wait on an existing Completion + + If the completion is set (complete) then return immediately with success + + If the completion is not set then wait for it to be completed before + returning + + For counted completions, decrement the count if it is not 0 or -1 after + testing if the completion is set} +{Completion: Completion to wait on} +{Timeout: Time in milliseconds to wait to be woken + 0 = No Wait + INFINITE = Wait Indefinitely} +{Return: ERROR_SUCCESS if completed or another error code on failure} +var + Unlock:Boolean; + WaitResult:LongWord; + CompletionEntry:PCompletionEntry; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Check Completion} + if Completion = INVALID_HANDLE_VALUE then Exit; + + {Check the Handle} + CompletionEntry:=PCompletionEntry(Completion); + if CompletionEntry = nil then Exit; + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; + + {Check the Handler} + if Assigned(CompletionWaitHandler) then + begin + {Use the Handler method} + Result:=CompletionWaitHandler(CompletionEntry,Timeout); + end + else + begin + {Use the Default method} + {$IFDEF LOCK_DEBUG} + if (CompletionEntry.Flags and (COMPLETION_FLAG_IRQ or COMPLETION_FLAG_FIQ or COMPLETION_FLAG_IRQFIQ)) = 0 then + begin + if SCHEDULER_FIQ_ENABLED then + begin + if not(GetFIQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(CompletionDeadlockCounter); + end; + end + else + begin + if not(GetIRQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(CompletionDeadlockCounter); + end; + end; + end; + {$ENDIF} + + {Lock the Completion} + if CompletionLock(CompletionEntry) = ERROR_SUCCESS then + begin + Unlock:=True; + try + {Check Signature} + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; + + {Check Timeout} + if Timeout = 0 then + begin + {Check State} + Result:=ERROR_WAIT_TIMEOUT; + if CompletionEntry.State = COMPLETION_STATE_RESET then Exit; + end; + + {Check State} + if CompletionEntry.State = COMPLETION_STATE_COMPLETE then + begin + {Check Counted} + if (CompletionEntry.Flags and COMPLETION_FLAG_COUNTED) <> 0 then + begin + {Check Count} + if CompletionEntry.Count = 0 then + begin + Result:=ERROR_INVALID_FUNCTION; + Exit; + end; + + {Check Count} + if CompletionEntry.Count <> LongWord(-1) then + begin + {Decrement Count} + Dec(CompletionEntry.Count); + end; + + {Check Count} + if CompletionEntry.Count = 0 then + begin + {Reset State} + CompletionEntry.State:=COMPLETION_STATE_RESET; + end; + end; + end + else + begin {Check List} - if ConditionEntry.List = INVALID_HANDLE_VALUE then + if CompletionEntry.List = INVALID_HANDLE_VALUE then begin {Create List} - ConditionEntry.List:=ListCreateEx(LIST_TYPE_WAIT_CONDITION,SchedulerGetListFlags(LIST_TYPE_WAIT_CONDITION)); + CompletionEntry.List:=ListCreateEx(LIST_TYPE_WAIT_COMPLETION,SchedulerGetListFlags(LIST_TYPE_WAIT_COMPLETION)); end; - + {Check Timeout} if Timeout = INFINITE then begin - {Wait on Condition} - ConditionEntry.Wait(ConditionEntry.List,ConditionEntry.Lock,LOCK_FLAG_NONE); + {Wait on Completion} + CompletionEntry.Wait(CompletionEntry.List,CompletionEntry.Lock,CompletionEntry.Flags); Unlock:=False; {Check Result} @@ -9903,8 +10817,8 @@ function ConditionWaitCriticalSection(Condition:TConditionHandle;CriticalSection end else begin - {Wait on Condition with Timeout} - ConditionEntry.WaitEx(ConditionEntry.List,ConditionEntry.Lock,LOCK_FLAG_NONE,Timeout); + {Wait on Completion with Timeout} + CompletionEntry.WaitEx(CompletionEntry.List,CompletionEntry.Lock,CompletionEntry.Flags,Timeout); Unlock:=False; {Check Result} @@ -9925,16 +10839,13 @@ function ConditionWaitCriticalSection(Condition:TConditionHandle;CriticalSection Exit; end; end; - - {Acquire the Critical Section} - if CriticalSectionLock(CriticalSection) <> ERROR_SUCCESS then Exit; - - {Return Result} - Result:=ERROR_SUCCESS; - end; + end; + + {Return Result} + Result:=ERROR_SUCCESS; finally - {Unlock the Condition} - if Unlock then SpinUnlock(ConditionEntry.Lock); + {Unlock the Completion} + if Unlock then CompletionUnlock(CompletionEntry); end; end else @@ -9946,69 +10857,96 @@ function ConditionWaitCriticalSection(Condition:TConditionHandle;CriticalSection {==============================================================================} -function ConditionWake(Condition:TConditionHandle):LongWord; -{Wake one thread waiting on an existing Condition} -{Condition: Condition to wake} +function CompletionTryWait(Completion:TCompletionHandle):LongWord; +{Try an existing Completion to see if it is completed + + If the completion is not set (complete) then return immediately with an error + and do not wait for it to be completed} +{Completion: Completion to try} +{Return: ERROR_SUCCESS if completed, ERROR_NOT_READY if not completed or another error code on failure} +begin + {} + Result:=CompletionWait(Completion,0); + if Result = ERROR_WAIT_TIMEOUT then Result:=ERROR_NOT_READY; +end; + +{==============================================================================} + +function CompletionReset(Completion:TCompletionHandle):LongWord; +{Reset (uncomplete) the state of an existing Completion entry + + If the completion is not set then return with no action + + If the completion is set then change the state to not set + + For counted completions, reset the counter to 0} +{Completion: Completion to reset the state for} {Return: ERROR_SUCCESS if completed or another error code on failure} var - ConditionEntry:PConditionEntry; + CompletionEntry:PCompletionEntry; begin {} Result:=ERROR_INVALID_PARAMETER; - - {Check Condition} - if Condition = INVALID_HANDLE_VALUE then Exit; + + {Check Completion} + if Completion = INVALID_HANDLE_VALUE then Exit; {Check the Handle} - ConditionEntry:=PConditionEntry(Condition); - if ConditionEntry = nil then Exit; - if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; - - {$IFDEF LOCK_DEBUG} - if SCHEDULER_FIQ_ENABLED then - begin - if not(GetFIQ) and (InitializationCompleted[CPUGetCurrent]) then - begin - Inc(ConditionDeadlockCounter); - end; - end - else - begin - if not(GetIRQ) and (InitializationCompleted[CPUGetCurrent]) then - begin - Inc(ConditionDeadlockCounter); - end; - end; - {$ENDIF} + CompletionEntry:=PCompletionEntry(Completion); + if CompletionEntry = nil then Exit; + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; {Check the Handler} - if Assigned(ConditionWakeHandler) then + if Assigned(CompletionResetHandler) then begin {Use the Handler method} - Result:=ConditionWakeHandler(ConditionEntry); + Result:=CompletionResetHandler(CompletionEntry); end else begin {Use the Default method} - {Lock the Condition} - if SpinLock(ConditionEntry.Lock) = ERROR_SUCCESS then + {$IFDEF LOCK_DEBUG} + if (CompletionEntry.Flags and (COMPLETION_FLAG_IRQ or COMPLETION_FLAG_FIQ or COMPLETION_FLAG_IRQFIQ)) = 0 then + begin + if SCHEDULER_FIQ_ENABLED then + begin + if not(GetFIQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(CompletionDeadlockCounter); + end; + end + else + begin + if not(GetIRQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(CompletionDeadlockCounter); + end; + end; + end; + {$ENDIF} + + {Lock the Completion} + if CompletionLock(CompletionEntry) = ERROR_SUCCESS then begin try {Check Signature} - if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; - {Check List} - if ListNotEmpty(ConditionEntry.List) then + {Check State} + if CompletionEntry.State = COMPLETION_STATE_COMPLETE then begin - {Release thread waiting on Condition} - ConditionEntry.Release(ConditionEntry.List); + {Reset State} + CompletionEntry.State:=COMPLETION_STATE_RESET; + + {Reset Count} + CompletionEntry.Count:=0; end; - + {Return Result} Result:=ERROR_SUCCESS; finally - {Unlock the Condition} - SpinUnlock(ConditionEntry.Lock); + {Unlock the Completion} + CompletionUnlock(CompletionEntry); end; end else @@ -10020,69 +10958,204 @@ function ConditionWake(Condition:TConditionHandle):LongWord; {==============================================================================} -function ConditionWakeAll(Condition:TConditionHandle):LongWord; -{Wake all threads waiting on an existing Condition} -{Condition: Condition to wake} +function CompletionComplete(Completion:TCompletionHandle):LongWord; +{Set (complete) the state of an existing Completion entry + + If the completion is already set then return with no action + + If the completion is not set then release one waiting thread (if any) + and return + + For counted completions, release one waiting thread, if there are no + waiting threads increment the count if it is not -1 and return} +{Completion: Completion to set the state for} {Return: ERROR_SUCCESS if completed or another error code on failure} var - ConditionEntry:PConditionEntry; + CompletionEntry:PCompletionEntry; begin {} Result:=ERROR_INVALID_PARAMETER; - - {Check Condition} - if Condition = INVALID_HANDLE_VALUE then Exit; + + {Check Completion} + if Completion = INVALID_HANDLE_VALUE then Exit; {Check the Handle} - ConditionEntry:=PConditionEntry(Condition); - if ConditionEntry = nil then Exit; - if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; + CompletionEntry:=PCompletionEntry(Completion); + if CompletionEntry = nil then Exit; + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; - {$IFDEF LOCK_DEBUG} - if SCHEDULER_FIQ_ENABLED then + {Check the Handler} + if Assigned(CompletionCompleteHandler) then begin - if not(GetFIQ) and (InitializationCompleted[CPUGetCurrent]) then - begin - Inc(ConditionDeadlockCounter); - end; + {Use the Handler method} + Result:=CompletionCompleteHandler(CompletionEntry); end else begin - if not(GetIRQ) and (InitializationCompleted[CPUGetCurrent]) then + {Use the Default method} + {$IFDEF LOCK_DEBUG} + if (CompletionEntry.Flags and (COMPLETION_FLAG_IRQ or COMPLETION_FLAG_FIQ or COMPLETION_FLAG_IRQFIQ)) = 0 then begin - Inc(ConditionDeadlockCounter); - end; - end; - {$ENDIF} + if SCHEDULER_FIQ_ENABLED then + begin + if not(GetFIQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(CompletionDeadlockCounter); + end; + end + else + begin + if not(GetIRQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(CompletionDeadlockCounter); + end; + end; + end; + {$ENDIF} + + {Lock the Completion} + if CompletionLock(CompletionEntry) = ERROR_SUCCESS then + begin + try + {Check Signature} + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; + + {Check Counted} + if (CompletionEntry.Flags and COMPLETION_FLAG_COUNTED) <> 0 then + begin + {Check List} + if ListIsEmpty(CompletionEntry.List) then + begin + {Check Count} + if CompletionEntry.Count <> LongWord(-1) then + begin + {Set State} + CompletionEntry.State:=COMPLETION_STATE_COMPLETE; + + {Increment Count} + Inc(CompletionEntry.Count); + end; + end + else + begin + {Release thread waiting on Completion} + CompletionEntry.Release(CompletionEntry.List); + end; + end + else + begin + {Check State} + if CompletionEntry.State = COMPLETION_STATE_RESET then + begin + {Check List} + if ListNotEmpty(CompletionEntry.List) then + begin + {Release thread waiting on Completion} + CompletionEntry.Release(CompletionEntry.List); + end; + end; + end; + + {Return Result} + Result:=ERROR_SUCCESS; + finally + {Unlock the Completion} + CompletionUnlock(CompletionEntry); + end; + end + else + begin + Result:=ERROR_CAN_NOT_COMPLETE; + end; + end; +end; + +{==============================================================================} + +function CompletionCompleteAll(Completion:TCompletionHandle):LongWord; +{Set (complete) the state of an existing Completion entry + + If the completion is already set then return with no action + + If the completion is not set then release all waiting threads (if any) + and return + + For counted completions, set the count to -1, release all waiting threads + (if any) and return} +{Completion: Completion to set the state for} +{Return: ERROR_SUCCESS if completed or another error code on failure} +var + CompletionEntry:PCompletionEntry; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Check Completion} + if Completion = INVALID_HANDLE_VALUE then Exit; + + {Check the Handle} + CompletionEntry:=PCompletionEntry(Completion); + if CompletionEntry = nil then Exit; + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; {Check the Handler} - if Assigned(ConditionWakeAllHandler) then + if Assigned(CompletionCompleteAllHandler) then begin {Use the Handler method} - Result:=ConditionWakeAllHandler(ConditionEntry); + Result:=CompletionCompleteAllHandler(CompletionEntry); end else begin {Use the Default method} - {Lock the Condition} - if SpinLock(ConditionEntry.Lock) = ERROR_SUCCESS then + {$IFDEF LOCK_DEBUG} + if (CompletionEntry.Flags and (COMPLETION_FLAG_IRQ or COMPLETION_FLAG_FIQ or COMPLETION_FLAG_IRQFIQ)) = 0 then + begin + if SCHEDULER_FIQ_ENABLED then + begin + if not(GetFIQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(CompletionDeadlockCounter); + end; + end + else + begin + if not(GetIRQ) and (InitializationCompleted[CPUGetCurrent]) then + begin + Inc(CompletionDeadlockCounter); + end; + end; + end; + {$ENDIF} + + {Lock the Completion} + if CompletionLock(CompletionEntry) = ERROR_SUCCESS then begin try {Check Signature} - if ConditionEntry.Signature <> CONDITION_SIGNATURE then Exit; + if CompletionEntry.Signature <> COMPLETION_SIGNATURE then Exit; - {Check List} - while ListNotEmpty(ConditionEntry.List) do + {Check State} + if CompletionEntry.State = COMPLETION_STATE_RESET then begin - {Release thread waiting on Condition} - ConditionEntry.Release(ConditionEntry.List); - end; - + {Set State} + CompletionEntry.State:=COMPLETION_STATE_COMPLETE; + + {Set Count} + CompletionEntry.Count:=LongWord(-1); + + {Check List} + while ListNotEmpty(CompletionEntry.List) do + begin + {Release thread waiting on Completion} + CompletionEntry.Release(CompletionEntry.List); + end; + end; + {Return Result} Result:=ERROR_SUCCESS; finally - {Unlock the Condition} - SpinUnlock(ConditionEntry.Lock); + {Unlock the Completion} + CompletionUnlock(CompletionEntry); end; end else @@ -11415,8 +12488,6 @@ function QueueDequeue(Queue:TQueueHandle):TThreadHandle; if ThreadEntry = nil then Exit; if ThreadEntry.Signature <> THREAD_SIGNATURE then Exit; - //To Do //Critical //Lock the thread for SMP ? //No ? //No one else can dequeue (or enqueue) the thread because we have the queue lock ? - {Set ScheduleQueue} ThreadEntry.ScheduleQueue:=INVALID_HANDLE_VALUE; end; @@ -11431,8 +12502,6 @@ function QueueDequeue(Queue:TQueueHandle):TThreadHandle; if ThreadEntry = nil then Exit; if ThreadEntry.Signature <> THREAD_SIGNATURE then Exit; - //To Do //Critical //Lock the thread for SMP ? //No ? //No one else can dequeue (or enqueue) the thread because we have the queue lock ? - {Set ScheduleQueue} ThreadEntry.ScheduleQueue:=INVALID_HANDLE_VALUE; @@ -12470,6 +13539,17 @@ function ThreadDestroy(Thread:TThreadHandle):LongWord; {Check Signature} if ThreadEntry.Signature <> THREAD_SIGNATURE then Exit; + {Check for Queue} + if ThreadEntry.ScheduleQueue <> INVALID_HANDLE_VALUE then + begin + {Remove from Queue (Scheduler Termination)} + Result:=QueueDeleteKey(ThreadEntry.ScheduleQueue,Thread); + if Result <> ERROR_SUCCESS then Exit; + + {Set ScheduleQueue} + ThreadEntry.ScheduleQueue:=INVALID_HANDLE_VALUE; + end; + {Check Stack Base} if ThreadEntry.StackBase <> nil then begin @@ -23239,6 +24319,15 @@ function ConditionGetCount:LongWord; inline; {==============================================================================} +function CompletionGetCount:LongWord; inline; +{Get the current completion count} +begin + {} + Result:=CompletionTableCount; +end; + +{==============================================================================} + function ListGetCount:LongWord; inline; {Get the current list count} begin @@ -23304,7 +24393,7 @@ function ThreadAllocateStack(StackSize:LongWord):Pointer; if StackMemory = nil then Exit; {Get Page} - PageTableEntry:=PageTableGetEntry(PtrUInt(StackMemory)); + PageTableGetEntry(PtrUInt(StackMemory),PageTableEntry); if PageTableEntry.Size <> MEMORY_PAGE_SIZE then begin {Map Page} @@ -23313,7 +24402,7 @@ function ThreadAllocateStack(StackSize:LongWord):Pointer; end; {Get Next Page} - PageTableEntry:=PageTableGetEntry(PtrUInt(StackMemory + MEMORY_PAGE_SIZE)); + PageTableGetEntry(PtrUInt(StackMemory + MEMORY_PAGE_SIZE),PageTableEntry); if PageTableEntry.Size <> MEMORY_PAGE_SIZE then begin {Map Page} @@ -23322,7 +24411,7 @@ function ThreadAllocateStack(StackSize:LongWord):Pointer; end; {Check Page} - PageTableEntry:=PageTableGetEntry(PtrUInt(StackMemory)); + PageTableGetEntry(PtrUInt(StackMemory),PageTableEntry); if PageTableEntry.Size <> MEMORY_PAGE_SIZE then begin FreeMem(StackMemory); @@ -23376,10 +24465,10 @@ procedure ThreadReleaseStack(StackBase:Pointer;StackSize:LongWord); StackMemory:=StackBase - (StackSize + MEMORY_PAGE_SIZE); {Get Next Page} - PageTableEntry:=PageTableGetEntry(PtrUInt(StackMemory + MEMORY_PAGE_SIZE)); + PageTableGetEntry(PtrUInt(StackMemory + MEMORY_PAGE_SIZE),PageTableEntry); {Get Guard Page} - GuardPageEntry:=PageTableGetEntry(PtrUInt(StackMemory)); + PageTableGetEntry(PtrUInt(StackMemory),GuardPageEntry); {Unmap Guard Page (Normal Access)} GuardPageEntry.Flags:=PageTableEntry.Flags; @@ -23587,6 +24676,7 @@ function ListTypeToString(ListType:LongWord):String; LIST_TYPE_WAIT_SEMAPHORE:Result:='LIST_TYPE_WAIT_SEMAPHORE'; LIST_TYPE_WAIT_SYNCHRONIZER:Result:='LIST_TYPE_WAIT_SYNCHRONIZER'; LIST_TYPE_WAIT_CONDITION:Result:='LIST_TYPE_WAIT_CONDITION'; + LIST_TYPE_WAIT_COMPLETION:Result:='LIST_TYPE_WAIT_COMPLETION'; LIST_TYPE_WAIT_EVENT:Result:='LIST_TYPE_WAIT_EVENT'; LIST_TYPE_WAIT_THREAD:Result:='LIST_TYPE_WAIT_THREAD'; LIST_TYPE_WAIT_MESSAGESLOT:Result:='LIST_TYPE_WAIT_MESSAGESLOT'; @@ -23752,6 +24842,7 @@ function SchedulerGetListFlags(ListType:LongWord):LongWord; LIST_TYPE_WAIT_SEMAPHORE:Result:=Flags; LIST_TYPE_WAIT_SYNCHRONIZER:Result:=Flags; LIST_TYPE_WAIT_CONDITION:Result:=Flags; + LIST_TYPE_WAIT_COMPLETION:Result:=Flags; LIST_TYPE_WAIT_EVENT:Result:=Flags; LIST_TYPE_WAIT_THREAD:Result:=Flags; LIST_TYPE_WAIT_MESSAGESLOT:Result:=Flags; diff --git a/source/rtl/ultibo/core/touch.pas b/source/rtl/ultibo/core/touch.pas index 7a6d2ce..bfbbb9d 100644 --- a/source/rtl/ultibo/core/touch.pas +++ b/source/rtl/ultibo/core/touch.pas @@ -557,7 +557,7 @@ function TouchDeviceRead(Touch:PTouchDevice;Buffer:Pointer;Size,Flags:LongWord;v {Update Count} Inc(Count); - {Upate Size and Offset} + {Update Size and Offset} Dec(Size,SizeOf(TTouchData)); Inc(Offset,SizeOf(TTouchData)); finally @@ -656,7 +656,7 @@ function TouchDeviceWrite(Touch:PTouchDevice;Buffer:Pointer;Size,Count:LongWord) {Update Count} Dec(Count); - {Upate Size and Offset} + {Update Size and Offset} Dec(Size,SizeOf(TTouchData)); Inc(Offset,SizeOf(TTouchData)); diff --git a/source/rtl/ultibo/core/ultiboutils.pas b/source/rtl/ultibo/core/ultiboutils.pas index b347e03..75e37df 100644 --- a/source/rtl/ultibo/core/ultiboutils.pas +++ b/source/rtl/ultibo/core/ultiboutils.pas @@ -145,6 +145,9 @@ function AddQuotesIfSpaced(const AValue:String):String; function ExtractCommand(const ACommandLine:String):String; function ExtractParameters(const ACommandLine:String):String; +function AllocateCommandLine(const ACommandLine:String;out AArgC:Integer):PPChar; +procedure ReleaseCommandLine(AArgV:PPChar); + function MultiStringToStrings(ABuffer:Pointer;ASize:Integer;AStrings:TStrings):Boolean; function StringsToMultiString(AStrings:TStrings;var ABuffer:Pointer;var ASize:Integer):Boolean; @@ -1016,6 +1019,7 @@ procedure DelimitStrings(AStrings:TStrings;var AString:String;const ADelimiter:S begin {} if AStrings = nil then Exit; + if Length(ADelimiter) = 0 then Exit; {Dont Trim Space is Allowed} AString:=''; @@ -1037,7 +1041,9 @@ procedure UndelimitString(const AString:String;AStrings:TStrings;const ADelimite WorkBuffer:String; begin {} - if ADelimiter = '' then Exit; {Trim(ADelimiter)} {Dont Trim Space is Allowed} + if Length(AString) = 0 then Exit; + if AStrings = nil then Exit; + if Length(ADelimiter) = 0 then Exit; {Dont Trim Space is Allowed} WorkBuffer := AString; @@ -1714,6 +1720,91 @@ function ExtractParameters(const ACommandLine:String):String; {==============================================================================} +function AllocateCommandLine(const ACommandLine:String;out AArgC:Integer):PPChar; +{Allocate a C style command line and return ArgC and ArgV in the correct format} +{CommandLine: The command line to be formatted into C style ArgV and ArgC} +{ArgC: The count of command line parameters in the result} +var + Name:String; + Param:String; + Size:LongWord; + Index:LongWord; + Offset:LongWord; + Buffer:PPChar; + Counter:Integer; + Params:TStringList; +begin + {} + Result:=nil; + + {Get Name} + Name:=ParamStr(0); + + {Setup Defaults (Include argv[0])} + AArgC:=1; + Size:=Length(Name) + SizeOf(Char); + + Params:=TStringList.Create; + try + {Get Params} + UndelimitString(ACommandLine,Params,' '); + + {Check Params} + for Counter:=0 to Params.Count - 1 do + begin + Param:=Params.Strings[Counter]; + if Length(Param) > 0 then + begin + Inc(AArgC); + Inc(Size,Length(Param) + SizeOf(Char)); + end; + end; + + {Allocate Command Line} + Buffer:=AllocMem((AArgC * SizeOf(PChar)) + Size); + + {Copy Name} + Index:=0; + Offset:=AArgC * SizeOf(PChar); + Buffer[Index]:=PChar(Pointer(Buffer) + Offset); + StrLCopy(Buffer[Index],PChar(Name),Length(Name)); + Inc(Offset,Length(Name) + SizeOf(Char)); + + {Copy Params} + for Counter:=0 to Params.Count - 1 do + begin + Param:=Params.Strings[Counter]; + if Length(Param) > 0 then + begin + Inc(Index); + Buffer[Index]:=PChar(Pointer(Buffer) + Offset); + StrLCopy(Buffer[Index],PChar(Param),Length(Param)); + Inc(Offset,Length(Param) + SizeOf(Char)); + end; + end; + + Result:=Buffer; + finally + Params.Free; + end; +end; + +{==============================================================================} + +procedure ReleaseCommandLine(AArgV:PPChar); +{Free a C command line allocated by AllocateCommandLine} +{ArgV: The command line to be freed} +begin + {} + {Check ArgV} + if AArgV = nil then Exit; + + {Free ArgV} + FreeMem(AArgV); +end; + +{==============================================================================} + function MultiStringToStrings(ABuffer:Pointer;ASize:Integer;AStrings:TStrings):Boolean; var Offset:Integer; diff --git a/source/rtl/ultibo/core/usb.pas b/source/rtl/ultibo/core/usb.pas index b42b244..6439e42 100644 --- a/source/rtl/ultibo/core/usb.pas +++ b/source/rtl/ultibo/core/usb.pas @@ -108,7 +108,7 @@ - One or more endpoints available. All devices must have a control endpoint and most devices will have one or more bulk, interrupt or isochronous endpoints as well. The USB core will only communicate with the control endpoint to perform - generic operations like reading the desriptors and assigning a device addresss. + generic operations like reading the desriptors and assigning a device address. Drivers are expected to understand which endpoints they need to communicate with to provide the device specific functionality. @@ -1773,28 +1773,31 @@ procedure USBInit; end; {Create USB Hub Driver} - USBHubDriver:=USBDriverCreate; - if USBHubDriver <> nil then - begin - {Update USB Hub Driver} - {Driver} - USBHubDriver.Driver.DriverName:=USBHUB_DRIVER_NAME; - {USB} - USBHubDriver.DriverBind:=USBHubDriverBind; - USBHubDriver.DriverUnbind:=USBHubDriverUnbind; - - {Register USB Hub Driver} - Status:=USBDriverRegister(USBHubDriver); - if Status <> USB_STATUS_SUCCESS then + if USB_HUB_REGISTER_DRIVER then + begin + USBHubDriver:=USBDriverCreate; + if USBHubDriver <> nil then begin - if USB_LOG_ENABLED then USBLogError(nil,'Failed to register USB hub driver: ' + USBStatusToString(Status)); + {Update USB Hub Driver} + {Driver} + USBHubDriver.Driver.DriverName:=USBHUB_DRIVER_NAME; + {USB} + USBHubDriver.DriverBind:=USBHubDriverBind; + USBHubDriver.DriverUnbind:=USBHubDriverUnbind; + + {Register USB Hub Driver} + Status:=USBDriverRegister(USBHubDriver); + if Status <> USB_STATUS_SUCCESS then + begin + if USB_LOG_ENABLED then USBLogError(nil,'Failed to register USB hub driver: ' + USBStatusToString(Status)); + end; + end + else + begin + if USB_LOG_ENABLED then USBLogError(nil,'Failed to create USB hub driver'); end; - end - else - begin - if USB_LOG_ENABLED then USBLogError(nil,'Failed to create USB hub driver'); end; - + USBInitialized:=True; end; @@ -3397,25 +3400,29 @@ function USBDeviceFindEndpointByType(Device:PUSBDevice;Interrface:PUSBInterface; if MutexLock(Device.Lock) = ERROR_SUCCESS then begin try - {Find Endpoint} - for Count:=0 to Length(Interrface.Endpoints) - 1 do + {Check Endpoint Count} + if Length(Interrface.Endpoints) > 0 then begin - {Check Endpoint} - Endpoint:=Interrface.Endpoints[Count]; - if Endpoint <> nil then + {Find Endpoint} + for Count:=0 to Length(Interrface.Endpoints) - 1 do begin - {Check Direction} - if (Endpoint.bEndpointAddress shr 7) = Direction then + {Check Endpoint} + Endpoint:=Interrface.Endpoints[Count]; + if Endpoint <> nil then begin - {Check Transfer Type} - if (Endpoint.bmAttributes and USB_TRANSFER_TYPE_MASK) = TransferType then + {Check Direction} + if (Endpoint.bEndpointAddress shr 7) = Direction then begin - {Return Result} - Result:=Endpoint; - Exit; + {Check Transfer Type} + if (Endpoint.bmAttributes and USB_TRANSFER_TYPE_MASK) = TransferType then + begin + {Return Result} + Result:=Endpoint; + Exit; + end; end; end; - end; + end; end; finally {Release the Lock} @@ -3452,32 +3459,36 @@ function USBDeviceFindEndpointByTypeEx(Device:PUSBDevice;Interrface:PUSBInterfac if MutexLock(Device.Lock) = ERROR_SUCCESS then begin try - {Find Endpoint} - for Count:=0 to Length(Interrface.Endpoints) - 1 do + {Check Endpoint Count} + if Length(Interrface.Endpoints) > 0 then begin - {Check Endpoint} - Endpoint:=Interrface.Endpoints[Count]; - if Endpoint <> nil then + {Find Endpoint} + for Count:=0 to Length(Interrface.Endpoints) - 1 do begin - {Check Direction} - if (Endpoint.bEndpointAddress shr 7) = Direction then + {Check Endpoint} + Endpoint:=Interrface.Endpoints[Count]; + if Endpoint <> nil then begin - {Check Transfer Type} - if (Endpoint.bmAttributes and USB_TRANSFER_TYPE_MASK) = TransferType then + {Check Direction} + if (Endpoint.bEndpointAddress shr 7) = Direction then begin - {Check Index} - if (Count >= Index) then + {Check Transfer Type} + if (Endpoint.bmAttributes and USB_TRANSFER_TYPE_MASK) = TransferType then begin - {Update Index} - Index:=Count + 1; - - {Return Result} - Result:=Endpoint; - Exit; - end; + {Check Index} + if (Count >= Index) then + begin + {Update Index} + Index:=Count + 1; + + {Return Result} + Result:=Endpoint; + Exit; + end; + end; end; end; - end; + end; end; finally {Release the Lock} @@ -3513,24 +3524,28 @@ function USBDeviceCountEndpointsByType(Device:PUSBDevice;Interrface:PUSBInterfac if MutexLock(Device.Lock) = ERROR_SUCCESS then begin try - {Find Endpoint} - for Count:=0 to Length(Interrface.Endpoints) - 1 do + {Check Endpoint Count} + if Length(Interrface.Endpoints) > 0 then begin - {Check Endpoint} - Endpoint:=Interrface.Endpoints[Count]; - if Endpoint <> nil then + {Find Endpoint} + for Count:=0 to Length(Interrface.Endpoints) - 1 do begin - {Check Direction} - if (Endpoint.bEndpointAddress shr 7) = Direction then + {Check Endpoint} + Endpoint:=Interrface.Endpoints[Count]; + if Endpoint <> nil then begin - {Check Transfer Type} - if (Endpoint.bmAttributes and USB_TRANSFER_TYPE_MASK) = TransferType then + {Check Direction} + if (Endpoint.bEndpointAddress shr 7) = Direction then begin - {Update Result} - Inc(Result); + {Check Transfer Type} + if (Endpoint.bmAttributes and USB_TRANSFER_TYPE_MASK) = TransferType then + begin + {Update Result} + Inc(Result); + end; end; end; - end; + end; end; finally {Release the Lock} @@ -3644,25 +3659,29 @@ function USBDeviceFindAlternateEndpointByType(Device:PUSBDevice;Interrface:PUSBI if MutexLock(Device.Lock) = ERROR_SUCCESS then begin try - {Find Endpoint} - for Count:=0 to Length(Alternate.Endpoints) - 1 do + {Check Endpoint Count} + if Length(Alternate.Endpoints) > 0 then begin - {Check Endpoint} - Endpoint:=Alternate.Endpoints[Count]; - if Endpoint <> nil then + {Find Endpoint} + for Count:=0 to Length(Alternate.Endpoints) - 1 do begin - {Check Direction} - if (Endpoint.bEndpointAddress shr 7) = Direction then + {Check Endpoint} + Endpoint:=Alternate.Endpoints[Count]; + if Endpoint <> nil then begin - {Check Transfer Type} - if (Endpoint.bmAttributes and USB_TRANSFER_TYPE_MASK) = TransferType then + {Check Direction} + if (Endpoint.bEndpointAddress shr 7) = Direction then begin - {Return Result} - Result:=Endpoint; - Exit; + {Check Transfer Type} + if (Endpoint.bmAttributes and USB_TRANSFER_TYPE_MASK) = TransferType then + begin + {Return Result} + Result:=Endpoint; + Exit; + end; end; end; - end; + end; end; finally {Release the Lock} @@ -3857,13 +3876,34 @@ function USBDeviceBind(Device:PUSBDevice):LongWord; {Check Driver} if Device.Driver <> nil then begin - {Already bound} + {Already Bound} Result:=USB_STATUS_SUCCESS; Exit; - end; + end + else + begin + {Set Default} + Bound:=False; + + {Check Configuration} + if Device.ConfigurationValue > 0 then + begin + {Get Interface} + for Count:=0 to Length(Device.Configuration.Interfaces) - 1 do + begin + Interrface:=Device.Configuration.Interfaces[Count]; + {Check Driver} + if (Interrface <> nil) and (Interrface.Driver <> nil) then + begin + {Already Bound on at least one interface} + Bound:=True; + Break; + end; + end; + end; + end; {Set Default} - Bound:=False; Status:=USB_STATUS_DEVICE_UNSUPPORTED; //Critical //Lock the Device table (Can't lock the Device because Bind will call Submit !) @@ -3872,38 +3912,42 @@ function USBDeviceBind(Device:PUSBDevice):LongWord; if CriticalSectionLock(USBDriverTableLock) = ERROR_SUCCESS then begin try - {Get Driver} - Driver:=USBDriverTable; - while Driver <> nil do + {Check Bound} + if not Bound then begin - {$IFDEF USB_DEBUG} - if USB_LOG_ENABLED then USBLogDebug(Device,'Attempting to bind ' + DriverGetName(@Driver.Driver) + ' to device'); - {$ENDIF} - - {Attempt to Bind (Device)} - Status:=Driver.DriverBind(Device,nil); - if Status <> USB_STATUS_DEVICE_UNSUPPORTED then + {Get Driver} + Driver:=USBDriverTable; + while Driver <> nil do begin - if Status = USB_STATUS_SUCCESS then + {$IFDEF USB_DEBUG} + if USB_LOG_ENABLED then USBLogDebug(Device,'Attempting to bind ' + DriverGetName(@Driver.Driver) + ' to device'); + {$ENDIF} + + {Attempt to Bind (Device)} + Status:=Driver.DriverBind(Device,nil); + if Status <> USB_STATUS_DEVICE_UNSUPPORTED then begin - if USB_LOG_ENABLED then USBLogInfo(nil,'Bound ' + DriverGetName(@Driver.Driver) + ' to ' + USBDeviceToString(Device)); - - {Set Driver} - Device.Driver:=Driver; - - {Set Bound} - Bound:=True; - - {Set Status to Bound} - USBDeviceSetStatus(Device,USB_STATUS_BOUND); + if Status = USB_STATUS_SUCCESS then + begin + if USB_LOG_ENABLED then USBLogInfo(nil,'Bound ' + DriverGetName(@Driver.Driver) + ' to ' + USBDeviceToString(Device)); + + {Set Driver} + Device.Driver:=Driver; + + {Set Bound} + Bound:=True; + + {Set Status to Bound} + USBDeviceSetStatus(Device,USB_STATUS_BOUND); + end; + + Break; {Break to return Status} end; - - Break; {Break to return Status} + + {Get Next} + Driver:=Driver.Next; end; - - {Get Next} - Driver:=Driver.Next; - end; + end; {Check Status} if Status = USB_STATUS_DEVICE_UNSUPPORTED then @@ -6244,6 +6288,10 @@ function USBRequestCancel(Request:PUSBRequest):LongWord; {Request: The request to be cancelled} {Return: USB_STATUS_SUCCESS if completed or another error code on failure} var + {$IFDEF USB_DEBUG} + Direction:Byte; + TransferType:Byte; + {$ENDIF} Device:PUSBDevice; begin {} @@ -6409,7 +6457,7 @@ procedure USBRequestComplete(Request:PUSBRequest); {==============================================================================} function USBControlRequest(Device:PUSBDevice;Endpoint:PUSBEndpointDescriptor;bRequest,bmRequestType:Byte;wValue,wIndex:Word;Data:Pointer;wLength:Word):LongWord; inline; -{Send of USB control request to the specified device and wait for the request to complete} +{Send a USB control request to the specified device and wait for the request to complete} {Device: The USB device to send the control request to} {Endpoint: The Endpoint to use for the control request (or nil for the default control endpoint)} {bRequest: The request to send (See Section 9.4 of the USB 2.0 specification for Standard requests)} @@ -6427,7 +6475,7 @@ function USBControlRequest(Device:PUSBDevice;Endpoint:PUSBEndpointDescriptor;bRe {==============================================================================} function USBControlRequestEx(Device:PUSBDevice;Endpoint:PUSBEndpointDescriptor;bRequest,bmRequestType:Byte;wValue,wIndex:Word;Data:Pointer;wLength:Word;Timeout:LongWord;AllowShort:Boolean):LongWord; -{Send of USB control request to the specified device and wait for the request to complete} +{Send a USB control request to the specified device and wait for the request to complete} {Device: The USB device to send the control request to} {Endpoint: The Endpoint to use for the control request (or nil for the default control endpoint)} {bRequest: The request to send (See Section 9.4 of the USB 2.0 specification for Standard requests)} @@ -6743,7 +6791,7 @@ function USBTransfer(Device:PUSBDevice;Endpoint:PUSBEndpointDescriptor;Data:Poin USBLogDebug(Device,'USBTransfer: BytesAttempted = ' + IntToStr(Request.BytesAttempted)); USBLogDebug(Device,'USBTransfer: BytesTransferred = ' + IntToStr(Request.BytesTransferred)); USBLogDebug(Device,'USBTransfer: SplitErrorCount = ' + IntToStr(Request.SplitErrorCount)); - USBLogDebug(Device,'USBTransfer: CompleteSplitRetries = ' + IntToStr(Request.CompleteSplitRetries)) + USBLogDebug(Device,'USBTransfer: CompleteSplitRetries = ' + IntToStr(Request.CompleteSplitRetries)); USBLogDebug(Device,'USBTransfer: StartSplitAttempts = ' + IntToStr(Request.StartSplitAttempts)); USBLogDebug(Device,'USBTransfer: CompleteSplitAttempts = ' + IntToStr(Request.CompleteSplitAttempts)); USBLogDebug(Device,'USBTransfer: CompleteSplitRestarts = ' + IntToStr(Request.CompleteSplitRestarts)); @@ -9641,15 +9689,21 @@ procedure USBLogDeviceConfiguration(Device:PUSBDevice); {Log Configuration Descriptor} USBLogConfigurationDescriptor(Device,Device.Configuration.Descriptor); + {Log Interface Descriptors} for Count:=0 to Device.Configuration.Descriptor.bNumInterfaces - 1 do begin USBLogInterfaceDescriptor(Device,Device.Configuration.Interfaces[Count].Descriptor); - {Log Endpoint Descriptors} - for Counter:=0 to Device.Configuration.Interfaces[Count].Descriptor.bNumEndpoints - 1 do + + {Check Endpoint Count} + if Device.Configuration.Interfaces[Count].Descriptor.bNumEndpoints > 0 then begin - USBLogEndpointDescriptor(Device,Device.Configuration.Interfaces[Count].Endpoints[Counter]); - end; + {Log Endpoint Descriptors} + for Counter:=0 to Device.Configuration.Interfaces[Count].Descriptor.bNumEndpoints - 1 do + begin + USBLogEndpointDescriptor(Device,Device.Configuration.Interfaces[Count].Endpoints[Counter]); + end; + end; end; end; diff --git a/source/rtl/ultibo/core/vc4.pas b/source/rtl/ultibo/core/vc4.pas index 4e0cf41..59dd2d7 100644 --- a/source/rtl/ultibo/core/vc4.pas +++ b/source/rtl/ultibo/core/vc4.pas @@ -1,20 +1,23 @@ { Ultibo Broadcom VideoCoreIV interface unit. -Copyright (C) 2015 - SoftOz Pty Ltd. +Copyright (C) 2017 - SoftOz Pty Ltd. Arch ==== ARMv6 (ARM1176) - ARMv7 (Cortex A8) + ARMv7 (Cortex A7) + ARMv8 (Cortex A53) Boards ====== - Raspberry Pi - Model A/B/A+/B+ + Raspberry Pi - Model A/B/A+/B+/CM1 + Raspberry Pi - Model Zero/ZeroW Raspberry Pi 2 - Model B Raspberry Pi 3 - Model B + Raspberry Pi CM3 Licence ======= @@ -26,88 +29,2298 @@ Information for this unit was obtained from: - - + Linux - \drivers\staging\vc04_services\interface\vchiq_arm\* - Copyright (c) 2010-2012 Broadcom + + Linux - \drivers\char\broadcom\vc_sm\* - Copyright 2011-2012 Broadcom Corporation + + Linux - \drivers\char\broadcom\vc_mem.c - Copyright 2010 - 2011 Broadcom Corporation + References ========== - http://elinux.org/Raspberry_Pi_VideoCore_APIs + VideoCore APIs - http://elinux.org/Raspberry_Pi_VideoCore_APIs + + Raspberry Pi Userland - https://github.com/raspberrypi/userland + VideoCore IV Documentation - https://docs.broadcom.com/docs/12358545 + + Windows 10 IoT Userland - https://github.com/ms-iot/userland + + Windows 10 IoT VCHIQ - https://github.com/ms-iot/bsp/tree/master/drivers/misc/vchiq + VideoCore IV ============ + + The VideoCore IV (VC4) is the graphics processor (GPU) contained in the Broadcom BCM2835, 2836 and 2837 + SoC used in all models of the Raspberry Pi. + + The VC4 is made up of many subsystems that perform functions ranging from 2D and 3D graphics acceleration + to hardware audio, video and image encoding and decoding as well as display and camera interfaces. + + This unit provide common defintions, imports and support routines needed to enable all of the VC4 functionality + for use in Ultibo. In addition to the functionality provided by this unit there are a number of drivers + that implement specific parts of the control and communication such as VCHIQ, VCSM and VCCMA. + + The majority of the interface between the ARM CPU and the VC4 GPU is contained with the userland libraries + which are maintain by both Broadcom and Raspberry Pi. These have been ported to Ultibo and are provided + as a series of static libraries that are included as required in order to expose the appropriate parts + of the interface. + + There is currently no intention to directly port these libraries to Pascal as they represent are a vast + and actively changing codebase, a direct port would offer no advantages and would require more maintenance + than the current form. + + Building the Userland libraries: + + Flags: __DYNAMIC_REENT__ + + Options: + + Raspberry Pi + + -mabi=aapcs + -marm + -march=armv6 + -mcpu=arm1176jzf-s + -mfpu=vfp + -mfloat-abi=hard + + Raspberry Pi2/3 and QEMU VersatilePB (32-bit) + -mabi=aapcs + -marm + -march=armv7-a + -mfpu=vfpv3-d16 + -mfloat-abi=hard + + Raspberry Pi3 and QEMU VersatilePB (64-bit) + + -mabi=lp64 (Note: Supported only by later versions of GCC) + -march=armv8-a + + Build: + + Download Userland from https://github.com/ultibohub/userland + + Unpack to folder $HOME/userland + + (or git clone https://github.com/ultibohub/userland.git) + + Build ARMv6: + + cd + + cd userland + + export PATH=$HOME/gcc-arm-none-eabi-5_4-2016q2/bin:$PATH + + ./buildme.armv6-ultibo + + Build ARMv7: + + cd + + cd userland + + export PATH=$HOME/gcc-arm-none-eabi-5_4-2016q2/bin:$PATH + + ./buildme.armv7-ultibo + + Build ARMv8: + + cd + + cd userland + + export PATH=$HOME/gcc-linaro-aarch64-none-elf-4.8-2014.04_linux/bin:$PATH + + ./buildme.armv8-ultibo + + Notes: + + Building for 64-bit is not currently fully implemented and is not expected to work. + + This is not an Ultibo limitation but applies to the original Linux version of the + libraries as well. + } {$mode delphi} {Default to Delphi compatible syntax} {$H+} {Default to AnsiString} {$inline on} {Allow use of Inline procedures} -//See: \linux-rpi-3.12.y\drivers\misc\vc04_services\interface\vchi -// \linux-rpi-3.12.y\drivers\misc\vc04_services\interface\vchiq_arm - - -//See: http://elinux.org/Raspberry_Pi_VideoCore_APIs - unit VC4; interface -uses GlobalConfig,GlobalConst,GlobalTypes,Platform,Threads,Devices,Audio,Video; +uses GlobalConfig,GlobalConst,GlobalTypes,Platform,Threads,HeapManager,Syscalls,Devices,VC4V3D,VC4VCHIQ,{VC4VCSM,}Audio,Video,CTypes,SysUtils; //To Do //Add VCSM when completed {==============================================================================} {Global definitions} -{$INCLUDE GlobalDefines.inc} +{$INCLUDE GlobalDefines.inc} {==============================================================================} -//const +{const} {VC4 specific constants} + +const + {VC4 core libraries} + libvcos = 'vcos'; + libvchostif = 'vchostif'; + libvchiq_arm = 'vchiq_arm'; + libvcsm = 'vcsm'; + libbcm_host = 'bcm_host'; + + {VC4 Kronos libraries} + libEGL = 'EGL'; + libGLESv2 = 'GLESv2'; + libOpenVG = 'OpenVG'; + libWFC = 'WFC'; + + libbrcmEGL = 'brcmEGL'; + libbrcmGLESv2 = 'brcmGLESv2'; + libkhrn_client = 'khrn_client'; + + libbrcmjpeg = 'brcmjpeg'; + libbrcmOpenVG = 'brcmOpenVG'; + libbrcmWFC = 'brcmWFC'; + + libopenmaxil = 'openmaxil'; + + {VC4 MMAL (Multimedia Abstraction Layer) libraries} + libmmal = 'mmal'; + libmmal_components = 'mmal_components'; + libmmal_core = 'mmal_core'; + libmmal_util = 'mmal_util'; + libmmal_omx = 'mmal_omx'; + libmmal_omxutil = 'mmal_omxutil'; + libmmal_vc_client = 'mmal_vc_client'; + + {VC4 Container (Reader/Writer) libraries} + libcontainers = 'containers'; + + libreader_asf = 'reader_asf'; + libreader_avi = 'reader_avi'; + libreader_binary = 'reader_binary'; + libreader_flv = 'reader_flv'; + libreader_metadata_id3 = 'reader_metadata_id3'; + libreader_mkv = 'reader_mkv'; + libreader_mp4 = 'reader_mp4'; + libreader_mpga = 'reader_mpga'; + libreader_ps = 'reader_ps'; + libreader_qsynth = 'reader_qsynth'; + libreader_raw_video = 'reader_raw_video'; + libreader_rcv = 'reader_rcv'; + libreader_rtp = 'reader_rtp'; + libreader_rtsp = 'reader_rtsp'; + libreader_rv9 = 'reader_rv9'; + libreader_simple = 'reader_simple'; + libreader_wav = 'reader_wav'; -//To Do //A generic VC4 unit - - + libwriter_asf = 'writer_asf'; + libwriter_avi = 'writer_avi'; + libwriter_binary = 'writer_binary'; + libwriter_dummy = 'writer_dummy'; + libwriter_mp4 = 'writer_mp4'; + libwriter_raw_video = 'writer_raw_video'; + libwriter_simple = 'writer_simple'; + + {VC4 Client libraries} + libilclient = 'ilclient'; + libvgfont = 'vgfont'; + + libvcilcs = 'vcilcs'; + {==============================================================================} -//type - {VC4 specific types} -//To Do +{Note: The order of these is extremely important} + +{VC4 Client libraries} +{$linklib libilclient} +{--$linklib libvgfont} //To Do //Continuing //Not compiling yet + +{$linklib libvcilcs} + +{VC4 MMAL (Multimedia Abstraction Layer) libraries} +{$linklib libmmal_vc_client} +{$linklib libmmal} +{$linklib libmmal_components} +{$linklib libmmal_core} +{$linklib libmmal_util} +{$linklib libmmal_omx} +{$linklib libmmal_omxutil} + +{VC4 Container (Reader/Writer) libraries} +{$linklib libcontainers} + +{$linklib libreader_asf} +{$linklib libreader_avi} +{$linklib libreader_binary} +{$linklib libreader_flv} +{$linklib libreader_metadata_id3} +{$linklib libreader_mkv} +{$linklib libreader_mp4} +{$linklib libreader_mpga} +{$linklib libreader_ps} +{$linklib libreader_qsynth} +{$linklib libreader_raw_video} +{$linklib libreader_rcv} +{$linklib libreader_rtp} +{$linklib libreader_rtsp} +{$linklib libreader_rv9} +{$linklib libreader_simple} +{$linklib libreader_wav} + +{$linklib libwriter_asf} +{$linklib libwriter_avi} +{$linklib libwriter_binary} +{$linklib libwriter_dummy} +{$linklib libwriter_mp4} +{$linklib libwriter_raw_video} +{$linklib libwriter_simple} + +{VC4 Kronos libraries} +{$linklib libEGL} +{$linklib libGLESv2} +{$linklib libOpenVG} +{$linklib libWFC} + +{$linklib libbrcmEGL} +{$linklib libbrcmGLESv2} +{$linklib libkhrn_client} + +{$linklib libbrcmjpeg} +{$linklib libbrcmOpenVG} +{$linklib libbrcmWFC} + +{$linklib libopenmaxil} + +{VC4 core libraries} +{$linklib libbcm_host} +{$linklib libvchostif} +{$linklib libvchiq_arm} +{$linklib libvcsm} +{$linklib libvcos} + +{Math library (Required for EGL)} +{$linklib m} +{==============================================================================} +{type} + {VC4 specific types} + {==============================================================================} var {VC4 specific variables} - VC4Initialized:Boolean; + VC4_FILESYS_START:LongBool = True; {If True then start the VC File Service} + +{==============================================================================} +{VC4 VCOS Types (From interface\vcos_types.h)} +{$PACKRECORDS C} +{Error return codes - chosen to be similar to errno values} +type + VCOS_STATUS_T = ( + VCOS_SUCCESS, + VCOS_EAGAIN, + VCOS_ENOENT, + VCOS_ENOSPC, + VCOS_EINVAL, + VCOS_EACCESS, + VCOS_ENOMEM, + VCOS_ENOSYS, + VCOS_EEXIST, + VCOS_ENXIO, + VCOS_EINTR + ); + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 VC Display Types (From interface\vctypes\vc_display_types.h)} +{$PACKRECORDS C} +{Enums of display input format } +type + VCOS_DISPLAY_INPUT_FORMAT_T = ( + VCOS_DISPLAY_INPUT_FORMAT_INVALID = 0, + VCOS_DISPLAY_INPUT_FORMAT_RGB888, + VCOS_DISPLAY_INPUT_FORMAT_RGB565 + ); + +{For backward compatibility} +const + DISPLAY_INPUT_FORMAT_INVALID = VCOS_DISPLAY_INPUT_FORMAT_INVALID; + DISPLAY_INPUT_FORMAT_RGB888 = VCOS_DISPLAY_INPUT_FORMAT_RGB888; + DISPLAY_INPUT_FORMAT_RGB565 = VCOS_DISPLAY_INPUT_FORMAT_RGB565; + +type + DISPLAY_INPUT_FORMAT_T = VCOS_DISPLAY_INPUT_FORMAT_T; + + {Enum determining how image data for 3D displays has to be supplied} + DISPLAY_3D_FORMAT_T = ( + DISPLAY_3D_UNSUPPORTED = 0, {Default} + DISPLAY_3D_INTERLEAVED, {For autosteroscopic displays} + DISPLAY_3D_SBS_FULL_AUTO, {Side-By-Side, Full Width (also used by some autostereoscopic displays)} + DISPLAY_3D_SBS_HALF_HORIZ, {Side-By-Side, Half Width, Horizontal Subsampling (see HDMI spec)} + DISPLAY_3D_TB_HALF, {Top-bottom 3D} + DISPLAY_3D_FRAME_PACKING, {Frame Packed 3D} + DISPLAY_3D_FRAME_SEQUENTIAL, {Output left on even frames and right on odd frames (typically 120Hz)} + DISPLAY_3D_FORMAT_MAX + ); + + {Enums of display types} + DISPLAY_INTERFACE_T = ( + DISPLAY_INTERFACE_MIN, + DISPLAY_INTERFACE_SMI, + DISPLAY_INTERFACE_DPI, + DISPLAY_INTERFACE_DSI, + DISPLAY_INTERFACE_LVDS, + DISPLAY_INTERFACE_MAX + ); + + {Display dither setting, used on B0} + DISPLAY_DITHER_T = ( + DISPLAY_DITHER_NONE = 0, {Default if not set} + DISPLAY_DITHER_RGB666 = 1, + DISPLAY_DITHER_RGB565 = 2, + DISPLAY_DITHER_RGB555 = 3, + DISPLAY_DITHER_MAX); + + {Info struct} + PDISPLAY_INFO_T = ^DISPLAY_INFO_T; + DISPLAY_INFO_T = record + _type : DISPLAY_INTERFACE_T; {Type} + width : uint32_t; {Width / Height} + height : uint32_t; + input_format : DISPLAY_INPUT_FORMAT_T; {Output format} + interlaced : uint32_t; {Interlaced?} + output_dither : DISPLAY_DITHER_T; {Output dither setting (if required)} + pixel_freq : uint32_t; {Pixel frequency} + line_rate : uint32_t; {Line rate in lines per second} + format_3d : DISPLAY_3D_FORMAT_T; {Format required for image data for 3D displays} + use_pixelvalve_1 : uint32_t; {If display requires PV1 (e.g. DSI1), special config is required in HVS} + dsi_video_mode : uint32_t; {Set for DSI displays which use video mode} + hvs_channel : uint32_t; {Select HVS channel (usually 0)} + end; + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 VC Image Types (From interface\vctypes\vc_image_types.h)} +{$PACKRECORDS C} +{We have so many rectangle types; let's try to introduce a common one. } +type + Ptag_VC_RECT_T = ^tag_VC_RECT_T; + tag_VC_RECT_T = record + x : int32_t; + y : int32_t; + width : int32_t; + height : int32_t; + end; + VC_RECT_T = tag_VC_RECT_T; + PVC_RECT_T = ^VC_RECT_T; + + {Types of image supported} + VC_IMAGE_TYPE_T = ( + VC_IMAGE_MIN = 0, {Bounds for error checking} + + VC_IMAGE_RGB565 = 1, + VC_IMAGE_1BPP, + VC_IMAGE_YUV420, + VC_IMAGE_48BPP, + VC_IMAGE_RGB888, + VC_IMAGE_8BPP, + VC_IMAGE_4BPP, {4bpp palettised image} + VC_IMAGE_3D32, {A separated format of 16 colour/light shorts followed by 16 z values} + VC_IMAGE_3D32B, {16 colours followed by 16 z values} + VC_IMAGE_3D32MAT, {A separated format of 16 material/colour/light shorts followed by 16 z values} + VC_IMAGE_RGB2X9, {32 bit format containing 18 bits of 6.6.6 RGB, 9 bits per short} + VC_IMAGE_RGB666, {32-bit format holding 18 bits of 6.6.6 RGB} + VC_IMAGE_PAL4_OBSOLETE, {4bpp palettised image with embedded palette} + VC_IMAGE_PAL8_OBSOLETE, {8bpp palettised image with embedded palette} + VC_IMAGE_RGBA32, {RGB888 with an alpha byte after each pixel (Isn't it BEFORE each pixel?)} + VC_IMAGE_YUV422, {A line of Y (32-byte padded), a line of U (16-byte padded), and a line of V (16-byte padded)} + VC_IMAGE_RGBA565, {RGB565 with a transparent patch} + VC_IMAGE_RGBA16, {Compressed (4444) version of RGBA32} + VC_IMAGE_YUV_UV, {VCIII codec format} + VC_IMAGE_TF_RGBA32, {VCIII T-format RGBA8888} + VC_IMAGE_TF_RGBX32, {VCIII T-format RGBx8888} + VC_IMAGE_TF_FLOAT, {VCIII T-format float} + VC_IMAGE_TF_RGBA16, {VCIII T-format RGBA4444} + VC_IMAGE_TF_RGBA5551, {VCIII T-format RGB5551} + VC_IMAGE_TF_RGB565, {VCIII T-format RGB565} + VC_IMAGE_TF_YA88, {VCIII T-format 8-bit luma and 8-bit alpha} + VC_IMAGE_TF_BYTE, {VCIII T-format 8 bit generic sample} + VC_IMAGE_TF_PAL8, {VCIII T-format 8-bit palette} + VC_IMAGE_TF_PAL4, {VCIII T-format 4-bit palette} + VC_IMAGE_TF_ETC1, {VCIII T-format Ericsson Texture Compressed} + VC_IMAGE_BGR888, {RGB888 with R & B swapped} + VC_IMAGE_BGR888_NP, {RGB888 with R & B swapped, but with no pitch, i.e. no padding after each row of pixels} + VC_IMAGE_BAYER, {Bayer image, extra defines which variant is being used} + VC_IMAGE_CODEC, {General wrapper for codec images e.g. JPEG from camera} + VC_IMAGE_YUV_UV32, {VCIII codec format} + VC_IMAGE_TF_Y8, {VCIII T-format 8-bit luma} + VC_IMAGE_TF_A8, {VCIII T-format 8-bit alpha} + VC_IMAGE_TF_SHORT, {VCIII T-format 16-bit generic sample} + VC_IMAGE_TF_1BPP, {VCIII T-format 1bpp black/white} + VC_IMAGE_OPENGL, + VC_IMAGE_YUV444I, {VCIII-B0 HVS YUV 4:4:4 interleaved samples} + VC_IMAGE_YUV422PLANAR, {Y, U, & V planes separately (VC_IMAGE_YUV422 has them interleaved on a per line basis)} + VC_IMAGE_ARGB8888, {32bpp with 8bit alpha at MS byte, with R, G, B (LS byte)} + VC_IMAGE_XRGB8888, {32bpp with 8bit unused at MS byte, with R, G, B (LS byte)} + + VC_IMAGE_YUV422YUYV, {Interleaved 8 bit samples of Y, U, Y, V} + VC_IMAGE_YUV422YVYU, {Interleaved 8 bit samples of Y, V, Y, U} + VC_IMAGE_YUV422UYVY, {Interleaved 8 bit samples of U, Y, V, Y} + VC_IMAGE_YUV422VYUY, {Interleaved 8 bit samples of V, Y, U, Y} + + VC_IMAGE_RGBX32, {32bpp like RGBA32 but with unused alpha} + VC_IMAGE_RGBX8888, {32bpp, corresponding to RGBA with unused alpha} + VC_IMAGE_BGRX8888, {32bpp, corresponding to BGRA with unused alpha} + + VC_IMAGE_YUV420SP, {Y as a plane, then UV byte interleaved in plane with with same pitch, half height} + + VC_IMAGE_YUV444PLANAR, {Y, U, & V planes separately 4:4:4} + + VC_IMAGE_TF_U8, {T-format 8-bit U - same as TF_Y8 buf from U plane} + VC_IMAGE_TF_V8, {T-format 8-bit U - same as TF_Y8 buf from V plane} + + VC_IMAGE_YUV420_16, {YUV4:2:0 planar, 16bit values} + VC_IMAGE_YUV_UV_16, {YUV4:2:0 codec format, 16bit values} + + VC_IMAGE_MAX, {Bounds for error checking} + VC_IMAGE_FORCE_ENUM_16BIT = $ffff + ); + + {Image transformations (flips and 90 degree rotations). These are made out of 3 primitives (transpose is done first). These must match the DISPMAN and Media Player definitions} +const + TRANSFORM_HFLIP = 1 shl 0; + TRANSFORM_VFLIP = 1 shl 1; + TRANSFORM_TRANSPOSE = 1 shl 2; + +type + VC_IMAGE_TRANSFORM_T = ( + VC_IMAGE_ROT0 = 0, + VC_IMAGE_MIRROR_ROT0 = TRANSFORM_HFLIP, + VC_IMAGE_MIRROR_ROT180 = TRANSFORM_VFLIP, + VC_IMAGE_ROT180 = TRANSFORM_HFLIP or TRANSFORM_VFLIP, + VC_IMAGE_MIRROR_ROT90 = TRANSFORM_TRANSPOSE, + VC_IMAGE_ROT270 = TRANSFORM_TRANSPOSE or TRANSFORM_HFLIP, + VC_IMAGE_ROT90 = TRANSFORM_TRANSPOSE or TRANSFORM_VFLIP, + VC_IMAGE_MIRROR_ROT270 = (TRANSFORM_TRANSPOSE or TRANSFORM_HFLIP) or TRANSFORM_VFLIP + ); + + {Defined to be identical to register bits } + VC_IMAGE_BAYER_ORDER_T = ( + VC_IMAGE_BAYER_RGGB = 0, + VC_IMAGE_BAYER_GBRG = 1, + VC_IMAGE_BAYER_BGGR = 2, + VC_IMAGE_BAYER_GRBG = 3 + ); + + {Defined to be identical to register bits } + VC_IMAGE_BAYER_FORMAT_T = ( + VC_IMAGE_BAYER_RAW6 = 0, + VC_IMAGE_BAYER_RAW7 = 1, + VC_IMAGE_BAYER_RAW8 = 2, + VC_IMAGE_BAYER_RAW10 = 3, + VC_IMAGE_BAYER_RAW12 = 4, + VC_IMAGE_BAYER_RAW14 = 5, + VC_IMAGE_BAYER_RAW16 = 6, + VC_IMAGE_BAYER_RAW10_8 = 7, + VC_IMAGE_BAYER_RAW12_8 = 8, + VC_IMAGE_BAYER_RAW14_8 = 9, + VC_IMAGE_BAYER_RAW10L = 11, + VC_IMAGE_BAYER_RAW12L = 12, + VC_IMAGE_BAYER_RAW14L = 13, + VC_IMAGE_BAYER_RAW16_BIG_ENDIAN = 14, + VC_IMAGE_BAYER_RAW4 = 15 + ); + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 VC Image Structures (From interface\vctypes\vc_image_structs.h)} +{$PACKRECORDS C} +const + {Format specific infos for vc images} + {YUV information, co-sited h/v flags & colour space words} + VC_IMAGE_YUVINFO_UNSPECIFIED = 0; {Unknown or unset - defaults to BT601 interstitial} + {Colour-space conversions data [4 bits]} + {Note that colour conversions for SMPTE 170M are identical to BT.601} + VC_IMAGE_YUVINFO_CSC_ITUR_BT601 = 1; {ITU-R BT.601-5 [SDTV] (compatible with VideoCore-II)} + VC_IMAGE_YUVINFO_CSC_ITUR_BT709 = 2; {ITU-R BT.709-3 [HDTV]} + VC_IMAGE_YUVINFO_CSC_JPEG_JFIF = 3; {JPEG JFIF} + VC_IMAGE_YUVINFO_CSC_FCC = 4; {Title 47 Code of Federal Regulations (2003) 73.682 (a) (20)} + VC_IMAGE_YUVINFO_CSC_SMPTE_240M = 5; {Society of Motion Picture and Television Engineers 240M (1999)} + VC_IMAGE_YUVINFO_CSC_ITUR_BT470_2_M = 6; {ITU-R BT.470-2 System M} + VC_IMAGE_YUVINFO_CSC_ITUR_BT470_2_BG = 7; {ITU-R BT.470-2 System B,G} + VC_IMAGE_YUVINFO_CSC_JPEG_JFIF_Y16_255 = 8; {JPEG JFIF, but with 16..255 luma} + VC_IMAGE_YUVINFO_CSC_CUSTOM = 15; {Custom colour matrix follows header} + VC_IMAGE_YUVINFO_CSC_SMPTE_170M = VC_IMAGE_YUVINFO_CSC_ITUR_BT601; + {Co-sited flags, assumed interstitial if not co-sited [2 bits]} + VC_IMAGE_YUVINFO_H_COSITED = 256; + VC_IMAGE_YUVINFO_V_COSITED = 512; + + VC_IMAGE_YUVINFO_TOP_BOTTOM = 1024; + VC_IMAGE_YUVINFO_DECIMATED = 2048; + VC_IMAGE_YUVINFO_PACKED = 4096; + {Certain YUV image formats can either be V/U interleaved or U/V interleaved} + VC_IMAGE_YUVINFO_IS_VU = $8000; + {Force Metaware to use 16 bits} + VC_IMAGE_YUVINFO_FORCE_ENUM_16BIT = $ffff; + +const + VC_IMAGE_YUV_UV_STRIPE_WIDTH_LOG2 = 7; + VC_IMAGE_YUV_UV_STRIPE_WIDTH = 1 shl VC_IMAGE_YUV_UV_STRIPE_WIDTH_LOG2; + VC_IMAGE_YUV_UV32_STRIPE_WIDTH_LOG2 = 5; + VC_IMAGE_YUV_UV32_STRIPE_WIDTH = 1 shl VC_IMAGE_YUV_UV32_STRIPE_WIDTH_LOG2; + + {64 pixel wide stripes, 128 byte wide as 16bits/component} + VC_IMAGE_YUV_UV_16_STRIPE_WIDTH_LOG2 = 6; + VC_IMAGE_YUV_UV_16_STRIPE_WIDTH = 1 shl VC_IMAGE_YUV_UV_16_STRIPE_WIDTH_LOG2; + VC_IMAGE_YUV_UV_16_STRIPE_STRIDE_LOG2 = 7; + VC_IMAGE_YUV_UV_16_STRIPE_STRIDE = 1 shl VC_IMAGE_YUV_UV_16_STRIPE_STRIDE_LOG2; + + {The image structure.} +type + Pvc_image_extra_uv_s = ^vc_image_extra_uv_s; + vc_image_extra_uv_s = record + u : pointer; + v : pointer; + vpitch : longint; + end; + VC_IMAGE_EXTRA_UV_T = vc_image_extra_uv_s; + PVC_IMAGE_EXTRA_UV_T = ^VC_IMAGE_EXTRA_UV_T; + + Pvc_image_extra_rgba_s = ^vc_image_extra_rgba_s; + vc_image_extra_rgba_s = record + value: LongWord; {component_order : 24 (diagnostic use only) + {normalised_alpha : 1} + {transparent_colour: 1} + {unused_26_31 : 6} + arg: LongWord; + end; + VC_IMAGE_EXTRA_RGBA_T = vc_image_extra_rgba_s; + PVC_IMAGE_EXTRA_RGBA_T = ^VC_IMAGE_EXTRA_RGBA_T; + + Pvc_image_extra_pal_s = ^vc_image_extra_pal_s; + vc_image_extra_pal_s = record + palette: Psmallint; + palette32: int; {palette32 : 1} + end; + VC_IMAGE_EXTRA_PAL_T = vc_image_extra_pal_s; + PVC_IMAGE_EXTRA_PAL_T = ^VC_IMAGE_EXTRA_PAL_T; + + {These fields are subject to change / being moved around} + Pvc_image_extra_tf_s = ^vc_image_extra_tf_s; + vc_image_extra_tf_s = record + value: LongWord; {mipmap_levels : 8} + {xxx : 23} + {cube_map : 1} + palette: Pointer; + end; + VC_IMAGE_EXTRA_TF_T = vc_image_extra_tf_s; + PVC_IMAGE_EXTRA_TF_T = ^VC_IMAGE_EXTRA_TF_T; + + Pvc_image_extra_bayer_s = ^vc_image_extra_bayer_s; + vc_image_extra_bayer_s = record + order : word; + format : word; + block_length : longint; + end; + VC_IMAGE_EXTRA_BAYER_T = vc_image_extra_bayer_s; + PVC_IMAGE_EXTRA_BAYER_T = ^VC_IMAGE_EXTRA_BAYER_T; + + {The next block can be used with Visual C++ which treats enums as long ints} + Pvc_image_extra_msbayer_s = ^vc_image_extra_msbayer_s; + vc_image_extra_msbayer_s = record + order : byte; + format : byte; + dummy1 : byte; + dummy2 : byte; + block_length : longint; + end; + VC_IMAGE_EXTRA_MSBAYER_T = vc_image_extra_msbayer_s; + PVC_IMAGE_EXTRA_MSBAYER_T = ^VC_IMAGE_EXTRA_MSBAYER_T; + + {NB this will be copied to image.size in parmalloc()} + Pvc_image_extra_codec_s = ^vc_image_extra_codec_s; + vc_image_extra_codec_s = record + fourcc : longint; + maxsize : longint; + end; + VC_IMAGE_EXTRA_CODEC_T = vc_image_extra_codec_s; + PVC_IMAGE_EXTRA_CODEC_T = ^VC_IMAGE_EXTRA_CODEC_T; + +const + VC_IMAGE_OPENGL_RGBA32 = $14011908; {GL_UNSIGNED_BYTE GL_RGBA} + VC_IMAGE_OPENGL_RGB24 = $14011907; {GL_UNSIGNED_BYTE GL_RGB} + VC_IMAGE_OPENGL_RGBA16 = $80331908; {GL_UNSIGNED_SHORT_4_4_4_4 GL_RGBA} + VC_IMAGE_OPENGL_RGBA5551 = $80341908; {GL_UNSIGNED_SHORT_5_5_5_1 GL_RGBA} + VC_IMAGE_OPENGL_RGB565 = $83631907; {GL_UNSIGNED_SHORT_5_6_5 GL_RGB} + VC_IMAGE_OPENGL_YA88 = $1401190A; {GL_UNSIGNED_BYTE GL_LUMINANCE_ALPHA} + VC_IMAGE_OPENGL_Y8 = $14011909; {GL_UNSIGNED_BYTE GL_LUMINANCE} + VC_IMAGE_OPENGL_A8 = $14011906; {GL_UNSIGNED_BYTE GL_ALPHA} + VC_IMAGE_OPENGL_ETC1 = $8D64; {GL_ETC1_RGB8_OES} + VC_IMAGE_OPENGL_PALETTE4_RGB24 = $8B90; {GL_PALETTE4_RGB8_OES} + VC_IMAGE_OPENGL_PALETTE4_RGBA32 = $8B91; {GL_PALETTE4_RGBA8_OES} + VC_IMAGE_OPENGL_PALETTE4_RGB565 = $8B92; {GL_PALETTE4_R5_G6_B5_OES} + VC_IMAGE_OPENGL_PALETTE4_RGBA16 = $8B93; {GL_PALETTE4_RGBA4_OES} + VC_IMAGE_OPENGL_PALETTE4_RGB5551 = $8B94; {GL_PALETTE4_RGB5_A1_OES} + VC_IMAGE_OPENGL_PALETTE8_RGB24 = $8B95; {GL_PALETTE8_RGB8_OES} + VC_IMAGE_OPENGL_PALETTE8_RGBA32 = $8B96; {GL_PALETTE8_RGBA8_OES} + VC_IMAGE_OPENGL_PALETTE8_RGB565 = $8B97; {GL_PALETTE8_R5_G6_B5_OES} + VC_IMAGE_OPENGL_PALETTE8_RGBA16 = $8B98; {GL_PALETTE8_RGBA4_OES} + VC_IMAGE_OPENGL_PALETTE8_RGB5551 = $8B99; {GL_PALETTE8_RGB5_A1_OES} + +type + Pvc_image_extra_opengl_s = ^vc_image_extra_opengl_s; + vc_image_extra_opengl_s = record + format_and_type : dword; + palette : pointer; + end; + VC_IMAGE_EXTRA_OPENGL_T = vc_image_extra_opengl_s; + PVC_IMAGE_EXTRA_OPENGL_T = ^VC_IMAGE_EXTRA_OPENGL_T; + + PVC_IMAGE_EXTRA_T = ^VC_IMAGE_EXTRA_T; + VC_IMAGE_EXTRA_T = record + case longint of + 0 : ( uv : VC_IMAGE_EXTRA_UV_T ); + 1 : ( rgba : VC_IMAGE_EXTRA_RGBA_T ); + 2 : ( pal : VC_IMAGE_EXTRA_PAL_T ); + 3 : ( tf : VC_IMAGE_EXTRA_TF_T ); + 4 : ( bayer : VC_IMAGE_EXTRA_BAYER_T ); + 5 : ( msbayer : VC_IMAGE_EXTRA_MSBAYER_T ); + 6 : ( codec : VC_IMAGE_EXTRA_CODEC_T ); + 7 : ( opengl : VC_IMAGE_EXTRA_OPENGL_T ); + end; + + {Structure containing various colour meta-data for each format} +type + PVC_IMAGE_INFO_T = ^VC_IMAGE_INFO_T; + VC_IMAGE_INFO_T = record + case longint of + 1 : ( yuv : word ); {Information pertinent to all YUV implementations} + 2 : ( info : word ); {Dummy, force size to min 16 bits} + end; + + {Image handle object, which must be locked before image data becomes accessible. + A handle to an image where the image data does not have a guaranteed storage location. A call to vc_image_lock() must be made to convert + this into a VC_IMAGE_BUF_T, which guarantees that image data can be accessed safely. + This type will also be used in cases where it's unclear whether or not the buffer is already locked, and in legacy code} +type + PVC_IMAGE_T = ^VC_IMAGE_T; + VC_IMAGE_T = record + _type : word; {Should restrict to 16 bits} + info : VC_IMAGE_INFO_T; {Format-specific info; zero for VC02 behaviour} + width : word; {Width in pixels} + height : word; {Height in pixels} + pitch : longint; {Pitch of image_data array in bytes} + size : longint; {Number of bytes available in image_data array} + image_data : Pointer; {Pixel data} + extra : VC_IMAGE_EXTRA_T; {Extra data like palette pointer} + metadata : Pointer; {Metadata header for the image (vc_metadata_header_s)} + pool_object : Pointer; {Non NULL if image was allocated from a vc_pool (opaque_vc_pool_object_s)} + mem_handle : uint32_t; {The mem handle for relocatable memory storage} + metadata_size : longint; {Size of metadata of each channel in bytes} + channel_offset : longint; {Offset of consecutive channels in bytes} + video_timestamp : uint32_t; {90000 Hz RTP times domain - derived from audio timestamp} + num_channels : uint8_t; {Number of channels (2 for stereo)} + current_channel : uint8_t; {The channel this header is currently pointing to} + linked_multichann_flag : uint8_t; {Indicate the header has the linked-multichannel structure} + is_channel_linked : uint8_t; {Track if the above structure is been used to link the header into a linked-mulitchannel image} + channel_index : uint8_t; {Index of the channel this header represents while it is being linked} + _dummy : array[0..2] of uint8_t; {Pad struct to 64 bytes} + end; + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 VCHI Mem Handle (From interface\vchi\vchi_mh.h)} +{$PACKRECORDS C} +type + VCHI_MEM_HANDLE_T = int32_t; + +const + VCHI_MEM_HANDLE_INVALID = 0; + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 VCHI Connection Types (From interface\vchi\connections\connection.h)} +{$PACKRECORDS C} +type + PPVCHI_CONNECTION_T = ^PVCHI_CONNECTION_T; + PVCHI_CONNECTION_T = ^VCHI_CONNECTION_T; + VCHI_CONNECTION_T = record + {Opaque structure} + end; - //To Do + //To Do //Continuing + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 VCHI Types (From interface\vchi\vchi.h)} +{$PACKRECORDS C} +type + PPVCHI_INSTANCE_T = ^PVCHI_INSTANCE_T; + PVCHI_INSTANCE_T = ^VCHI_INSTANCE_T; + VCHI_INSTANCE_T = record + {Opaque structure} + end; + +//To Do //Continuing + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 VCHI Common Types (From vchi_common.h)} +{$PACKRECORDS C} +type + PVCHI_CONNECTION_API_T = ^VCHI_CONNECTION_API_T; + VCHI_CONNECTION_API_T = record + {Opaque structure} + end; + + PVCHI_MESSAGE_DRIVER_T = ^VCHI_MESSAGE_DRIVER_T; + VCHI_MESSAGE_DRIVER_T = record + {Opaque structure} + end; + +//To Do //Continuing + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 VCHIQ Interface Types (From vchiq_if.h)} +{$PACKRECORDS C} +type + VCHIQ_STATUS_T = ( + VCHIQ_ERROR = -1, + VCHIQ_SUCCESS = 0, + VCHIQ_RETRY = 1 + ); + + PPVCHIQ_INSTANCE_T = ^PVCHIQ_INSTANCE_T; + PVCHIQ_INSTANCE_T = ^VCHIQ_INSTANCE_T; + VCHIQ_INSTANCE_T = record + {Opaque structure} + end; + +//To Do //Continuing + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 ????? (From ??????.h)} +{$PACKRECORDS C} + +//To Do //Continuing + +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 DispmanX Types (From interface\vmcs_host\vc_dispmanx_types.h)} +{$PACKRECORDS C} +type + PDISPMANX_ELEMENT_HANDLE_T = ^DISPMANX_ELEMENT_HANDLE_T; + DISPMANX_ELEMENT_HANDLE_T = uint32_t; +{$PACKRECORDS DEFAULT} +{==============================================================================} +{VC4 EGL Platform Types (From EGL\eglplatform.h)} +{$PACKRECORDS C} +type + PEGL_DISPMANX_WINDOW_T = ^EGL_DISPMANX_WINDOW_T; + EGL_DISPMANX_WINDOW_T = record + element: DISPMANX_ELEMENT_HANDLE_T; + width: int; + height: int; + end; + +{$PACKRECORDS DEFAULT} {==============================================================================} {Initialization Functions} procedure VC4Init; +function VC4Start:LongWord; +function VC4Stop:LongWord; + +{==============================================================================} +{VC4 Mailbox Functions} +function VC4MemoryAllocate(Length,Alignment,Flags:LongWord):THandle; inline; +function VC4MemoryRelease(Handle:THandle):LongWord; inline; +function VC4MemoryLock(Handle:THandle):LongWord; inline; +function VC4MemoryUnlock(Handle:THandle):LongWord; inline; + +function VC4ExecuteCode(Address:Pointer;R0,R1,R2,R3,R4,R5:LongWord):LongWord; inline; + +function VC4QPUEnable(Enable:LongWord):LongWord; inline; +function VC4QPUExecute(NumQPUs,Control,NoFlush,Timeout:LongWord):LongWord; inline; + +function VC4VCHIQEnable(Address:LongWord):LongWord; inline; + +{==============================================================================} +{VC4 VCOS Interface Functions (From \opt\vc\include\interface\vcos\*)} +function VCOSInit: VCOS_STATUS_T; cdecl; external libvcos name 'vcos_init'; +procedure VCOSDeinit; cdecl; external libvcos name 'vcos_deinit'; + +//To Do //More + +{==============================================================================} +{VC4 VCHOSTIF / VCILCS Interface Functions (From \opt\vc\include\interface\vmcs_host\*)} +//To Do +//vc_vchi_cec_init +//vc_cec_* + +//vc_vchi_tv_init +//vc_tv_* + +//vc_gencmd_init +//vc_gencmd_* + +//To Do //Note: These are in the DispmanX unit +//vc_vchi_dispmanx_init +//vc_dispmanx_* + +function VCVCHIFilesysInit(instance: PVCHI_INSTANCE_T; connections: PPVCHI_CONNECTION_T; num_connections: uint32_t): int; cdecl; external libvchostif name 'vc_vchi_filesys_init'; +procedure VCFilesysDeinit; cdecl; external libvchostif name 'vc_filesys_stop'; + +//To Do //Note: Only for implementation of an equivalent to vcfilesysd +//vc_filesys_* + +{==============================================================================} +{VC4 VCHI Interface Functions (From \opt\vc\include\interface\vchi\*)} +{Note: These import the C functions from the Userland libraries, not the functions from the VC4VCHIQ driver unit} +function VCHIInitialise(instance: PPVCHI_INSTANCE_T): int32_t; cdecl; external libvchiq_arm name 'vchi_initialise'; +function VCHIConnect(connections: PPVCHI_CONNECTION_T; num_connections: uint32_t; instance: PVCHI_INSTANCE_T): int32_t; cdecl; external libvchiq_arm name 'vchi_connect'; +function VCHICreateConnection(function_table: PVCHI_CONNECTION_API_T; low_level: PVCHI_MESSAGE_DRIVER_T): PVCHI_CONNECTION_T; cdecl; external libvchiq_arm name 'vchi_create_connection'; + +function VCHISingleGetFuncTable: PVCHI_CONNECTION_API_T; cdecl; external libvchiq_arm name 'single_get_func_table'; +function VCHIMPHIMessageDriverFuncTable: PVCHI_MESSAGE_DRIVER_T; cdecl; external libvchiq_arm name 'vchi_mphi_message_driver_func_table'; + +//To Do //More + +{==============================================================================} +{VC4 VCHIQ_ARM Interface Functions (From \opt\vc\include\interface\vchiq_arm\*)} +{Note: These import the C functions from the Userland libraries, not the functions from the VC4VCHIQ driver unit} +function VCHIQInitialise(Instance: PPVCHIQ_INSTANCE_T): VCHIQ_STATUS_T; cdecl; external libvchiq_arm name 'vchiq_initialise'; + +//To Do //More + {==============================================================================} -{VC4 Functions} +{VC4 VCSM Interface Functions (From \opt\vc\include\interface\vcsm\user-vcsm.h)} +{Note: These import the C functions from the Userland libraries, not the functions from the VC4VCSM driver unit} +procedure VCSMInit; cdecl; external libvcsm name 'vcsm_init'; +procedure VCSMExit; cdecl; external libvcsm name 'vcsm_exit'; + //To Do +//void vcsm_status( VCSM_STATUS_T status, int pid ); +//unsigned int vcsm_malloc( unsigned int size, char *name ); +//unsigned int vcsm_malloc_cache( unsigned int size, VCSM_CACHE_TYPE_T cache, char *name ); +//unsigned int vcsm_malloc_share( unsigned int handle ); +//int vcsm_resize( unsigned int handle, unsigned int new_size ); +//void vcsm_free( unsigned int handle ); +//unsigned int vcsm_vc_hdl_from_ptr( void *usr_ptr ); +//unsigned int vcsm_vc_hdl_from_hdl( unsigned int handle ); +//unsigned int vcsm_usr_handle( void *usr_ptr ); +//void *vcsm_usr_address( unsigned int handle ); +//void *vcsm_lock( unsigned int handle ); +//void *vcsm_lock_cache( unsigned int handle, VCSM_CACHE_TYPE_T cache_update, VCSM_CACHE_TYPE_T *cache_result ); +//int vcsm_unlock_ptr( void *usr_ptr ); +//int vcsm_unlock_ptr_sp( void *usr_ptr, int cache_no_flush ); +//int vcsm_unlock_hdl( unsigned int handle ); +//int vcsm_unlock_hdl_sp( unsigned int handle, int cache_no_flush ); +//int vcsm_clean_invalid( struct vcsm_user_clean_invalid_s *s ); +//Plus extras //vcsm_clean_invalid2 etc + +{==============================================================================} +{VC4 BCMHost Interface Functions (From \opt\vc\include\bcm_host.h)} +procedure BCMHostInit; cdecl; external libbcm_host name 'bcm_host_init'; +procedure BCMHostDeinit; cdecl; external libbcm_host name 'bcm_host_deinit'; + +function BCMHostGetPeripheralAddress: cunsigned; cdecl; external libbcm_host name 'bcm_host_get_peripheral_address'; +function BCMHostGetPeripheralSize: cunsigned; cdecl; external libbcm_host name 'bcm_host_get_peripheral_size'; +function BCMHostGetSdramAddress: cunsigned; cdecl; external libbcm_host name 'bcm_host_get_sdram_address'; + +function BCMHostGraphicsGetDisplaySize(display_number: uint16_t; var width,height: uint32_t): int32_t; cdecl; external libbcm_host name 'graphics_get_display_size'; + +{==============================================================================} +{VC4 MMAL Interface Functions (From \opt\vc\include\interface\mmal\*)} +//To Do //Move to separate MMAL unit + +{==============================================================================} +{VC4 MMAL Component Registration Functions (MMAL_CONSTRUCTOR)} +{Note: MMAL Components are registered during startup using a constructor, these functions force the import of the appropriate static library} +procedure MMALIncludeComponentAggregator; cdecl; external libmmal_components name 'mmal_include_component_aggregator'; +procedure MMALIncludeComponentArtificialCamera; cdecl; external libmmal_components name 'mmal_include_component_artificial_camera'; +procedure MMALIncludeComponentAVCodecAudio; cdecl; external libmmal_components name 'mmal_include_component_avcodec_audio'; +procedure MMALIncludeComponentClock; cdecl; external libmmal_components name 'mmal_include_component_clock'; +procedure MMALIncludeComponentContainerReader; cdecl; external libmmal_components name 'mmal_include_component_container_reader'; +procedure MMALIncludeComponentContainerWriter; cdecl; external libmmal_components name 'mmal_include_component_container_writer'; +procedure MMALIncludeComponentCopy; cdecl; external libmmal_components name 'mmal_include_component_copy'; +procedure MMALIncludeComponentNullSink; cdecl; external libmmal_components name 'mmal_include_component_null_sink'; +procedure MMALIncludeComponentPassthrough; cdecl; external libmmal_components name 'mmal_include_component_passthrough'; +procedure MMALIncludeComponentScheduler; cdecl; external libmmal_components name 'mmal_include_component_scheduler'; +procedure MMALIncludeComponentSDLAudio; cdecl; external libmmal_components name 'mmal_include_component_sdl_audio'; +procedure MMALIncludeComponentSDL; cdecl; external libmmal_components name 'mmal_include_component_sdl'; +procedure MMALIncludeComponentSPDIF; cdecl; external libmmal_components name 'mmal_include_component_spdif'; +procedure MMALIncludeComponentSplitter; cdecl; external libmmal_components name 'mmal_include_component_splitter'; +procedure MMALIncludeComponentVideocore; cdecl; external libmmal_vc_client name 'mmal_include_component_videocore'; + +{==============================================================================} +{VC4 OpenMAX IL Interface Functions (From \opt\vc\include\IL\*)} +//To Do //Move to separate OpenMAX IL unit + +{==============================================================================} +{VC4 Container Interface Functions} +//To Do //Part of MMAL +//See: Userland\containers\core\containers.c + +{==============================================================================} +{VC4 Container and Packetizer Registration Functions (VC_PACKETIZER_REGISTER / VC_CONTAINER_CONSTRUCTOR)} +{Note: Containers and Packetizers are registered during startup using a constructor, these functions force the import of the appropriate static library} +procedure VC4IncludePacketizerAVC1; cdecl; external libcontainers name 'avc1_packetizer_include'; +procedure VC4IncludePacketizerMPGA; cdecl; external libcontainers name 'mpga_packetizer_include'; +procedure VC4IncludePacketizerMPGV; cdecl; external libcontainers name 'mpgv_packetizer_include'; +procedure VC4IncludePacketizerPCM; cdecl; external libcontainers name 'pcm_packetizer_include'; + +{==============================================================================} +{VC4 Helper Functions} +function vc4_mbox_open: int; cdecl; public name 'vc4_mbox_open'; +procedure vc4_mbox_close(file_desc: int); cdecl; public name 'vc4_mbox_close'; + +function vc4_mem_alloc(file_desc: int; size, align, flags: cunsigned): cunsigned; cdecl; public name 'vc4_mem_alloc'; +function vc4_mem_free(file_desc: int; handle: cunsigned): cunsigned; cdecl; public name 'vc4_mem_free'; +function vc4_mem_lock(file_desc: int; handle: cunsigned): cunsigned; cdecl; public name 'vc4_mem_lock'; +function vc4_mem_unlock(file_desc: int; handle: cunsigned): cunsigned; cdecl; public name 'vc4_mem_unlock'; + +function vc4_mapmem(base, size: cunsigned): Pointer; cdecl; public name 'vc4_mapmem'; +procedure vc4_unmapmem(addr: Pointer; size: cunsigned); cdecl; public name 'vc4_unmapmem'; + +function vc4_execute_code(file_desc: int; code, r0, r1, r2, r3, r4, r5: cunsigned): cunsigned; cdecl; public name 'vc4_execute_code'; +function vc4_execute_qpu(file_desc: int; num_qpus, control, noflush, timeout: cunsigned): cunsigned; cdecl; public name 'vc4_execute_qpu'; +function vc4_qpu_enable(file_desc: int; enable: cunsigned): cunsigned; cdecl; public name 'vc4_qpu_enable'; + +//procedure vc4_clean_cache_range(); cdecl; public name 'vc4_clean_cache_range'; //To do +//procedure vc4_invalidate_cache_range(); cdecl; public name 'vc4_invalidate_cache_range'; //To do +//procedure vc4_clean_invalidate_cache_range(); cdecl; public name 'vc4_invalidate_cache_range'; //To do + +{==============================================================================} +{VC4 VCOS Helper Functions} +function vc4_vcos_get_ticks_per_second: uint32_t; cdecl; public name 'vc4_vcos_get_ticks_per_second'; + +{==============================================================================} +{VC4 VCHOSTIF Helper Functions} +function VCFilesysStart:LongWord; +function VCFilesysStop:LongWord; + +procedure VCFilesysAsyncStart(Data:Pointer); + +{==============================================================================} +{VC4 VCHIQ_ARM Helper Functions} +function vc4_vchiq_open: int; cdecl; public name 'vc4_vchiq_open'; +function vc4_vchiq_dup(device: int): int; cdecl; public name 'vc4_vchiq_dup'; +function vc4_vchiq_close(device: int): int; cdecl; public name 'vc4_vchiq_close'; + +function vc4_vchiq_ioctl(device, ioctl_code, argument: int): int; cdecl; public name 'vc4_vchiq_ioctl'; + +{==============================================================================} +{VC4 VCSM Helper Functions} +function vc4_vcsm_open: int; cdecl; public name 'vc4_vcsm_open'; +function vc4_vcsm_close(device: int): int; cdecl; public name 'vc4_vcsm_close'; + +function vc4_vcsm_ioctl(device, ioctl_code, argument: int): int; cdecl; public name 'vc4_vcsm_ioctl'; + +{==============================================================================} +{VC4 BCMHost Helper Functions} +function vc4_bcm_host_get_peripheral_address: cunsigned; cdecl; public name 'vc4_bcm_host_get_peripheral_address'; +function vc4_bcm_host_get_peripheral_size: cunsigned; cdecl; public name 'vc4_bcm_host_get_peripheral_size'; +function vc4_bcm_host_get_sdram_address: cunsigned; cdecl; public name 'vc4_bcm_host_get_sdram_address'; {==============================================================================} {==============================================================================} implementation +uses {$IFDEF CPUARMV6}BCM2835{$ELSE}BCM2837{$ENDIF}; + +{==============================================================================} +{==============================================================================} +const + {VC4 mailbox constants} + {$IFDEF CPUARMV6} + VC4_MBOX_REQUEST_CODE = BCM2835_MBOX_REQUEST_CODE; + + VC4_MBOX_TAG_END = BCM2835_MBOX_TAG_END; + VC4_MBOX_TAG_EXECUTE_QPU = BCM2835_MBOX_TAG_EXECUTE_QPU; + VC4_MBOX_TAG_ENABLE_QPU = BCM2835_MBOX_TAG_ENABLE_QPU; + + VC4_MBOX_TAG_VCHIQ_INIT = BCM2835_MBOX_TAG_VCHIQ_INIT; + + VC4_MAILBOX_0 = BCM2835_MAILBOX_0; + VC4_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC = BCM2835_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC; + {$ELSE} + VC4_MBOX_REQUEST_CODE = BCM2837_MBOX_REQUEST_CODE; + + VC4_MBOX_TAG_END = BCM2837_MBOX_TAG_END; + VC4_MBOX_TAG_EXECUTE_QPU = BCM2837_MBOX_TAG_EXECUTE_QPU; + VC4_MBOX_TAG_ENABLE_QPU = BCM2837_MBOX_TAG_ENABLE_QPU; + + VC4_MBOX_TAG_VCHIQ_INIT = BCM2837_MBOX_TAG_VCHIQ_INIT; + + VC4_MAILBOX_0 = BCM2837_MAILBOX_0; + VC4_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC = BCM2837_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC; + {$ENDIF} +{==============================================================================} +{==============================================================================} +type + {VC4 mailbox types} + {$IFDEF CPUARMV6} + TVC4MailboxHeader = TBCM2835MailboxHeader; + PVC4MailboxHeader = PBCM2835MailboxHeader; + + TVC4MailboxFooter = TBCM2835MailboxFooter; + PVC4MailboxFooter = PBCM2835MailboxFooter; + + TVC4MailboxTagHeader = TBCM2835MailboxTagHeader; + PVC4MailboxTagHeader = PBCM2835MailboxTagHeader; + + TVC4MailboxTagExecuteQPU = TBCM2835MailboxTagExecuteQPU; + PVC4MailboxTagExecuteQPU = PBCM2835MailboxTagExecuteQPU; + + TVC4MailboxTagEnableQPU = TBCM2835MailboxTagEnableQPU; + PVC4MailboxTagEnableQPU = PBCM2835MailboxTagEnableQPU; + {$ELSE} + TVC4MailboxHeader = TBCM2837MailboxHeader; + PVC4MailboxHeader = PBCM2837MailboxHeader; + + TVC4MailboxFooter = TBCM2837MailboxFooter; + PVC4MailboxFooter = PBCM2837MailboxFooter; + + TVC4MailboxTagHeader = TBCM2837MailboxTagHeader; + PVC4MailboxTagHeader = PBCM2837MailboxTagHeader; + + TVC4MailboxTagExecuteQPU = TBCM2837MailboxTagExecuteQPU; + PVC4MailboxTagExecuteQPU = PBCM2837MailboxTagExecuteQPU; + + TVC4MailboxTagEnableQPU = TBCM2837MailboxTagEnableQPU; + PVC4MailboxTagEnableQPU = PBCM2837MailboxTagEnableQPU; + {$ENDIF} +{==============================================================================} +{==============================================================================} +var + {VC4 specific variables} + VC4Initialized:Boolean; + + VC4Lock:TMutexHandle = INVALID_HANDLE_VALUE; + VC4StartupCount:LongWord; + VC4StartupError:LongWord; + + VCFilesysInitialized:Boolean; + VCFilesysInstance:PVCHI_INSTANCE_T; + VCFilesysConnection:PVCHI_CONNECTION_T; + {==============================================================================} {==============================================================================} {Initialization Functions} procedure VC4Init; +{Initialize the VC4 unit and devices} + +{Note: Called only during system startup} begin {} {Check Initialized} if VC4Initialized then Exit; - //To Do + {Create Lock} + VC4Lock:=MutexCreateEx(False,MUTEX_DEFAULT_SPINCOUNT,MUTEX_FLAG_RECURSIVE); + if VC4Lock = INVALID_HANDLE_VALUE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VC4: Failed to create lock'); + end; + + {Set Startup Defaults} + VC4StartupCount:=0; + VC4StartupError:=ERROR_NOT_READY; VC4Initialized:=True; end; +{==============================================================================} + +function VC4Start:LongWord; +{Start the VC4 VCHIQ and VCSM devices} +{Return: ERROR_SUCCESS if completed successfully or another error code on failure} + +{Note: May be called multiple times, each call to VC4Start must have a matching call to VC4Stop} +var + //VCSM:PVCSMDevice; //To Do + VCHIQ:PVCHIQDevice; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Acquire the Lock} + if MutexLock(VC4Lock) = ERROR_SUCCESS then + begin + try + {Check Count} + if VC4StartupCount > 0 then + begin + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: Additional start call'); + {$ENDIF} + + {Increment Count} + Inc(VC4StartupCount); + + {Return Result} + Result:=VC4StartupError; + end + else + begin + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: Initial start call'); + {$ENDIF} + + {Increment Count} + Inc(VC4StartupCount); + + {Initialize Components} + Result:=ERROR_OPERATION_FAILED; + VC4StartupError:=ERROR_OPERATION_FAILED; + + {Find VCHIQ} + VCHIQ:=PVCHIQDevice(DeviceFindByDescription(VCHIQ_DESCRIPTION)); + if VCHIQ = nil then Exit; + + {Start VCHIQ} + if VCHIQDeviceStart(VCHIQ) <> ERROR_SUCCESS then Exit; + + {Find VCSM} + //VCSM:=PVCSMDevice(DeviceFindByDescription(VCSM_DESCRIPTION)); //To Do + //if VCSM = nil then Exit; + + {Start VCSM} + //if VCSMDeviceStart(VCSM) <> ERROR_SUCCESS then Exit; //To Do + + {Start VCFilesys (Using a worker thread)} + WorkerSchedule(500,TWorkerTask(VCFilesysAsyncStart),nil,nil); + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: Start completed'); + {$ENDIF} + + {Return Result} + Result:=ERROR_SUCCESS; + VC4StartupError:=ERROR_SUCCESS; + end; + finally + {Release the Lock} + MutexUnlock(VC4Lock); + end; + end + else + begin + Result:=ERROR_CAN_NOT_COMPLETE; + end; +end; + +{==============================================================================} + +function VC4Stop:LongWord; +{Stop the VC4 VCHIQ and VCSM devices} +{Return: ERROR_SUCCESS if completed successfully or another error code on failure} + +{Note: May be called multiple times, each call to VC4Stop must have a matching call to VC4Start} +var + //VCSM:PVCSMDevice; //To Do + VCHIQ:PVCHIQDevice; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Acquire the Lock} + if MutexLock(VC4Lock) = ERROR_SUCCESS then + begin + try + {Check Started} + Result:=ERROR_OPERATION_FAILED; + if VC4StartupCount = 0 then Exit; + + {Decrement Count} + Dec(VC4StartupCount); + Result:=ERROR_SUCCESS; + if VC4StartupCount > 0 then Exit; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: Final stop call'); + {$ENDIF} + + {Shutdown and Cleanup} + Result:=ERROR_OPERATION_FAILED; + + {Stop VCFilesys} + if VCFilesysStop <> ERROR_SUCCESS then Exit; + + {Find VCHIQ} + VCHIQ:=PVCHIQDevice(DeviceFindByDescription(VCHIQ_DESCRIPTION)); + if VCHIQ = nil then Exit; + + {Stop VCHIQ} + if VCHIQDeviceStop(VCHIQ) <> ERROR_SUCCESS then Exit; + + {Find VCSM} + //VCSM:=PVCSMDevice(DeviceFindByDescription(VCSM_DESCRIPTION)); //To Do + //if VCSM = nil then Exit; + + {Stop VCSM} + //if VCSMDeviceStop(VCSM) <> ERROR_SUCCESS then Exit; //To Do + + {Return Result} + Result:=ERROR_SUCCESS; + VC4StartupError:=ERROR_NOT_READY; + finally + {Release the Lock} + MutexUnlock(VC4Lock); + end; + end + else + begin + Result:=ERROR_CAN_NOT_COMPLETE; + end; +end; + {==============================================================================} {==============================================================================} -{VC4 Functions} -//To Do +{VC4 Mailbox Functions} +function VC4MemoryAllocate(Length,Alignment,Flags:LongWord):THandle; inline; +{Allocate memory from the VC4 GPU} +begin + {} + if Assigned(GPUMemoryAllocateHandler) then + begin + Result:=GPUMemoryAllocateHandler(Length,Alignment,Flags); + end + else + begin + Result:=INVALID_HANDLE_VALUE; + end; +end; + +{==============================================================================} + +function VC4MemoryRelease(Handle:THandle):LongWord; inline; +{Release memory allocated from the VC4 GPU} +begin + {} + if Assigned(GPUMemoryReleaseHandler) then + begin + Result:=GPUMemoryReleaseHandler(Handle); + end + else + begin + Result:=ERROR_CALL_NOT_IMPLEMENTED; + end; +end; + +{==============================================================================} + +function VC4MemoryLock(Handle:THandle):LongWord; inline; +{Lock memory allocated from the VC4 GPU and return an address} +begin + {} + if Assigned(GPUMemoryLockHandler) then + begin + Result:=GPUMemoryLockHandler(Handle); + end + else + begin + Result:=0; + end; +end; + +{==============================================================================} + +function VC4MemoryUnlock(Handle:THandle):LongWord; inline; +{Unlock memory allocated from the VC4 GPU} +begin + {} + if Assigned(GPUMemoryUnlockHandler) then + begin + Result:=GPUMemoryUnlockHandler(Handle); + end + else + begin + Result:=ERROR_CALL_NOT_IMPLEMENTED; + end; +end; + +{==============================================================================} + +function VC4ExecuteCode(Address:Pointer;R0,R1,R2,R3,R4,R5:LongWord):LongWord; inline; +{Execute a block of code on the VC4 GPU} +begin + {} + if Assigned(GPUExecuteCodeHandler) then + begin + Result:=GPUExecuteCodeHandler(Address,R0,R1,R2,R3,R4,R5); + end + else + begin + Result:=0; + end; +end; + +{==============================================================================} + +function VC4QPUEnable(Enable:LongWord):LongWord; inline; +{Enable QPUs using the Mailbox property tags channel} +begin + {} + Result:=V3DQPUEnable(Enable); +end; + +{==============================================================================} + +function VC4QPUExecute(NumQPUs,Control,NoFlush,Timeout:LongWord):LongWord; inline; +{Execute QPU code using the Mailbox property tags channel} +begin + {} + Result:=V3DQPUExecute(NumQPUs,Control,NoFlush,Timeout); +end; + +{==============================================================================} + +function VC4VCHIQEnable(Address:LongWord):LongWord; inline; +{Enable the VCHIQ (Master) using the Mailbox property tags channel} +begin + {} + Result:=VCHIQEnable(Address); +end; + +{==============================================================================} +{==============================================================================} +{VC4 VCOS Interface Functions} + +{==============================================================================} +{==============================================================================} +{VC4 VCHOSTIF Interface Functions} + +{==============================================================================} +{==============================================================================} +{VC4 VCHIQ_ARM Interface Functions} + +{==============================================================================} +{==============================================================================} +{VC4 VCSM Interface Functions} + +{==============================================================================} +{==============================================================================} +{VC4 BCMHost Interface Functions} + +{==============================================================================} +{==============================================================================} +{VC4 MMAL Interface Functions} + +{==============================================================================} +{==============================================================================} +{VC4 Container Interface Functions} + +{==============================================================================} +{==============================================================================} +{VC4 Helper Functions} +function vc4_mbox_open: int; cdecl; +{Open the VC4 mailbox (Dummy only)} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Entry:PHandleEntry; +begin + {Dummy only} + Result:=-1; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mbox_open'); + {$ENDIF} + + {Create Handle} + Entry:=HandleCreateEx('',HANDLE_FLAG_NONE,THandle(-1),HANDLE_TYPE_DEVICE); + if Entry = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Return Handle} + Result:=Entry^.Handle; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mbox_open (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +procedure vc4_mbox_close(file_desc: int); cdecl; +{Close the VC4 mailbox (Dummy only)} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Entry:PHandleEntry; + ResultCode:LongWord; +begin + {Dummy only} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mbox_close (file_desc=' + IntToStr(file_desc) + ')'); + {$ENDIF} + + {Get Handle} + Entry:=HandleGet(file_desc); + if Entry = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Destroy Handle} + ResultCode:=HandleDestroy(file_desc); + if (ResultCode <> ERROR_SUCCESS) and (ResultCode <> ERROR_IN_USE) then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + end; +end; + +{==============================================================================} + +function vc4_mem_alloc(file_desc: int; size, align, flags: cunsigned): cunsigned; cdecl; +{Allocate memory from the VC4 GPU} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mem_alloc (file_desc=' + IntToStr(file_desc) + ' size=' + IntToStr(size) + ' align=' + IntToStr(align) + ' flags=' + IntToHex(flags,8) + ')'); + {$ENDIF} + + if Assigned(GPUMemoryAllocateHandler) then + begin + Result:=GPUMemoryAllocateHandler(size,align,flags); + end + else + begin + Result:=LongWord(INVALID_HANDLE_VALUE); + end; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mem_alloc (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_mem_free(file_desc: int; handle: cunsigned): cunsigned; cdecl; +{Release memory allocated from the VC4 GPU} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mem_free (file_desc=' + IntToStr(file_desc) + ' handle=' + IntToHex(handle,8) + ')'); + {$ENDIF} + + if Assigned(GPUMemoryReleaseHandler) then + begin + Result:=GPUMemoryReleaseHandler(handle); + end + else + begin + Result:=ERROR_CALL_NOT_IMPLEMENTED; + end; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mem_free (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_mem_lock(file_desc: int; handle: cunsigned): cunsigned; cdecl; +{Lock memory allocated from the VC4 GPU and return an address} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mem_lock (file_desc=' + IntToStr(file_desc) + ' handle=' + IntToHex(handle,8) + ')'); + {$ENDIF} + + if Assigned(GPUMemoryLockHandler) then + begin + Result:=GPUMemoryLockHandler(handle); + end + else + begin + Result:=0; + end; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mem_lock (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_mem_unlock(file_desc: int; handle: cunsigned): cunsigned; cdecl; +{Unlock memory allocated from the VC4 GPU} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mem_unlock (file_desc=' + IntToStr(file_desc) + ' handle=' + IntToHex(handle,8) + ')'); + {$ENDIF} + + if Assigned(GPUMemoryUnlockHandler) then + begin + Result:=GPUMemoryUnlockHandler(handle); + end + else + begin + Result:=ERROR_CALL_NOT_IMPLEMENTED; + end; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mem_unlock (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_mapmem(base, size: cunsigned): Pointer; cdecl; +{Map a block of memory into the current address space (Dummy only)} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {Dummy only} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mapmem (base=' + IntToHex(base,8) + ' size=' + IntToStr(size) + ')'); + {$ENDIF} + + Result:=Pointer(base); + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_mapmem (Result=' + IntToHex(PtrUInt(Result),8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +procedure vc4_unmapmem(addr: Pointer; size: cunsigned); cdecl; +{Unmap a block of memory from the current address space (Dummy only)} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {Dummy only} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_unmapmem (addr=' + IntToHex(PtrUInt(addr),8) + ' size=' + IntToStr(size) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_execute_code(file_desc: int; code, r0, r1, r2, r3, r4, r5: cunsigned): cunsigned; cdecl; +{Execute a block of code on the VC4 GPU} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_execute_code (file_desc=' + IntToStr(file_desc) + ' code=' + IntToHex(code,8) + ' r0=' + IntToStr(r0) + ' r1=' + IntToStr(r1) + ' r2=' + IntToStr(r2) + ' r3=' + IntToStr(r3) + ' r4=' + IntToStr(r4) + ' r5=' + IntToStr(r5) + ')'); + {$ENDIF} + + if Assigned(GPUExecuteCodeHandler) then + begin + Result:=GPUExecuteCodeHandler(Pointer(code),r0,r1,r2,r3,r4,r5); + end + else + begin + Result:=0; + end; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_execute_code (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_execute_qpu(file_desc: int; num_qpus, control, noflush, timeout: cunsigned): cunsigned; cdecl; +{Execute QPU code using the Mailbox property tags channel} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_execute_qpu (file_desc=' + IntToStr(file_desc) + ' num_qpus=' + IntToStr(num_qpus) + ' control=' + IntToStr(control) + ' noflush=' + IntToStr(noflush) + ' timeout=' + IntToStr(timeout) + ')'); + {$ENDIF} + + Result:=V3DQPUExecute(num_qpus,control,noflush,timeout); + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_execute_qpu (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_qpu_enable(file_desc: int; enable: cunsigned): cunsigned; cdecl; +{Enable QPUs using the Mailbox property tags channel} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_qpu_enable (file_desc=' + IntToStr(file_desc) + ' enable=' + IntToStr(enable) + ')'); + {$ENDIF} + + Result:=V3DQPUEnable(enable); + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_qpu_enable (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} +{==============================================================================} +{VC4 VCOS Helper Functions} +function vc4_vcos_get_ticks_per_second: uint32_t; cdecl; +{Get the number of scheduler ticks per second for the current platform} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=SCHEDULER_INTERRUPTS_PER_SECOND; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vcos_get_ticks_per_second (Result=' + IntToStr(Result) + ')'); + {$ENDIF} +end; + +{==============================================================================} +{==============================================================================} +{VC4 VCHOSTIF Helper Functions} +function VCFilesysStart:LongWord; +{Start the VC File Service} +var + Status:VCHIQ_STATUS_T; + Success:Integer; + VCHIQInstance:PVCHIQ_INSTANCE_T; +begin + {} + Result:=ERROR_OPERATION_FAILED; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: VCFilesysStart'); + {$ENDIF} + + if VC4_FILESYS_START then + begin + if VCFilesysInitialized then Exit; + + {Initialize VCOS} + VCOSInit; + + {Initialize VCHIQ} + Status:=VCHIQInitialise(@VCHIQInstance); + if Status <> VCHIQ_SUCCESS then Exit; + + {Initialize VCHI} + Success:=VCHIInitialise(@VCFilesysInstance); + if Success <> 0 then Exit; + + VCHIQInstance:=PVCHIQ_INSTANCE_T(VCFilesysInstance); + + {Create VCHI Connection} + VCFilesysConnection:=VCHICreateConnection(VCHISingleGetFuncTable,VCHIMPHIMessageDriverFuncTable); + + {Connect VCHI} + Success:=VCHIConnect(@VCFilesysConnection,1,VCFilesysInstance); + + {Initialize File Service} + Success:=VCVCHIFilesysInit(VCFilesysInstance,@VCFilesysConnection,1); + + VCFilesysInitialized:=True; + end; + + Result:=ERROR_SUCCESS; +end; + +{==============================================================================} + +function VCFilesysStop:LongWord; +{Stop the VC File Service} +begin + {} + Result:=ERROR_OPERATION_FAILED; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: VCFilesysStop'); + {$ENDIF} + + if VC4_FILESYS_START then + begin + if not VCFilesysInitialized then Exit; + + {Deinitialize File Service} + VCFilesysDeinit; + + {Deinitialize VCOS} + VCOSDeinit; + + VCFilesysInitialized:=False; + end; + + Result:=ERROR_SUCCESS; +end; + +{==============================================================================} + +procedure VCFilesysAsyncStart(Data:Pointer); +{Asynchronously start the VC File Service (Using a worker thread)} +begin + {} + {Wait for Ready} + while not(SysInitCompleted) do + begin + ThreadSleep(0); + end; + + {Start VC File Service} + VCFilesysStart; +end; + +{==============================================================================} +{==============================================================================} +{VC4 VCHIQ_ARM Helper Functions} +function vc4_vchiq_open: int; cdecl; +{Open a handle to the VCHIQ device} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Status:LongWord; + VCHIQ:PVCHIQDevice; + Entry:PHandleEntry; + Instance:PVCHIQInstance; +begin + {} + Result:=-1; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vchiq_open'); + {$ENDIF} + + {Start VC4} + Status:=VC4Start; + if Status <> ERROR_SUCCESS then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Find VCHIQ} + VCHIQ:=PVCHIQDevice(DeviceFindByDescription(VCHIQ_DESCRIPTION)); + if VCHIQ = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Open VCHIQ} + Instance:=VCHIQDeviceOpen(VCHIQ); + if Instance = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Create Handle} + Entry:=HandleCreateEx('',HANDLE_FLAG_DUPLICATE,THandle(Instance),HANDLE_TYPE_DEVICE); + if Entry = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Return Handle} + Result:=Entry^.Handle; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vchiq_open (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_vchiq_dup(device: int): int; cdecl; +{Duplicate a VCHIQ device handle} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Handle:THandle; + Status:LongWord; + Entry:PHandleEntry; +begin + {} + Result:=-1; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vchiq_dup (device=' + IntToHex(device,8) + ')'); + {$ENDIF} + + {Get Handle} + Entry:=HandleGet(device); + if Entry = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Start VC4} + Status:=VC4Start; + if Status <> ERROR_SUCCESS then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + //To Do //Instance //Open etc ? + + {Duplicate Handle} + Handle:=HandleDuplicate(Entry^.Handle); + if Handle = INVALID_HANDLE_VALUE then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Return Result} + Result:=Handle; +end; + +{==============================================================================} + +function vc4_vchiq_close(device: int): int; cdecl; +{Close a handle to the VCHIQ device} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Status:LongWord; + Entry:PHandleEntry; + ResultCode:LongWord; + Instance:PVCHIQInstance; +begin + {} + Result:=-1; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vchiq_close (device=' + IntToHex(device,8) + ')'); + {$ENDIF} + + {Get Handle} + Entry:=HandleGet(device); + if Entry = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Get Instance} + Instance:=PVCHIQInstance(Entry^.Data); + if Instance = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Close VCHIQ} + Status:=VCHIQDeviceClose(Instance.VCHIQ,Instance); + if Status <> ERROR_SUCCESS then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Stop VC4} + Status:=VC4Stop; + if Status <> ERROR_SUCCESS then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Destroy Handle} + ResultCode:=HandleDestroy(device); + if (ResultCode = ERROR_SUCCESS) or (ResultCode = ERROR_IN_USE) then + begin + {Return Result} + Result:=0; + end + else + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + end; +end; + +{==============================================================================} + +function vc4_vchiq_ioctl(device, ioctl_code, argument: int): int; cdecl; +{Send an IO Control request to the VCHIQ device} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Status:LongWord; + Response:LongWord; + Entry:PHandleEntry; + Instance:PVCHIQInstance; +begin + {} + Result:=-1; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vchiq_ioctl (device=' + IntToHex(device,8) + ' ioctl_code=' + IntToHex(ioctl_code,8) + ' argument=' + IntToHex(argument,8) + ')'); + {$ENDIF} + + {Get Handle} + Entry:=HandleGet(device); + if Entry = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Get Instance} + Instance:=PVCHIQInstance(Entry^.Data); + if Instance = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Control VCHIQ} + Status:=VCHIQDeviceControl(Instance.VCHIQ,Instance,ioctl_code,argument,Response); + if Status <> ERROR_SUCCESS then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then + begin + {Check Status} + case Status of + ERROR_INVALID_PARAMETER:ptr^._errno:=EINVAL; + ERROR_NOT_ENOUGH_MEMORY:ptr^._errno:=ENOMEM; + ERROR_NOT_OPEN:ptr^._errno:=ENOTCONN; + ERROR_ALREADY_EXISTS:ptr^._errno:=EEXIST; + ERROR_IN_USE:ptr^._errno:=EWOULDBLOCK; + ERROR_OPERATION_FAILED:ptr^._errno:=EIO; + ERROR_INSUFFICIENT_BUFFER:ptr^._errno:=EMSGSIZE; + ERROR_INVALID_DATA:ptr^._errno:=EFAULT; + ERROR_NOT_FOUND:ptr^._errno:=ESRCH; + else + begin + ptr^._errno:=EINVAL; + end; + end; + + {Return Error} + Result:=-ptr^._errno; + end; + + //To Do // EINTR ? + // ENOTTY ? + Exit; + end; + + {Return Response} + Result:=Response; +end; + +{==============================================================================} +{==============================================================================} +{VC4 VCSM Helper Functions} +function vc4_vcsm_open: int; cdecl; +{Open a handle to the VCSM device} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Status:LongWord; + //VCSM:PVCSMDevice; //To Do + Entry:PHandleEntry; +begin + {} + Result:=-1; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vcsm_open'); + {$ENDIF} + + {Start VC4} + Status:=VC4Start; + if Status <> ERROR_SUCCESS then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Find VCSM} + //VCSM:=PVCSMDevice(DeviceFindByDescription(VCSM_DESCRIPTION)); //To Do + //if VCSM = nil then + // begin + // {Return Error} + // ptr:=__getreent; + // if ptr <> nil then ptr^._errno:=EINVAL; + // + // Exit; + // end; + + {Create Handle} + //Entry:=HandleCreateEx('',HANDLE_FLAG_DUPLICATE,THandle(VCSM),HANDLE_TYPE_DEVICE); //To Do + //if Entry = nil then + // begin + // {Return Error} + // ptr:=__getreent; + // if ptr <> nil then ptr^._errno:=EINVAL; + // + // Exit; + // end; + + {Return Handle} + //Result:=Entry^.Handle; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vcsm_open (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_vcsm_close(device: int): int; cdecl; +{Close a handle to the VCSM device} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Status:LongWord; + Entry:PHandleEntry; + ResultCode:LongWord; +begin + {} + Result:=-1; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vcsm_close (device=' + IntToHex(device,8) + ')'); + {$ENDIF} + + {Get Handle} + Entry:=HandleGet(device); + if Entry = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Stop VC4} + Status:=VC4Stop; + if Status <> ERROR_SUCCESS then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Destroy Handle} + ResultCode:=HandleDestroy(device); + if (ResultCode = ERROR_SUCCESS) or (ResultCode = ERROR_IN_USE) then + begin + {Return Result} + Result:=0; + end + else + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + end; +end; + +{==============================================================================} + +function vc4_vcsm_ioctl(device, ioctl_code, argument: int): int; cdecl; +{Send an IO Control request to the VCSM device} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +var + ptr:P_reent; + Status:LongWord; + Response:LongWord; + Entry:PHandleEntry; +begin + {} + Result:=-1; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_vcsm_ioctl (device=' + IntToHex(device,8) + ' ioctl_code=' + IntToHex(ioctl_code,8) + ' argument=' + IntToHex(argument,8) + ')'); + {$ENDIF} + + {Get Handle} + Entry:=HandleGet(device); + if Entry = nil then + begin + {Return Error} + ptr:=__getreent; + if ptr <> nil then ptr^._errno:=EINVAL; + + Exit; + end; + + {Call Device Control} + //Status:=VCSMDeviceControl(PVCSMDevice(Entry^.Data),ioctl_code,argument,Response); //To Do + //if Status <> ERROR_SUCCESS then + // begin + // {Return Error} + // ptr:=__getreent; + // if ptr <> nil then + // begin + // {Check Status} + // case Status of + // ERROR_INVALID_PARAMETER:ptr^._errno:=EINVAL; + // ERROR_NOT_ENOUGH_MEMORY:ptr^._errno:=ENOMEM; + // ERROR_NOT_OPEN:ptr^._errno:=ENOTCONN; + // ERROR_ALREADY_EXISTS:ptr^._errno:=EEXIST; + // ERROR_IN_USE:ptr^._errno:=EWOULDBLOCK; + // ERROR_OPERATION_FAILED:ptr^._errno:=EIO; + // ERROR_INSUFFICIENT_BUFFER:ptr^._errno:=EMSGSIZE; + // ERROR_INVALID_DATA:ptr^._errno:=EFAULT; + // ERROR_NOT_FOUND:ptr^._errno:=ESRCH; + // else + // begin + // ptr^._errno:=EINVAL; + // end; + // end; + // + // {Return Error} + // Result:=-ptr^._errno; + // end; + // + // //To Do // EINTR ? + // // ENOTTY ? + // Exit; + // end; + + //{Return Response} + //Result:=Response; +end; + +{==============================================================================} +{==============================================================================} +{VC4 BCMHost Helper Functions} +function vc4_bcm_host_get_peripheral_address: cunsigned; cdecl; +{Get the peripheral base address for the current host} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=PeripheralGetBase; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_bcm_host_get_peripheral_address (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_bcm_host_get_peripheral_size: cunsigned; cdecl; +{Get the peripheral address size for the current host} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=PeripheralGetSize; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_bcm_host_get_peripheral_size (Result=' + IntToStr(Result) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function vc4_bcm_host_get_sdram_address: cunsigned; cdecl; +{Get the physical addrss of the peripheral address space for the current host} + +{Note: Exported function for use by C libraries, not intended to be called by applications} +begin + {} + Result:=BUS_ALIAS; + + {$IFDEF VC4_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VC4: vc4_bcm_host_get_sdram_address (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} +end; {==============================================================================} {==============================================================================} @@ -118,7 +2331,7 @@ initialization {==============================================================================} finalization - {Nothing} + VC4Stop; {==============================================================================} {==============================================================================} diff --git a/source/rtl/ultibo/core/vc4v3d.pas b/source/rtl/ultibo/core/vc4v3d.pas new file mode 100644 index 0000000..5f88b96 --- /dev/null +++ b/source/rtl/ultibo/core/vc4v3d.pas @@ -0,0 +1,745 @@ +{ +Ultibo Broadcom VideoCoreIV V3D interface unit. + +Copyright (C) 2017 - SoftOz Pty Ltd. + +Arch +==== + + ARMv6 (ARM1176) + ARMv7 (Cortex A7) + ARMv8 (Cortex A53) + +Boards +====== + + Raspberry Pi - Model A/B/A+/B+/CM1 + Raspberry Pi - Model Zero/ZeroW + Raspberry Pi 2 - Model B + Raspberry Pi 3 - Model B + Raspberry Pi CM3 + +Licence +======= + + LGPLv2.1 with static linking exception (See COPYING.modifiedLGPL.txt) + +Credits +======= + + Information for this unit was obtained from: + + PeterLemon (RaspberryPi) - https://github.com/PeterLemon/RaspberryPi + +References +========== + + VideoCore IV 3D Architecture Reference Guide - https://docs.broadcom.com/docs/12358545 + +VideoCore IV V3D +================ + + V3D Interface + ------------- + + The V3D is one of many components that make up the VideoCore IV GPU. + + This unit defines register values and constants needed for programming the V3D. + + For full documentation please see the VideoCore IV 3D Architecture Reference Guide + +} + +{$mode delphi} {Default to Delphi compatible syntax} +{$H+} {Default to AnsiString} +{$inline on} {Allow use of Inline procedures} + +unit VC4V3D; + +interface + +uses GlobalConfig,GlobalConst,GlobalTypes,Platform,Threads,HeapManager,Devices,SysUtils; + +{==============================================================================} +{Global definitions} +{$INCLUDE GlobalDefines.inc} + +{==============================================================================} +const + {V3D specific constants} + V3D_BASE = $C00000; {V3D Base Address (PERIPHERALS_BASE + V3D_BASE)} + + {V3D Register Address Map} + V3D_IDENT0 = $00000; {V3D Identification 0 (V3D Block Identity)} + V3D_IDENT1 = $00004; {V3D Identification 1 (V3D Configuration A)} + V3D_IDENT2 = $00008; {V3D Identification 2 (V3D Configuration B)} + V3D_IDENT3 = $0000C; {V3D Identification 3 (V3D Configuration C)} + V3D_SCRATCH = $00010; {V3D Scratch Register} + V3D_L2CACTL = $00020; {V3D L2 Cache Control} + V3D_SLCACTL = $00024; {V3D Slices Cache Control} + V3D_INTCTL = $00030; {V3D Interrupt Control} + V3D_INTENA = $00034; {V3D Interrupt Enables} + V3D_INTDIS = $00038; {V3D Interrupt Disables} + V3D_CT0CS = $00100; {V3D Control List Executor Thread 0 Control & Status} + V3D_CT1CS = $00104; {V3D Control List Executor Thread 1 Control & Status} + V3D_CT0EA = $00108; {V3D Control List Executor Thread 0 End Address} + V3D_CT1EA = $0010C; {V3D Control List Executor Thread 1 End Address} + V3D_CT0CA = $00110; {V3D Control List Executor Thread 0 Current Address} + V3D_CT1CA = $00114; {V3D Control List Executor Thread 1 Current Address} + V3D_CT0RA0 = $00118; {V3D Control List Executor Thread 0 Return Address} + V3D_CT1RA0 = $0011C; {V3D Control List Executor Thread 1 Return Address} + V3D_CT0LC = $00120; {V3D Control List Executor Thread 0 List Counter} + V3D_CT1LC = $00124; {V3D Control List Executor Thread 1 List Counter} + V3D_CT0PC = $00128; {V3D Control List Executor Thread 0 Primitive List Counter} + V3D_CT1PC = $0012C; {V3D Control List Executor Thread 1 Primitive List Counter} + V3D_PCS = $00130; {V3D Pipeline Control & Status} + V3D_BFC = $00134; {V3D Binning Mode Flush Count} + V3D_RFC = $00138; {V3D Rendering Mode Frame Count} + V3D_BPCA = $00300; {V3D Current Address Of Binning Memory Pool} + V3D_BPCS = $00304; {V3D Remaining Size Of Binning Memory Pool} + V3D_BPOA = $00308; {V3D Address Of Overspill Binning Memory Block} + V3D_BPOS = $0030C; {V3D Size Of Overspill Binning Memory Block} + V3D_BXCF = $00310; {V3D Binner Debug} + V3D_SQRSV0 = $00410; {V3D Reserve QPUs 0-7} + V3D_SQRSV1 = $00414; {V3D Reserve QPUs 8-15} + V3D_SQCNTL = $00418; {V3D QPU Scheduler Control} + V3D_SQCSTAT = $0041C; {V3D QPU Scheduler State} + V3D_SRQPC = $00430; {V3D QPU User Program Request Program Address} + V3D_SRQUA = $00434; {V3D QPU User Program Request Uniforms Address} + V3D_SRQUL = $00438; {V3D QPU User Program Request Uniforms Length} + V3D_SRQCS = $0043C; {V3D QPU User Program Request Control & Status} + V3D_VPACNTL = $00500; {V3D VPM Allocator Control} + V3D_VPMBASE = $00504; {V3D VPM Base (User) Memory Reservation} + V3D_PCTRC = $00670; {V3D Performance Counter Clear} + V3D_PCTRE = $00674; {V3D Performance Counter Enables} + V3D_PCTR0 = $00680; {V3D Performance Counter Count 0} + V3D_PCTRS0 = $00684; {V3D Performance Counter Mapping 0} + V3D_PCTR1 = $00688; {V3D Performance Counter Count 1} + V3D_PCTRS1 = $0068C; {V3D Performance Counter Mapping 1} + V3D_PCTR2 = $00690; {V3D Performance Counter Count 2} + V3D_PCTRS2 = $00694; {V3D Performance Counter Mapping 2} + V3D_PCTR3 = $00698; {V3D Performance Counter Count 3} + V3D_PCTRS3 = $0069C; {V3D Performance Counter Mapping 3} + V3D_PCTR4 = $006A0; {V3D Performance Counter Count 4} + V3D_PCTRS4 = $006A4; {V3D Performance Counter Mapping 4} + V3D_PCTR5 = $006A8; {V3D Performance Counter Count 5} + V3D_PCTRS5 = $006AC; {V3D Performance Counter Mapping 5} + V3D_PCTR6 = $006B0; {V3D Performance Counter Count 6} + V3D_PCTRS6 = $006B4; {V3D Performance Counter Mapping 6} + V3D_PCTR7 = $006B8; {V3D Performance Counter Count 7} + V3D_PCTRS7 = $006BC; {V3D Performance Counter Mapping 7} + V3D_PCTR8 = $006C0; {V3D Performance Counter Count 8} + V3D_PCTRS8 = $006C4; {V3D Performance Counter Mapping 8} + V3D_PCTR9 = $006C8; {V3D Performance Counter Count 9} + V3D_PCTRS9 = $006CC; {V3D Performance Counter Mapping 9} + V3D_PCTR10 = $006D0; {V3D Performance Counter Count 10} + V3D_PCTRS10 = $006D4; {V3D Performance Counter Mapping 10} + V3D_PCTR11 = $006D8; {V3D Performance Counter Count 11} + V3D_PCTRS11 = $006DC; {V3D Performance Counter Mapping 11} + V3D_PCTR12 = $006E0; {V3D Performance Counter Count 12} + V3D_PCTRS12 = $006E4; {V3D Performance Counter Mapping 12} + V3D_PCTR13 = $006E8; {V3D Performance Counter Count 13} + V3D_PCTRS13 = $006EC; {V3D Performance Counter Mapping 13} + V3D_PCTR14 = $006F0; {V3D Performance Counter Count 14} + V3D_PCTRS14 = $006F4; {V3D Performance Counter Mapping 14} + V3D_PCTR15 = $006F8; {V3D Performance Counter Count 15} + V3D_PCTRS15 = $006FC; {V3D Performance Counter Mapping 15} + V3D_DBCFG = $00E00; {V3D Configure} + V3D_DBSCS = $00E04; {V3D S Control & Status} + V3D_DBSCFG = $00E08; {V3D S Configure} + V3D_DBSSR = $00E0C; {V3D S SR} + V3D_DBSDR0 = $00E10; {V3D SD R0} + V3D_DBSDR1 = $00E14; {V3D SD R1} + V3D_DBSDR2 = $00E18; {V3D SD R2} + V3D_DBSDR3 = $00E1C; {V3D SD R3} + V3D_DBQRUN = $00E20; {V3D QPU Run} + V3D_DBQHLT = $00E24; {V3D QPU Halt} + V3D_DBQSTP = $00E28; {V3D QPU Step} + V3D_DBQITE = $00E2C; {V3D QPU Interrupt Enables} + V3D_DBQITC = $00E30; {V3D QPU Interrupt Control} + V3D_DBQGHC = $00E34; {V3D QPU GHC} + V3D_DBQGHG = $00E38; {V3D QPU GHG} + V3D_DBQGHH = $00E3C; {V3D QPU GHH} + V3D_DBGE = $00F00; {V3D PSE Error Signals} + V3D_FDBGO = $00F04; {V3D FEP Overrun Error Signals} + V3D_FDBGB = $00F08; {V3D FEP Interface Ready & Stall Signals, FEP Busy Signals} + V3D_FDBGR = $00F0C; {V3D FEP Internal Ready Signals} + V3D_FDBGS = $00F10; {V3D FEP Internal Stall Input Signals} + V3D_ERRSTAT = $00F20; {V3D Miscellaneous Error Signals (VPM, VDW, VCD, VCM, L2C)} + + {V3D Identity Registers} + {V3D_IDENT0: V3D Identification 0 (V3D Block Identity) Register Description} + IDSTR = $00FFFFFF; {V3D_IDENT0: V3D ID String (Reads As "V3D") READ} + TVER = $FF000000; {V3D_IDENT0: V3D Technology Version (Reads Technology Version = 2) READ} + + {V3D_IDENT1: V3D Identification 1 (V3D Configuration A) Register Description} + REVR = $0000000F; {V3D_IDENT1: V3D Revision READ} + NSLC = $000000F0; {V3D_IDENT1: Number Of Slices READ} + QUPS = $00000F00; {V3D_IDENT1: Number Of QPUs Per Slice READ} + TUPS = $0000F000; {V3D_IDENT1: Number Of TMUs Per Slice READ} + NSEM = $00FF0000; {V3D_IDENT1: Number Of Semaphores READ} + HDRT = $0F000000; {V3D_IDENT1: HDR Support (0 = Not Supported, 1 = Supported) READ} + VPMSZ = $F0000000; {V3D_IDENT1: VPM Memory Size (Multiples Of 1K, 0 => 16K) READ} + + {V3D_IDENT2: V3D Identification 2 (V3D Configuration B) Register Description} + VRISZ = $0000000F; {V3D_IDENT2: VRI Memory Size (0 = Half Size, 1 = Full Size) READ} + TLBSZ = $000000F0; {V3D_IDENT2: Tile Buffer Size (0 = Quarter Size, 1 = Half Size, 2 = Full Size (32x32msm)) READ} + TLBDB = $00000F00; {V3D_IDENT2: Tile Buffer Double-Buffer Mode Support (0 = Not Supported, 1 = Supported) READ} + + {V3D Miscellaneous Registers} + {V3D_SCRATCH: V3D Scratch Register Description} + SCRATCH = $FFFFFFFF; {V3D_SCRATCH: Scratch Register (Read/Write Registers For General Purposes) READ/WRITE} + + {V3D Cache Control Registers} + {V3D_L2CACTL: V3D L2 Cache Control Register Description} + L2CENA = $00000001; {V3D_L2CACTL: L2 Cache Enable (Reads State Of Cache Enable Bit, Write To Enable The L2 Cache) READ/WRITE} + L2CDIS = $00000002; {V3D_L2CACTL: L2 Cache Disable (Write To Disable The L2 Cache) WRITE} + L2CCLR = $00000004; {V3D_L2CACTL: L2 Cache Clear (Write To Clear The L2 Cache) WRITE} + + {V3D_SLCACTL: V3D Slices Cache Control Register Description} + ICCS0_to_ICCS3 = $0000000F; {V3D_SLCACTL: Instruction Cache Clear Bits (Write To Clear Instruction Cache) WRITE} + UCCS0_to_UCCS3 = $00000F00; {V3D_SLCACTL: Uniforms Cache Clear Bits (Write To Clear Uniforms Cache) WRITE} + T0CCS0_to_T0CCS3 = $000F0000; {V3D_SLCACTL: TMU0 Cache Clear Bits (Write To Clear TMU0 Cache) WRITE} + T1CCS0_to_T1CCS3 = $0F000000; {V3D_SLCACTL: TMU1 Cache Clear Bits (Write To Clear TMU1 Cache) WRITE} + + {V3D Pipeline Interrupt Control} + {V3D_INTCTL: V3D Interrupt Control Register Description} + INT_FRDONE = $00000001; {V3D_INTCTL: Render Mode Frame Done Interrupt Status (Set When All Tiles Of The Frame Have Been Written To Memory) READ/WRITE} + INT_FLDONE = $00000002; {V3D_INTCTL: Binning Mode Flush Done Interrupt Status (Set When Binning Is Complete With All Tile Lists Flushed To Memory) READ/WRITE} + INT_OUTOMEM = $00000004; {V3D_INTCTL: Binner Out Of Memory Interrupt Status (Set While The Binner Needs More Memory To Complete) READ/WRITE} + INT_SPILLUSE = $00000008; {V3D_INTCTL: Binner Used Overspill Memory Interrupt Status (Set When The Binner Starts Using The (Valid) Overspill Memory Buffer) READ/WRITE} + + {V3D_INTENA: V3D Interrupt Enables Register Description} + EI_FRDONE = $00000001; {V3D_INTENA: Render Mode Frame Done Interrupt Enable (Set When The INT_FRDONE Interrupt Is Set) READ/WRITE} + EI_FLDONE = $00000002; {V3D_INTENA: Binning Mode Flush Done Interrupt Enable (Set When The INT_FLDONE Interrupt Is Set) READ/WRITE} + EI_OUTOMEM = $00000004; {V3D_INTENA: Binner Out Of Memory Interrupt Enable (Set When The INT_OUTOMEM Interrupt Is Set) READ/WRITE} + EI_SPILLUSE = $00000008; {V3D_INTENA: Binner Used Overspill Memory Interrupt Enable (Set When The INT_SPILLUSE Interrupt Is Set) READ/WRITE} + + {V3D_INTDIS: V3D Interrupt Disables Register Description} + DI_FRDONE = $00000001; {V3D_INTDIS: Render Mode Frame Done Interrupt Disable (Set When The INT_FRDONE Interrupt Is Set) READ/WRITE} + DI_FLDONE = $00000002; {V3D_INTDIS: Binning Mode Flush Done Interrupt Disable (Set When The INT_FLDONE Interrupt Is Set) READ/WRITE} + DI_OUTOMEM = $00000004; {V3D_INTDIS: Binner Out Of Memory Interrupt Disable (Set When The INT_OUTOMEM Interrupt Is Set) READ/WRITE} + DI_SPILLUSE = $00000008; {V3D_INTDIS: Binner Used Overspill Memory Interrupt Disable (Set When The INT_SPILLUSE Interrupt Is Set) READ/WRITE} + + {V3D Control List Executor Registers (Per Thread)} + {V3D_CTnCS: V3D Control List Executor Thread n Control & Status Register Description} + CTMODE = $00000001; {V3D_CTnCS: Control Thread Mode (Binning Mode Thread Only) READ} + CTERR = $00000008; {V3D_CTnCS: Control Thread Error (Set When Stopped With An Error, Cleared On Restarting) READ} + CTSUBS = $00000010; {V3D_CTnCS: Control Thread Sub-Mode READ/WRITE} + CTRUN = $00000020; {V3D_CTnCS: Control Thread Run READ/WRITE} + CTRTSD = $00000300; {V3D_CTnCS: Return Stack Depth (Number Of Levels Of List Nesting) READ} + CTSEMA = $00007000; {V3D_CTnCS: Counting Semaphore (Current State Of The Counting Semaphore For This Thread) READ} + CTRSTA = $00008000; {V3D_CTnCS: Reset Bit (Writing 1 Stops The Control Thread & Resets All Bits In This Register) WRITE} + + {V3D_CTnEA: V3D Control List Executor Thread n End Address Register Description} + CTLEA = $FFFFFFFF; {V3D_CTnEA: Control List End Address (Set To The Byte Address After The Last Record In The Control List) READ/WRITE} + + {V3D_CTnCA: V3D Control List Executor Thread n Current Address Register Description} + CTLCA = $FFFFFFFF; {V3D_CTnCA: Control List Current Address (Points To The Address Of The Current Record In The Control List) READ/WRITE} + + {V3D_CTnRA0: V3D Control List Executor Thread n Return Address Register Description} + CTLRA = $FFFFFFFF; {V3D_CTnRA0: Control List Return Address 0 (Address On Return Address Stack) READ} + + {V3D_CTnLC: V3D Control List Executor Thread n List Counter Register Description} + CTLSLCS = $0000FFFF; {V3D_CTnLC: Sub-list Counter (Count Of Return Commands Encountered) READ/WRITE} + CTLLCM = $FFFF0000; {V3D_CTnLC: Major List Counter (Count Of Flush Commands Encountered) READ/WRITE} + + {V3D_CTnPC: V3D Control List Executor Thread n Primitive List Counter Register Description} + CTLPC = $FFFFFFFF; {V3D_CTnPC: Primitive List Counter (Count Of Primitives Remaining Whilst Processing A Primitive List) READ} + + {V3D Pipeline Registers} + {V3D_PCS: V3D Pipeline Control & Status Register Description} + BMACTIVE = $00000001; {V3D_PCS: Binning Mode Active (Set While Binning Pipeline Is In Use) READ} + BMBUSY = $00000002; {V3D_PCS: Binning Mode Busy (Set While Any Binning Operations Are Actually In Progress) READ} + RMACTIVE = $00000004; {V3D_PCS: Rendering Mode Active (Set While Rendering Pipeline Is In Use) READ} + RMBUSY = $00000008; {V3D_PCS: Rendering Mode Busy (Set While Any Rendering Operations Are Actually In Progress) READ} + BMOOM = $00000100; {V3D_PCS: Binning Mode Out Of Memory (Set When PTB Runs Out Of Binning Memory While Binning) READ} + + {V3D_BFC: V3D Binning Mode Flush Count Register Description} + BMFCT = $000000FF; {V3D_BFC: Flush Count (Count Increments In Binning Mode Once PTB Has Flushed All Tile Lists To Mem & PTB Has Finished With Tile State Data Array) READ/WRITE} + + {V3D_RFC: V3D Rendering Mode Frame Count Register Description} + RMFCT = $000000FF; {V3D_RFC: Frame Count (Count Increments In Rendering Mode When Last Tile Store Operation Of Frame Completes, The Tile Has Fully Written Out To Mem) READ/WRITE} + + {V3D_BPCA: V3D Current Address Of Binning Memory Pool Register Description} + BMPCA = $FFFFFFFF; {V3D_BPCA: Current Pool Address (The Address Of The Current Allocation Pointer In The Binning Memory Pool) READ} + + {V3D_BPCS: V3D Remaining Size Of Binning Memory Pool Register Description} + BMPRS = $FFFFFFFF; {V3D_BPCS: Size Of Pool Remaining (The Number Of Bytes Remaining In The Binning Memory Pool) READ} + + {V3D_BPOA: V3D Address Of Overspill Binning Memory Block Register Description} + BMPOA = $FFFFFFFF; {V3D_BPOA: Address Of Overspill Memory Block For Binning (Address Of Additional Mem That PTB Can Use For Binning Once Initial Pool Runs Out) READ/WRITE} + + {V3D_BPOS: V3D Size Of Overspill Binning Memory Block Register Description} + BMPOS = $FFFFFFFF; {V3D_BPOS: Size Of Overspill Memory Block For Binning (Number Of Bytes Of Additional Mem That PTB Can Use For Binning Once Initial Pool Runs Out) READ/WRITE} + + {V3D QPU Scheduler Registers} + {V3D_SQRSV0: V3D Reserve QPUs 0-7 Register Description} + QPURSV0 = $0000000F; {V3D_SQRSV0: Reservation Settings For QPU 0 READ/WRITE} + QPURSV1 = $000000F0; {V3D_SQRSV0: Reservation Settings For QPU 1 READ/WRITE} + QPURSV2 = $00000F00; {V3D_SQRSV0: Reservation Settings For QPU 2 READ/WRITE} + QPURSV3 = $0000F000; {V3D_SQRSV0: Reservation Settings For QPU 3 READ/WRITE} + QPURSV4 = $000F0000; {V3D_SQRSV0: Reservation Settings For QPU 4 READ/WRITE} + QPURSV5 = $00F00000; {V3D_SQRSV0: Reservation Settings For QPU 5 READ/WRITE} + QPURSV6 = $0F000000; {V3D_SQRSV0: Reservation Settings For QPU 6 READ/WRITE} + QPURSV7 = $F0000000; {V3D_SQRSV0: Reservation Settings For QPU 7 READ/WRITE} + + {V3D_SQRSV1: V3D Reserve QPUs 8-15 Register Description} + QPURSV8 = $0000000F; {V3D_SQRSV1: Reservation Settings For QPU 8 READ/WRITE} + QPURSV9 = $000000F0; {V3D_SQRSV1: Reservation Settings For QPU 9 READ/WRITE} + QPURSV10 = $00000F00; {V3D_SQRSV1: Reservation Settings For QPU 10 READ/WRITE} + QPURSV11 = $0000F000; {V3D_SQRSV1: Reservation Settings For QPU 11 READ/WRITE} + QPURSV12 = $000F0000; {V3D_SQRSV1: Reservation Settings For QPU 12 READ/WRITE} + QPURSV13 = $00F00000; {V3D_SQRSV1: Reservation Settings For QPU 13 READ/WRITE} + QPURSV14 = $0F000000; {V3D_SQRSV1: Reservation Settings For QPU 14 READ/WRITE} + QPURSV15 = $F0000000; {V3D_SQRSV1: Reservation Settings For QPU 15 READ/WRITE} + + {V3D_SQCNTL: V3D QPU Scheduler Control Register Description} + VSRBL = $00000003; {V3D_SQCNTL: Vertex Shader Scheduling Bypass Limit READ/WRITE} + CSRBL = $0000000C; {V3D_SQCNTL: Coordinate Shader Scheduling Bypass Limit READ/WRITE} + + {V3D_SRQPC: V3D QPU User Program Request Program Address Register Description} + QPURQPC = $FFFFFFFF; {V3D_SRQPC: Program Address (Writing This Register Queues A Request To Run A Program Starting At The Given Address) WRITE} + + {V3D_SRQUA: V3D QPU User Program Request Uniforms Address Register Description} + QPURQUA = $FFFFFFFF; {V3D_SRQUA: Uniforms Address (Contains The Address Of The Uniforms Stream For The Next User Program To Be Queued Via A Write To V3DRQPC) READ/WRITE} + + {V3D_SRQUL: V3D QPU User Program Request Uniforms Length Register Description} + QPURQUL = $00000FFF; {V3D_SRQUL: Uniforms Length (Contains The Max Length Of The Uniforms Stream For The Next User Program To Be Queued Via A Write To V3DRQPC) READ/WRITE} + + {V3D_SRQCS: V3D QPU User Program Request Control & Status Register Description} + QPURQL = $0000003F; {V3D_SRQCS: Queue Length (Contains The Number Of Program Requests Currently Queued) READ/WRITE} + QPURQERR = $00000080; {V3D_SRQCS: Queue Error (Set When A Request Has Been Made When The Queue Is Full) READ/WRITE} + QPURQCM = $0000FF00; {V3D_SRQCS: Count Of User Program Requests Made (Contains The Total Number Of User Program Requests Made, Modulo 256) READ/WRITE} + QPURQCC = $00FF0000; {V3D_SRQCS: Count Of User Programs Completed (Contains The Total Number Of User Programs That Have Run & Completed, Modulo 256) READ/WRITE} + + {V3D VPM Registers} + {V3D_VPACNTL: V3D VPM Allocator Control Register Description} + VPARALIM = $00000007; {V3D_VPACNTL: Rendering VPM Allocation Limit (Limits The Amount Of VPM Memory Allocated To Rendering Mode) READ/WRITE} + VPABALIM = $00000038; {V3D_VPACNTL: Binning VPM Allocation Limit (Limits The Amount Of VPM Memory Allocated To Binning Mode) READ/WRITE} + VPARATO = $000001C0; {V3D_VPACNTL: Rendering VPM Allocation Timeout (Sets A Timeout For Raising The Priority Of Rendering Mode Allocation Requests) READ/WRITE} + VPABATO = $00000E00; {V3D_VPACNTL: Binning VPM Allocation Timeout (Sets A Timeout For Raising The Priority Of Binning Mode Allocation Requests) READ/WRITE} + VPALIMEN = $00001000; {V3D_VPACNTL: Enable VPM Allocation Limits (Enables VPM Memory Allocation Limiting Using VPARALIM & VPABALIM) READ/WRITE} + VPATOEN = $00002000; {V3D_VPACNTL: Enable VPM Allocation Timeout (Enables VPM Memory Allocation Timeout Using VPARATO & VPABATO) READ/WRITE} + + {V3D_VPMBASE: V3D VPM Base (User) Memory Reservation Register Description} + VPMURSV = $0000001F; {V3D_VPMBASE: VPM Memory Reserved For User Programs (Contains Amount Of VPM Mem Reserved For All User Programs, In Multiples Of 256 Bytes) READ/WRITE} + + {V3D QPU Interrupt Control} + {V3D_DBQITE: V3D QPU Interrupt Enables Register Description} + IE_QPU0_to_IE_QPU15 = $0000FFFF; {V3D_DBQITE: QPU Interrupt Enable bits (Set Bit To Allow QPU To Generate An Interrupt) READ/WRITE} + + {V3D_DBQITC: V3D QPU Interrupt Control Register Description} + IC_QPU0_to_IC_QPU15 = $0000FFFF; {V3D_DBQITC: QPU Interrupt Control Bits (Reads When Interrupt Is Latched, Write To Clear Interrupt) READ/WRITE} + + {V3D Performance Counters} + {V3D Sources For Performance Counters} + COUNT_ID_0 = 0; {FEP Valid Primitives That Result In No Rendered Pixels, For All Rendered Tiles} + COUNT_ID_1 = 1; {FEP Valid Primitives For All Rendered Tiles (Primitives May Be Counted In More Than One Tile)} + COUNT_ID_2 = 2; {FEP Early-Z/Near/Far Clipped Quads} + COUNT_ID_3 = 3; {FEP Valid Quads} + COUNT_ID_4 = 4; {TLB Quads With No Pixels Passing The Stencil Test} + COUNT_ID_5 = 5; {TLB Quads With No Pixels Passing The Z & Stencil Tests} + COUNT_ID_6 = 6; {TLB Quads With Any Pixels Passing The Z & Stencil Tests} + COUNT_ID_7 = 7; {TLB Quads With All Pixels Having Zero Coverage} + COUNT_ID_8 = 8; {TLB Quads With Any Pixels Having Non-Zero Coverage} + COUNT_ID_9 = 9; {TLB Quads With Valid Pixels Written To Color Buffer} + COUNT_ID_10 = 10; {PTB Primitives Discarded By Being Outside The Viewport} + COUNT_ID_11 = 11; {PTB Primitives That Need Clipping} + COUNT_ID_12 = 12; {PSE Primitives That Are Discarded Because They Are Reversed} + COUNT_ID_13 = 13; {QPU Total Idle Clock Cycles For All QPUs} + COUNT_ID_14 = 14; {QPU Total Clock Cycles For All QPUs Doing Vertex/Coordinate Shading} + COUNT_ID_15 = 15; {QPU Total Clock Cycles For All QPUs Doing Fragment Shading} + COUNT_ID_16 = 16; {QPU Total Clock Cycles For All QPUs Executing Valid Instructions} + COUNT_ID_17 = 17; {QPU Total Clock Cycles For All QPUs Stalled Waiting For TMUs} + COUNT_ID_18 = 18; {QPU Total Clock Cycles For All QPUs Stalled Waiting For Scoreboard} + COUNT_ID_19 = 19; {QPU Total Clock Cycles For All QPUs Stalled Waiting For Varyings} + COUNT_ID_20 = 20; {QPU Total Instruction Cache Hits For All Slices} + COUNT_ID_21 = 21; {QPU Total Instruction Cache Misses For All Slices} + COUNT_ID_22 = 22; {QPU Total Uniforms Cache Hits For All Slices} + COUNT_ID_23 = 23; {QPU Total Uniforms Cache Misses For All Slices} + COUNT_ID_24 = 24; {TMU Total Texture Quads Processed} + COUNT_ID_25 = 25; {TMU Total Texture Cache Misses (Number Of Fetches From Memory/L2 Cache)} + COUNT_ID_26 = 26; {VPM Total Clock Cycles VDW Is Stalled Waiting For VPM Access} + COUNT_ID_27 = 27; {VPM Total Clock Cycles VCD Is Stalled Waiting For VPM Access} + COUNT_ID_28 = 28; {L2C Total Level 2 Cache Hits} + COUNT_ID_29 = 29; {L2C Total Level 2 Cache Misses} + + {V3D_PCTRC: V3D Performance Counter Clear Register Description} + CTCLR0_CTCLR15 = $0000FFFF; {V3D_PCTRC: Performance Counter Clear Bits (Write To Clear The Performance Counter) WRITE} + + {V3D_PCTRE: V3D Performance Counter Enables Register Description} + CTEN0_CTEN15 = $0000FFFF; {V3D_PCTRE: Performance Counter Enable Bits (0 = Counter Disabled, 1 = Performance Counter Enabled To Count) READ/WRITE} + + {V3D_PCTRn: V3D Performance Counter Count n Register Description} + PCTR = $FFFFFFFF; {V3D_PCTRn: Performance Count (Count Value) READ/WRITE} + + {V3D_PCTRSn: V3D Performance Counter Mapping n Register Description} + PCTRS = $0000001F; {V3D_PCTRSn: Performance Counter Device ID READ/WRITE} + + {V3D Error & Diagnostic Registers} + {V3D_BXCF: V3D Binner Debug Register Description} + FWDDISA = $00000001; {V3D_BXCF: Disable Forwarding In State Cache READ/WRITE} + CLIPDISA = $00000002; {V3D_BXCF: Disable Clipping READ/WRITE} + + {V3D_DBGE: V3D PSE Error Signals Register Description} + VR1_A = $00000002; {V3D_DBGE: Error A Reading VPM READ} + VR1_B = $00000004; {V3D_DBGE: Error B Reading VPM READ} + MULIP0 = $00010000; {V3D_DBGE: Error Mulip 0 READ} + MULIP1 = $00020000; {V3D_DBGE: Error Mulip 1 READ} + MULIP2 = $00040000; {V3D_DBGE: Error Mulip 2 READ} + IPD2_VALID = $00080000; {V3D_DBGE: Error IPD2 Valid READ} + IPD2_FPDUSED = $00100000; {V3D_DBGE: Error IPD2 FPD Used READ} + + {V3D_FDBGO: V3D FEP Overrun Error Signals Register Description} + WCOEFF_FIFO_FULL = $00000002; {V3D_FDBGO: Not An Error READ} + XYRELZ_FIFO_FULL = $00000004; {V3D_FDBGO: Not An Error READ} + QBFR_FIFO_ORUN = $00000008; {V3D_FDBGO: Error READ} + QBSZ_FIFO_ORUN = $00000010; {V3D_FDBGO: Error READ} + XYFO_FIFO_ORUN = $00000020; {V3D_FDBGO: Error READ} + FIXZ_ORUN = $00000040; {V3D_FDBGO: Error READ} + XYRELO_FIFO_ORUN = $00000080; {V3D_FDBGO: Error READ} + XYRELW_FIFO_ORUN = $00000400; {V3D_FDBGO: Error READ} + ZCOEFF_FIFO_FULL = $00000800; {V3D_FDBGO: Not An Error} + REFXY_FIFO_ORUN = $00001000; {V3D_FDBGO: Error READ} + DEPTHO_FIFO_ORUN = $00002000; {V3D_FDBGO: Error READ} + DEPTHO_ORUN = $00004000; {V3D_FDBGO: Error READ} + EZVAL_FIFO_ORUN = $00008000; {V3D_FDBGO: Error READ} + EZREQ_FIFO_ORUN = $00020000; {V3D_FDBGO: Error READ} + + {V3D_FDBGB: V3D FEP Interface Ready & Stall Signals, FEP Busy Signals Register Description} + EDGES_STALL = $00000001; {V3D_FDBGB: Stall READ} + EDGES_READY = $00000002; {V3D_FDBGB: Ready READ} + EDGES_ISCTRL = $00000004; {V3D_FDBGB: READ} + EDGES_CTRLID = $00000038; {V3D_FDBGB: READ} + ZRWPE_STALL = $00000040; {V3D_FDBGB: Stall READ} + ZRWPE_READY = $00000080; {V3D_FDBGB: Ready READ} + EZ_DATA_READY = $00800000; {V3D_FDBGB: Ready READ} + EZ_XY_READY = $02000000; {V3D_FDBGB: Ready READ} + RAST_BUSY = $04000000; {V3D_FDBGB: Busy READ} + QXYF_FIFO_OP_READY = $08000000; {V3D_FDBGB: Ready READ} + XYFO_FIFO_OP_READY = $10000000; {V3D_FDBGB: Ready READ} + + {V3D_FDBGR: V3D FEP Internal Ready Signals Register Description} + QXYF_FIFO_READY = $00000001; {V3D_FDBGR: Ready READ} + EZREQ_FIFO_READY = $00000002; {V3D_FDBGR: Ready READ} + EZVAL_FIFO_READY = $00000004; {V3D_FDBGR: Ready READ} + DEPTHO_FIFO_READY = $00000008; {V3D_FDBGR: Ready READ} + REFXY_FIFO_READY = $00000010; {V3D_FDBGR: Ready READ} + ZCOEFF_FIFO_READY = $00000020; {V3D_FDBGR: Ready READ} + XYRELW_FIFO_READY = $00000040; {V3D_FDBGR: Ready READ} + WCOEFF_FIFO_READY = $00000080; {V3D_FDBGR: Ready READ} + XYRELO_FIFO_READY = $00000800; {V3D_FDBGR: Ready READ} + ZO_FIFO_READY = $00002000; {V3D_FDBGR: Ready READ} + XYFO_FIFO_READY = $00004000; {V3D_FDBGR: Ready READ} + RAST_READY = $00010000; {V3D_FDBGR: Ready READ} + RAST_LAST = $00020000; {V3D_FDBGR: Last READ} + DEPTHO_READY = $00040000; {V3D_FDBGR: Ready READ} + EZLIM_READY = $00080000; {V3D_FDBGR: Ready READ} + XYNRM_READY = $00100000; {V3D_FDBGR: Ready READ} + XYNRM_LAST = $00200000; {V3D_FDBGR: Last READ} + XYRELZ_FIFO_READY = $00400000; {V3D_FDBGR: Ready READ} + XYRELZ_FIFO_LAST = $00800000; {V3D_FDBGR: Last READ} + INTERPZ_READY = $01000000; {V3D_FDBGR: Ready READ} + INTERPRW_READY = $08000000; {V3D_FDBGR: Ready READ} + RECIPW_READY = $10000000; {V3D_FDBGR: Ready READ} + FIXZ_READY = $40000000; {V3D_FDBGR: Ready READ} + + {V3D_FDBGS: V3D FEP Internal Stall Input Signals Register Description} + EZTEST_IP_QSTALL = $00000001; {V3D_FDBGS: Stall READ} + EZTEST_IP_PRSTALL = $00000002; {V3D_FDBGS: Stall READ} + EZTEST_IP_VLFSTALL = $00000004; {V3D_FDBGS: Stall READ} + EZTEST_STALL = $00000008; {V3D_FDBGS: Stall READ} + EZTEST_VLF_OKNOVALID = $00000010; {V3D_FDBGS: Valid READ} + EZTEST_QREADY = $00000020; {V3D_FDBGS: Ready READ} + EZTEST_ANYQF = $00000040; {V3D_FDBGS: READ} + EZTEST_ANYQVALID = $00000080; {V3D_FDBGS: Valid READ} + QXYF_FIFO_OP1_VALID = $00000100; {V3D_FDBGS: Valid READ} + QXYF_FIFO_OP1_LAST = $00000200; {V3D_FDBGR: Last READ} + QXYF_FIFO_OP1_DUMMY = $00000400; {V3D_FDBGR: Dummy READ} + QXYF_FIFO_OP_LAST = $00000800; {V3D_FDBGR: Last READ} + QXYF_FIFO_OP_VALID = $00001000; {V3D_FDBGS: Valid READ} + EZREQ_FIFO_OP_VALID = $00002000; {V3D_FDBGS: Valid READ} + XYNRM_IP_STALL = $00004000; {V3D_FDBGS: Stall READ} + EZLIM_IP_STALL = $00008000; {V3D_FDBGS: Stall READ} + DEPTHO_FIFO_IP_STALL = $00010000; {V3D_FDBGS: Stall READ} + INTERPZ_IP_STALL = $00020000; {V3D_FDBGS: Stall READ} + XYRELZ_FIFO_IP_STALL = $00040000; {V3D_FDBGS: Stall READ} + INTERPW_IP_STALL = $00400000; {V3D_FDBGS: Stall READ} + RECIPW_IP_STALL = $02000000; {V3D_FDBGS: Stall READ} + ZO_FIFO_IP_STALL = $10000000; {V3D_FDBGS: Stall READ} + + {V3D_ERRSTAT: V3D Miscellaneous Error Signals (VPM, VDW, VCD, VCM, L2C) Register Description} + VPAEABB = $00000001; {V3D_ERRSTAT: VPM Allocator Error - Allocating Base While Busy READ} + VPAERGS = $00000002; {V3D_ERRSTAT: VPM Allocator Error - Request Too Big READ} + VPAEBRGL = $00000004; {V3D_ERRSTAT: VPM Allocator Error - Binner Request Greater Than Limit READ} + VPAERRGL = $00000008; {V3D_ERRSTAT: VPM Allocator Error - Renderer Request Greater Than Limit READ} + VPMEWR = $00000010; {V3D_ERRSTAT: VPM Error - Write Range READ} + VPMERR = $00000020; {V3D_ERRSTAT: VPM Error - Read Range READ} + VPMERNA = $00000040; {V3D_ERRSTAT: VPM Error - Read Non-Allocated READ} + VPMEWNA = $00000080; {V3D_ERRSTAT: VPM Error - Write Non-Allocated READ} + VPMEFNA = $00000100; {V3D_ERRSTAT: VPM Error - Free Non-Allocated READ} + VPMEAS = $00000200; {V3D_ERRSTAT: VPM Error - Allocated Size Error READ} + VDWE = $00000400; {V3D_ERRSTAT: VDW Error - Address Overflows READ} + VCDE = $00000800; {V3D_ERRSTAT: VCD Error - FIFO Pointers Out Of Sync READ} + VCDI = $00001000; {V3D_ERRSTAT: VCD Idle READ} + VCMRE = $00002000; {V3D_ERRSTAT: VCM Error (Renderer) READ} + VCMBE = $00004000; {V3D_ERRSTAT: VCM Error (Binner) READ} + L2CARE = $00008000; {V3D_ERRSTAT: L2C AXI Receive Fifo Overrun Error READ} + +{==============================================================================} +//type + {V3D specific types} + //To Do //Continuing + +{==============================================================================} +{var} + {V3D specific variables} + +{==============================================================================} +{Initialization Functions} + +{==============================================================================} +{V3D Mailbox Functions} +function V3DQPUEnable(Enable:LongWord):LongWord; +function V3DQPUExecute(NumQPUs,Control,NoFlush,Timeout:LongWord):LongWord; + +{==============================================================================} +{V3D Helper Functions} + +{==============================================================================} +{==============================================================================} + +implementation + +uses {$IFDEF CPUARMV6}BCM2835{$ELSE}BCM2837{$ENDIF}; + +{==============================================================================} +{==============================================================================} +const + {V3D mailbox constants} + {$IFDEF CPUARMV6} + V3D_MBOX_REQUEST_CODE = BCM2835_MBOX_REQUEST_CODE; + + V3D_MBOX_TAG_END = BCM2835_MBOX_TAG_END; + V3D_MBOX_TAG_EXECUTE_QPU = BCM2835_MBOX_TAG_EXECUTE_QPU; + V3D_MBOX_TAG_ENABLE_QPU = BCM2835_MBOX_TAG_ENABLE_QPU; + + V3D_MAILBOX_0 = BCM2835_MAILBOX_0; + V3D_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC = BCM2835_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC; + {$ELSE} + V3D_MBOX_REQUEST_CODE = BCM2837_MBOX_REQUEST_CODE; + + V3D_MBOX_TAG_END = BCM2837_MBOX_TAG_END; + V3D_MBOX_TAG_EXECUTE_QPU = BCM2837_MBOX_TAG_EXECUTE_QPU; + V3D_MBOX_TAG_ENABLE_QPU = BCM2837_MBOX_TAG_ENABLE_QPU; + + V3D_MAILBOX_0 = BCM2837_MAILBOX_0; + V3D_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC = BCM2837_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC; + {$ENDIF} +{==============================================================================} +{==============================================================================} +type + {V3D mailbox types} + {$IFDEF CPUARMV6} + TV3DMailboxHeader = TBCM2835MailboxHeader; + PV3DMailboxHeader = PBCM2835MailboxHeader; + + TV3DMailboxFooter = TBCM2835MailboxFooter; + PV3DMailboxFooter = PBCM2835MailboxFooter; + + TV3DMailboxTagHeader = TBCM2835MailboxTagHeader; + PV3DMailboxTagHeader = PBCM2835MailboxTagHeader; + + TV3DMailboxTagExecuteQPU = TBCM2835MailboxTagExecuteQPU; + PV3DMailboxTagExecuteQPU = PBCM2835MailboxTagExecuteQPU; + + TV3DMailboxTagEnableQPU = TBCM2835MailboxTagEnableQPU; + PV3DMailboxTagEnableQPU = PBCM2835MailboxTagEnableQPU; + {$ELSE} + TV3DMailboxHeader = TBCM2837MailboxHeader; + PV3DMailboxHeader = PBCM2837MailboxHeader; + + TV3DMailboxFooter = TBCM2837MailboxFooter; + PV3DMailboxFooter = PBCM2837MailboxFooter; + + TV3DMailboxTagHeader = TBCM2837MailboxTagHeader; + PV3DMailboxTagHeader = PBCM2837MailboxTagHeader; + + TV3DMailboxTagExecuteQPU = TBCM2837MailboxTagExecuteQPU; + PV3DMailboxTagExecuteQPU = PBCM2837MailboxTagExecuteQPU; + + TV3DMailboxTagEnableQPU = TBCM2837MailboxTagEnableQPU; + PV3DMailboxTagEnableQPU = PBCM2837MailboxTagEnableQPU; + {$ENDIF} +{==============================================================================} +{==============================================================================} +{var} + {V3D specific variables} + +{==============================================================================} +{==============================================================================} +{Initialization Functions} + +{==============================================================================} +{==============================================================================} +{V3D Mailbox Functions} +function V3DQPUEnable(Enable:LongWord):LongWord; +{Enable QPUs using the Mailbox property tags channel} +var + Size:LongWord; + Status:LongWord; + Response:LongWord; + Header:PV3DMailboxHeader; + Footer:PV3DMailboxFooter; + Tag:PV3DMailboxTagEnableQPU; +begin + {} + Result:=LongWord(-1); + + {$IFDEF VC4V3D_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('V3D: V3DQPUEnable (Enable=' + IntToStr(Enable) + ')'); + {$ENDIF} + + {Calculate Size} + Size:=SizeOf(TV3DMailboxHeader) + SizeOf(TV3DMailboxTagEnableQPU) + SizeOf(TV3DMailboxFooter); + + {Allocate Mailbox Buffer} + {$IFDEF CPUARMV6} + Header:=GetSharedAlignedMem(Size,SIZE_16); {Must be 16 byte aligned} + {$ELSE} + Header:=GetNoCacheAlignedMem(Size,SIZE_16); {Must be 16 byte aligned} + {$ENDIF} + if Header = nil then Header:=GetAlignedMem(Size,SIZE_16); {Must be 16 byte aligned} + if Header = nil then Exit; + try + {Clear Buffer} + FillChar(Header^,Size,0); + + {Setup Header} + Header.Size:=Size; + Header.Code:=V3D_MBOX_REQUEST_CODE; + + {Setup Tag} + Tag:=PV3DMailboxTagEnableQPU(PtrUInt(Header) + PtrUInt(SizeOf(TV3DMailboxHeader))); + Tag.Header.Tag:=V3D_MBOX_TAG_ENABLE_QPU; + Tag.Header.Size:=SizeOf(TV3DMailboxTagEnableQPU) - SizeOf(TV3DMailboxTagHeader); + Tag.Header.Length:=SizeOf(Tag.Request); + Tag.Request.Enable:=Enable; + + {Setup Footer} + Footer:=PV3DMailboxFooter(PtrUInt(Tag) + PtrUInt(SizeOf(TV3DMailboxTagEnableQPU))); + Footer.Tag:=V3D_MBOX_TAG_END; + + {Call Mailbox} + Status:=MailboxPropertyCall(V3D_MAILBOX_0,V3D_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC,Header,Response); + if Status <> ERROR_SUCCESS then + begin + if PLATFORM_LOG_ENABLED then PlatformLogError('V3D: V3DQPUEnable - MailboxPropertyCall failed (Status=' + ErrorToString(Status) + ')'); + + Exit; + end; + + {Get Result} + Result:=Tag.Response.Status; + + {$IFDEF VC4V3D_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('V3D: V3DQPUEnable (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} + finally + FreeMem(Header); + end; +end; + +{==============================================================================} + +function V3DQPUExecute(NumQPUs,Control,NoFlush,Timeout:LongWord):LongWord; +{Execute QPU code using the Mailbox property tags channel} +var + Size:LongWord; + Status:LongWord; + Response:LongWord; + Header:PV3DMailboxHeader; + Footer:PV3DMailboxFooter; + Tag:PV3DMailboxTagExecuteQPU; +begin + {} + Result:=LongWord(-1); + + {$IFDEF VC4V3D_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('V3D: V3DQPUExecute (NumQPUs=' + IntToStr(NumQPUs) + ' Control=' + IntToStr(Control) + ' NoFlush=' + IntToStr(NoFlush) + ' Timeout=' + IntToStr(Timeout) + ')'); + {$ENDIF} + + {Calculate Size} + Size:=SizeOf(TV3DMailboxHeader) + SizeOf(TV3DMailboxTagExecuteQPU) + SizeOf(TV3DMailboxFooter); + + {Allocate Mailbox Buffer} + {$IFDEF CPUARMV6} + Header:=GetSharedAlignedMem(Size,SIZE_16); {Must be 16 byte aligned} + {$ELSE} + Header:=GetNoCacheAlignedMem(Size,SIZE_16); {Must be 16 byte aligned} + {$ENDIF} + if Header = nil then Header:=GetAlignedMem(Size,SIZE_16); {Must be 16 byte aligned} + if Header = nil then Exit; + try + {Clear Buffer} + FillChar(Header^,Size,0); + + {Setup Header} + Header.Size:=Size; + Header.Code:=V3D_MBOX_REQUEST_CODE; + + {Setup Tag} + Tag:=PV3DMailboxTagExecuteQPU(PtrUInt(Header) + PtrUInt(SizeOf(TV3DMailboxHeader))); + Tag.Header.Tag:=V3D_MBOX_TAG_EXECUTE_QPU; + Tag.Header.Size:=SizeOf(TV3DMailboxTagExecuteQPU) - SizeOf(TV3DMailboxTagHeader); + Tag.Header.Length:=SizeOf(Tag.Request); + Tag.Request.NumQPUs:=NumQPUs; + Tag.Request.Control:=Control; + Tag.Request.NoFlush:=NoFlush; + Tag.Request.Timeout:=Timeout; + + {Setup Footer} + Footer:=PV3DMailboxFooter(PtrUInt(Tag) + PtrUInt(SizeOf(TV3DMailboxTagExecuteQPU))); + Footer.Tag:=V3D_MBOX_TAG_END; + + {Call Mailbox} + Status:=MailboxPropertyCallEx(V3D_MAILBOX_0,V3D_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC,Header,Response,Timeout); + if Status <> ERROR_SUCCESS then + begin + if PLATFORM_LOG_ENABLED then PlatformLogError('V3D: V3DQPUExecute - MailboxPropertyCallEx failed (Status=' + ErrorToString(Status) + ')'); + + Exit; + end; + + {Get Result} + Result:=Tag.Response.Status; + + {$IFDEF VC4V3D_DEBUG} + if PLATFORM_LOG_ENABLED then PlatformLogDebug('V3D: V3DQPUExecute (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} + finally + FreeMem(Header); + end; +end; + +{==============================================================================} +{==============================================================================} +{V3D Helper Functions} + +{==============================================================================} +{==============================================================================} + +{initialization} + {Nothing} + +{==============================================================================} + +{finalization} + {Nothing} + +{==============================================================================} +{==============================================================================} + +end. + \ No newline at end of file diff --git a/source/rtl/ultibo/core/vc4vchiq.pas b/source/rtl/ultibo/core/vc4vchiq.pas new file mode 100644 index 0000000..b942b31 --- /dev/null +++ b/source/rtl/ultibo/core/vc4vchiq.pas @@ -0,0 +1,11387 @@ +{ +Ultibo Broadcom VideoCoreIV VCHIQ driver unit. + +Copyright (C) 2017 - SoftOz Pty Ltd. + +Arch +==== + + ARMv6 (ARM1176) + ARMv7 (Cortex A7) + ARMv8 (Cortex A53) + +Boards +====== + + Raspberry Pi - Model A/B/A+/B+/CM1 + Raspberry Pi - Model Zero/ZeroW + Raspberry Pi 2 - Model B + Raspberry Pi 3 - Model B + Raspberry Pi CM3 + +Licence +======= + + LGPLv2.1 with static linking exception (See COPYING.modifiedLGPL.txt) + +Credits +======= + + Information for this unit was obtained from: + + Linux - \drivers\staging\vc04_services\interface\vchiq_arm\* - Copyright (c) 2010-2012 Broadcom + + Linux - \drivers\char\broadcom\vc_sm\* - Copyright 2011-2012 Broadcom Corporation + + Linux - \drivers\char\broadcom\vc_mem.c - Copyright 2010 - 2011 Broadcom Corporation + +References +========== + + VideoCore APIs - http://elinux.org/Raspberry_Pi_VideoCore_APIs + + Raspberry Pi Userland - https://github.com/raspberrypi/userland + + VideoCore IV Documentation - https://docs.broadcom.com/docs/12358545 + + Windows 10 IoT Userland - https://github.com/ms-iot/userland + + Windows 10 IoT VCHIQ - https://github.com/ms-iot/bsp/tree/master/drivers/misc/vchiq + +VideoCore IV VCHIQ +================== + + VCHIQ Driver + ------------ + + VCHIQ is the VideoCore Host Interface driver which implements a messaging interface + between the host running on the ARM CPU and the VC4 GPU firmware. + + The format and content of the messages the are passed is not defined by this driver + but can be found throughout the various libraries that make up the userland interface + and ultimately expose standard interfaces such as OpenGL ES, OpenVG and OpenMAX IL. + + There is no specific documentation for the VCHIQ messaging protocol or behavior and + all of the information for this driver has been obtained directly from the equivalent + Linux driver. The protocol basically uses a series of memory based slots that form + a circular buffer, both the master (GPU) and slave (CPU) side have their own set of + slots which they write data into whenever a new message is to be sent. The other side + then receives messages from those slots and signals when processing has completed so + that the slot can be freed. + + All requests from higher level interaces are received in the form of IO control requests + which are then formed into VCHIQ messages and submitted. The driver uses multiple threads + to perform the message passing process, the primary ones being a slot handler thread and + a slot recycle thread. + + Because the VideoCoreIV firmware for the Raspberry Pi is under active development and + future revisions may change the details of the communications between the ARM CPU and + the VC4 GPU, this driver has been written to retain many of the structures used by the + original Linux driver and allow easier updating in response to changes. Because of this + the driver may look unusual in relation to other Pascal code and other Ultibo drivers + however the functionality is as required in order to perform the task. + + Note: The meaning and purpose of some values in this driver are unknown, the values + are ported directly from the Linux driver and no other source of documentation exists. + + Not all of the defined constants and types are required for this driver, some are made + available as imports for the VC4 unit because they are identical to the defintions of + the interface used by applications to communicate with VCHI or VCHIQ services using + the libvchiq_arm interface. + + Implementing VCHIQ in 64-bit + ---------------------------- + + Because the implementation of VCHIQ shares multiple structures between the ARM and the VC4 + it is essential that the sizes of those structures do not changes when compiling this driver + for 64-bit. Of particular interest are things that refer to a memory address (a pointer) + or things that are otherwise adjusted in size when changing between 32 and 64-bit. + + One item of note in the Ultibo implementation is the THandle which is defined as LongInt + in 32-bit but as Int64 in 64-bit. Some structures such as REMOTE_EVENT_T contain a + TSemaphoreHandle which will need to be accounted for in the change. Potentially some + form of table needs to be maintained in order to translate between a value and a + handle in order for the structure member to remain the correct size. + + At present this driver will not function correctly in 64-bit, however the userland + library will also not function in 64-bit yet either. The same is true for VCHIQ and + userland on the official Raspbian distribution. + +} + +{$mode delphi} {Default to Delphi compatible syntax} +{$H+} {Default to AnsiString} +{$inline on} {Allow use of Inline procedures} + +unit VC4VCHIQ; + +interface + +uses GlobalConfig,GlobalConst,GlobalTypes,Platform,Threads,HeapManager,Devices,CTypes,SysUtils; + +{==============================================================================} +{Global definitions} +{$INCLUDE GlobalDefines.inc} + +//To Do //Some functions need better parameter checking +//To Do //Normalize structure and member naming where relevant and field types (eg Char -> Byte or Boolean depending on purpose) +//To Do //Some instances of SemaphoreWait, SpinLock and MutexLock should have error checking + +{==============================================================================} +{Local definitions} +{$DEFINE VCHIQ_ENABLE_STATS} +{$DEFINE VCHIQ_ENABLE_DEBUG} {Note: For all current firmware versions, debug must be enabled} + +{==============================================================================} +const + {VCHIQ specific constants} + VCHIQ_DESCRIPTION = 'Broadcom VideoCore4 VCHIQ'; {Description of VCHIQ device} + + VCHIQ_NAME_PREFIX = 'VCHIQ'; + + VCHIQ_SYNC_THREAD_NAME = 'VCHIQ Sync'; + VCHIQ_SYNC_THREAD_STACK_SIZE = SIZE_128K; {Stack size of sync thread} + VCHIQ_SYNC_THREAD_PRIORITY = THREAD_PRIORITY_CRITICAL; {Priority of sync thread} + + VCHIQ_RECYCLE_THREAD_NAME = 'VCHIQ Recycle'; + VCHIQ_RECYCLE_THREAD_STACK_SIZE = SIZE_128K; {Stack size of recycle thread} + VCHIQ_RECYCLE_THREAD_PRIORITY = THREAD_PRIORITY_HIGHEST; {Priority of recycle thread} + + VCHIQ_SLOT_THREAD_NAME = 'VCHIQ Slot Handler'; + VCHIQ_SLOT_THREAD_STACK_SIZE = SIZE_128K; {Stack size of slot handler thread} + VCHIQ_SLOT_THREAD_PRIORITY = THREAD_PRIORITY_HIGHEST; {Priority of slot handler thread} + + VCHIQ_KEEPALIVE_THREAD_NAME = 'VCHIQ Keepalive'; + VCHIQ_KEEPALIVE_THREAD_STACK_SIZE = SIZE_128K; {Stack size of keepalive thread} + VCHIQ_KEEPALIVE_THREAD_PRIORITY = THREAD_PRIORITY_NORMAL; {Priority of keepalive thread} + + {VCHIQ Device Types} + VCHIQ_TYPE_NONE = 0; + + {VCHIQ Device Flags} + VCHIQ_FLAG_NONE = $00000000; + + {VCHIQ Doorbell} + VCHIQ_DOORBELL_REGS_BASE = $B840; + + VCHIQ_DOORBELL_BELL0 = $00; + VCHIQ_DOORBELL_BELL2 = $08; + + VCHIQ_DOORBELL0_IRQ = 66; {ARM IRQ 2} + +const + {VCHI Interface Constants (From vchi.h)} + VCHI_SERVICE_HANDLE_INVALID = 0; + //To Do //More + + {VCHI Memory Constants (From vchi_mh.h)} + VCHI_MEM_HANDLE_INVALID = 0; + + {VCHIQ ARM Constants (From vchiq_arm.h)} + VCHIQ_MINOR = 0; + + {Per-instance constants (From vchiq_arm.c)} + VCHIQ_MAX_COMPLETIONS = 128; + {VCHIQ_MAX_SERVICES = 64;} {Not used by original, per instance conflicts with global value below} + VCHIQ_MAX_ELEMENTS = 8; + VCHIQ_MSG_QUEUE_SIZE = 128; + + VCHIQ_KEEPALIVE_VER = 1; + VCHIQ_KEEPALIVE_VER_MIN = VCHIQ_KEEPALIVE_VER; + + VCHIQ_SUSPEND_TIMER_TIMEOUT_MS = 100; + VCHIQ_SUSPEND_RETRY_TIMER_TIMEOUT_MS = 1000; + + VCHIQ_SUSPEND_NUM_OFFSET = 3; {Number of values before idle which are negative} + + VCHIQ_FORCE_SUSPEND_FAIL_MAX = 8; + VCHIQ_FORCE_SUSPEND_TIMEOUT_MS = 200; + + {VCHIQ Configuration Constants (From vchiq_cfg.h)} + VCHIQ_MAGIC = $56434849; {VCHIQ_MAKE_FOURCC('V', 'C', 'H', 'I')} + + VCHIQ_VERSION = 8; {The version of VCHIQ - change with any non-trivial change} + + VCHIQ_VERSION_MIN = 3; {The minimum compatible version - update to match VCHIQ_VERSION with any incompatible change} + + VCHIQ_VERSION_LIB_VERSION = 7; {The version that introduced the VCHIQ_IOC_LIB_VERSION ioctl} + + VCHIQ_VERSION_CLOSE_DELIVERED = 7; {The version that introduced the VCHIQ_IOC_CLOSE_DELIVERED ioctl} + + VCHIQ_VERSION_SYNCHRONOUS_MODE = 8; {The version that made it safe to use SYNCHRONOUS mode} + + VCHIQ_MAX_STATES = 1; {Note: 1 in VCHIQ driver, 2 in Userland} + VCHIQ_MAX_SERVICES = 4096; + VCHIQ_MAX_SERVICES_BITSET_SIZE = (VCHIQ_MAX_SERVICES + 31) shr 5; {VCHIQ_BITSET_SIZE(VCHIQ_MAX_SERVICES)} + VCHIQ_MAX_SLOTS = 128; + VCHIQ_MAX_SLOTS_PER_SIDE = 64; + + VCHIQ_NUM_CURRENT_BULKS = 32; + VCHIQ_NUM_SERVICE_BULKS = 4; + + {VCHIQ Interface Constants (From vchiq_if.h)} + VCHIQ_SERVICE_HANDLE_INVALID = 0; + + VCHIQ_SLOT_SIZE = 4096; + VCHIQ_HEADER_SIZE = 8; {SizeOf(VCHIQ_HEADER_T) (Not including data member)} + VCHIQ_MAX_MSG_SIZE = VCHIQ_SLOT_SIZE - VCHIQ_HEADER_SIZE; + VCHIQ_CHANNEL_SIZE = VCHIQ_MAX_MSG_SIZE; {For backwards compatibility} + + {VCHIQ Core Constants (From vchiq_core.h)} + VCHIQ_SLOT_MASK = (VCHIQ_SLOT_SIZE - 1); + VCHIQ_SLOT_QUEUE_MASK = (VCHIQ_MAX_SLOTS_PER_SIDE - 1); + VCHIQ_SLOT_ZERO_SIZE = 1208; {SizeOf(VCHIQ_SLOT_ZERO_T)} + VCHIQ_SLOT_ZERO_SLOTS = (VCHIQ_SLOT_ZERO_SIZE + VCHIQ_SLOT_SIZE - 1) div VCHIQ_SLOT_SIZE; + + VCHIQ_MSG_PADDING = 0; {- } + VCHIQ_MSG_CONNECT = 1; {- } + VCHIQ_MSG_OPEN = 2; {+ (srcport, -), fourcc, client_id} + VCHIQ_MSG_OPENACK = 3; {+ (srcport, dstport) } + VCHIQ_MSG_CLOSE = 4; {+ (srcport, dstport) } + VCHIQ_MSG_DATA = 5; {+ (srcport, dstport) } + VCHIQ_MSG_BULK_RX = 6; {+ (srcport, dstport), data, size } + VCHIQ_MSG_BULK_TX = 7; {+ (srcport, dstport), data, size } + VCHIQ_MSG_BULK_RX_DONE = 8; {+ (srcport, dstport), actual } + VCHIQ_MSG_BULK_TX_DONE = 9; {+ (srcport, dstport), actual } + VCHIQ_MSG_PAUSE = 10; {- } + VCHIQ_MSG_RESUME = 11; {- } + VCHIQ_MSG_REMOTE_USE = 12; {- } + VCHIQ_MSG_REMOTE_RELEASE = 13; {- } + VCHIQ_MSG_REMOTE_USE_ACTIVE = 14; {- } + + VCHIQ_PORT_MAX = (VCHIQ_MAX_SERVICES - 1); + VCHIQ_PORT_FREE = $1000; + + VCHIQ_MSGID_PADDING = $00000000; {VCHIQ_MAKE_MSG(VCHIQ_MSG_PADDING, 0, 0)} + VCHIQ_MSGID_CLAIMED = $40000000; + + VCHIQ_FOURCC_INVALID = $00000000; + + VCHIQ_BULK_ACTUAL_ABORTED = -1; + + {VCHIQ Core Constants (From vchiq_core.c)} + QMFLAGS_IS_BLOCKING = (1 shl 0); + QMFLAGS_NO_MUTEX_LOCK = (1 shl 1); + QMFLAGS_NO_MUTEX_UNLOCK = (1 shl 2); + + {VCHIQ IO Control Constants (From vchiq_ioctl.h)} + VCHIQ_IOC_MAGIC = $c4; + + VCHIQ_IOC_CONNECT = $0000C400; {_IO(VCHIQ_IOC_MAGIC, 0)} + VCHIQ_IOC_SHUTDOWN = $0000C401; {_IO(VCHIQ_IOC_MAGIC, 1)} + VCHIQ_IOC_CREATE_SERVICE = $C01CC402; {_IOWR(VCHIQ_IOC_MAGIC, 2, VCHIQ_CREATE_SERVICE_T)} + VCHIQ_IOC_REMOVE_SERVICE = $0000C403; {_IO(VCHIQ_IOC_MAGIC, 3)} + VCHIQ_IOC_QUEUE_MESSAGE = $400CC404; {_IOW(VCHIQ_IOC_MAGIC, 4, VCHIQ_QUEUE_MESSAGE_T)} + VCHIQ_IOC_QUEUE_BULK_TRANSMIT = $C014C405; {_IOWR(VCHIQ_IOC_MAGIC, 5, VCHIQ_QUEUE_BULK_TRANSFER_T)} + VCHIQ_IOC_QUEUE_BULK_RECEIVE = $C014C406; {_IOWR(VCHIQ_IOC_MAGIC, 6, VCHIQ_QUEUE_BULK_TRANSFER_T)} + VCHIQ_IOC_AWAIT_COMPLETION = $C014C407; {_IOWR(VCHIQ_IOC_MAGIC, 7, VCHIQ_AWAIT_COMPLETION_T)} + VCHIQ_IOC_DEQUEUE_MESSAGE = $C010C408; {_IOWR(VCHIQ_IOC_MAGIC, 8, VCHIQ_DEQUEUE_MESSAGE_T)} + VCHIQ_IOC_GET_CLIENT_ID = $0000C409; {_IO(VCHIQ_IOC_MAGIC, 9)} + VCHIQ_IOC_GET_CONFIG = $C008C40A; {_IOWR(VCHIQ_IOC_MAGIC, 10, VCHIQ_GET_CONFIG_T)} + VCHIQ_IOC_CLOSE_SERVICE = $0000C40B; {_IO(VCHIQ_IOC_MAGIC, 11)} + VCHIQ_IOC_USE_SERVICE = $0000C40C; {_IO(VCHIQ_IOC_MAGIC, 12)} + VCHIQ_IOC_RELEASE_SERVICE = $0000C40D; {_IO(VCHIQ_IOC_MAGIC, 13)} + VCHIQ_IOC_SET_SERVICE_OPTION = $400CC40E; {_IOW(VCHIQ_IOC_MAGIC, 14, VCHIQ_SET_SERVICE_OPTION_T)} + VCHIQ_IOC_DUMP_PHYS_MEM = $4008C40F; {_IOW(VCHIQ_IOC_MAGIC, 15, VCHIQ_DUMP_MEM_T)} + VCHIQ_IOC_LIB_VERSION = $0000C410; {_IO(VCHIQ_IOC_MAGIC, 16)} + VCHIQ_IOC_CLOSE_DELIVERED = $0000C411; {_IO(VCHIQ_IOC_MAGIC, 17)} + VCHIQ_IOC_MAX = 17; + + {VCHIQ BCM2835 Constants (From vchiq_2835.h)} + VCHIQ_PLATFORM_FRAGMENTS_OFFSET_IDX = 0; + VCHIQ_PLATFORM_FRAGMENTS_COUNT_IDX = 1; + + {VCHIQ BCM2835 Constants (From vchiq_2835_arm.c)} + VCHIQ_TOTAL_SLOTS = (VCHIQ_SLOT_ZERO_SLOTS + 2 * 32); + + VCHIQ_MAX_FRAGMENTS = (VCHIQ_NUM_CURRENT_BULKS * 2); + + {VCHIQ Kernel Constants (From vchiq_kern_lib.c)} + VCHIQ_INIT_RETRIES = 10; + + {VCHIQ Pagelist Constants (From vchiq_pagelist.h)} + VCHIQ_PAGE_SIZE = 4096; + VCHIQ_CACHE_LINE_SIZE = 32; {This seems to be hardcoded throughout the Linux driver, even though on later CPUs it should be 64} + VCHIQ_PAGELIST_WRITE = 0; + VCHIQ_PAGELIST_READ = 1; + VCHIQ_PAGELIST_READ_WITH_FRAGMENTS = 2; + +{==============================================================================} +type + {VCHIQ specific types} + + {VCHIQ Device} + PVCHIQDevice = ^TVCHIQDevice; + PVCHIQInstance = ^TVCHIQInstance; + PVCHIQ_STATE_T = ^VCHIQ_STATE_T; {Declared early for TVCHIQDevice and VCHIQ_SERVICE_T} + + {VCHIQ Device Methods} + TVCHIQDeviceStart = function(VCHIQ:PVCHIQDevice):LongWord; + TVCHIQDeviceStop = function(VCHIQ:PVCHIQDevice):LongWord; + + TVCHIQDeviceOpen = function(VCHIQ:PVCHIQDevice):PVCHIQInstance; + TVCHIQDeviceClose = function(VCHIQ:PVCHIQDevice;Instance:PVCHIQInstance):LongWord; + + TVCHIQDeviceControl = function(VCHIQ:PVCHIQDevice;Instance:PVCHIQInstance;Code,Argument:LongWord;var Response:LongWord):LongWord; + + TVCHIQDevice = record + {Device Properties} + Device:TDevice; {The Device entry for this device} + {VCHIQ Properties} + DeviceStart:TVCHIQDeviceStart; {A Device specific DeviceStart method implementing the VCHIQ device interface (Mandatory)} + DeviceStop:TVCHIQDeviceStop; {A Device specific DeviceStop method implementing the VCHIQ device interface (Mandatory)} + DeviceOpen:TVCHIQDeviceOpen; {A Device specific DeviceOpen method implementing the VCHIQ device interface (Mandatory)} + DeviceClose:TVCHIQDeviceClose; {A Device specific DeviceClose method implementing the VCHIQ device interface (Mandatory)} + DeviceControl:TVCHIQDeviceControl; {A Device specific DeviceControl method implementing the VCHIQ device interface (Mandatory)} + {Driver Properties} + State:PVCHIQ_STATE_T; {State information for the VCHIQ driver} + //To Do //Instances ? + Registers:PtrUInt; + CacheLineSize:LongWord; + FragmentsSize:LongWord; + FragmentsBase:Pointer; + FreeFragments:Pointer; + FragmentsMutex:TMutexHandle; + FragmentsSemaphore:TSemaphoreHandle; + {Statistics Properties} + DoorbellInterruptCount:LongWord; + end; + + {$PACKRECORDS C} + {Internal Types} + VCHIQ_FOURCC_CHARS = array[0..3] of Byte; + + {VCHI Interface Types (From vchi.h} + //To Do //More + + {VCHI Memory Types (From vchi_mh.h)} + VCHI_MEM_HANDLE_T = int32_t; + + {VCHIQ ARM Types (From vchiq_arm.h)} + VC_SUSPEND_STATUS_T = ( + VC_SUSPEND_FORCE_CANCELED = -3, {Force suspend canceled, too busy} + VC_SUSPEND_REJECTED = -2, {Videocore rejected suspend request} + VC_SUSPEND_FAILED = -1, {Videocore suspend failed} + VC_SUSPEND_IDLE = 0, {VC active, no suspend actions} + VC_SUSPEND_REQUESTED, {User has requested suspend} + VC_SUSPEND_IN_PROGRESS, {Slot handler has recvd suspend request} + VC_SUSPEND_SUSPENDED {Videocore suspend succeeded} + ); + + VC_RESUME_STATUS_T = ( + VC_RESUME_FAILED = -1, {Videocore resume failed} + VC_RESUME_IDLE = 0, {VC suspended, no resume actions} + VC_RESUME_REQUESTED, {User has requested resume} + VC_RESUME_IN_PROGRESS, {Slot handler has received resume request} + VC_RESUME_RESUMED {Videocore resumed successfully (active)} + ); + + VC_USE_TYPE_T = ( + USE_TYPE_SERVICE, + USE_TYPE_SERVICE_NO_RESUME, + USE_TYPE_VCHIQ + ); + + {VCHIQ IO Interface Types (From vchiq_if.h)} + VCHIQ_REASON_T = ( + VCHIQ_SERVICE_OPENED, {service, -, -} + VCHIQ_SERVICE_CLOSED, {service, -, -} + VCHIQ_MESSAGE_AVAILABLE, {service, header, -} + VCHIQ_BULK_TRANSMIT_DONE, {service, -, bulk_userdata} + VCHIQ_BULK_RECEIVE_DONE, {service, -, bulk_userdata} + VCHIQ_BULK_TRANSMIT_ABORTED, {service, -, bulk_userdata} + VCHIQ_BULK_RECEIVE_ABORTED {service, -, bulk_userdata} + ); + + VCHIQ_STATUS_T = ( + VCHIQ_ERROR = -1, + VCHIQ_SUCCESS = 0, + VCHIQ_RETRY = 1 + ); + + VCHIQ_BULK_MODE_T = ( + VCHIQ_BULK_MODE_CALLBACK, + VCHIQ_BULK_MODE_BLOCKING, + VCHIQ_BULK_MODE_NOCALLBACK, + VCHIQ_BULK_MODE_WAITING {Reserved for internal use} + ); + + VCHIQ_SERVICE_OPTION_T = ( + VCHIQ_SERVICE_OPTION_AUTOCLOSE, + VCHIQ_SERVICE_OPTION_SLOT_QUOTA, + VCHIQ_SERVICE_OPTION_MESSAGE_QUOTA, + VCHIQ_SERVICE_OPTION_SYNCHRONOUS, + VCHIQ_SERVICE_OPTION_TRACE + ); + + PPVCHIQ_HEADER_T = ^PVCHIQ_HEADER_T; + PVCHIQ_HEADER_T = ^VCHIQ_HEADER_T; + VCHIQ_HEADER_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + msgid: cint; {The message identifier (Opaque to applications)} + size: cunsigned; {Size of message data} + data:array[0..0] of Byte; {Message (Not part of header size)} + end; + + PVCHIQ_ELEMENT_T = ^VCHIQ_ELEMENT_T; + VCHIQ_ELEMENT_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + data: Pointer; + size: cint; + end; + + PVCHIQ_ELEMENT_ARRAY_T = ^VCHIQ_ELEMENT_ARRAY_T; + VCHIQ_ELEMENT_ARRAY_T = array[0..0] of VCHIQ_ELEMENT_T; {Not part of original driver} + + VCHIQ_SERVICE_HANDLE_T = cunsigned; + PVCHIQ_SERVICE_HANDLE_T = ^VCHIQ_SERVICE_HANDLE_T; + + VCHIQ_CALLBACK_T = function(Reason: VCHIQ_REASON_T; Header: PVCHIQ_HEADER_T; Handle: VCHIQ_SERVICE_HANDLE_T; Data: Pointer): VCHIQ_STATUS_T; + + PVCHIQ_SERVICE_BASE_T = ^VCHIQ_SERVICE_BASE_T; + VCHIQ_SERVICE_BASE_T = record + fourcc: cint; + callback: VCHIQ_CALLBACK_T; + userdata: Pointer; + end; + + PVCHIQ_SERVICE_PARAMS_T = ^VCHIQ_SERVICE_PARAMS_T; + VCHIQ_SERVICE_PARAMS_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + fourcc: cint; + callback: VCHIQ_CALLBACK_T; + userdata: Pointer; + version: cshort; {Increment for non-trivial changes} + version_min: cshort; {Update for incompatible changes} + end; + + PVCHIQ_CONFIG_T = ^VCHIQ_CONFIG_T; + VCHIQ_CONFIG_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + max_msg_size: cint; + bulk_threshold: cint; {The message size aboce which it is better to use a bulk transfer (<= max_msg_size)} + max_outstanding_bulks: cint; + max_services: cint; + version: cshort; {The version of VCHIQ} + version_min: cshort; {The minimum compatible version of VCHIQ} + end; + + PVCHIQ_INSTANCE_T = ^VCHIQ_INSTANCE_T; + VCHIQ_INSTANCE_T = record {Note: The Linux driver version of this is different from the Userland library version, this is the Userland version from vchiq_lib.c} + { The actual struture should be opaque to the caller, the Ultibo driver uses TVCHIQInstance for tracking instance data instead} + + //To Do //See (vchiq_instance_struct): Linux\drivers\staging\vc04_services\interface\vchiq_arm\vchiq_kern_lib.c <- Not needed ? (This is a subset of vchiq_arm.c version) + //And (vchiq_instance_struct): Linux\drivers\staging\\vc04_services\interface\vchiq_arm\vchiq_arm.c <-- Use this one for TVCHIQInstance ! + //And (vchiq_instance_struct): Userland\interface\vchiq_arm\vchiq_lib.c <- Use this one for here ! + end; + + VCHIQ_REMOTE_USE_CALLBACK_T = procedure(cb_arg: Pointer); + + {VCHIQ Core Types (From vchiq_core.h)} + BITSET_T = uint32_t; + PBITSET_T = puint32_t; + + VCHIQ_DEBUG_T = ( + VCHIQ_DEBUG_ENTRIES, + {$IFDEF VCHIQ_ENABLE_DEBUG} + VCHIQ_DEBUG_SLOT_HANDLER_COUNT, + VCHIQ_DEBUG_SLOT_HANDLER_LINE, + VCHIQ_DEBUG_PARSE_LINE, + VCHIQ_DEBUG_PARSE_HEADER, + VCHIQ_DEBUG_PARSE_MSGID, + VCHIQ_DEBUG_AWAIT_COMPLETION_LINE, + VCHIQ_DEBUG_DEQUEUE_MESSAGE_LINE, + VCHIQ_DEBUG_SERVICE_CALLBACK_LINE, + VCHIQ_DEBUG_MSG_QUEUE_FULL_COUNT, + VCHIQ_DEBUG_COMPLETION_QUEUE_FULL_COUNT, + {$ENDIF} + VCHIQ_DEBUG_MAX + ); + + VCHIQ_CONNSTATE_T = ( + VCHIQ_CONNSTATE_DISCONNECTED, + VCHIQ_CONNSTATE_CONNECTING, + VCHIQ_CONNSTATE_CONNECTED, + VCHIQ_CONNSTATE_PAUSING, + VCHIQ_CONNSTATE_PAUSE_SENT, + VCHIQ_CONNSTATE_PAUSED, + VCHIQ_CONNSTATE_RESUMING, + VCHIQ_CONNSTATE_PAUSE_TIMEOUT, + VCHIQ_CONNSTATE_RESUME_TIMEOUT + ); + + VCHIQ_SRVSTATE_T = ( + VCHIQ_SRVSTATE_FREE, + VCHIQ_SRVSTATE_HIDDEN, + VCHIQ_SRVSTATE_LISTENING, + VCHIQ_SRVSTATE_OPENING, + VCHIQ_SRVSTATE_OPEN, + VCHIQ_SRVSTATE_OPENSYNC, + VCHIQ_SRVSTATE_CLOSESENT, + VCHIQ_SRVSTATE_CLOSERECVD, + VCHIQ_SRVSTATE_CLOSEWAIT, + VCHIQ_SRVSTATE_CLOSED + ); + + VCHIQ_POLL_T = ( + VCHIQ_POLL_TERMINATE, + VCHIQ_POLL_REMOVE, + VCHIQ_POLL_TXNOTIFY, + VCHIQ_POLL_RXNOTIFY, + VCHIQ_POLL_COUNT + ); + + VCHIQ_BULK_DIR_T = ( + VCHIQ_BULK_TRANSMIT, + VCHIQ_BULK_RECEIVE + ); + + VCHIQ_USERDATA_TERM_T = procedure(userdata: Pointer); + + PVCHIQ_BULK_T = ^VCHIQ_BULK_T; + VCHIQ_BULK_T = record + mode: VCHIQ_BULK_MODE_T; {cshort} + dir: VCHIQ_BULK_DIR_T; {cshort} + userdata: Pointer; + handle: VCHI_MEM_HANDLE_T; + data: Pointer; + size: cint; + remote_data: Pointer; + remote_size: cint; + actual: cint; + end; + + PVCHIQ_BULK_QUEUE_T = ^VCHIQ_BULK_QUEUE_T; + VCHIQ_BULK_QUEUE_T = record + local_insert: cint; {Where to insert the next local bulk} + remote_insert: cint; {Where to insert the next remote bulk (master)} + process: cint; {Bulk to transfer next} + remote_notify: cint; {Bulk to notify the remote client of next (mstr)} + remove: cint; {Bulk to notify the local client of, and remove, next} + bulks: array[0..VCHIQ_NUM_SERVICE_BULKS - 1] of VCHIQ_BULK_T; + end; + + PREMOTE_EVENT_T = ^REMOTE_EVENT_T; + REMOTE_EVENT_T = record {This structure is shared with the GPU via slot memory, it MUST NOT be changed} + armed: cint; + fired: cint; + event: TSemaphoreHandle; + end; + + PVCHIQ_PLATFORM_STATE_T = ^VCHIQ_PLATFORM_STATE_T; + VCHIQ_PLATFORM_STATE_T = record {Combined from VCHIQ_2835_ARM_STATE_T and VCHIQ_ARM_STATE_T} + inited: Boolean; {cint} + + {Keepalive-related data} + ka_thread: TThreadHandle; + ka_evt: TCompletionHandle; + ka_use_count: LongInt; {atomic_t} + ka_use_ack_count: LongInt; {atomic_t} + ka_release_count: LongInt; {atomic_t} + + vc_suspend_complete: TCompletionHandle; + vc_resume_complete: TCompletionHandle; + + susp_res_lock: TSynchronizerHandle; + vc_suspend_state: VC_SUSPEND_STATUS_T; + vc_resume_state: VC_RESUME_STATUS_T; + + wake_address: cunsigned; + + suspend_timer: TTimerHandle; + suspend_timer_timeout: cint; + suspend_timer_running: Boolean; {cint} + + {Global use count for videocore. This is equal to the sum of the use counts for all services. When this hits zero the videocore suspend procedure will be initiated} + videocore_use_count: cint; + + {Use count to track requests from videocore peer. This use count is not associated with a service, so needs to be tracked separately with the state} + peer_use_count: cint; + + {Flag to indicate whether resume is blocked. This happens when the ARM is suspending} + resume_blocker: TCompletionHandle; + resume_blocked: cint; + blocked_blocker: TCompletionHandle; + blocked_count: cint; + + autosuspend_override: cint; + + {Flag to indicate that the first vchiq connect has made it through. This means that both sides should be fully ready, and we should be able to suspend after this point} + first_connect: Boolean; {cint} + + suspend_start_time: culonglong; + sleep_start_time: culonglong; + resume_start_time: culonglong; + last_wake_time: culonglong; + end; + + {PVCHIQ_STATE_T = ^VCHIQ_STATE_T;} {Declared above for TVCHIQDevice} + + PVCHIQ_SLOT_T = ^VCHIQ_SLOT_T; + VCHIQ_SLOT_T = record + data: array[0..VCHIQ_SLOT_SIZE - 1] of Byte; + end; + + PVCHIQ_SLOT_ARRAY_T = ^VCHIQ_SLOT_ARRAY_T; + VCHIQ_SLOT_ARRAY_T = array[0..0] of VCHIQ_SLOT_T; {Not part of original driver} + + PVCHIQ_SLOT_INFO_T = ^VCHIQ_SLOT_INFO_T; + VCHIQ_SLOT_INFO_T = record {This structure is shared with the GPU via slot memory, it MUST NOT be changed} + use_count: cshort; {Use two counters rather than one to avoid the need for a mutex} + release_count: cshort; + end; + + PVCHIQ_SERVICE_STATS_T = ^VCHIQ_SERVICE_STATS_T; + VCHIQ_SERVICE_STATS_T = record + quota_stalls: cint; + slot_stalls: cint; + bulk_stalls: cint; + error_count: cint; + ctrl_tx_count: cint; + ctrl_rx_count: cint; + bulk_tx_count: cint; + bulk_rx_count: cint; + bulk_aborted_count: cint; + ctrl_tx_bytes: uint64_t; + ctrl_rx_bytes: uint64_t; + bulk_tx_bytes: uint64_t; + bulk_rx_bytes: uint64_t; + end; + + PPVCHIQ_SERVICE_T = ^PVCHIQ_SERVICE_T; + PVCHIQ_SERVICE_T = ^VCHIQ_SERVICE_T; + VCHIQ_SERVICE_T = record + base: VCHIQ_SERVICE_BASE_T; + handle: VCHIQ_SERVICE_HANDLE_T ; + ref_count: cunsigned; + srvstate: VCHIQ_SRVSTATE_T; + userdata_term: VCHIQ_USERDATA_TERM_T; + localport: cunsigned; + remoteport: cunsigned; + public_fourcc: cint; + client_id: cint; + auto_close: Byte; + sync: Byte; + closing: Byte; + trace: Byte; + poll_flags: LongInt; {atomic_t} + version: cshort; + version_min: cshort; + peer_version: cshort; + + state: PVCHIQ_STATE_T; + instance: PVCHIQInstance; {PVCHIQ_INSTANCE_T} + + service_use_count: cint; + + bulk_tx: VCHIQ_BULK_QUEUE_T; + bulk_rx: VCHIQ_BULK_QUEUE_T; + + remove_event: TSemaphoreHandle; + bulk_remove_event: TSemaphoreHandle; + bulk_mutex: TMutexHandle; + + stats: VCHIQ_SERVICE_STATS_T; + end; + + PVCHIQ_SERVICE_QUOTA_T = ^VCHIQ_SERVICE_QUOTA_T; + VCHIQ_SERVICE_QUOTA_T = record + slot_quota: cushort; {The quota information is outside VCHIQ_SERVICE_T so that it can be} + slot_use_count: cushort; {statically allocated, since for accounting reasons a service's slot} + message_quota: cushort; {usage is carried over between users of the same port number} + message_use_count: cushort; + quota_event: TSemaphoreHandle; + previous_tx_index: cint; + end; + + PVCHIQ_SHARED_STATE_T = ^VCHIQ_SHARED_STATE_T; + VCHIQ_SHARED_STATE_T = record {This structure is shared with the GPU via slot memory, it MUST NOT be changed} + initialised: cint; {A non-zero value here indicates that the content is valid} + + slot_first: cint; {The first and last (inclusive) slots allocated to the owner} + slot_last: cint; + + slot_sync: cint; {The slot allocated to synchronous messages from the owner} + + trigger: REMOTE_EVENT_T; {Signaling this event indicates that owner's slot handler thread should run} + + tx_pos: cint; {Indicates the byte position within the stream where the next message will be written. The least significant bits are an index into the slot. The next bits are the index of the slot in slot_queue} + + recycle: REMOTE_EVENT_T; {This event should be signalled when a slot is recycled} + + slot_queue_recycle: cint; {The slot_queue index where the next recycled slot will be written} + + sync_trigger: REMOTE_EVENT_T; {This event should be signalled when a synchronous message is sent} + + sync_release: REMOTE_EVENT_T; {This event should be signalled when a synchronous message has been released} + + slot_queue: array[0..VCHIQ_MAX_SLOTS_PER_SIDE - 1] of cint; {A circular buffer of slot indexes} + + debug: array[0..VCHIQ_DEBUG_MAX - 1] of cint; {Debugging state} + end; + + PVCHIQ_SLOT_ZERO_T = ^VCHIQ_SLOT_ZERO_T; + VCHIQ_SLOT_ZERO_T = record {This structure is shared with the GPU via slot memory, it MUST NOT be changed} + magic: cint; + version: cshort; + version_min: cshort; + slot_zero_size: cint; + slot_size: cint; + max_slots: cint; + max_slots_per_side: cint; + platform_data: array[0..1] of cint; + master: VCHIQ_SHARED_STATE_T; + slave: VCHIQ_SHARED_STATE_T; + slots: array[0..VCHIQ_MAX_SLOTS - 1] of VCHIQ_SLOT_INFO_T; + end; + + PVCHIQ_STATE_STATS_T = ^VCHIQ_STATE_STATS_T; + VCHIQ_STATE_STATS_T = record + slot_stalls: cint; + data_stalls: cint; + ctrl_tx_count: cint; + ctrl_rx_count: cint; + error_count: cint; + end; + + {PVCHIQ_STATE_T = ^VCHIQ_STATE_T;} {Declared above for TVCHIQDevice and VCHIQ_SERVICE_T} + VCHIQ_STATE_T = record + id: cint; + initialised: Boolean; {cint} + conn_state: VCHIQ_CONNSTATE_T; + is_master: Boolean; {cint} + version_common: cshort; + + local: PVCHIQ_SHARED_STATE_T; + remote: PVCHIQ_SHARED_STATE_T; + slot_data: PVCHIQ_SLOT_ARRAY_T; {PVCHIQ_SLOT_T} + + default_slot_quota: cushort; + default_message_quota: cushort; + + connect: TSemaphoreHandle; {Event indicating connect message received} + + mutex: TMutexHandle; {Mutex protecting services} + instance: PVCHIQ_INSTANCE_T; //To Do //What to do with this ? //Change to a PVCHIQInstance ? //What uses it ? + + slot_handler_thread: TThreadHandle; {Processes incoming messages} + + recycle_thread: TThreadHandle; {Processes recycled slots} + + sync_thread: TThreadHandle; {Processes synchronous messages} + + trigger_event: TSemaphoreHandle; {Local implementation of the trigger remote event} //To Do //Not required, actual Semapahore is in local.trigger.event //May be needed for 64-bit handling + + recycle_event: TSemaphoreHandle; {Local implementation of the recycle remote event} //To Do //Not required, actual Semapahore is in local.recycle.event //May be needed for 64-bit handling + + sync_trigger_event: TSemaphoreHandle; {Local implementation of the sync trigger remote event} //To Do //Not required, actual Semapahore is in local.sync_trigger.event //May be needed for 64-bit handling + + sync_release_event: TSemaphoreHandle; {Local implementation of the sync release remote event} //To Do //Not required, actual Semapahore is in local.sync_release.event //May be needed for 64-bit handling + + tx_data: PByte; + rx_data: PByte; + rx_info: PVCHIQ_SLOT_INFO_T; + + slot_mutex: TMutexHandle; + + recycle_mutex: TMutexHandle; + + sync_mutex: TMutexHandle; + + bulk_transfer_mutex: TMutexHandle; + + rx_pos: cint; {Indicates the byte position within the stream from where the next message will be read. The least significant bits are an index into the slot. The next bits are the index of the slot in remote.slot_queue} + + local_tx_pos: cint; {A cached copy of local.tx_pos. Only write to local.tx_pos, and read from remote.tx_pos} + + slot_queue_available: cint; {The slot_queue index of the slot to become available next} + + poll_needed: cint; {A flag to indicate if any poll has been requested} + + previous_data_index: cint; {Ths index of the previous slot used for data messages} + + data_use_count: cushort; {The number of slots occupied by data messages} + + data_quota: cushort; {The maximum number of slots to be occupied by data messages} + + poll_services: array[0..VCHIQ_MAX_SERVICES_BITSET_SIZE - 1] of LongInt; {atomic_t} {An array of bit sets indicating which services must be polled} + + unused_service: cint; {The number of the first unused service} + + slot_available_event: TSemaphoreHandle; {Signalled when a free slot becomes available} + + slot_remove_event: TSemaphoreHandle; {Signalled when a free data slot becomes available} + + data_quota_event: TSemaphoreHandle; + + deferred_bulks: cint; {Incremented when there are bulk transfers which cannot be processed whilst paused and must be processed on resume} + + stats: VCHIQ_STATE_STATS_T; + + services: array[0..VCHIQ_MAX_SERVICES - 1] of PVCHIQ_SERVICE_T; + service_quotas: array[0..VCHIQ_MAX_SERVICES - 1] of VCHIQ_SERVICE_QUOTA_T; + slot_info: array[0..VCHIQ_MAX_SLOTS - 1] of VCHIQ_SLOT_INFO_T; + + platform_state: PVCHIQ_PLATFORM_STATE_T; + end; + + PVCHIQ_BULK_WAITER_T = ^VCHIQ_BULK_WAITER_T; + VCHIQ_BULK_WAITER_T = record + bulk: PVCHIQ_BULK_T; + event: TSemaphoreHandle; + actual: cint; + end; + + {VCHIQ IO Control Types (From vchiq_ioctl.h)} + PVCHIQ_CREATE_SERVICE_T = ^VCHIQ_CREATE_SERVICE_T; + VCHIQ_CREATE_SERVICE_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + params: VCHIQ_SERVICE_PARAMS_T; + is_open: cint; + is_vchi: cint; + handle: cunsigned; {OUT} + end; + + PVCHIQ_QUEUE_MESSAGE_T = ^VCHIQ_QUEUE_MESSAGE_T; + VCHIQ_QUEUE_MESSAGE_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + handle: cunsigned; + count: cunsigned ; + elements: PVCHIQ_ELEMENT_ARRAY_T; {PVCHIQ_ELEMENT_T} + end; + + PVCHIQ_QUEUE_BULK_TRANSFER_T = ^VCHIQ_QUEUE_BULK_TRANSFER_T; + VCHIQ_QUEUE_BULK_TRANSFER_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + handle: cunsigned; + data: Pointer; + size: cunsigned; + userdata: Pointer; + mode: VCHIQ_BULK_MODE_T ; + end; + + PVCHIQ_COMPLETION_DATA_T = ^VCHIQ_COMPLETION_DATA_T; + VCHIQ_COMPLETION_DATA_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + reason: VCHIQ_REASON_T; + header: PVCHIQ_HEADER_T; + service_userdata: Pointer; + bulk_userdata: Pointer; + end; + + PVCHIQ_COMPLETION_DATA_ARRAY_T = ^VCHIQ_COMPLETION_DATA_ARRAY_T; + VCHIQ_COMPLETION_DATA_ARRAY_T = array[0..0] of VCHIQ_COMPLETION_DATA_T; {Not part of original driver} + + PVCHIQ_AWAIT_COMPLETION_T = ^VCHIQ_AWAIT_COMPLETION_T; + VCHIQ_AWAIT_COMPLETION_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + count: cunsigned; + buf: PVCHIQ_COMPLETION_DATA_ARRAY_T; {PVCHIQ_COMPLETION_DATA_T} + msgbufsize: cunsigned; + msgbufcount: cunsigned; {IN/OUT} + msgbufs: PPointer; + end; + + PVCHIQ_DEQUEUE_MESSAGE_T = ^VCHIQ_DEQUEUE_MESSAGE_T; + VCHIQ_DEQUEUE_MESSAGE_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + handle: cunsigned; + blocking: cint; + bufsize: cunsigned; + buf: Pointer; + end; + + PVCHIQ_GET_CONFIG_T = ^VCHIQ_GET_CONFIG_T; + VCHIQ_GET_CONFIG_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + config_size: cunsigned; + pconfig: PVCHIQ_CONFIG_T; + end; + + PVCHIQ_SET_SERVICE_OPTION_T = ^VCHIQ_SET_SERVICE_OPTION_T; + VCHIQ_SET_SERVICE_OPTION_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + handle: cunsigned; + option: VCHIQ_SERVICE_OPTION_T; + value: cint; + end; + + PVCHIQ_DUMP_MEM_T = ^VCHIQ_DUMP_MEM_T; + VCHIQ_DUMP_MEM_T = record {This structure is passed by or returned to callers via the IOCTL request, it MUST NOT be changed} + virt_addr: Pointer; + num_bytes: size_t; + end; + + {VCHIQ Core Types (From vchiq_core.c)} + PVCHIQ_OPEN_PAYLOAD = ^VCHIQ_OPEN_PAYLOAD; + VCHIQ_OPEN_PAYLOAD = record {This structure is shared with the GPU via slot memory, it MUST NOT be changed} + fourcc: cint; + client_id: cint; + version: cshort; + version_min: cshort; + end; + + PVCHIQ_OPENACK_PAYLOAD = ^VCHIQ_OPENACK_PAYLOAD; + VCHIQ_OPENACK_PAYLOAD = record {This structure is shared with the GPU via slot memory, it MUST NOT be changed} + version: cshort; + end; + + PVCHIQ_BULK_PAYLOAD = ^VCHIQ_BULK_PAYLOAD; + VCHIQ_BULK_PAYLOAD = record + data: cint; {Note: Not pointer due to size difference for 32/64 bit} + size: cint; + end; + + {VCHIQ ARM Types (From vchiq_arm.c)} + PVCHIQ_USER_SERVICE_T = ^VCHIQ_USER_SERVICE_T; + VCHIQ_USER_SERVICE_T = record + service: PVCHIQ_SERVICE_T; + userdata: Pointer; + instance: PVCHIQInstance; {PVCHIQ_INSTANCE_T} + is_vchi: Boolean; {char} + dequeue_pending: Boolean; {char} + close_pending: Boolean; {char} + message_available_pos: cint; + msg_insert: cint; + msg_remove: cint; + insert_event: TSemaphoreHandle; + remove_event: TSemaphoreHandle; + close_event: TSemaphoreHandle; + msg_queue:array[0..VCHIQ_MSG_QUEUE_SIZE - 1] of PVCHIQ_HEADER_T; + end; + + PVCHIQ_BULK_WAITER_NODE_T = ^VCHIQ_BULK_WAITER_NODE_T; + VCHIQ_BULK_WAITER_NODE_T = record + bulk_waiter: VCHIQ_BULK_WAITER_T; + pid: cint; {Thread ID (In the Linux driver this is the Process ID which is the Thread ID)} + //list: list_head; //To Do //Continuing + end; + + {VCHIQ Pagelist Constants (From vchiq_pagelist.h)} + PVCHIQ_PAGELIST_T = ^VCHIQ_PAGELIST_T; + VCHIQ_PAGELIST_T = record + length: culong; + pagetype: cushort; + offset: cushort; + addrs: array[0..0] of culong; {N.B. 12 LSBs hold the number of following pages at consecutive addresses} + end; + + PVCHIQ_PAGELIST_PAGES = ^VCHIQ_PAGELIST_PAGES; + VCHIQ_PAGELIST_PAGES = array[0..0] of PtrUInt; {Not part of original driver} + + PVCHIQ_FRAGMENTS_T = ^VCHIQ_FRAGMENTS_T; + VCHIQ_FRAGMENTS_T = record + headbuf: array[0..VCHIQ_CACHE_LINE_SIZE - 1] of Byte; + tailbuf: array[0..VCHIQ_CACHE_LINE_SIZE - 1] of Byte; + end; + + {$PACKRECORDS DEFAULT} + + {VCHIQ Instance (Based on vchiq_instance_struct in vchiq_arm.c)} + TVCHIQInstance = record + VCHIQ:PVCHIQDevice; + State:PVCHIQ_STATE_T; + {Completions and Events} + Completions:array[0..VCHIQ_MAX_COMPLETIONS] of VCHIQ_COMPLETION_DATA_T; + CompletionInsert:Integer; + CompletionRemove:Integer; + InsertEvent:TSemaphoreHandle; + RemoveEvent:TSemaphoreHandle; + CompletionMutex:TMutexHandle; + + {Status} + Connected:Boolean; + Closing:Boolean; + PID:Integer; {Process ID (In the Linux driver this is the Thread Group ID which is the Process ID)} + Mark:Integer; //To Do //Not required ?, used by vchiq_dump_platform_instances in vchiq_arm.c + UseCloseDelivered:Boolean; + Trace:Boolean; //To Do //Not required ?, used by vchiq_debugfs.c + + {Bulk Waiter} + //bulk_waiter_list //To Do //Continuing + BulkWaiterMutex:TMutexHandle; + end; + +{==============================================================================} +var + {VCHIQ specific variables} + VCHIQ_REASON_NAMES:array[Low(VCHIQ_REASON_T)..High(VCHIQ_REASON_T)] of String = ( + 'SERVICE_OPENED', + 'SERVICE_CLOSED', + 'MESSAGE_AVAILABLE', + 'BULK_TRANSMIT_DONE', + 'BULK_RECEIVE_DONE', + 'BULK_TRANSMIT_ABORTED', + 'BULK_RECEIVE_ABORTED' + ); + + VCHIQ_CONNSTATE_NAMES:array[Low(VCHIQ_CONNSTATE_T)..High(VCHIQ_CONNSTATE_T)] of String = ( + 'DISCONNECTED', + 'CONNECTING', + 'CONNECTED', + 'PAUSING', + 'PAUSE_SENT', + 'PAUSED', + 'RESUMING', + 'PAUSE_TIMEOUT', + 'RESUME_TIMEOUT' + ); + + VCHIQ_SRVSTATE_NAMES:array[Low(VCHIQ_SRVSTATE_T)..High(VCHIQ_SRVSTATE_T)] of String = ( + 'FREE', + 'HIDDEN', + 'LISTENING', + 'OPENING', + 'OPEN', + 'OPENSYNC', + 'CLOSESENT', + 'CLOSERECVD', + 'CLOSEWAIT', + 'CLOSED' + ); + +{==============================================================================} +{Initialization Functions} +procedure VCHIQInit; + +{==============================================================================} +{VCHIQ Mailbox Functions} +function VCHIQEnable(Address:LongWord):LongWord; + +{==============================================================================} +{VCHIQ Device Functions} +function VCHIQDeviceStart(VCHIQ:PVCHIQDevice):LongWord; +function VCHIQDeviceStop(VCHIQ:PVCHIQDevice):LongWord; + +function VCHIQDeviceOpen(VCHIQ:PVCHIQDevice):PVCHIQInstance; +function VCHIQDeviceClose(VCHIQ:PVCHIQDevice;Instance:PVCHIQInstance):LongWord; + +function VCHIQDeviceControl(VCHIQ:PVCHIQDevice;Instance:PVCHIQInstance;Code,Argument:LongWord;var Response:LongWord):LongWord; + +{==============================================================================} +{VCHIQ Core Functions} +{Initialization} +function VCHIQInitSlots(MemBase:Pointer;MemSize:LongWord):PVCHIQ_SLOT_ZERO_T; +function VCHIQInitState(VCHIQ:PVCHIQDevice;State:PVCHIQ_STATE_T;SlotZero:PVCHIQ_SLOT_ZERO_T;IsMaster:Boolean):VCHIQ_STATUS_T; + +procedure VCHIQInitBulkQueue(Queue:PVCHIQ_BULK_QUEUE_T); + +{Service} +function VCHIQCloseService(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +function VCHIQRemoveService(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; + +procedure VCHIQMarkServiceClosing(Service:PVCHIQ_SERVICE_T); +function VCHIQMakeServiceCallback(Service:PVCHIQ_SERVICE_T;Reason:VCHIQ_REASON_T;Header:PVCHIQ_HEADER_T;BulkUserdata:Pointer):VCHIQ_STATUS_T; + +function VCHIQSetServiceOption(Handle:VCHIQ_SERVICE_HANDLE_T;Option:VCHIQ_SERVICE_OPTION_T;Value:Integer):VCHIQ_STATUS_T; + +{Transfer} +function VCHIQBulkTransfer(Handle:VCHIQ_SERVICE_HANDLE_T;MemHandle:VCHI_MEM_HANDLE_T;Offset:Pointer;Size:Integer;Userdata:Pointer;Mode:VCHIQ_BULK_MODE_T;Dir:VCHIQ_BULK_DIR_T):VCHIQ_STATUS_T; + +{State} +function VCHIQPauseInternal(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +function VCHIQResumeInternal(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; + +function VCHIQSendRemoteUse(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +function VCHIQSendRemoteRelease(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +function VCHIQSendRemoteUseActive(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; + +{Instance} +function VCHIQConnectInternal(State:PVCHIQ_STATE_T;Instance:PVCHIQInstance):VCHIQ_STATUS_T; +function VCHIQShutdownInternal(State:PVCHIQ_STATE_T;Instance:PVCHIQInstance):VCHIQ_STATUS_T; + +{Config} +function VCHIQGetConfig(Instance:PVCHIQInstance;ConfigSize:Integer;Config:PVCHIQ_CONFIG_T):VCHIQ_STATUS_T; +function VCHIQGetPeerVersion(Handle:VCHIQ_SERVICE_HANDLE_T;PeerVersion:PSmallInt):VCHIQ_STATUS_T; + +{Service Internal} +function VCHIQAddServiceInternal(State:PVCHIQ_STATE_T;Params:PVCHIQ_SERVICE_PARAMS_T;ServiceState:VCHIQ_SRVSTATE_T;Instance:PVCHIQInstance;TermProc:VCHIQ_USERDATA_TERM_T):PVCHIQ_SERVICE_T; + +function VCHIQOpenServiceInternal(Service:PVCHIQ_SERVICE_T;ClientID:Integer):VCHIQ_STATUS_T; +function VCHIQCloseServiceInternal(Service:PVCHIQ_SERVICE_T;CloseReceived:Boolean):VCHIQ_STATUS_T; + +procedure VCHIQMarkServiceClosingInternal(Service:PVCHIQ_SERVICE_T;SlotHandler:Boolean); +procedure VCHIQTerminateServiceInternal(Service:PVCHIQ_SERVICE_T); +procedure VCHIQFreeServiceInternal(Service:PVCHIQ_SERVICE_T); + +function VCHIQGetClientID(Handle:VCHIQ_SERVICE_HANDLE_T):Integer; +function VCHIQGetServiceUserData(Handle:VCHIQ_SERVICE_HANDLE_T):Pointer; +function VCHIQGetServiceFourcc(Handle:VCHIQ_SERVICE_HANDLE_T):Integer; + +procedure VCHIQLockService(Service:PVCHIQ_SERVICE_T); +procedure VCHIQUnlockService(Service:PVCHIQ_SERVICE_T); + +function VCHIQHandleToService(Handle:VCHIQ_SERVICE_HANDLE_T):PVCHIQ_SERVICE_T; + +function VCHIQFindServiceByHandle(Handle:VCHIQ_SERVICE_HANDLE_T):PVCHIQ_SERVICE_T; +function VCHIQFindServiceByPort(State:PVCHIQ_STATE_T;LocalPort:Integer):PVCHIQ_SERVICE_T; +function VCHIQFindServiceForInstance(Instance:PVCHIQInstance;Handle:VCHIQ_SERVICE_HANDLE_T):PVCHIQ_SERVICE_T; +function VCHIQFindClosedServiceForInstance(Instance:PVCHIQInstance;Handle:VCHIQ_SERVICE_HANDLE_T):PVCHIQ_SERVICE_T; + +function VCHIQNextServiceByInstance(State:PVCHIQ_STATE_T;Instance:PVCHIQInstance;var Index:Integer):PVCHIQ_SERVICE_T; + +{Other} +procedure VCHIQRequestPoll(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T;PollType:VCHIQ_POLL_T); +function VCHIQReserveSpace(State:PVCHIQ_STATE_T;Space:Integer;IsBlocking:Boolean):PVCHIQ_HEADER_T; + +procedure VCHIQDumpState(Context:Pointer;State:PVCHIQ_STATE_T); +procedure VCHIQDumpSharedState(Context:Pointer;State:PVCHIQ_STATE_T;Shared:PVCHIQ_SHARED_STATE_T;Text:PChar); +procedure VCHIQDumpServiceState(Context:Pointer;Service:PVCHIQ_SERVICE_T); + +procedure VCHIQSetConnState(State:PVCHIQ_STATE_T;NewState:VCHIQ_CONNSTATE_T); inline; +procedure VCHIQSetServiceState(Service:PVCHIQ_SERVICE_T;NewState:VCHIQ_SRVSTATE_T); inline; + +{Message} +function VCHIQQueueMessage(Handle:VCHIQ_SERVICE_HANDLE_T;Elements:PVCHIQ_ELEMENT_ARRAY_T;Count:LongWord):VCHIQ_STATUS_T; +procedure VCHIQReleaseMessage(Handle:VCHIQ_SERVICE_HANDLE_T;Header:PVCHIQ_HEADER_T); + +{Message Internal} +function VCHIQQueueMessageInternal(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T;MsgId:Integer;Elements:PVCHIQ_ELEMENT_ARRAY_T;Count,Size,Flags:Integer):VCHIQ_STATUS_T; +function VCHIQQueueMessageInternalSync(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T;MsgId:Integer;Elements:PVCHIQ_ELEMENT_ARRAY_T;Count,Size:Integer;IsBlocking:Boolean):VCHIQ_STATUS_T; + +procedure VCHIQReleaseMessageSync(State:PVCHIQ_STATE_T;Header:PVCHIQ_HEADER_T); + +{Slot} +procedure VCHIQClaimSlot(Slot:PVCHIQ_SLOT_INFO_T); inline; +procedure VCHIQReleaseSlot(State:PVCHIQ_STATE_T;Slot:PVCHIQ_SLOT_INFO_T;Header:PVCHIQ_HEADER_T;Service:PVCHIQ_SERVICE_T); + +{Remote Event} +procedure VCHIQRemoteEventCreate(Event:PREMOTE_EVENT_T); +procedure VCHIQRemoteEventDestroy(Event:PREMOTE_EVENT_T); +function VCHIQRemoteEventWait(Event:PREMOTE_EVENT_T):Boolean; +procedure VCHIQRemoteEventSignalLocal(Event:PREMOTE_EVENT_T); +procedure VCHIQRemoteEventPoll(Event:PREMOTE_EVENT_T); +procedure VCHIQRemoteEventPollAll(State:PVCHIQ_STATE_T); + +{Threads} +function VCHIQSyncExecute(VCHIQ:PVCHIQDevice):PtrInt; +function VCHIQRecycleExecute(VCHIQ:PVCHIQDevice):PtrInt; +function VCHIQSlotHandlerExecute(VCHIQ:PVCHIQDevice):PtrInt; + +{==============================================================================} +{VCHIQ Platform Functions} +{Initialization} +function VCHIQPlatformInit(VCHIQ:PVCHIQDevice;State:PVCHIQ_STATE_T):LongWord; + +function VCHIQPlatformInitState(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; + +{Service} +function VCHIQCheckService(Service:PVCHIQ_SERVICE_T):VCHIQ_STATUS_T; + +function VCHIQUseServiceNoResume(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +function VCHIQUseService(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +function VCHIQReleaseService(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; + +function VCHIQServiceCallback(Reason:VCHIQ_REASON_T;Header:PVCHIQ_HEADER_T;Handle:VCHIQ_SERVICE_HANDLE_T;BulkUserdata:Pointer):VCHIQ_STATUS_T; + +{User Service} +procedure VCHIQUserServiceFree(Userdata:Pointer); + +procedure VCHIQCloseDelivered(UserService:PVCHIQ_USER_SERVICE_T); + +{Transfer} +function VCHIQPrepareBulkData(Bulk:PVCHIQ_BULK_T;MemHandle:VCHI_MEM_HANDLE_T;Offset:Pointer;Size:Integer;Dir:VCHIQ_BULK_DIR_T):VCHIQ_STATUS_T; +procedure VCHIQCompleteBulk(Bulk:PVCHIQ_BULK_T); +procedure VCHIQTransferBulk(Bulk:PVCHIQ_BULK_T); + +{State} +function VCHIQGetState:PVCHIQ_STATE_T; + +function VCHIQUseInternal(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T;UseType:VC_USE_TYPE_T):VCHIQ_STATUS_T; +function VCHIQReleaseInternal(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T):VCHIQ_STATUS_T; + +procedure VCHIQOnRemoteUse(State:PVCHIQ_STATE_T); +procedure VCHIQOnRemoteRelease(State:PVCHIQ_STATE_T); + +{Service Internal} +function VCHIQUseServiceInternal(Service:PVCHIQ_SERVICE_T):VCHIQ_STATUS_T; +function VCHIQReleaseServiceInternal(Service:PVCHIQ_SERVICE_T):VCHIQ_STATUS_T; + +{Instance} +function VCHIQInstanceGetUseCount(Instance:PVCHIQInstance):Integer; +function VCHIQInstanceGetPID(Instance:PVCHIQInstance):Integer; +function VCHIQInstanceGetTrace(Instance:PVCHIQInstance):Boolean; +procedure VCHIQInstanceSetTrace(Instance:PVCHIQInstance;Trace:Integer); + +{Other} +procedure VCHIQDumpPhysicalMemory(VirtAddr:Pointer;NumBytes:LongWord); + +procedure VCHIQOnRemoteUseActive(State:PVCHIQ_STATE_T); + +procedure VCHIQPlatformConnStateChanged(State:PVCHIQ_STATE_T;OldState,NewState:VCHIQ_CONNSTATE_T); + +{Remote Event} +procedure VCHIQRemoteEventSignal(Event:PREMOTE_EVENT_T); + +{Suspend/Resume} +procedure VCHIQCheckSuspend(State:PVCHIQ_STATE_T); +procedure VCHIQPlatformCheckSuspend(State:PVCHIQ_STATE_T); + +function VCHIQPlatformSuspend(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +function VCHIQPlatformResume(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; + +procedure VCHIQPlatformPaused(State:PVCHIQ_STATE_T); +procedure VCHIQPlatformResumed(State:PVCHIQ_STATE_T); + +function VCHIQVideocoreWanted(State:PVCHIQ_STATE_T):Boolean; +function VCHIQPlatformVideocoreWanted(State:PVCHIQ_STATE_T):Boolean; + +function VCHIQPlatformUseSuspendTimer:Integer; +procedure VCHIQDumpPlatformUseState(State:PVCHIQ_STATE_T); +procedure VCHIQPlatformHandleTimeout(State:PVCHIQ_STATE_T); + +procedure VCHIQSetSuspendState(PlatformState:PVCHIQ_PLATFORM_STATE_T;NewState:VC_SUSPEND_STATUS_T); +procedure VCHIQSetResumeState(PlatformState:PVCHIQ_PLATFORM_STATE_T;NewState:VC_RESUME_STATUS_T); + +procedure VCHIQStartSuspendTimer(PlatformState:PVCHIQ_PLATFORM_STATE_T); +procedure VCHIQStopSuspendTimer(PlatformState:PVCHIQ_PLATFORM_STATE_T); + +function VCHIQNeedResume(State:PVCHIQ_STATE_T):Boolean; +function VCHIQBlockResume(PlatformState:PVCHIQ_PLATFORM_STATE_T):VCHIQ_STATUS_T; + +procedure VCHIQSuspendTimerCallback(State:PVCHIQ_STATE_T); + +{Pagelist} +function VCHIQCreatePagelist(Data:Pointer;Count:PtrUInt;PageType:Word;var Pagelist:PVCHIQ_PAGELIST_T):LongWord; +procedure VCHIQFreePagelist(Pagelist:PVCHIQ_PAGELIST_T;Actual:Integer); + +{Interrupts} +procedure VCHIQDoorbellInterruptHandler(VCHIQ:PVCHIQDevice); + +{Threads} +function VCHIQKeepaliveExecute(State:PVCHIQ_STATE_T):PtrInt; +function VCHIQKeepaliveCallback(Reason:VCHIQ_REASON_T;Header:PVCHIQ_HEADER_T;Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer):VCHIQ_STATUS_T; + +//To Do //vchiq_arm.c +//vchiq_arm_force_suspend +//etc + +{==============================================================================} +{VCHIQ Kernel Functions} +function VCHIQInitialise(var Instance:PVCHIQInstance):VCHIQ_STATUS_T; + +function VCHIQConnect(Instance:PVCHIQInstance):VCHIQ_STATUS_T; +function VCHIQShutdown(Instance:PVCHIQInstance):VCHIQ_STATUS_T; + +function VCHIQAddService(Instance:PVCHIQInstance;Params:PVCHIQ_SERVICE_PARAMS_T;var Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +function VCHIQOpenService(Instance:PVCHIQInstance;Params:PVCHIQ_SERVICE_PARAMS_T;var Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; + +function VCHIQQueueBulkTransmit(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Userdata:Pointer):VCHIQ_STATUS_T; +function VCHIQQueueBulkReceive(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Userdata:Pointer):VCHIQ_STATUS_T; + +function VCHIQBulkTransmit(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Userdata:Pointer;Mode:VCHIQ_BULK_MODE_T):VCHIQ_STATUS_T; +function VCHIQBulkReceive(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Userdata:Pointer;Mode:VCHIQ_BULK_MODE_T):VCHIQ_STATUS_T; + +function VCHIQBlockingBulkTransfer(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Dir:VCHIQ_BULK_DIR_T):VCHIQ_STATUS_T; + +{==============================================================================} +{VCHIQ Shim Functions} +//To Do //vchiq_shim.c +//vchi_initialise +//etc + +{==============================================================================} +{VCHIQ Util Functions} +//To Do //vchiq_util.c +//vchiu_queue_init +//etc + +{==============================================================================} +{VCHIQ Connected Functions} +//To Do //vchiq_connected.c +//connected_init +//vchiq_add_connected_callback +//vchiq_call_connected_callbacks +//etc + +{==============================================================================} +{VCHIQ Helper Functions} +function VCHIQ_MAKE_FOURCC(x0,x1,x2,x3:Char):LongWord; inline; + +function VCHIQ_PORT_IS_VALID(Port:LongWord):Boolean; inline; + +function VCHIQ_MAKE_MSG(MsgType,SrcPort,DstPort:LongWord):LongWord; inline; + +function VCHIQ_MSG_TYPE(MsgId:LongWord):LongWord; inline; + +function VCHIQ_MSG_SRCPORT(MsgId:LongWord):LongWord; inline; + +function VCHIQ_MSG_DSTPORT(MsgId:LongWord):LongWord; inline; + +procedure VCHIQ_FOURCC_AS_4CHARS(Fourcc:LongWord;var chars:VCHIQ_FOURCC_CHARS); + +function VCHIQ_FOURCC_IS_LEGAL(Fourcc:LongWord):Boolean; inline; + +function VCHIQ_BITSET_SIZE(b:LongWord):LongWord; inline; +function VCHIQ_BITSET_WORD(b:LongWord):LongWord; inline; +function VCHIQ_BITSET_BIT(b:LongWord):LongWord; inline; +procedure VCHIQ_BITSET_ZERO(bs:PBITSET_T;Size:LongWord); inline; +function VCHIQ_BITSET_IS_SET(bs:PBITSET_T;b:LongWord):Boolean; inline; +procedure VCHIQ_BITSET_SET(bs:PBITSET_T;b:LongWord); inline; +procedure VCHIQ_BITSET_CLR(bs:PBITSET_T;b:LongWord); inline; + +function VCHIQ_SLOT_INFO_FROM_INDEX(State:PVCHIQ_STATE_T;Index:Integer):PVCHIQ_SLOT_INFO_T; +function VCHIQ_SLOT_DATA_FROM_INDEX(State:PVCHIQ_STATE_T;Index:Integer):PByte; +function VCHIQ_SLOT_INDEX_FROM_DATA(State:PVCHIQ_STATE_T;Data:PByte):Integer; +function VCHIQ_SLOT_INDEX_FROM_INFO(State:PVCHIQ_STATE_T;Info:PVCHIQ_SLOT_INFO_T):Integer; +function VCHIQ_SLOT_QUEUE_INDEX_FROM_POS(Pos:LongWord):Integer; + +function VCHIQ_BULK_INDEX(x:Integer):Integer; inline; + +function VCHIQCalcStride(Size:LongWord):LongWord; inline; + +function VCHIQFourccToString(Fourcc:LongWord):String; + +function VCHIQMessageTypeToString(MsgType:LongWord):String; + +function VCHIQPollTypeToString(PollType:VCHIQ_POLL_T):String; + +function VCHIQPageTypeToString(PageType:Word):String; + +function VCHIQStatusToString(Status:VCHIQ_STATUS_T):String; +function VCHIQBulkDirToString(BulkDir:VCHIQ_BULK_DIR_T):String; +function VCHIQBulkModeToString(BulkMode:VCHIQ_BULK_MODE_T):String; +function VCHIQServiceOptionToString(ServiceOption:VCHIQ_SERVICE_OPTION_T):String; + +function VCHIQReasonToString(Reason:VCHIQ_REASON_T):String; inline; +function VCHIQConnStateToString(ConnState:VCHIQ_CONNSTATE_T):String; inline; +function VCHIQServiceStateToString(ServiceState:VCHIQ_SRVSTATE_T):String; inline; + +function VCHIQSuspendStatusToString(Status:VC_SUSPEND_STATUS_T):String; +function VCHIQResumeStatusToString(Status:VC_RESUME_STATUS_T):String; + +{==============================================================================} +{==============================================================================} + +implementation + +uses {$IFDEF CPUARMV6}BCM2835{$ELSE}BCM2837{$ENDIF}; + +{==============================================================================} +{==============================================================================} +const + {VCHIQ mailbox constants} + {$IFDEF CPUARMV6} + VCHIQ_MBOX_REQUEST_CODE = BCM2835_MBOX_REQUEST_CODE; + + VCHIQ_MBOX_TAG_END = BCM2835_MBOX_TAG_END; + VCHIQ_MBOX_TAG_VCHIQ_INIT = BCM2835_MBOX_TAG_VCHIQ_INIT; + + VCHIQ_MAILBOX_0 = BCM2835_MAILBOX_0; + VCHIQ_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC = BCM2835_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC; + {$ELSE} + VCHIQ_MBOX_REQUEST_CODE = BCM2837_MBOX_REQUEST_CODE; + + VCHIQ_MBOX_TAG_END = BCM2837_MBOX_TAG_END; + VCHIQ_MBOX_TAG_VCHIQ_INIT = BCM2837_MBOX_TAG_VCHIQ_INIT; + + VCHIQ_MAILBOX_0 = BCM2837_MAILBOX_0; + VCHIQ_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC = BCM2837_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC; + {$ENDIF} +{==============================================================================} +{==============================================================================} +type + {VCHIQ mailbox types} + {$IFDEF CPUARMV6} + TVCHIQMailboxHeader = TBCM2835MailboxHeader; + PVCHIQMailboxHeader = PBCM2835MailboxHeader; + + TVCHIQMailboxFooter = TBCM2835MailboxFooter; + PVCHIQMailboxFooter = PBCM2835MailboxFooter; + + TVCHIQMailboxTagHeader = TBCM2835MailboxTagHeader; + PVCHIQMailboxTagHeader = PBCM2835MailboxTagHeader; + + TVCHIQMailboxTagVCHIQInit = TBCM2835MailboxTagVCHIQInit; + PVCHIQMailboxTagVCHIQInit = PBCM2835MailboxTagVCHIQInit; + + {$ELSE} + TVCHIQMailboxHeader = TBCM2837MailboxHeader; + PVCHIQMailboxHeader = PBCM2837MailboxHeader; + + TVCHIQMailboxFooter = TBCM2837MailboxFooter; + PVCHIQMailboxFooter = PBCM2837MailboxFooter; + + TVCHIQMailboxTagHeader = TBCM2837MailboxTagHeader; + PVCHIQMailboxTagHeader = PBCM2837MailboxTagHeader; + + TVCHIQMailboxTagVCHIQInit = TBCM2837MailboxTagVCHIQInit; + PVCHIQMailboxTagVCHIQInit = PBCM2837MailboxTagVCHIQInit; + {$ENDIF} +{==============================================================================} +{==============================================================================} +var + {VCHIQ specific variables} + VCHIQInitialized:Boolean; + + VCHIQId:Integer; + + VCHIQState:PVCHIQ_STATE_T; {Global pointer to VCHIQ_STATE_T record, used to keep code compatible with original (Only one instance of VCHIQ driver allowed)} + VCHIQDevice:PVCHIQDevice; {Global pointer to existing VCHIQ device (Only one instance of VCHIQ driver allowed)} + + VCHIQStates:array[0..VCHIQ_MAX_STATES - 1] of PVCHIQ_STATE_T; + + //To Do //These should all move to TVCHIQDevice or to VCHIQ_STATE_T ? + VCHIQHandleSequence:LongWord; + VCHIQPauseBulksCount:LongInt; {atomic_t} + + VCHIQServiceLock:TSpinHandle = INVALID_HANDLE_VALUE; //To Do //Currently we are using SpinLockIRQ because vchiq_core.c says the SpinLock disables interrupts, need to confirm and determine if that is needed + VCHIQQuotaLock:TSpinHandle = INVALID_HANDLE_VALUE; //In Linux spin_lock() calls to __raw_spin_lock() which calls preempt_disable() but does not disable interrupts. preempt_disable() disables kernel preemption which we do by SpinLockPreempt() + VCHIQBulkWaiterLock:TSpinHandle = INVALID_HANDLE_VALUE; //but kernel preemption is not such a problem to us so we probably don't need to use IRQ or Preempt + + VCHIQMessageQueueLock:TSpinHandle = INVALID_HANDLE_VALUE; + +{==============================================================================} +{==============================================================================} +{Forward Declarations} +function VCHIQNotifyBulks(Service:PVCHIQ_SERVICE_T;Queue:PVCHIQ_BULK_QUEUE_T;RetryPoll:Boolean):VCHIQ_STATUS_T; forward; +function VCHIQResolveBulks(Service:PVCHIQ_SERVICE_T;Queue:PVCHIQ_BULK_QUEUE_T):Integer; forward; +procedure VCHIQAbortOutstandingBulks(Service:PVCHIQ_SERVICE_T;Queue:PVCHIQ_BULK_QUEUE_T); forward; + +function VCHIQARMVCSuspend(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; forward; + +{==============================================================================} +{==============================================================================} +{Initialization Functions} +procedure VCHIQInit; +{Initialize the VCHIQ device} + +{Note: Called only during system startup} +var + Status:LongWord; + VCHIQ:PVCHIQDevice; +begin + {} + {Check Initialized} + if VCHIQInitialized then Exit; + + {Create Service Lock} + VCHIQServiceLock:=SpinCreate; + + {Create Quota Lock} + VCHIQQuotaLock:=SpinCreate; + + {Create Bulk Waiter Lock} + VCHIQBulkWaiterLock:=SpinCreate; + + {Create Message Queue Lock} + VCHIQMessageQueueLock:=SpinCreate; + + {Create VCHIQ} + VCHIQ:=PVCHIQDevice(DeviceCreateEx(SizeOf(TVCHIQDevice))); + if VCHIQ <> nil then + begin + {Update VCHIQ} + {Device} + VCHIQ.Device.DeviceName:=VCHIQ_NAME_PREFIX + IntToStr(0); {Only one VCHIQ device supported} + VCHIQ.Device.DeviceClass:=DEVICE_CLASS_GENERIC; + VCHIQ.Device.DeviceBus:=DEVICE_BUS_MMIO; + VCHIQ.Device.DeviceType:=VCHIQ_TYPE_NONE; + VCHIQ.Device.DeviceFlags:=VCHIQ_FLAG_NONE; + VCHIQ.Device.DeviceData:=nil; + VCHIQ.Device.DeviceDescription:=VCHIQ_DESCRIPTION; + {VCHIQ} + VCHIQ.DeviceStart:=VCHIQDeviceStart; + VCHIQ.DeviceStop:=VCHIQDeviceStop; + VCHIQ.DeviceOpen:=VCHIQDeviceOpen; + VCHIQ.DeviceClose:=VCHIQDeviceClose; + VCHIQ.DeviceControl:=VCHIQDeviceControl; + + {Register VCHIQ} + Status:=DeviceRegister(@VCHIQ.Device); + if Status <> ERROR_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Failed to register new VCHIQ device: ' + ErrorToString(Status)); + + {Destroy VCHIQ} + DeviceDestroy(@VCHIQ.Device); + end; + end + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Failed to create new VCHIQ device'); + end; + + VCHIQInitialized:=True; +end; + +{==============================================================================} +{==============================================================================} +{VCHIQ Mailbox Functions} +function VCHIQEnable(Address:LongWord):LongWord; +{Enable the VCHIQ (Master) using the Mailbox property tags channel} +{Address: The bus address of the VCHIQ slots allocated from coherent memory} +{Return: Zero on success or another value on failure} +var + Size:LongWord; + Status:LongWord; + Response:LongWord; + Header:PVCHIQMailboxHeader; + Footer:PVCHIQMailboxFooter; + Tag:PVCHIQMailboxTagVCHIQInit; +begin + {} + Result:=LongWord(-1); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: VCHIQEnable (Address=' + IntToHex(Address,8) + ')'); + {$ENDIF} + + {Calculate Size} + Size:=SizeOf(TVCHIQMailboxHeader) + SizeOf(TVCHIQMailboxTagVCHIQInit) + SizeOf(TVCHIQMailboxFooter); + + {Allocate Mailbox Buffer} + {$IFDEF CPUARMV6} + Header:=GetSharedAlignedMem(Size,SIZE_16); {Must be 16 byte aligned} + {$ELSE} + Header:=GetNoCacheAlignedMem(Size,SIZE_16); {Must be 16 byte aligned} + {$ENDIF} + if Header = nil then Header:=GetAlignedMem(Size,SIZE_16); {Must be 16 byte aligned} + if Header = nil then Exit; + try + {Clear Buffer} + FillChar(Header^,Size,0); + + {Setup Header} + Header.Size:=Size; + Header.Code:=VCHIQ_MBOX_REQUEST_CODE; + + {Setup Tag} + Tag:=PVCHIQMailboxTagVCHIQInit(PtrUInt(Header) + PtrUInt(SizeOf(TVCHIQMailboxHeader))); + Tag.Header.Tag:=VCHIQ_MBOX_TAG_VCHIQ_INIT; + Tag.Header.Size:=SizeOf(TVCHIQMailboxTagVCHIQInit) - SizeOf(TVCHIQMailboxTagHeader); + Tag.Header.Length:=SizeOf(Tag.Request); + Tag.Request.Address:=Address; + + {Setup Footer} + Footer:=PVCHIQMailboxFooter(PtrUInt(Tag) + PtrUInt(SizeOf(TVCHIQMailboxTagVCHIQInit))); + Footer.Tag:=VCHIQ_MBOX_TAG_END; + + {Call Mailbox} + Status:=MailboxPropertyCall(VCHIQ_MAILBOX_0,VCHIQ_MAILBOX0_CHANNEL_PROPERTYTAGS_ARMVC,Header,Response); + if Status <> ERROR_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQEnable - MailboxPropertyCall failed (Status=' + ErrorToString(Status) + ')'); + + Exit; + end; + + {Get Result} + Result:=Tag.Response.Status; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: VCHIQEnable (Result=' + IntToHex(Result,8) + ')'); + {$ENDIF} + finally + FreeMem(Header); + end; +end; + +{==============================================================================} +{==============================================================================} +{VCHIQ Device Functions} +function VCHIQDeviceStart(VCHIQ:PVCHIQDevice):LongWord; +{Start the specificed VCHIQ device, allocate and initialize slots register shared data and enable to master VCHIQ} +{VCHIQ: The VCHIQ device to start} +{Return: ERROR_SUCCESS on completion or another error code on failure} + +{Note: There can only be one VCHIQ device active at once, attempting to start a second will return on error} + +{Incorporates functionality from vchiq_probe in vchiq_arm.c} +{ and from vchiq_platform_init in vchiq_2835_arm.c} +var + Count:Integer; + SlotMemory:Pointer; + SlotPhysical:PtrUInt; + SlotMemSize:Integer; + FragmentMemSize:Integer; + SlotZero:PVCHIQ_SLOT_ZERO_T; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Start (VCHIQ=' + IntToHex(PtrUInt(VCHIQ),8) + ')'); + {$ENDIF} + + {Check VCHIQ} + if VCHIQ = nil then Exit; + if VCHIQ.Device.Signature <> DEVICE_SIGNATURE then Exit; + + {Check State} + Result:=ERROR_ALREADY_ASSIGNED; + if VCHIQState <> nil then Exit; + + {Check Device} + if VCHIQDevice <> nil then Exit; + + {Setup Properties} + Result:=ERROR_OPERATION_FAILED; + VCHIQ.Registers:=PERIPHERALS_BASE + VCHIQ_DOORBELL_REGS_BASE; + VCHIQ.CacheLineSize:=32; //Max(L1DataCacheGetLineSize,L2CacheGetLineSize); //To Do //Linux (and Windows) seems to use only 32 for this (either from device tree or hardcoded) but ARMv7 is 64 bytes + VCHIQ.FragmentsSize:=2 * VCHIQ.CacheLineSize; + VCHIQ.FragmentsMutex:=INVALID_HANDLE_VALUE; + VCHIQ.FragmentsSemaphore:=INVALID_HANDLE_VALUE; + + {Allocate space for the channels in DMA coherent memory} + SlotMemSize:=Align(VCHIQ_TOTAL_SLOTS * VCHIQ_SLOT_SIZE,MEMORY_PAGE_SIZE); + FragmentMemSize:=Align(VCHIQ.FragmentsSize * VCHIQ_MAX_FRAGMENTS,MEMORY_PAGE_SIZE); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Start (SlotMemSize=' + IntToStr(SlotMemSize) + ' FragmentMemSize=' + IntToStr(FragmentMemSize) + ')'); + {$ENDIF} + + {$IFDEF CPUARMV6} + SlotMemory:=AllocSharedAlignedMem(SlotMemSize + FragmentMemSize,MEMORY_PAGE_SIZE); + {$ELSE} + SlotMemory:=AllocNoCacheAlignedMem(SlotMemSize + FragmentMemSize,MEMORY_PAGE_SIZE); + {$ENDIF} + if SlotMemory = nil then Exit; + + SlotPhysical:=PhysicalToBusAddress(SlotMemory); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Start (SlotMemory=' + IntToHex(PtrUInt(SlotMemory),8) + ' SlotPhysical=' + IntToHex(PtrUInt(SlotPhysical),8) + ')'); + {$ENDIF} + + {Check Alignment} + if (PtrUInt(SlotMemory) and (MEMORY_PAGE_SIZE - 1)) <> 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Device Start: Slot memory not aligned to MEMORY_PAGE_SIZE'); + end; + + {Initialize Slots} + SlotZero:=VCHIQInitSlots(SlotMemory,SlotMemSize); + if SlotZero = nil then Exit; + + SlotZero.platform_data[VCHIQ_PLATFORM_FRAGMENTS_OFFSET_IDX]:=SlotPhysical + SlotMemSize; + SlotZero.platform_data[VCHIQ_PLATFORM_FRAGMENTS_COUNT_IDX]:=VCHIQ_MAX_FRAGMENTS; + + {Initialize Fragments} + VCHIQ.FragmentsBase:=SlotMemory + SlotMemSize; + SlotMemSize:=SlotMemSize + FragmentMemSize; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Start (FragmentsBase=' + IntToHex(PtrUInt(VCHIQ.FragmentsBase),8) + ')'); + {$ENDIF} + + VCHIQ.FreeFragments:=VCHIQ.FragmentsBase; + Count:=0; + while Count < VCHIQ_MAX_FRAGMENTS - 1 do + begin + PPointer(VCHIQ.FragmentsBase + (Count * VCHIQ.FragmentsSize))^:=Pointer(VCHIQ.FragmentsBase + ((Count + 1) * VCHIQ.FragmentsSize)); + + Inc(Count); + end; + PPointer(VCHIQ.FragmentsBase + (Count * VCHIQ.FragmentsSize))^:=nil; + VCHIQ.FragmentsMutex:=MutexCreate; + VCHIQ.FragmentsSemaphore:=SemaphoreCreate(VCHIQ_MAX_FRAGMENTS); + + {Allocate State} + VCHIQ.State:=GetMem(SizeOf(VCHIQ_STATE_T)); + if VCHIQ.State = nil then + begin + {Release Slot Memory} + FreeMem(SlotMemory); + Exit; + end; + + {Initialize State} + if VCHIQInitState(VCHIQ,VCHIQ.State,SlotZero,False) <> VCHIQ_SUCCESS then + begin + {Release Platform State} + if VCHIQ.State.platform_state <> nil then FreeMem(VCHIQ.State.platform_state); + VCHIQ.State.platform_state:=nil; + + {Release State} + FreeMem(VCHIQ.State); + VCHIQ.State:=nil; + + {Release Slot Memory} + FreeMem(SlotMemory); + Exit; + end; + + {Request IRQ} + RequestIRQ(IRQ_ROUTING,VCHIQ_DOORBELL0_IRQ,TInterruptHandler(VCHIQDoorbellInterruptHandler),VCHIQ); + + {Initialize VCHIQ (Master)} + if VCHIQEnable(SlotPhysical) <> 0 then + begin + {Release IRQ} + ReleaseIRQ(IRQ_ROUTING,VCHIQ_DOORBELL0_IRQ,TInterruptHandler(VCHIQDoorbellInterruptHandler),VCHIQ); + + {Release Platform State} + if VCHIQ.State.platform_state <> nil then FreeMem(VCHIQ.State.platform_state); + VCHIQ.State.platform_state:=nil; + + {Release State} + FreeMem(VCHIQ.State); + VCHIQ.State:=nil; + + {Release Slot Memory} + FreeMem(SlotMemory); + Exit; + end; + + {Update Id} + Inc(VCHIQId); + + {Set Defaults} + VCHIQDevice:=VCHIQ; + VCHIQState:=VCHIQ.State; + + //vchiq_call_connected_callbacks //To Do //Continuing //Implement these to support VCSM + + Result:=ERROR_SUCCESS; +end; + +{==============================================================================} + +function VCHIQDeviceStop(VCHIQ:PVCHIQDevice):LongWord; +{Stop the specified VCHIQ device, deregister the master VCHIQ and release slots and shared data} +{VCHIQ: The VCHIQ device to stop} +{Return: ERROR_SUCCESS on completion or another error code on failure} + +{Note: The Linux driver does not incorporate any functionality for shutting down the VCHIQ and releasing slots and data} + +{Incorporates functionality from vchiq_remove in vchiq_arm.c} +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Stop (VCHIQ=' + IntToHex(PtrUInt(VCHIQ),8) + ')'); + {$ENDIF} + + {Check VCHIQ} + if VCHIQ = nil then Exit; + if VCHIQ.Device.Signature <> DEVICE_SIGNATURE then Exit; + + {Check State} + Result:=ERROR_NOT_ASSIGNED; + if VCHIQState = nil then Exit; + + {Check Device} + if VCHIQDevice = nil then Exit; + + {Release IRQ} + ReleaseIRQ(IRQ_ROUTING,VCHIQ_DOORBELL0_IRQ,TInterruptHandler(VCHIQDoorbellInterruptHandler),VCHIQ); + + //To Do //Continuing //Linux driver does not seem to perform any shutdown process at all + + //VCHIQStates[VCHIQ.State.id]:=nil; + //vchiq_remove (vchiq_arm.c) + + {Reset Defaults} + VCHIQState:=nil; + VCHIQDevice:=nil; + + Result:=ERROR_SUCCESS; +end; + +{==============================================================================} + +function VCHIQDeviceOpen(VCHIQ:PVCHIQDevice):PVCHIQInstance; +{Open a new instance of the specified VCHIQ device} +{VCHIQ: The VCHIQ device to open} +{Return: Pointer to a newly opened VCHIQ instance} + +{Incorporates functionality from vchiq_open in vchiq_arm.c} +var + State:PVCHIQ_STATE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Open (VCHIQ=' + IntToHex(PtrUInt(VCHIQ),8) + ')'); + {$ENDIF} + + {Check VCHIQ} + if VCHIQ = nil then Exit; + if VCHIQ.Device.Signature <> DEVICE_SIGNATURE then Exit; + + {Get State} + State:=VCHIQGetState; + if State = nil then Exit; + + {Allocate Instance} + Result:=AllocMem(SizeOf(TVCHIQInstance)); + if Result = nil then Exit; + + {Initialize Instance} + Result.VCHIQ:=VCHIQ; + Result.State:=VCHIQ.State; + Result.PID:=1; {Ultibo has no concept of process so we use a dummy value} + Result.InsertEvent:=SemaphoreCreate(0); + Result.RemoveEvent:=SemaphoreCreate(0); + Result.CompletionMutex:=MutexCreate; + Result.BulkWaiterMutex:=MutexCreate; +end; + +{==============================================================================} + +function VCHIQDeviceClose(VCHIQ:PVCHIQDevice;Instance:PVCHIQInstance):LongWord; +{Close an existing instance on the specified VCHIQ device} +{VCHIQ: The VCHIQ device to close the instance on} +{Instance: The instance to be closed} +{Return: ERROR_SUCCESS on completion or another error code on failure} + +{Incorporates functionality from vchiq_release in vchiq_arm.c} +var + Index:Integer; + State:PVCHIQ_STATE_T; + Header:PVCHIQ_HEADER_T; + Service:PVCHIQ_SERVICE_T; + UserService:PVCHIQ_USER_SERVICE_T; + Completion:PVCHIQ_COMPLETION_DATA_T; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Close (VCHIQ=' + IntToHex(PtrUInt(VCHIQ),8) + ' Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check VCHIQ} + if VCHIQ = nil then Exit; + if VCHIQ.Device.Signature <> DEVICE_SIGNATURE then Exit; + + {Check Instance} + if Instance = nil then Exit; + + {Get State} + State:=VCHIQGetState; + if State = nil then Exit; + + {Ensure videocore is awake to allow termination} + VCHIQUseInternal(Instance.state,nil,USE_TYPE_VCHIQ); + + {Lock Mutex} + MutexLock(Instance.CompletionMutex); + + {Wake the completion thread and ask it to exit} + Instance.Closing:=True; + SemaphoreSignal(Instance.InsertEvent); + + {Unlock Mutex} + MutexUnlock(Instance.CompletionMutex); + + {Wake the slot handler if the completion queue is full} + SemaphoreSignal(Instance.RemoveEvent); + + {Mark all services for termination...} + Index:=0; + Service:=VCHIQNextServiceByInstance(State,Instance,Index); + while Service <> nil do + begin + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Service.base.userdata); + + {Wake the slot handler if the msg queue is full} + SemaphoreSignal(UserService.remove_event); + + {Terminate Service Internal} + VCHIQTerminateServiceInternal(Service); + + {Unlock Service} + VCHIQUnlockService(Service); + + {Get Next Service} + Service:=VCHIQNextServiceByInstance(State,Instance,Index); + end; + + {...and wait for them to die} + Index:=0; + Service:=VCHIQNextServiceByInstance(State,Instance,Index); + while Service <> nil do + begin + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Service.base.userdata); + + {Wait for Remove Event} + SemaphoreWait(Service.remove_event); + + {Check Service State} + if Service.srvstate <> VCHIQ_SRVSTATE_FREE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Service.srvstate <> VCHIQ_SRVSTATE_FREE'); + ThreadHalt(0); + end; + + {Lock Spinlock} + SpinLock(VCHIQMessageQueueLock); + + {Check Message Queue} + while UserService.msg_remove <> UserService.msg_insert do + begin + {Get Header} + Header:=UserService.msg_queue[UserService.msg_remove and (VCHIQ_MSG_QUEUE_SIZE - 1)]; + + {Update Message Remove} + Inc(UserService.msg_remove); + + {Unlock Spinlock} + SpinUnlock(VCHIQMessageQueueLock); + + {Check Header} + if Header <> nil then + begin + {Release Message} + VCHIQReleaseMessage(Service.handle,Header); + end; + + {Lock Spinlock} + SpinLock(VCHIQMessageQueueLock); + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQMessageQueueLock); + + {Unlock Service} + VCHIQUnlockService(Service); + + {Get Next Service} + Service:=VCHIQNextServiceByInstance(State,Instance,Index); + end; + + {Release any closed services} + while Instance.CompletionRemove <> Instance.CompletionInsert do + begin + {Get Completion} + Completion:=@Instance.Completions[Instance.CompletionRemove and (VCHIQ_MAX_COMPLETIONS - 1)]; + + {Get Service} + Service:=Completion.service_userdata; + + {Check Reason} + if Completion.reason = VCHIQ_SERVICE_CLOSED then + begin + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Service.base.userdata); + + {Wake any blocked user-thread} + if Instance.UseCloseDelivered then + begin + SemaphoreSignal(UserService.close_event); + end; + + {Unlock Service} + VCHIQUnlockService(Service); + end; + + {Update Completion Remove} + Inc(Instance.CompletionRemove); + end; + + {Release the PEER service count} + VCHIQReleaseInternal(Instance.State,nil); + + //To Do //Continuing //Instance.bulk_waiter_list + //When freeing Waiter also free the bulk_waiter.event Semaphore + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQDeviceClose'); //To Do //Temp + + {Destroy Semaphores and Mutexes} + MutexDestroy(Instance.BulkWaiterMutex); + MutexDestroy(Instance.CompletionMutex); + SemaphoreDestroy(Instance.RemoveEvent); + SemaphoreDestroy(Instance.InsertEvent); + + {Invalidate Semaphores and Mutexes} + Instance.BulkWaiterMutex:=INVALID_HANDLE_VALUE; + Instance.CompletionMutex:=INVALID_HANDLE_VALUE; + Instance.RemoveEvent:=INVALID_HANDLE_VALUE; + Instance.InsertEvent:=INVALID_HANDLE_VALUE; + + {Free Instance} + FreeMem(Instance); + + {Return Success} + Result:=ERROR_SUCCESS; +end; + +{==============================================================================} + +function VCHIQDeviceControl(VCHIQ:PVCHIQDevice;Instance:PVCHIQInstance;Code,Argument:LongWord;var Response:LongWord):LongWord; +{Send an IO control message to the specified VCHIQ device and instance} +{VCHIQ: The VCHIQ device to send the control message to} +{Instance: The open instance to use for the control message} +{Code: The IO control code to send (eg VCHIQ_IOC_CONNECT)} +{Argument: The argument to be used for the control message (Control code specific)} +{Response: The response returned from the control message (Control code specific)} +{Return: ERROR_SUCCESS on completion or another error code on failure} + +{Incorporates functionality from vchiq_ioctl in vchiq_arm.c} +var + Index:Integer; + Version:LongWord; + Status:VCHIQ_STATUS_T; + Service:PVCHIQ_SERVICE_T; + Handle:VCHIQ_SERVICE_HANDLE_T; + + DumpMem:PVCHIQ_DUMP_MEM_T; + GetConfig:PVCHIQ_GET_CONFIG_T; + AwaitCompletion:PVCHIQ_AWAIT_COMPLETION_T; + CreateService:PVCHIQ_CREATE_SERVICE_T; + SetServiceOption:PVCHIQ_SET_SERVICE_OPTION_T; + QueueMessage:PVCHIQ_QUEUE_MESSAGE_T; + DequeueMessage:PVCHIQ_DEQUEUE_MESSAGE_T; + QueueBulkTransfer:PVCHIQ_QUEUE_BULK_TRANSFER_T; + + Userdata:Pointer; + Header:PVCHIQ_HEADER_T; + ServiceState:VCHIQ_SRVSTATE_T; + BulkDirection:VCHIQ_BULK_DIR_T; + UserService:PVCHIQ_USER_SERVICE_T; + Completion:PVCHIQ_COMPLETION_DATA_T; + BulkWaiterNode:PVCHIQ_BULK_WAITER_NODE_T; + + CompletionRemove:Integer; + MessageLength:Integer; + MessageBuffer:Pointer; + MessageBufferCount:Integer; + ModeWaiting:VCHIQ_BULK_MODE_T; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (VCHIQ=' + IntToHex(PtrUInt(VCHIQ),8) + ' Instance=' + IntToHex(PtrUInt(Instance),8) + ' Code=' + IntToHex(Code,8) + ' Argument=' + IntToHex(Argument,8) + ')'); + {$ENDIF} + + {Setup Default} + Response:=0; + + {Check VCHIQ} + if VCHIQ = nil then Exit; + if VCHIQ.Device.Signature <> DEVICE_SIGNATURE then Exit; + + {Check Instance} + if Instance = nil then Exit; + + {Set Defaults} + Service:=nil; + try + {Check Code} + case Code of + VCHIQ_IOC_SHUTDOWN:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_SHUTDOWN)'); + {$ENDIF} + + {Check Connected} + if not Instance.Connected then + begin + {Return Success} + Result:=ERROR_SUCCESS; + Exit; + end; + + {Remove all services} + Index:=0; + Service:=VCHIQNextServiceByInstance(Instance.State,Instance,Index); + while Service <> nil do + begin + {Remove Service} + Status:=VCHIQRemoveService(Service.handle); + + {Unlock Service} + VCHIQUnlockService(Service); + + if Status <> VCHIQ_SUCCESS then Break; + + {Get Next Service} + Service:=VCHIQNextServiceByInstance(Instance.State,Instance,Index); + end; + + {Do Not Unlock Service} + Service:=nil; + + if Status = VCHIQ_SUCCESS then + begin + {Wake the completion thread and ask it to exit} + Instance.Closing:=True; + SemaphoreSignal(Instance.InsertEvent); + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + VCHIQ_IOC_CONNECT:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_CONNECT)'); + {$ENDIF} + + {Check Connected} + if Instance.Connected then Exit; + + {Lock Mutex} + if MutexLock(Instance.State.mutex) <> ERROR_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + try + {Connect Internal} + Status:=VCHIQConnectInternal(Instance.State,Instance); + if Status <> VCHIQ_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Could not connect (Status=' + VCHIQStatusToString(Status) + ')'); + + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Update Connected} + Instance.Connected:=True; + + {Return Success} + Result:=ERROR_SUCCESS; + finally + {Unlock Mutex} + MutexUnlock(Instance.State.mutex); + end; + end; + VCHIQ_IOC_CREATE_SERVICE:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_CREATE_SERVICE)'); + {$ENDIF} + + {Get Request} + CreateService:=PVCHIQ_CREATE_SERVICE_T(Argument); + if CreateService = nil then + begin + Exit; + end; + + {Allocate User Service} + UserService:=AllocMem(SizeOf(VCHIQ_USER_SERVICE_T)); + if UserService = nil then + begin + Result:=ERROR_NOT_ENOUGH_MEMORY; + Exit; + end; + + {Check Open} + if CreateService.is_open <> 0 then + begin + {Check Connected} + if not Instance.Connected then + begin + {Free User Service} + FreeMem(UserService); + + Result:=ERROR_NOT_OPEN; + Exit; + end; + + {Set State} + ServiceState:=VCHIQ_SRVSTATE_OPENING; + end + else + begin + {Set State} + ServiceState:=VCHIQ_SRVSTATE_HIDDEN; + if Instance.Connected then + begin + ServiceState:=VCHIQ_SRVSTATE_LISTENING; + end; + end; + + {Setup Callback} + Userdata:=CreateService.params.userdata; + CreateService.params.callback:=VCHIQServiceCallback; + CreateService.params.userdata:=UserService; + + {Add Service Internal} + Service:=VCHIQAddServiceInternal(Instance.State,@CreateService.params,ServiceState,Instance,VCHIQUserServiceFree); + if Service <> nil then + begin + {Update User Service} + UserService.service:=Service; + UserService.userdata:=Userdata; + UserService.instance:=Instance; + UserService.is_vchi:=(CreateService.is_vchi <> 0); + UserService.dequeue_pending:=False; + UserService.close_pending:=False; + UserService.message_available_pos:=Instance.CompletionRemove - 1; + UserService.msg_insert:=0; + UserService.msg_remove:=0; + UserService.insert_event:=SemaphoreCreate(0); {Destroyed by VCHIQUserServiceFree} + UserService.remove_event:=SemaphoreCreate(0); {Destroyed by VCHIQUserServiceFree} + UserService.close_event:=SemaphoreCreate(0); {Destroyed by VCHIQUserServiceFree} + + {Check Open} + if CreateService.is_open <> 0 then + begin + {Open Service Internal} + Status:=VCHIQOpenServiceInternal(Service,Instance.PID); + if Status <> VCHIQ_SUCCESS then + begin + {Remove Service} + VCHIQRemoveService(Service.handle); + + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + end; + + {Update Request} + CreateService.handle:=Service.handle; + + {Do Not Unlock Service} + Service:=nil; + + {Return Success} + Result:=ERROR_SUCCESS; + end + else + begin + {Free User Service} + FreeMem(UserService); + + Result:=ERROR_ALREADY_EXISTS; + Exit; + end; + end; + VCHIQ_IOC_CLOSE_SERVICE:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_CLOSE_SERVICE Handle=' + IntToHex(Argument,8) + ')'); + {$ENDIF} + + {Get Handle} + Handle:=VCHIQ_SERVICE_HANDLE_T(Argument); + + {Find Service} + Service:=VCHIQFindServiceForInstance(Instance,Handle); + if Service <> nil then + begin + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Service.base.userdata); + + {close_pending is false on first entry, and when the wait in VCHIQCloseService has been interrupted} + if not UserService.close_pending then + begin + {Close Service} + Status:=VCHIQCloseService(Service.handle); + if Status <> VCHIQ_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + end; + + {close_pending is true once the underlying service has been closed until the client library calls the CLOSE_DELIVERED ioctl, signalling close_event} + if (UserService.close_pending) and (SemaphoreWait(UserService.close_event) <> ERROR_SUCCESS) then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + VCHIQ_IOC_REMOVE_SERVICE:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_REMOVE_SERVICE Handle=' + IntToHex(Argument,8) + ')'); + {$ENDIF} + + {Get Handle} + Handle:=VCHIQ_SERVICE_HANDLE_T(Argument); + + {Find Service} + Service:=VCHIQFindServiceForInstance(Instance,Handle); + if Service <> nil then + begin + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Service.base.userdata); + + {close_pending is false on first entry, and when the wait in VCHIQCloseService has been interrupted} + if not UserService.close_pending then + begin + {Remove Service} + Status:=VCHIQRemoveService(Service.handle); + if Status <> VCHIQ_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + end; + + {close_pending is true once the underlying service has been closed until the client library calls the CLOSE_DELIVERED ioctl, signalling close_event} + if (UserService.close_pending) and (SemaphoreWait(UserService.close_event) <> ERROR_SUCCESS) then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + VCHIQ_IOC_QUEUE_MESSAGE:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_QUEUE_MESSAGE)'); + {$ENDIF} + + {Get Request} + QueueMessage:=PVCHIQ_QUEUE_MESSAGE_T(Argument); + if QueueMessage = nil then + begin + Exit; + end; + + {Find Service} + Service:=VCHIQFindServiceForInstance(Instance,QueueMessage.handle); + if (Service <> nil) and (QueueMessage.count <= VCHIQ_MAX_ELEMENTS) then + begin + {Queue Message} + Status:=VCHIQQueueMessage(QueueMessage.handle,QueueMessage.elements,QueueMessage.count); + if Status <> VCHIQ_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + VCHIQ_IOC_QUEUE_BULK_TRANSMIT,VCHIQ_IOC_QUEUE_BULK_RECEIVE:begin + if Code = VCHIQ_IOC_QUEUE_BULK_TRANSMIT then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_QUEUE_BULK_TRANSMIT)'); + {$ENDIF} + + {Get Direction} + BulkDirection:=VCHIQ_BULK_TRANSMIT; + end + else + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_QUEUE_BULK_RECEIVE)'); + {$ENDIF} + + {Get Direction} + BulkDirection:=VCHIQ_BULK_RECEIVE; + end; + + {Get Request} + QueueBulkTransfer:=PVCHIQ_QUEUE_BULK_TRANSFER_T(Argument); + if QueueBulkTransfer = nil then + begin + Exit; + end; + + {Find Service} + Service:=VCHIQFindServiceForInstance(Instance,QueueBulkTransfer.handle); + if Service <> nil then + begin + {Set Defaults} + BulkWaiterNode:=nil; + + {Check Mode} + if QueueBulkTransfer.mode = VCHIQ_BULK_MODE_BLOCKING then + begin + {Create Waiter Node} + BulkWaiterNode:=AllocMem(SizeOf(VCHIQ_BULK_WAITER_NODE_T)); + if BulkWaiterNode = nil then + begin + Result:=ERROR_NOT_ENOUGH_MEMORY; + Exit; + end; + + {Update Waiter Node} + BulkWaiterNode.bulk_waiter.event:=INVALID_HANDLE_VALUE; + + {Save Bulk Waiter} + QueueBulkTransfer.userdata:=@BulkWaiterNode.bulk_waiter; + end + else if QueueBulkTransfer.mode = VCHIQ_BULK_MODE_WAITING then + begin + {Lock Mutex} + MutexLock(Instance.BulkWaiterMutex); + + {Find Waiter Node} + //To Do //Continuing //instance->bulk_waiter_list + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQDeviceControl'); //To Do //Temp + + {Unlock Mutex} + MutexUnlock(Instance.BulkWaiterMutex); + + {Check Waiter Node} + if BulkWaiterNode = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Bulk waiter not found'); + + Result:=ERROR_NOT_FOUND; + Exit; + end; + + {Save Bulk Waiter} + QueueBulkTransfer.userdata:=@BulkWaiterNode.bulk_waiter; + end; + + {Bulk Transfer} + Status:=VCHIQBulkTransfer(QueueBulkTransfer.handle,VCHI_MEM_HANDLE_INVALID,QueueBulkTransfer.data,QueueBulkTransfer.size,QueueBulkTransfer.userdata,QueueBulkTransfer.mode,BulkDirection); + + {Check Waiter Node} + if BulkWaiterNode <> nil then + begin + {Check Status and Bulk} + if (Status <> VCHIQ_RETRY) or (BulkWaiterNode.bulk_waiter.bulk = nil) then + begin + {Check Bulk} + if BulkWaiterNode.bulk_waiter.bulk <> nil then + begin + {Lock Spinlock} + SpinLock(VCHIQBulkWaiterLock); + + {Cancel the signal when the transfer completes} + BulkWaiterNode.bulk_waiter.bulk.userdata:=nil; + + {Unlock Spinlock} + SpinUnlock(VCHIQBulkWaiterLock); + end; + + {Check Waiter Event} + if BulkWaiterNode.bulk_waiter.event <> INVALID_HANDLE_VALUE then + begin + {Destroy Semaphore} + SemaphoreDestroy(BulkWaiterNode.bulk_waiter.event); + + {Invalidate Semaphore} + BulkWaiterNode.bulk_waiter.event:=INVALID_HANDLE_VALUE; + end; + + {Free Waiter Node} + FreeMem(BulkWaiterNode); + end + else + begin + {Get Mode} + ModeWaiting:=VCHIQ_BULK_MODE_WAITING; + + {Get PID} + BulkWaiterNode.pid:=ThreadGetCurrent; {Thread ID (In the Linux driver this is the Process ID which is the Thread ID)} + + {Lock Mutex} + MutexLock(Instance.BulkWaiterMutex); + + {Add Waiter Node} + //To Do //Continuing //instance->bulk_waiter_list + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQDeviceControl'); //To Do //Temp + + {Unlock Mutex} + MutexUnlock(Instance.BulkWaiterMutex); + + {Return Mode Waiting} + QueueBulkTransfer.mode:=ModeWaiting; + end; + end + else + begin + {Check Status} + if Status <> VCHIQ_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + VCHIQ_IOC_AWAIT_COMPLETION:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_AWAIT_COMPLETION)'); + {$ENDIF} + + {Check Connected} + if not Instance.Connected then + begin + Result:=ERROR_NOT_OPEN; + Exit; + end; + + {Get Request} + AwaitCompletion:=PVCHIQ_AWAIT_COMPLETION_T(Argument); + if AwaitCompletion = nil then + begin + Exit; + end; + + {Lock Mutex} + if MutexLock(Instance.CompletionMutex) <> ERROR_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + try + while (Instance.CompletionRemove = Instance.CompletionInsert) and not(Instance.Closing) do + begin + {Unlock Mutex} + MutexUnlock(Instance.CompletionMutex); + + {Wait for Insert} + if SemaphoreWait(Instance.InsertEvent) <> ERROR_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Lock Mutex} + MutexLock(Instance.CompletionMutex); + end; + + {Get Message Buffer Count} + MessageBufferCount:=AwaitCompletion.msgbufcount; + + {Get Completion Remove} + CompletionRemove:=Instance.CompletionRemove; + + {Default Success} + Result:=ERROR_SUCCESS; + Response:=0; + try + while Response < AwaitCompletion.count do + begin + {Check Remove} + if CompletionRemove = Instance.CompletionInsert then Break; + + {Get Completion} + Completion:=@Instance.Completions[CompletionRemove and (VCHIQ_MAX_COMPLETIONS - 1)]; + + {A read memory barrier is needed to prevent the prefetch of a stale completion record} + DataMemoryBarrier; + + {Get Service} + Service:=Completion.service_userdata; + + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Service.base.userdata); + + {Update Completion} + Completion.service_userdata:=UserService.userdata; + + {Get Header} + Header:=Completion.header; + if Header <> nil then + begin + {Get Message Length} + MessageLength:=Header.size + VCHIQ_HEADER_SIZE; {SizeOf(VCHIQ_HEADER_T)} {Do not include the data member} + + {This must be a VCHIQ-style service} + if AwaitCompletion.msgbufsize < MessageLength then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Device Control: AwaitCompletion.msgbufsize < MessageLength (msgbufsize=' + IntToStr(AwaitCompletion.msgbufsize) + ' MessageLength=' + IntToStr(MessageLength) + ')'); + + Result:=ERROR_INSUFFICIENT_BUFFER; + Exit; + end; + + {Stall here for lack of a buffer for the message} + if MessageBufferCount <= 0 then Break; + + {Update Buffer Count} + Dec(MessageBufferCount); + + {Get Message Buffer} + MessageBuffer:=AwaitCompletion.msgbufs[MessageBufferCount]; + + {Copy the message} + System.Move(Header^,MessageBuffer^,MessageLength); + + {Now it has been copied, the message can be released} + VCHIQReleaseMessage(Service.handle,Header); + + {The completion must point to the message buffer} + Completion.header:=MessageBuffer; + end; + + {Check Reason} + if (Completion.reason = VCHIQ_SERVICE_CLOSED) and not(Instance.UseCloseDelivered) then + begin + {Unlock Service} + VCHIQUnlockService(Service); + end; + + {Copy Completion} + System.Move(Completion^,AwaitCompletion.buf[Response],SizeOf(VCHIQ_COMPLETION_DATA_T)); + + {Ensure that the above copy has completed before advancing the remove pointer} + DataMemoryBarrier; + + {Update Completion Remove} + Inc(CompletionRemove); + Instance.CompletionRemove:=CompletionRemove; + + {Update Response} + Inc(Response); + end; + + {Return Message Buffer Count} + AwaitCompletion.msgbufcount:=MessageBufferCount; + + {Do Not Unlock Service} + Service:=nil; + finally + if Response > 0 then + begin + {Signal Remove Event} + SemaphoreSignalEx(Instance.RemoveEvent,Response,nil); + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + finally + {Unlock Mutex} + MutexUnlock(Instance.CompletionMutex); + end; + end; + VCHIQ_IOC_DEQUEUE_MESSAGE:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_DEQUEUE_MESSAGE)'); + {$ENDIF} + + {Get Request} + DequeueMessage:=PVCHIQ_DEQUEUE_MESSAGE_T(Argument); + if DequeueMessage = nil then + begin + Exit; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control: Dequeue Message (handle=' + IntToHex(DequeueMessage.handle,8) + ' blocking=' + IntToStr(DequeueMessage.blocking) + ' bufsize=' + IntToStr(DequeueMessage.bufsize) + ' buf=' + IntToHex(PtrUInt(DequeueMessage.buf),8) + ')'); + {$ENDIF} + + {Find Service} + Service:=VCHIQFindServiceForInstance(Instance,DequeueMessage.handle); + if Service <> nil then + begin + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Service.base.userdata); + + {Check VCHI} + if not UserService.is_vchi then Exit; + + {Lock Spinlock} + if SpinLock(VCHIQMessageQueueLock) <> ERROR_SUCCESS then Exit; + try + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control: User Service (msg_remove=' + IntToStr(UserService.msg_remove) + ' msg_insert=' + IntToStr(UserService.msg_insert) + ')'); + {$ENDIF} + + if UserService.msg_remove = UserService.msg_insert then + begin + {Check Blocking} + if DequeueMessage.blocking = 0 then + begin + Result:=ERROR_IN_USE; + Exit; + end; + + {Wait for Message} + UserService.dequeue_pending:=True; + repeat + {Unlock Spinlock} + SpinUnlock(VCHIQMessageQueueLock); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control: User Service wait for insert (msg_remove=' + IntToStr(UserService.msg_remove) + ' msg_insert=' + IntToStr(UserService.msg_insert) + ')'); + {$ENDIF} + + if SemaphoreWait(UserService.insert_event) <> ERROR_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Lock Spinlock} + SpinLock(VCHIQMessageQueueLock); + until UserService.msg_remove <> UserService.msg_insert; + end; + + if UserService.msg_remove > UserService.msg_insert then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: UserService.msg_remove > UserService.msg_insert'); + + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Get Header} + Header:=UserService.msg_queue[UserService.msg_remove and (VCHIQ_MSG_QUEUE_SIZE - 1)]; + Inc(UserService.msg_remove); + finally + {Unlock Spinlock} + SpinUnlock(VCHIQMessageQueueLock); + end; + + {Signal Remove} + SemaphoreSignal(UserService.remove_event); + + {Check Header} + if Header = nil then + begin + Result:=ERROR_NOT_OPEN; + Exit; + end + else if Header.size <= DequeueMessage.bufsize then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control: Dequeue Message (Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Header.size) + ')'); + {$ENDIF} + + {Check Buffer} + if DequeueMessage.buf <> nil then + begin + {Copy Message} + System.Move(Header.data[0],DequeueMessage.buf^,Header.size); + end; + + {Get Message Size} + Response:=Header.size; + + {Release Message} + VCHIQReleaseMessage(Service.handle,Header); + end + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: DequeueMessage.bufsize < Header.size'); + + Result:=ERROR_INSUFFICIENT_BUFFER; + Exit; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + VCHIQ_IOC_GET_CLIENT_ID:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_GET_CLIENT_ID Handle=' + IntToHex(Argument,8) + ')'); + {$ENDIF} + + {Get Handle} + Handle:=VCHIQ_SERVICE_HANDLE_T(Argument); + + {Get Client ID} + Response:=VCHIQGetClientID(Handle); + + {Return Success} + Result:=ERROR_SUCCESS; + end; + VCHIQ_IOC_GET_CONFIG:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_GET_CONFIG)'); + {$ENDIF} + + {Get Request} + GetConfig:=PVCHIQ_GET_CONFIG_T(Argument); + if (GetConfig = nil) or (GetConfig.config_size <> SizeOf(VCHIQ_CONFIG_T)) then + begin + Exit; + end; + + {Get Config} + if VCHIQGetConfig(Instance,GetConfig.config_size,GetConfig.pconfig) <> VCHIQ_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + VCHIQ_IOC_USE_SERVICE:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_USE_SERVICE Handle=' + IntToHex(Argument,8) + ')'); + {$ENDIF} + + {Get Handle} + Handle:=VCHIQ_SERVICE_HANDLE_T(Argument); + + {Find Service} + Service:=VCHIQFindServiceForInstance(Instance,Handle); + if Service <> nil then + begin + {Use Service Internal} + Status:=VCHIQUseServiceInternal(Service); + if Status <> VCHIQ_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Use service failed (Status=' + VCHIQStatusToString(Status) + ' Service=' + VCHIQFourccToString(Service.base.fourcc) + ')'); + + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + VCHIQ_IOC_RELEASE_SERVICE:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_RELEASE_SERVICE Handle=' + IntToHex(Argument,8) + ')'); + {$ENDIF} + + {Get Handle} + Handle:=VCHIQ_SERVICE_HANDLE_T(Argument); + + {Find Service} + Service:=VCHIQFindServiceForInstance(Instance,Handle); + if Service <> nil then + begin + {Release Service Internal} + Status:=VCHIQReleaseServiceInternal(Service); + if Status <> VCHIQ_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Release service failed (Status=' + VCHIQStatusToString(Status) + ' Service=' + VCHIQFourccToString(Service.base.fourcc) + ')'); + + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + VCHIQ_IOC_SET_SERVICE_OPTION:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_SET_SERVICE_OPTION)'); + {$ENDIF} + + {Get Request} + SetServiceOption:=PVCHIQ_SET_SERVICE_OPTION_T(Argument); + if SetServiceOption = nil then + begin + Exit; + end; + + {Find Service} + Service:=VCHIQFindServiceForInstance(Instance,SetServiceOption.handle); + if Service <> nil then + begin + {Set Service Option} + Status:=VCHIQSetServiceOption(SetServiceOption.handle,SetServiceOption.option,SetServiceOption.value); + if Status <> VCHIQ_SUCCESS then + begin + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + VCHIQ_IOC_DUMP_PHYS_MEM:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_DUMP_PHYS_MEM)'); + {$ENDIF} + + {Get Request} + DumpMem:=PVCHIQ_DUMP_MEM_T(Argument); + if DumpMem = nil then + begin + Exit; + end; + + {Dump Physical Memory} + VCHIQDumpPhysicalMemory(DumpMem.virt_addr,DumpMem.num_bytes); + + {Return Success} + Result:=ERROR_SUCCESS; + end; + VCHIQ_IOC_LIB_VERSION:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_LIB_VERSION Version=' + IntToStr(Argument) + ')'); + {$ENDIF} + + {Get Version} + Version:=Argument; + if Version < VCHIQ_VERSION_MIN then + begin + Exit; + end + else if Version >= VCHIQ_VERSION_CLOSE_DELIVERED then + begin + Instance.UseCloseDelivered:=True; + end; + + {Return Success} + Result:=ERROR_SUCCESS; + end; + VCHIQ_IOC_CLOSE_DELIVERED:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Device Control (Code=VCHIQ_IOC_CLOSE_DELIVERED Handle=' + IntToHex(Argument,8) + ')'); + {$ENDIF} + + {Get Handle} + Handle:=VCHIQ_SERVICE_HANDLE_T(Argument); + + {Find Service} + Service:=VCHIQFindClosedServiceForInstance(Instance,Handle); + if Service <> nil then + begin + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Service.base.userdata); + + {Close Delivered} + VCHIQCloseDelivered(UserService); + + {Return Success} + Result:=ERROR_SUCCESS; + end; + end; + end; + finally + {Unlock Service} + if Service <> nil then VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} +{==============================================================================} +{VCHIQ Core Functions} +function VCHIQInitSlots(MemBase:Pointer;MemSize:LongWord):PVCHIQ_SLOT_ZERO_T; +{From vchiq_init_slots in vchiq_core.c} +var + MemAlign:Integer; + NumSlots:Integer; + FirstDataSlot:Integer; + SlotZero:PVCHIQ_SLOT_ZERO_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Init Slots (Base=' + IntToHex(PtrUInt(MemBase),8) + ' Size=' + IntToStr(MemSize) + ')'); + {$ENDIF} + + {Get Alignment} + MemAlign:=(VCHIQ_SLOT_SIZE - PtrUInt(MemBase)) and VCHIQ_SLOT_MASK; + + {Get Slot Zero} + SlotZero:=PVCHIQ_SLOT_ZERO_T(MemBase + MemAlign); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Init Slots (SlotZero=' + IntToHex(PtrUInt(SlotZero),8) + ' MemAlign=' + IntToStr(MemAlign) + ')'); + {$ENDIF} + + {Get Number of Slots} + NumSlots:=(MemSize - MemAlign) div VCHIQ_SLOT_SIZE; + + {Get First Data Slot} + FirstDataSlot:=VCHIQ_SLOT_ZERO_SLOTS; + + {Ensure there is enough memory to run an absolutely minimum system} + NumSlots:=NumSlots - FirstDataSlot; + if NumSlots < 4 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Init Slots: Insufficient memory (MemSize=' + IntToStr(MemSize) + ' NumSlots=' + IntToStr(NumSlots) + ')'); + Exit; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Init Slots (NumSlots=' + IntToStr(NumSlots) + ' FirstDataSlot=' + IntToStr(FirstDataSlot) + ')'); + {$ENDIF} + + {Initialize Slots} + FillChar(SlotZero^,SizeOf(VCHIQ_SLOT_ZERO_T),0); + + SlotZero.magic:=VCHIQ_MAGIC; + SlotZero.version:=VCHIQ_VERSION; + SlotZero.version_min:=VCHIQ_VERSION_MIN; + SlotZero.slot_zero_size:=SizeOf(VCHIQ_SLOT_ZERO_T); + SlotZero.slot_size:=VCHIQ_SLOT_SIZE; + SlotZero.max_slots:=VCHIQ_MAX_SLOTS; + SlotZero.max_slots_per_side:=VCHIQ_MAX_SLOTS_PER_SIDE; + + SlotZero.master.slot_sync:=FirstDataSlot; + SlotZero.master.slot_first:=FirstDataSlot + 1; + SlotZero.master.slot_last:=FirstDataSlot + (NumSlots div 2) - 1; + SlotZero.slave.slot_sync:=FirstDataSlot + (NumSlots div 2); + SlotZero.slave.slot_first:=FirstDataSlot + (NumSlots div 2) + 1; + SlotZero.slave.slot_last:=FirstDataSlot + NumSlots - 1; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then + begin + DeviceLogDebug(nil,'VCHIQ: Init Slots'); + DeviceLogDebug(nil,'VCHIQ: magic=' + IntToHex(SlotZero.magic,8)); + DeviceLogDebug(nil,'VCHIQ: version=' + IntToStr(SlotZero.version)); + DeviceLogDebug(nil,'VCHIQ: version_min=' + IntToStr(SlotZero.version_min)); + DeviceLogDebug(nil,'VCHIQ: slot_zero_size=' + IntToStr(SlotZero.slot_zero_size)); + DeviceLogDebug(nil,'VCHIQ: slot_size=' + IntToStr(SlotZero.slot_size)); + DeviceLogDebug(nil,'VCHIQ: max_slots=' + IntToStr(SlotZero.max_slots)); + DeviceLogDebug(nil,'VCHIQ: max_slots_per_side=' + IntToStr(SlotZero.max_slots_per_side)); + + DeviceLogDebug(nil,'VCHIQ: master.slot_sync=' + IntToStr(SlotZero.master.slot_sync)); + DeviceLogDebug(nil,'VCHIQ: master.slot_first=' + IntToStr(SlotZero.master.slot_first)); + DeviceLogDebug(nil,'VCHIQ: master.slot_last=' + IntToStr(SlotZero.master.slot_last)); + DeviceLogDebug(nil,'VCHIQ: slave.slot_sync=' + IntToStr(SlotZero.slave.slot_sync)); + DeviceLogDebug(nil,'VCHIQ: slave.slot_first=' + IntToStr(SlotZero.slave.slot_first)); + DeviceLogDebug(nil,'VCHIQ: slave.slot_last=' + IntToStr(SlotZero.slave.slot_last)); + end; + {$ENDIF} + + {Return Slot Zero} + Result:=SlotZero; +end; + +{==============================================================================} + +function VCHIQInitState(VCHIQ:PVCHIQDevice;State:PVCHIQ_STATE_T;SlotZero:PVCHIQ_SLOT_ZERO_T;IsMaster:Boolean):VCHIQ_STATUS_T; +{From vchiq_init_state in vchiq_core.c} +var + Count:Integer; + Status:VCHIQ_STATUS_T; + Local:PVCHIQ_SHARED_STATE_T; + Remote:PVCHIQ_SHARED_STATE_T; + ServiceQuota:PVCHIQ_SERVICE_QUOTA_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Init State (VCHIQ=' + IntToHex(PtrUInt(VCHIQ),8) + ' State=' + IntToHex(PtrUInt(State),8) + ' SlotZero=' + IntToHex(PtrUInt(SlotZero),8) + ' IsMaster=' + BoolToStr(IsMaster) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Slot Zero} + if SlotZero = nil then Exit; + + {Check Parameters} + if SlotZero.magic <> VCHIQ_MAGIC then Exit; + if SlotZero.version < VCHIQ_VERSION_MIN then Exit; + if VCHIQ_VERSION < SlotZero.version_min then Exit; + if SlotZero.slot_zero_size <> SizeOf(VCHIQ_SLOT_ZERO_T) then Exit; + if SlotZero.slot_size <> VCHIQ_SLOT_SIZE then Exit; + if SlotZero.max_slots <> VCHIQ_MAX_SLOTS then Exit; + if SlotZero.max_slots_per_side <> VCHIQ_MAX_SLOTS_PER_SIDE then Exit; + + {Check Version} + if VCHIQ_VERSION < SlotZero.version then + begin + SlotZero.version:=VCHIQ_VERSION; + end; + + {Check Master} + if IsMaster then + begin + {Get Local/Remote} + Local:=@SlotZero.master; + Remote:=@SlotZero.slave; + end + else + begin + {Get Local/Remote} + Local:=@SlotZero.slave; + Remote:=@SlotZero.master; + end; + + {Check Initialized} + if Local.initialised <> 0 then Exit; + + {Initialize State} + FillChar(State^,SizeOf(VCHIQ_STATE_T),0); + + State.id:=VCHIQId; + State.is_master:=IsMaster; + + {Initialize shared state pointers} + State.local:=Local; + State.remote:=Remote; + State.slot_data:=PVCHIQ_SLOT_ARRAY_T(SlotZero); + + {Initialize events and mutexes} + State.connect:=SemaphoreCreate(0); + State.mutex:=MutexCreate; + State.trigger_event:=SemaphoreCreateEx(0,SEMAPHORE_DEFAULT_MAXIMUM,SEMAPHORE_FLAG_IRQ); {Used within interrupt handler} + State.recycle_event:=SemaphoreCreateEx(0,SEMAPHORE_DEFAULT_MAXIMUM,SEMAPHORE_FLAG_IRQ); {Used within interrupt handler} + State.sync_trigger_event:=SemaphoreCreateEx(0,SEMAPHORE_DEFAULT_MAXIMUM,SEMAPHORE_FLAG_IRQ); {Used within interrupt handler} + State.sync_release_event:=SemaphoreCreateEx(0,SEMAPHORE_DEFAULT_MAXIMUM,SEMAPHORE_FLAG_IRQ); {Used within interrupt handler} + + State.slot_mutex:=MutexCreate; + State.recycle_mutex:=MutexCreate; + State.sync_mutex:=MutexCreate; + State.bulk_transfer_mutex:=MutexCreate; + + State.slot_available_event:=SemaphoreCreate(0); + State.slot_remove_event:=SemaphoreCreate(0); + State.data_quota_event:=SemaphoreCreate(0); + + State.slot_queue_available:=0; + + for Count:=0 to VCHIQ_MAX_SERVICES - 1 do + begin + ServiceQuota:=@State.service_quotas[Count]; + ServiceQuota.quota_event:=SemaphoreCreate(0); + end; + + for Count:=Local.slot_first to Local.slot_last do + begin + Local.slot_queue[State.slot_queue_available]:=Count; + Inc(State.slot_queue_available); + SemaphoreSignal(State.slot_available_event); + end; + + State.default_slot_quota:=State.slot_queue_available div 2; + State.default_message_quota:=Min(Word(State.default_slot_quota * 256),Word(Not(0))); + + State.previous_data_index:=-1; + State.data_use_count:=0; + State.data_quota:=State.slot_queue_available - 1; + + Local.trigger.event:=State.trigger_event; + VCHIQRemoteEventCreate(@Local.trigger); + Local.tx_pos:=0; + + Local.recycle.event:=State.recycle_event; + VCHIQRemoteEventCreate(@Local.recycle); + Local.slot_queue_recycle:=State.slot_queue_available; + + Local.sync_trigger.event:=State.sync_trigger_event; + VCHIQRemoteEventCreate(@Local.sync_trigger); + + Local.sync_release.event:=State.sync_release_event; + VCHIQRemoteEventCreate(@Local.sync_release); + + {At start-of-day, the slot is empty and available} + PVCHIQ_HEADER_T(VCHIQ_SLOT_DATA_FROM_INDEX(State,Local.slot_sync)).msgid:=VCHIQ_MSGID_PADDING; + VCHIQRemoteEventSignalLocal(@Local.sync_release); + + Local.debug[Ord(VCHIQ_DEBUG_ENTRIES)]:=Ord(VCHIQ_DEBUG_MAX); + + {Platform Init State} + Status:=VCHIQPlatformInitState(State); + + {Create the slot handler thread} + State.slot_handler_thread:=BeginThread(TThreadStart(VCHIQSlotHandlerExecute),VCHIQ,State.slot_handler_thread,VCHIQ_SLOT_THREAD_STACK_SIZE); + if State.slot_handler_thread = INVALID_HANDLE_VALUE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Init State: Failed to create slot handler thread'); + Exit; + end; + ThreadSetPriority(State.slot_handler_thread,VCHIQ_SLOT_THREAD_PRIORITY); + ThreadSetName(State.slot_handler_thread,VCHIQ_SLOT_THREAD_NAME); + + {Create the recycle thread} + State.recycle_thread:=BeginThread(TThreadStart(VCHIQRecycleExecute),VCHIQ,State.recycle_thread,VCHIQ_RECYCLE_THREAD_STACK_SIZE); + if State.recycle_thread = INVALID_HANDLE_VALUE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Init State: Failed to create recycle thread'); + Exit; + end; + ThreadSetPriority(State.recycle_thread,VCHIQ_RECYCLE_THREAD_PRIORITY); + ThreadSetName(State.recycle_thread,VCHIQ_RECYCLE_THREAD_NAME); + + {Create the sync thread} + State.sync_thread:=BeginThread(TThreadStart(VCHIQSyncExecute),VCHIQ,State.sync_thread,VCHIQ_SYNC_THREAD_STACK_SIZE); + if State.sync_thread = INVALID_HANDLE_VALUE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Init State: Failed to create sync thread'); + Exit; + end; + ThreadSetPriority(State.sync_thread,VCHIQ_SYNC_THREAD_PRIORITY); + ThreadSetName(State.sync_thread,VCHIQ_SYNC_THREAD_NAME); + + {Store State} + if State.id >= VCHIQ_MAX_STATES then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Init State: State.id >= VCHIQ_MAX_STATES'); + Exit; + end; + VCHIQStates[State.id]:=State; + + {Indicate readiness to the other side} + Local.initialised:=1; + + {Return Status} + Result:=Status; +end; + +{==============================================================================} + +procedure VCHIQInitBulkQueue(Queue:PVCHIQ_BULK_QUEUE_T); +{From init_bulk_queue in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Init Bulk Queue (Queue=' + IntToHex(PtrUInt(Queue),8) + ')'); + {$ENDIF} + + {Check Queue} + if Queue = nil then Exit; + + Queue.local_insert:=0; + Queue.remote_insert:=0; + Queue.process:=0; + Queue.remote_notify:=0; + Queue.remove:=0; +end; + +{==============================================================================} + +function VCHIQCloseService(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +{From vchiq_close_service in vchiq_core.c} +var + Status:VCHIQ_STATUS_T; + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Close Service (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service = nil then Exit; + try + {Check Service State} + if (Service.srvstate = VCHIQ_SRVSTATE_FREE) or (Service.srvstate = VCHIQ_SRVSTATE_LISTENING) or (Service.srvstate = VCHIQ_SRVSTATE_HIDDEN) then + begin + Exit; + end; + + {Mark Closing} + VCHIQMarkServiceClosing(Service); + + {Check Thread} + if ThreadGetCurrent = Service.state.slot_handler_thread then + begin + {Close Service Internal} + Status:=VCHIQCloseServiceInternal(Service,False); {Not CloseReceived} + if Status = VCHIQ_RETRY then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Status = VCHIQ_RETRY from Close Service Internal'); + Exit; + end; + end + else + begin + {Mark the service for termination by the slot handler} + VCHIQRequestPoll(Service.state,Service,VCHIQ_POLL_TERMINATE); + + Status:=VCHIQ_SUCCESS; + end; + + while True do + begin + {Wait for Remove} + if SemaphoreWait(Service.remove_event) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Check Service State} + if (Service.srvstate = VCHIQ_SRVSTATE_FREE) or (Service.srvstate = VCHIQ_SRVSTATE_LISTENING) or (Service.srvstate = VCHIQ_SRVSTATE_OPEN) then + begin + Break; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Close Service (Id=' + IntToStr(Service.state.id) + ' LocalPort=' + IntToStr(Service.localport) + ' ServiceState=' + VCHIQServiceStateToString(Service.srvstate) + ')'); + {$ENDIF} + end; + + {Check Service State} + if (Status = VCHIQ_SUCCESS) and (Service.srvstate <> VCHIQ_SRVSTATE_FREE) and (Service.srvstate <> VCHIQ_SRVSTATE_LISTENING) then + begin + Exit; + end; + + {Return Success} + Result:=VCHIQ_SUCCESS; + finally + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +function VCHIQRemoveService(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +{From vchiq_remove_service in vchiq_core.c} +var + Status:VCHIQ_STATUS_T; + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Remove Service (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service = nil then Exit; + try + {Check Service State} + if Service.srvstate = VCHIQ_SRVSTATE_FREE then + begin + Exit; + end; + + {Mark Closing} + VCHIQMarkServiceClosing(Service); + + {Check Service State and Thread} + if (Service.srvstate = VCHIQ_SRVSTATE_HIDDEN) or (ThreadGetCurrent = Service.state.slot_handler_thread) then + begin + {Make it look like a client, because it must be removed and not left in the LISTENING state} + Service.public_fourcc:=VCHIQ_FOURCC_INVALID; + + {Close Service Internal} + Status:=VCHIQCloseServiceInternal(Service,False); {Not CloseReceived} + if Status = VCHIQ_RETRY then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Status = VCHIQ_RETRY from Close Service Internal'); + Exit; + end; + end + else + begin + {Mark the service for termination by the slot handler} + VCHIQRequestPoll(Service.state,Service,VCHIQ_POLL_TERMINATE); + + Status:=VCHIQ_SUCCESS; + end; + + while True do + begin + {Wait for Remove} + if SemaphoreWait(Service.remove_event) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Check Service State} + if (Service.srvstate = VCHIQ_SRVSTATE_FREE) or (Service.srvstate = VCHIQ_SRVSTATE_OPEN) then + begin + Break; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Remove Service (Id=' + IntToStr(Service.state.id) + ' LocalPort=' + IntToStr(Service.localport) + ' ServiceState=' + VCHIQServiceStateToString(Service.srvstate) + ')'); + {$ENDIF} + end; + + {Check Service State} + if (Status = VCHIQ_SUCCESS) and (Service.srvstate <> VCHIQ_SRVSTATE_FREE) then + begin + Exit; + end; + + {Return Success} + Result:=VCHIQ_SUCCESS; + finally + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +procedure VCHIQMarkServiceClosing(Service:PVCHIQ_SERVICE_T); +{From mark_service_closing in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Mark Service Closing (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + VCHIQMarkServiceClosingInternal(Service,False); +end; + +{==============================================================================} + +function VCHIQMakeServiceCallback(Service:PVCHIQ_SERVICE_T;Reason:VCHIQ_REASON_T;Header:PVCHIQ_HEADER_T;BulkUserdata:Pointer):VCHIQ_STATUS_T; +{From make_service_callback in vchiq_core.c} +var + Status:VCHIQ_STATUS_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Mark Service Closing (Service=' + IntToHex(PtrUInt(Service),8) + ' Reason=' + VCHIQReasonToString(Reason) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' BulkUserdata=' + IntToHex(PtrUInt(BulkUserdata),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Call Callback} + Status:=Service.base.callback(Reason,Header,Service.handle,BulkUserdata); + if Status = VCHIQ_ERROR then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Ignoring error from callback to service (Id=' + IntToStr(Service.state.id) + ' Handle=' + IntToHex(Service.handle,8) + ')'); + + Status:=VCHIQ_SUCCESS; + end; + + Result:=Status; +end; + +{==============================================================================} + +function VCHIQSetServiceOption(Handle:VCHIQ_SERVICE_HANDLE_T;Option:VCHIQ_SERVICE_OPTION_T;Value:Integer):VCHIQ_STATUS_T; +{From vchiq_set_service_option in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; + ServiceQuota:PVCHIQ_SERVICE_QUOTA_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Set Service Option (Handle=' + IntToHex(Handle,8) + ' Option=' + VCHIQServiceOptionToString(Option) + ' Value=' + IntToStr(Value) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service = nil then Exit; + try + {Check Option} + case Option of + VCHIQ_SERVICE_OPTION_AUTOCLOSE:begin + {Set Auto Close} + Service.auto_close:=Value; + + Result:=VCHIQ_SUCCESS; + end; + VCHIQ_SERVICE_OPTION_SLOT_QUOTA:begin + {Get Service Quota} + ServiceQuota:=@Service.state.service_quotas[Service.localport]; + + {Check Value} + if Value = 0 then + begin + Value:=Service.state.default_slot_quota; + end; + if (Value >= ServiceQuota.slot_use_count) and (Value < Word(not(0))) then + begin + {Set Slot Quota} + ServiceQuota.slot_quota:=Value; + + {Check Quota} + if (ServiceQuota.slot_quota >= ServiceQuota.slot_use_count) and (ServiceQuota.message_quota >= ServiceQuota.message_use_count) then + begin + {Signal the service that it may have dropped below its quota} + SemaphoreSignal(ServiceQuota.quota_event); + end; + + Result:=VCHIQ_SUCCESS; + end; + end; + VCHIQ_SERVICE_OPTION_MESSAGE_QUOTA:begin + {Get Service Quota} + ServiceQuota:=@Service.state.service_quotas[Service.localport]; + + {Check Value} + if Value = 0 then + begin + Value:=Service.state.default_message_quota; + end; + if (Value >= ServiceQuota.message_use_count) and (Value < Word(not(0))) then + begin + {Set Message Quota} + ServiceQuota.message_quota:=Value; + + {Check Quota} + if (ServiceQuota.message_quota >= ServiceQuota.message_use_count) and (ServiceQuota.slot_quota >= ServiceQuota.slot_use_count) then + begin + {Signal the service that it may have dropped below its quota} + SemaphoreSignal(ServiceQuota.quota_event); + end; + + Result:=VCHIQ_SUCCESS; + end; + end; + VCHIQ_SERVICE_OPTION_SYNCHRONOUS:begin + {Check Service State} + if (Service.srvstate = VCHIQ_SRVSTATE_HIDDEN) or (Service.srvstate = VCHIQ_SRVSTATE_LISTENING) then + begin + {Set Synchronous} + Service.sync:=Value; + + Result:=VCHIQ_SUCCESS; + end; + end; + VCHIQ_SERVICE_OPTION_TRACE:begin + {Set Trace} + Service.trace:=Value; + + Result:=VCHIQ_SUCCESS; + end; + end; + finally + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +function VCHIQBulkTransfer(Handle:VCHIQ_SERVICE_HANDLE_T;MemHandle:VCHI_MEM_HANDLE_T;Offset:Pointer;Size:Integer;Userdata:Pointer;Mode:VCHIQ_BULK_MODE_T;Dir:VCHIQ_BULK_DIR_T):VCHIQ_STATUS_T; +{From vchiq_bulk_transfer in vchiq_core.c} + +{This function may be called by kernel threads or user threads} +{When called in blocking mode, the userdata field points to a bulk_waiter structure} +var + Unlock:Boolean; + MsgType:Integer; + Bulk:PVCHIQ_BULK_T; + State:PVCHIQ_STATE_T; + Status:VCHIQ_STATUS_T; + Service:PVCHIQ_SERVICE_T; + Queue:PVCHIQ_BULK_QUEUE_T; + BulkWaiter:PVCHIQ_BULK_WAITER_T; + + Element:VCHIQ_ELEMENT_T; + Payload:array[0..1] of Integer; //To Do //Continuing //Change this to a VCHIQ_BULK_PAYLOAD ? +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Bulk Transfer (Handle=' + IntToHex(Handle,8) + ' MemHandle=' + IntToHex(MemHandle,8) + ' Offset=' + IntToHex(PtrUInt(Offset),8) + ' Size=' + IntToStr(Size) + ' Userdata=' + IntToHex(PtrUInt(Userdata),8) + ' Mode=' + VCHIQBulkModeToString(Mode) + ' Dir=' + VCHIQBulkDirToString(Dir) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service = nil then Exit; + try + Unlock:=True; + + {Check Service} + if VCHIQCheckService(Service) <> VCHIQ_SUCCESS then Exit; + + {Check Service State} + if Service.srvstate <> VCHIQ_SRVSTATE_OPEN then Exit; + + {Check Mem Handle and Offset} + if (MemHandle = VCHI_MEM_HANDLE_INVALID) and (Offset = nil) then Exit; + + {Check Mode} + case Mode of + VCHIQ_BULK_MODE_NOCALLBACK, + VCHIQ_BULK_MODE_CALLBACK:begin + BulkWaiter:=nil; + end; + VCHIQ_BULK_MODE_BLOCKING:begin + BulkWaiter:=PVCHIQ_BULK_WAITER_T(Userdata); + BulkWaiter.event:=SemaphoreCreate(0); {Destroyed when the waiter node is freed} + BulkWaiter.actual:=0; + BulkWaiter.bulk:=nil; + end; + VCHIQ_BULK_MODE_WAITING:begin + BulkWaiter:=PVCHIQ_BULK_WAITER_T(Userdata); + {Bulk:=BulkWaiter.bulk;} {Not Used} + + {Unlock Service} + VCHIQUnlockService(Service); + Unlock:=False; + + {BulkWaiter.bulk:=Bulk;} {Not Used} + + Status:=VCHIQ_SUCCESS; + if SemaphoreWait(BulkWaiter.event) <> ERROR_SUCCESS then + begin + Status:=VCHIQ_RETRY; + end + else if BulkWaiter.actual = VCHIQ_BULK_ACTUAL_ABORTED then + begin + Status:=VCHIQ_ERROR; + end; + + {Return Result} + Result:=Status; + Exit; + end; + else + begin + Exit; + end; + end; + + {Get State} + State:=Service.state; + + {Get Queue} + Queue:=@Service.bulk_rx; + if Dir = VCHIQ_BULK_TRANSMIT then Queue:=@Service.bulk_tx; + + {Get Message Type} + MsgType:=VCHIQ_MSG_BULK_RX; + if Dir = VCHIQ_BULK_TRANSMIT then MsgType:=VCHIQ_MSG_BULK_TX; + + {Lock Mutex} + if MutexLock(Service.bulk_mutex) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + if Queue.local_insert = (Queue.remove + VCHIQ_NUM_SERVICE_BULKS) then + begin + {Update Statistics} + Inc(Service.stats.bulk_stalls); + + repeat + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + {Wait Bulk Remove Event} + if SemaphoreWait(Service.bulk_remove_event) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Lock Mutex} + if MutexLock(Service.bulk_mutex) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + until (Queue.local_insert <> (Queue.remove + VCHIQ_NUM_SERVICE_BULKS)); + end; + + {Get Bulk} + Bulk:=@Queue.bulks[VCHIQ_BULK_INDEX(Queue.local_insert)]; + Bulk.mode:=Mode; + Bulk.dir:=Dir; + Bulk.userdata:=Userdata; + Bulk.size:=Size; + Bulk.actual:=VCHIQ_BULK_ACTUAL_ABORTED; + + {Prepare Bulk Data} + if VCHIQPrepareBulkData(Bulk,MemHandle,Offset,Size,Dir) <> VCHIQ_SUCCESS then + begin + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + Exit; + end; + + {Memory Barrier} + DataMemoryBarrier; + + {The slot mutex must be held when the service is being closed, so claim it here to ensure that isn't happening} + if MutexLock(State.slot_mutex) <> ERROR_SUCCESS then + begin + {Complete Bulk} + VCHIQCompleteBulk(Bulk); + + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + Result:=VCHIQ_RETRY; + Exit; + end; + + {Check Service State} + if Service.srvstate <> VCHIQ_SRVSTATE_OPEN then + begin + {Unlock Mutex} + MutexUnlock(State.slot_mutex); + + {Complete Bulk} + VCHIQCompleteBulk(Bulk); + + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + Result:=VCHIQ_RETRY; + Exit; + end; + + {Check Master} + if State.is_master then + begin + {Update Local Insert} + Inc(Queue.local_insert); + + {Resolve Bulks} + if VCHIQResolveBulks(Service,Queue) > 0 then + begin + if Dir = VCHIQ_BULK_TRANSMIT then + begin + {Request Poll} + VCHIQRequestPoll(State,Service,VCHIQ_POLL_TXNOTIFY); + end + else + begin + {Request Poll} + VCHIQRequestPoll(State,Service,VCHIQ_POLL_RXNOTIFY); + end; + end; + end + else + begin + {Create Payload} + Payload[0]:=PtrInt(Bulk.data); + Payload[1]:=Bulk.size; + + {Create Element} + Element.data:=@Payload; + Element.size:=SizeOf(Payload); + + {Queue Message Internal} + Status:=VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(MsgType,Service.localport,Service.remoteport),@Element,1,SizeOf(Payload),QMFLAGS_IS_BLOCKING or QMFLAGS_NO_MUTEX_LOCK or QMFLAGS_NO_MUTEX_UNLOCK); + if Status <> VCHIQ_SUCCESS then + begin + {Unlock Mutex} + MutexUnlock(State.slot_mutex); + + {Complete Bulk} + VCHIQCompleteBulk(Bulk); + + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + Exit; + end; + + {Update Local Insert} + Inc(Queue.local_insert); + end; + + {Unlock Mutex} + MutexUnlock(State.slot_mutex); + + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + {Unlock Service} + VCHIQUnlockService(Service); + Unlock:=False; + + Status:=VCHIQ_SUCCESS; + + if BulkWaiter <> nil then + begin + BulkWaiter.bulk:=Bulk; + + if SemaphoreWait(BulkWaiter.event) <> ERROR_SUCCESS then + begin + Status:=VCHIQ_RETRY; + end + else if BulkWaiter.actual = VCHIQ_BULK_ACTUAL_ABORTED then + begin + Status:=VCHIQ_ERROR; + end; + end; + + {Return Result} + Result:=Status; + finally + {Unlock Service} + if Unlock then VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +function VCHIQPauseInternal(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +{From vchiq_pause_internal in vchiq_core.c} +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Pause Internal (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Conn State} + case State.conn_state of + VCHIQ_CONNSTATE_CONNECTED:begin + {Request Pause} + VCHIQSetConnState(State,VCHIQ_CONNSTATE_PAUSING); + + {Request Poll} + VCHIQRequestPoll(State,nil,VCHIQ_POLL_TERMINATE); {Note: PollType not used if Service is nil} + end; + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Pause Internal in state ' + VCHIQConnStateToString(State.conn_state)); + + {Update Statistics} + Inc(State.stats.error_count); + Exit; + end; + end; + + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQResumeInternal(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +{From vchiq_resume_internal in vchiq_core.c} +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Resume Internal (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Conn State} + if State.conn_state = VCHIQ_CONNSTATE_PAUSED then + begin + {Request Resume} + VCHIQSetConnState(State,VCHIQ_CONNSTATE_RESUMING); + + {Request Poll} + VCHIQRequestPoll(State,nil,VCHIQ_POLL_TERMINATE); {Note: PollType not used if Service is nil} + end + else + begin + {Update Statistics} + Inc(State.stats.error_count); + Exit; + end; + + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQSendRemoteUse(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +{From vchiq_send_remote_use in vchiq_core.c} +var + Status:VCHIQ_STATUS_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Send Remote Use (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Connection State} + Status:=VCHIQ_RETRY; + if State.conn_state <> VCHIQ_CONNSTATE_DISCONNECTED then + begin + Status:=VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_REMOTE_USE,0,0),nil,0,0,0); + end; + + Result:=Status; +end; + +{==============================================================================} + +function VCHIQSendRemoteRelease(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +{From vchiq_send_remote_release in vchiq_core.c} +var + Status:VCHIQ_STATUS_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Send Remote Release (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Connection State} + Status:=VCHIQ_RETRY; + if State.conn_state <> VCHIQ_CONNSTATE_DISCONNECTED then + begin + Status:=VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_REMOTE_RELEASE,0,0),nil,0,0,0); + end; + + Result:=Status; +end; + +{==============================================================================} + +function VCHIQSendRemoteUseActive(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +{From vchiq_send_remote_use_active in vchiq_core.c} +var + Status:VCHIQ_STATUS_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Send Remote Use Active (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Connection State} + Status:=VCHIQ_RETRY; + if State.conn_state <> VCHIQ_CONNSTATE_DISCONNECTED then + begin + Status:=VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_REMOTE_USE_ACTIVE,0,0),nil,0,0,0); + end; + + Result:=Status; +end; + +{==============================================================================} + +function VCHIQConnectInternal(State:PVCHIQ_STATE_T;Instance:PVCHIQInstance):VCHIQ_STATUS_T; +{From vchiq_connect_internal in vchiq_core.c} +var + Index:Integer; + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Connect Internal (State=' + IntToHex(PtrUInt(State),8) + ' Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Instance} + if Instance = nil then Exit; + + {Find all services registered to this client and enable them} + Index:=0; + Service:=VCHIQNextServiceByInstance(State,Instance,Index); + while Service <> nil do + begin + {Check Service State} + if Service.srvstate = VCHIQ_SRVSTATE_HIDDEN then + begin + {Update Service State} + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_LISTENING); + end; + + {Unlock Service} + VCHIQUnlockService(Service); + + {Next Service} + Service:=VCHIQNextServiceByInstance(State,Instance,Index); + end; + + {Check Connection State} + if State.conn_state = VCHIQ_CONNSTATE_DISCONNECTED then + begin + {Queue Message} + if VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_CONNECT,0,0),nil,0,0,QMFLAGS_IS_BLOCKING) = VCHIQ_RETRY then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Update Connection State} + VCHIQSetConnState(State,VCHIQ_CONNSTATE_CONNECTING); + end; + + {Check Connection State} + if State.conn_state = VCHIQ_CONNSTATE_CONNECTING then + begin + {Wait Connect} + if SemaphoreWait(State.connect) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Update Connection State} + VCHIQSetConnState(State,VCHIQ_CONNSTATE_CONNECTED); + + {Signal Connect} + SemaphoreSignal(State.connect); + end; + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQShutdownInternal(State:PVCHIQ_STATE_T;Instance:PVCHIQInstance):VCHIQ_STATUS_T; +{From vchiq_shutdown_internal in vchiq_core.c} +var + Index:Integer; + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Shutdown Internal (State=' + IntToHex(PtrUInt(State),8) + ' Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Instance} + if Instance = nil then Exit; + + {Find all services registered to this client and remove them} + Index:=0; + Service:=VCHIQNextServiceByInstance(State,Instance,Index); + while Service <> nil do + begin + {Remove Service} + VCHIQRemoveService(Service.handle); + + {Unlock Service} + VCHIQUnlockService(Service); + + {Next Service} + Service:=VCHIQNextServiceByInstance(State,Instance,Index); + end; + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQGetConfig(Instance:PVCHIQInstance;ConfigSize:Integer;Config:PVCHIQ_CONFIG_T):VCHIQ_STATUS_T; +{From vchiq_get_config in vchiq_core.c} +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Get Config (Size=' + IntToStr(ConfigSize) + ' Config=' + IntToHex(PtrUInt(Config),8) + ')'); + {$ENDIF} + + {Check Config} + if Config = nil then Exit; + + {Check Size} + if ConfigSize <> SizeOf(VCHIQ_CONFIG_T) then Exit; + + {Copy Config} + Config.max_msg_size:=VCHIQ_MAX_MSG_SIZE; + Config.bulk_threshold:=VCHIQ_MAX_MSG_SIZE; + Config.max_outstanding_bulks:=VCHIQ_NUM_SERVICE_BULKS; + Config.max_services:=VCHIQ_MAX_SERVICES; + Config.version:=VCHIQ_VERSION; + Config.version_min:=VCHIQ_VERSION_MIN; + + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQGetPeerVersion(Handle:VCHIQ_SERVICE_HANDLE_T;PeerVersion:PSmallInt):VCHIQ_STATUS_T; +{From vchiq_get_peer_version in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Get Peer Version (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Check Peer Version} + if PeerVersion = nil then Exit; + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service = nil then Exit; + try + {Check Service} + if VCHIQCheckService(Service) <> VCHIQ_SUCCESS then Exit; + + {Get Peer Version} + PeerVersion^:=Service.peer_version; + + Result:=VCHIQ_SUCCESS; + finally + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +function VCHIQAddServiceInternal(State:PVCHIQ_STATE_T;Params:PVCHIQ_SERVICE_PARAMS_T;ServiceState:VCHIQ_SRVSTATE_T;Instance:PVCHIQInstance;TermProc:VCHIQ_USERDATA_TERM_T):PVCHIQ_SERVICE_T; +{From vchiq_add_service_internal in vchiq_core.c} + +{Called from application thread when a client or server service is created} +var + Count:Integer; + Current:PVCHIQ_SERVICE_T; + Service:PVCHIQ_SERVICE_T; + PService:PPVCHIQ_SERVICE_T; + ServiceQuota:PVCHIQ_SERVICE_QUOTA_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Add Service Internal (State=' + IntToHex(PtrUInt(State),8) + ' Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Params} + if Params = nil then Exit; + + {Create Service} + Service:=AllocMem(SizeOf(VCHIQ_SERVICE_T)); + if Service <> nil then + begin + {Initialize Service} + Service.base.fourcc:=Params.fourcc; + Service.base.callback:=Params.callback; + Service.base.userdata:=Params.userdata; + Service.handle:=VCHIQ_SERVICE_HANDLE_INVALID; + Service.ref_count:=1; + Service.srvstate:=VCHIQ_SRVSTATE_FREE; + Service.userdata_term:=TermProc; + Service.localport:=VCHIQ_PORT_FREE; + Service.remoteport:=VCHIQ_PORT_FREE; + + Service.public_fourcc:=Params.fourcc; + if ServiceState = VCHIQ_SRVSTATE_OPENING then Service.public_fourcc:=VCHIQ_FOURCC_INVALID; + Service.client_id:=0; + Service.auto_close:=1; + Service.sync:=0; + Service.closing:=0; + Service.trace:=0; + Service.poll_flags:=0; + Service.version:=Params.version; + Service.version_min:=Params.version_min; + Service.state:=State; + Service.instance:=Instance; + Service.service_use_count:=0; + VCHIQInitBulkQueue(@Service.bulk_tx); + VCHIQInitBulkQueue(@Service.bulk_rx); + Service.remove_event:=SemaphoreCreate(0); + Service.bulk_remove_event:=SemaphoreCreate(0); + Service.bulk_mutex:=MutexCreate; + FillChar(Service.stats,SizeOf(VCHIQ_SERVICE_STATS_T),0); + end + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Failed to allocate memory for new service'); + Exit; + end; + + {Setup Defaults} + PService:=nil; + + {Lock Mutex} + MutexLock(State.mutex); + + {Prepare to use a previously unused service} + if State.unused_service < VCHIQ_MAX_SERVICES then + begin + PService:=@State.services[State.unused_service]; + end; + + {Check Service State} + if ServiceState = VCHIQ_SRVSTATE_OPENING then + begin + for Count:=0 to State.unused_service - 1 do + begin + Current:=State.services[Count]; + if Current = nil then + begin + PService:=@State.services[Count]; + Break; + end; + end; + end + else + begin + for Count:=State.unused_service - 1 downto 0 do + begin + Current:=State.services[Count]; + if Current = nil then + begin + PService:=@State.services[Count]; + end + else if (Current.public_fourcc = Params.fourcc) and ((Current.instance <> Instance) or (@Current.base.callback <> @Params.callback)) then + begin + {There is another server using this fourcc which doesn't match} + PService:=nil; + Break; + end; + end; + end; + + {Check PService} + if PService <> nil then + begin + {Get Local Port} + Service.localport:=(PService - PPVCHIQ_SERVICE_T(@State.services)); + + {Check Handle Sequence} + if VCHIQHandleSequence = 0 then + begin + VCHIQHandleSequence:=VCHIQ_MAX_STATES * VCHIQ_MAX_SERVICES; + end; + + {Get Handle} + Service.handle:=VCHIQHandleSequence or (State.id * VCHIQ_MAX_SERVICES) or Service.localport; + + {Update Handle Sequence} + VCHIQHandleSequence:=VCHIQHandleSequence + VCHIQ_MAX_STATES * VCHIQ_MAX_SERVICES; + + {Update Service} + PService^:=Service; + if PService = @State.services[State.unused_service] then + begin + {Update Unused Service} + Inc(State.unused_service); + end; + end; + + {Unlock Mutex} + MutexUnlock(State.mutex); + + {Check PService} + if PService = nil then + begin + {Free Service} + FreeMem(Service); + Exit; + end; + + {Get Service Quota} + ServiceQuota:=@State.service_quotas[Service.localport]; + ServiceQuota.slot_quota:=State.default_slot_quota; + ServiceQuota.message_quota:=State.default_message_quota; + if ServiceQuota.slot_use_count = 0 then + begin + ServiceQuota.previous_tx_index:=VCHIQ_SLOT_QUEUE_INDEX_FROM_POS(State.local_tx_pos) - 1; + end; + + {Bring this service online} + VCHIQSetServiceState(Service,ServiceState); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Add Service Internal (ServiceState=' + VCHIQServiceStateToString(ServiceState) + ' Fourcc=' + VCHIQFourccToString(Params.fourcc) + ' LocalPort=' + IntToStr(Service.localport) + ')'); + {$ENDIF} + + {Don't unlock the service - leave it with a ref_count of 1} + Result:=Service; +end; + +{==============================================================================} + +function VCHIQOpenServiceInternal(Service:PVCHIQ_SERVICE_T;ClientID:Integer):VCHIQ_STATUS_T; +{From vchiq_open_service_internal in vchiq_core.c} +var + Status:VCHIQ_STATUS_T; + Body:VCHIQ_ELEMENT_T; + Payload:VCHIQ_OPEN_PAYLOAD; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Open Service Internal (Service=' + IntToHex(PtrUInt(Service),8) + ' ClientID=' + IntToStr(ClientID) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Create Payload} + Payload.fourcc:=Service.base.fourcc; + Payload.client_id:=ClientID; + Payload.version:=Service.version; + Payload.version_min:=Service.version_min; + + {Create Body} + Body.data:=@Payload; + Body.size:=SizeOf(VCHIQ_OPEN_PAYLOAD); + + {Set Client Id} + Service.client_id:=ClientID; + + {Use Service Internal} + VCHIQUseServiceInternal(Service); + + {Queue Message} + Status:=VCHIQQueueMessageInternal(Service.state,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_OPEN,Service.localport,0),@Body,1,SizeOf(VCHIQ_OPEN_PAYLOAD),QMFLAGS_IS_BLOCKING); + if Status = VCHIQ_SUCCESS then + begin + {Wait for the ACK/NAK} + if SemaphoreWait(Service.remove_event) <> ERROR_SUCCESS then + begin + Status:=VCHIQ_RETRY; + + {Release Service Internal} + VCHIQReleaseServiceInternal(Service); + end + else if (Service.srvstate <> VCHIQ_SRVSTATE_OPEN) and (Service.srvstate <> VCHIQ_SRVSTATE_OPENSYNC) then + begin + if Service.srvstate <> VCHIQ_SRVSTATE_CLOSEWAIT then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Open Service Internal (State=' + IntToStr(Service.state.id) + ' ServiceState=' + VCHIQServiceStateToString(Service.srvstate) + ' ReferenceCount=' + IntToStr(Service.ref_count) + ')'); + end; + Status:=VCHIQ_ERROR; + + {Update Statistics} + Inc(Service.stats.error_count); + + {Release Service Internal} + VCHIQReleaseServiceInternal(Service); + end; + end; + + {Return Status} + Result:=Status; +end; + +{==============================================================================} + +procedure VCHIQReleaseServiceMessages(Service:PVCHIQ_SERVICE_T); +{From release_service_messages in vchiq_core.c} +var + Data:PByte; + Index:Integer; + MsgId:Integer; + Port:Integer; + SlotLast:Integer; + DataPos:Integer; + DataEnd:Integer; + State:PVCHIQ_STATE_T; + Header:PVCHIQ_HEADER_T; + SLotInfo:PVCHIQ_SLOT_INFO_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Service Messages (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Get State} + State:=Service.state; + + {Get Slot Last} + SlotLast:=State.remote.slot_last; + + {Release any claimed messages aimed at this service} + if Service.sync <> 0 then + begin + {Get Header} + Header:=PVCHIQ_HEADER_T(VCHIQ_SLOT_DATA_FROM_INDEX(State,State.remote.slot_sync)); + + {Check Port} + if VCHIQ_MSG_DSTPORT(Header.msgid) = Service.localport then + begin + {Release Message Sync} + VCHIQReleaseMessageSync(State,Header); + end; + + Exit; + end; + + {Check Slots} + for Index:=State.remote.slot_first to SlotLast do + begin + {Get Slot Info} + SlotInfo:=VCHIQ_SLOT_INFO_FROM_INDEX(State,Index); + + {Check Counts} + if SlotInfo.release_count <> SlotInfo.use_count then + begin + {Get Data} + Data:=VCHIQ_SLOT_DATA_FROM_INDEX(State,Index); + + {Get End} + DataEnd:=VCHIQ_SLOT_SIZE; + if Data = State.rx_data then + begin + {This buffer is still being read from (Stop at the current read position)} + DataEnd:=State.rx_pos and VCHIQ_SLOT_MASK; + end; + + {Get Position} + DataPos:=0; + + while DataPos < DataEnd do + begin + {Get Header} + Header:=PVCHIQ_HEADER_T(Data + DataPos); + + {Get Message} + MsgId:=Header.msgid; + Port:=VCHIQ_MSG_DSTPORT(MsgId); + + {Check Port and Message Id} + if (Port = Service.localport) and ((MsgId and VCHIQ_MSGID_CLAIMED) <> 0) then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Service Messages (Header=' + IntToHex(PtrUInt(Header),8) + ')'); + {$ENDIF} + + {Release Slot} + VCHIQReleaseSlot(State,SlotInfo,Header,nil); + end; + + {Update Position} + DataPos:=DataPos + VCHIQCalcStride(Header.size); + + {Check Position} + if DataPos > VCHIQ_SLOT_SIZE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Invalid slot position (Position=' + IntToStr(DataPos) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' MsgId=' + IntToHex(MsgId,8) + ' Size=' + IntToStr(Header.size) + ')'); + end; + end; + end; + end; +end; + +{==============================================================================} + +function VCHIQDoAbortBulks(Service:PVCHIQ_SERVICE_T):Boolean; +{From do_abort_bulks in vchiq_core.c} +var + Status:VCHIQ_STATUS_T; +begin + {} + Result:=False; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Do Abort Bulks (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Abort any outstanding bulk transfers} + if MutexLock(Service.bulk_mutex) <> ERROR_SUCCESS then Exit; + + {Abort Outstanding Bulks} + VCHIQAbortOutstandingBulks(Service,@Service.bulk_tx); + VCHIQAbortOutstandingBulks(Service,@Service.bulk_rx); + + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + {Notify Bulks} + Status:=VCHIQNotifyBulks(Service,@Service.bulk_tx,False); {Not RetryPoll} + if Status = VCHIQ_SUCCESS then + begin + Status:=VCHIQNotifyBulks(Service,@Service.bulk_rx,False); {Not RetryPoll} + end; + + {Return Result} + Result:=(Status = VCHIQ_SUCCESS); +end; + +{==============================================================================} + +function VCHIQCloseServiceComplete(Service:PVCHIQ_SERVICE_T;FailState:VCHIQ_SRVSTATE_T):VCHIQ_STATUS_T; +{From close_service_complete in vchiq_core.c} +var + Count:Integer; + IsServer:Boolean; + UseCount:Integer; + Status:VCHIQ_STATUS_T; + NewState:VCHIQ_SRVSTATE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Close Service Complete (Service=' + IntToHex(PtrUInt(Service),8) + ' FailState=' + VCHIQServiceStateToString(FailState) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Check Server} + IsServer:=(Service.public_fourcc <> VCHIQ_FOURCC_INVALID); + + {Check Service State} + case Service.srvstate of + VCHIQ_SRVSTATE_OPEN, + VCHIQ_SRVSTATE_CLOSESENT, + VCHIQ_SRVSTATE_CLOSERECVD:begin + {Check Server} + if IsServer then + begin + {Check Auto Close} + if Service.auto_close <> 0 then + begin + Service.client_id:=0; + Service.remoteport:=VCHIQ_PORT_FREE; + NewState:=VCHIQ_SRVSTATE_LISTENING; + end + else + begin + NewState:=VCHIQ_SRVSTATE_CLOSEWAIT; + end; + end + else + begin + NewState:=VCHIQ_SRVSTATE_CLOSED; + end; + + {Set Service State} + VCHIQSetServiceState(Service,NewState); + end; + VCHIQ_SRVSTATE_LISTENING:begin + {Nothing} + end; + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Service in unexpected state (Handle=' + IntToHex(Service.handle,8) + ' State=' + VCHIQServiceStateToString(Service.srvstate) + ')'); + Exit; + end; + end; + + {Make Service Callback} + Status:=VCHIQMakeServiceCallback(Service,VCHIQ_SERVICE_CLOSED,nil,nil); + if Status <> VCHIQ_RETRY then + begin + {Get Use Count} + UseCount:=Service.service_use_count; + + {Complete the close process} + for Count:=0 to UseCount - 1 do + begin + {Cater for cases where close is forced and the client may not close all it's handles} + VCHIQReleaseServiceInternal(Service); + end; + + Service.client_id:=0; + Service.remoteport:=VCHIQ_PORT_FREE; + + {Check Service State} + if Service.srvstate = VCHIQ_SRVSTATE_CLOSED then + begin + {Free Service Internal} + VCHIQFreeServiceInternal(Service); + end + else if Service.srvstate = VCHIQ_SRVSTATE_CLOSEWAIT then + begin + {Check Server} + if IsServer then Service.closing:=0; + + {Signal Remove Event} + SemaphoreSignal(Service.remove_event); + end; + end + else + begin + {Set Service State} + VCHIQSetServiceState(Service,FailState); + end; + + {Return Status} + Result:=Status; +end; + +{==============================================================================} + +function VCHIQCloseServiceInternal(Service:PVCHIQ_SERVICE_T;CloseReceived:Boolean):VCHIQ_STATUS_T; +{From vchiq_close_service_internal in vchiq_core.c} + +{Called by the slot handler} +var + IsServer:Boolean; + State:PVCHIQ_STATE_T; + Status:VCHIQ_STATUS_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Close Service Internal (Service=' + IntToHex(PtrUInt(Service),8) + ' CloseReceived=' + BoolToStr(CloseReceived) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Get State} + State:=Service.state; + + {Check Server} + IsServer:=(Service.public_fourcc <> VCHIQ_FOURCC_INVALID); + + {Setup Defaults} + Status:=VCHIQ_SUCCESS; + try + {Check Service State} + case Service.srvstate of + VCHIQ_SRVSTATE_CLOSED, + VCHIQ_SRVSTATE_HIDDEN, + VCHIQ_SRVSTATE_LISTENING, + VCHIQ_SRVSTATE_CLOSEWAIT:begin + {Check Close Received} + if CloseReceived then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Close Service Internal (ServiceState=' + VCHIQServiceStateToString(Service.srvstate) + ')'); + end + else if IsServer then + begin + {Check Service State} + if Service.srvstate = VCHIQ_SRVSTATE_LISTENING then + begin + Status:=VCHIQ_ERROR; + end + else + begin + {Reset ClientId and RemotePort} + Service.client_id:=0; + Service.remoteport:=VCHIQ_PORT_FREE; + + {Check Service State} + if Service.srvstate = VCHIQ_SRVSTATE_CLOSEWAIT then + begin + {Set Service State} + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_LISTENING); + end; + end; + + {Signal Remove Event} + SemaphoreSignal(Service.remove_event); + end + else + begin + {Free Service Internal} + VCHIQFreeServiceInternal(Service); + end; + end; + VCHIQ_SRVSTATE_OPENING:begin + {Check Close Received} + if CloseReceived then + begin + {The open was rejected (Tell the user)} + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_CLOSEWAIT); + + {Signal Remove Event} + SemaphoreSignal(Service.remove_event); + end + else + begin + {Shutdown mid-open (Let the other side know)} + Status:=VCHIQQueueMessageInternal(State,Service,VCHIQ_MAKE_MSG(VCHIQ_MSG_CLOSE,Service.localport,VCHIQ_MSG_DSTPORT(Service.remoteport)),nil,0,0,0); + end; + end; + VCHIQ_SRVSTATE_OPENSYNC,VCHIQ_SRVSTATE_OPEN:begin + {Check Service State} + if Service.srvstate = VCHIQ_SRVSTATE_OPENSYNC then + begin + {Lock Mutex} + MutexLock(State.sync_mutex); + end; + + {Check Master and Close Received} + if State.is_master or CloseReceived then + begin + {Do Abort Bulks} + if not VCHIQDoAbortBulks(Service) then + begin + Status:=VCHIQ_RETRY; + end; + end; + + {Releaese Service Messages} + VCHIQReleaseServiceMessages(Service); + + if Status = VCHIQ_SUCCESS then + begin + {Queue Message Internal} + Status:=VCHIQQueueMessageInternal(State,Service,VCHIQ_MAKE_MSG(VCHIQ_MSG_CLOSE,Service.localport,VCHIQ_MSG_DSTPORT(Service.remoteport)),nil,0,0,QMFLAGS_NO_MUTEX_UNLOCK); + end; + + if Status = VCHIQ_SUCCESS then + begin + {Check Close Received} + if not CloseReceived then + begin + {Change the state while the mutex is still held} + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_CLOSESENT); + + {Unlock Mutex} + MutexUnlock(State.slot_mutex); + + {Check Sync} + if Service.sync <> 0 then + begin + {Unlock Mutex} + MutexUnlock(State.sync_mutex); + end; + + Exit; + end; + end + else if Service.srvstate = VCHIQ_SRVSTATE_OPENSYNC then + begin + {Unlock Mutex} + MutexUnlock(State.sync_mutex); + Exit; + end + else + begin + Exit; + end; + + {Change the state while the mutex is still held} + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_CLOSERECVD); + + {Unlock Mutex} + MutexUnlock(State.slot_mutex); + + {Check Sync} + if Service.sync <> 0 then + begin + {Unlock Mutex} + MutexUnlock(State.sync_mutex); + end; + + {Close Service Complete} + Status:=VCHIQCloseServiceComplete(Service,VCHIQ_SRVSTATE_CLOSERECVD); + end; + VCHIQ_SRVSTATE_CLOSESENT:begin + {Check Close Received} + if not CloseReceived then + begin + {This happens when a process is killed mid-close} + Exit; + end; + + {Check Master} + if not State.is_master then + begin + {Do Abort Bulks} + if not VCHIQDoAbortBulks(Service) then + begin + Status:=VCHIQ_RETRY; + Exit; + end; + end; + + if Status = VCHIQ_SUCCESS then + begin + {Close Service Complete} + Status:=VCHIQCloseServiceComplete(Service,VCHIQ_SRVSTATE_CLOSERECVD); + end; + end; + VCHIQ_SRVSTATE_CLOSERECVD:begin + {Check Close Received and Server} + if not CloseReceived and IsServer then + begin + {Force into LISTENING mode} + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_LISTENING); + end; + + {Close Service Complete} + Status:=VCHIQCloseServiceComplete(Service,VCHIQ_SRVSTATE_CLOSERECVD); + end; + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Close Service Internal (CloseReceived=' + BoolToStr(CloseReceived) + ' ServiceState=' + VCHIQServiceStateToString(Service.srvstate) + ')'); + end; + end; + finally + {Return Status} + Result:=Status; + end; +end; + +{==============================================================================} + +procedure VCHIQMarkServiceClosingInternal(Service:PVCHIQ_SERVICE_T;SlotHandler:Boolean); +{From mark_service_closing_internal in vchiq_core.c} +var + State:PVCHIQ_STATE_T; + ServiceQuota:PVCHIQ_SERVICE_QUOTA_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Mark Service Closing Internal (Service=' + IntToHex(PtrUInt(Service),8) + ' SlotHandler=' + BoolToStr(SlotHandler) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Get State} + State:=Service.state; + + Service.closing:=1; + + {Synchronise with other threads} + MutexLock(State.recycle_mutex); + MutexUnlock(State.recycle_mutex); + + if not(SlotHandler) or (State.conn_state <> VCHIQ_CONNSTATE_PAUSE_SENT) then + begin + {If we're pausing then the slot_mutex is held until resume by the slot handler. Therefore don't try to + acquire this mutex if we're the slot handler and in the pause sent state. We don't need to in this case anyway.} + MutexLock(State.slot_mutex); + MutexUnlock(State.slot_mutex); + end; + + {Get Service Quota} + ServiceQuota:=@State.service_quotas[Service.localport]; + + {Unblock any sending thread} + SemaphoreSignal(ServiceQuota.quota_event); +end; + +{==============================================================================} + +procedure VCHIQTerminateServiceInternal(Service:PVCHIQ_SERVICE_T); +{From vchiq_terminate_service_internal in vchiq_core.c} + +{Called from the application process upon process death} +var + State:PVCHIQ_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Terminate Service Internal (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Get State} + State:=Service.state; + + {Mark Closing} + VCHIQMarkServiceClosing(Service); + + {Mark the service for removal by the slot handler} + VCHIQRequestPoll(State,Service,VCHIQ_POLL_REMOVE); +end; + +{==============================================================================} + +procedure VCHIQFreeServiceInternal(Service:PVCHIQ_SERVICE_T); +{From vchiq_free_service_internal in vchiq_core.c} + +{Called from the slot handler} +var + State:PVCHIQ_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Free Service Internal (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Get State} + State:=Service.state; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Free Service Internal (Id=' + IntToStr(State.id) + ' LocalPort=' + IntToStr(Service.localport) + ')'); + {$ENDIF} + + {Check Service State} + case Service.srvstate of + VCHIQ_SRVSTATE_OPENING, + VCHIQ_SRVSTATE_CLOSED, + VCHIQ_SRVSTATE_HIDDEN, + VCHIQ_SRVSTATE_LISTENING, + VCHIQ_SRVSTATE_CLOSEWAIT:begin + {Nothing} + end; + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Free Service Internal (Id=' + IntToStr(State.id) + ' LocalPort=' + IntToStr(Service.localport) + ' ServiceState=' + VCHIQServiceStateToString(Service.srvstate) + ')'); + Exit; + end; + end; + + {Set Service State} + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_FREE); + + {Signal Remove} + SemaphoreSignal(Service.remove_event); + + {Release the initial lock} + VCHIQUnlockService(Service); +end; + +{==============================================================================} + +function VCHIQGetClientID(Handle:VCHIQ_SERVICE_HANDLE_T):Integer; +{From vchiq_get_client_id in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Get Client ID (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service <> nil then + begin + Result:=Service.client_id; + + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +function VCHIQGetServiceUserData(Handle:VCHIQ_SERVICE_HANDLE_T):Pointer; +{From vchiq_get_service_userdata in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Get Service UserData (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + Service:=VCHIQHandleToService(Handle); + if Service <> nil then + begin + Result:=Service.base.userdata; + end; +end; + +{==============================================================================} + +function VCHIQGetServiceFourcc(Handle:VCHIQ_SERVICE_HANDLE_T):Integer; +{From vchiq_get_service_fourcc in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Get Service Fourcc (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + Service:=VCHIQHandleToService(Handle); + if Service <> nil then + begin + Result:=Service.base.fourcc; + end; +end; + +{==============================================================================} + +procedure VCHIQLockService(Service:PVCHIQ_SERVICE_T); +{From lock_service in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Lock Service (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Lock Spinlock} + SpinLock(VCHIQServiceLock); + + {Check Service} + if (Service <> nil) and (Service.ref_count > 0) then + begin + {Update Reference Count} + Inc(Service.ref_count); + end + else + begin + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Lock Service: ref_count = 0'); + Exit; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); +end; + +{==============================================================================} + +procedure VCHIQUnlockService(Service:PVCHIQ_SERVICE_T); +{From unlock_service in vchiq_core.c} +var + State:PVCHIQ_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Unlock Service (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Lock Spinlock} + if SpinLock(VCHIQServiceLock) <> ERROR_SUCCESS then Exit; + + {Check Service} + if (Service <> nil) and (Service.ref_count > 0) then + begin + {Update Reference Count} + Dec(Service.ref_count); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Unlock Service (ref_count=' + IntToStr(Service.ref_count) + ')'); + {$ENDIF} + + {Check Reference Count} + if Service.ref_count = 0 then + begin + {Check Service State} + if Service.srvstate <> VCHIQ_SRVSTATE_FREE then + begin + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Unlock Service: srvstate <> VCHIQ_SRVSTATE_FREE'); + Exit; + end; + + {Get State} + State:=Service.state; + + {Free Service Port} + State.services[Service.localport]:=nil; + end + else + begin + Service:=nil; + end; + end + else + begin + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Unlock Service: ref_count = 0'); + Exit; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + {Check Service} + if Service <> nil then + begin + {Check termination function} + if Assigned(Service.userdata_term) then + begin + Service.userdata_term(Service.base.userdata); + end; + + {Destroy Semaphores and Mutexes} + SemaphoreDestroy(Service.remove_event); + SemaphoreDestroy(Service.bulk_remove_event); + MutexDestroy(Service.bulk_mutex); + + {Invalidate Semaphores and Mutexes} + Service.remove_event:=INVALID_HANDLE_VALUE; + Service.bulk_remove_event:=INVALID_HANDLE_VALUE; + Service.bulk_mutex:=INVALID_HANDLE_VALUE; + + {Free Service} + FreeMem(Service); + end; +end; + +{==============================================================================} + +function VCHIQHandleToService(Handle:VCHIQ_SERVICE_HANDLE_T):PVCHIQ_SERVICE_T; +{From handle_to_service in vchiq_core.h} +var + State:PVCHIQ_STATE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Handle To Service (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Get State} + State:=VCHIQStates[(Handle div VCHIQ_MAX_SERVICES) and (VCHIQ_MAX_STATES - 1)]; + if State = nil then Exit; + + {Get Service} + Result:=State.services[Handle and (VCHIQ_MAX_SERVICES - 1)]; +end; + +{==============================================================================} + +function VCHIQFindServiceByHandle(Handle:VCHIQ_SERVICE_HANDLE_T):PVCHIQ_SERVICE_T; +{From find_service_by_handle in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Find Service By Handle (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Lock Spinlock} + if SpinLock(VCHIQServiceLock) <> ERROR_SUCCESS then Exit; + + {Get Service} + Service:=VCHIQHandleToService(Handle); + if (Service <> nil) and (Service.srvstate <> VCHIQ_SRVSTATE_FREE) and (Service.handle = Handle) then + begin + {Check Reference Count} + if Service.ref_count = 0 then + begin + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Find Service: ref_count = 0'); + Exit; + end; + + {Update Reference Count} + Inc(Service.ref_count); + end + else + begin + Service:=nil; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + {Check Service} + if Service = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Find Service: Invalid service handle ' + IntToHex(Handle,8)); + end; + + {Return Service} + Result:=Service; +end; + +{==============================================================================} + +function VCHIQFindServiceByPort(State:PVCHIQ_STATE_T;LocalPort:Integer):PVCHIQ_SERVICE_T; +{From find_service_by_port in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Find Service By Port (State=' + IntToHex(PtrUInt(State),8) + ' LocalPort=' + IntToStr(LocalPort) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Set Defaults} + Service:=nil; + + {Check Port} + if LocalPort <= VCHIQ_PORT_MAX then + begin + {Lock Spinlock} + if SpinLock(VCHIQServiceLock) <> ERROR_SUCCESS then Exit; + + {Get Service} + Service:=state.services[LocalPort]; + if (Service <> nil) and (Service.srvstate <> VCHIQ_SRVSTATE_FREE) then + begin + {Check Reference Count} + if Service.ref_count = 0 then + begin + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Find Service: ref_count = 0'); + Exit; + end; + + {Update Reference Count} + Inc(Service.ref_count); + end + else + begin + Service:=nil; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + end; + + {Check Service} + if Service = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Find Service: Invalid port ' + IntToStr(LocalPort)); + end; + + {Return Service} + Result:=Service; +end; + +{==============================================================================} + +function VCHIQFindServiceForInstance(Instance:PVCHIQInstance;Handle:VCHIQ_SERVICE_HANDLE_T):PVCHIQ_SERVICE_T; +{From find_service_for_instance in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Find Service For Instance (Instance=' + IntToHex(PtrUInt(Instance),8) + ' Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Lock Spinlock} + if SpinLock(VCHIQServiceLock) <> ERROR_SUCCESS then Exit; + + {Get Service} + Service:=VCHIQHandleToService(Handle); + if (Service <> nil) and (Service.srvstate <> VCHIQ_SRVSTATE_FREE) and (Service.handle = Handle) and (Service.instance = Instance) then + begin + {Check Reference Count} + if Service.ref_count = 0 then + begin + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Find Service: ref_count = 0'); + Exit; + end; + + {Update Reference Count} + Inc(Service.ref_count); + end + else + begin + Service:=nil; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + {Check Service} + if Service = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Find Service: Invalid service handle ' + IntToHex(Handle,8)); + end; + + {Return Service} + Result:=Service; +end; + +{==============================================================================} + +function VCHIQFindClosedServiceForInstance(Instance:PVCHIQInstance;Handle:VCHIQ_SERVICE_HANDLE_T):PVCHIQ_SERVICE_T; +{From find_closed_service_for_instance in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Find Closed Service For Instance (Instance=' + IntToHex(PtrUInt(Instance),8) + ' Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Lock Spinlock} + if SpinLock(VCHIQServiceLock) <> ERROR_SUCCESS then Exit; + + {Get Service} + Service:=VCHIQHandleToService(Handle); + if (Service <> nil) and ((Service.srvstate = VCHIQ_SRVSTATE_FREE) or (Service.srvstate = VCHIQ_SRVSTATE_CLOSED)) and (Service.handle = Handle) and (Service.instance = Instance) then + begin + {Check Reference Count} + if Service.ref_count = 0 then + begin + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Find Closed Service: ref_count = 0'); + Exit; + end; + + {Update Reference Count} + Inc(Service.ref_count); + end + else + begin + Service:=nil; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + {Check Service} + if Service = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Find Closed Service: Invalid service handle ' + IntToHex(Handle,8)); + end; + + {Return Service} + Result:=Service; +end; + +{==============================================================================} + +function VCHIQNextServiceByInstance(State:PVCHIQ_STATE_T;Instance:PVCHIQInstance;var Index:Integer):PVCHIQ_SERVICE_T; +{From next_service_by_instance in vchiq_core.c} +var + Service:PVCHIQ_SERVICE_T; + Current:PVCHIQ_SERVICE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Next Service By Instance (State=' + IntToHex(PtrUInt(State),8) + ' Instance=' + IntToHex(PtrUInt(Instance),8) + ' Index=' + IntToStr(Index) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Instance} + if Instance = nil then Exit; + + {Set Defaults} + Service:=nil; + + {Lock Spinlock} + if SpinLock(VCHIQServiceLock) <> ERROR_SUCCESS then Exit; + + while Index < State.unused_service do + begin + {Get Service} + Current:=State.services[Index]; + + {Update Index} + Inc(Index); + + {Check Service} + if (Current <> nil) and (Current.srvstate <> VCHIQ_SRVSTATE_FREE) and (Current.instance = Instance) then + begin + Service:=Current; + + {Check Reference Count} + if Service.ref_count = 0 then + begin + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Next Service: ref_count = 0'); + Exit; + end; + + {Update Reference Count} + Inc(Service.ref_count); + + Break; + end; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQServiceLock); + + {Return Service} + Result:=Service; +end; + +{==============================================================================} + +procedure VCHIQRequestPoll(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T;PollType:VCHIQ_POLL_T); +{From request_poll in vchiq_core.c} +var + Value:LongWord; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Request Poll (State=' + IntToHex(PtrUInt(State),8) + ' Service=' + IntToHex(PtrUInt(Service),8) + ' PollType=' + VCHIQPollTypeToString(PollType) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Service} + if Service <> nil then + begin + {Update Poll Flags} + repeat + Value:=Service.poll_flags; + until InterlockedCompareExchange(Service.poll_flags,Value or (1 shl Ord(PollType)),Value) = Value; + + {Update Poll Services} + repeat + Value:=State.poll_services[Service.localport shr 5]; + until InterlockedCompareExchange(State.poll_services[Service.localport shr 5],Value or (1 shl (Service.localport and $1f)),Value) = Value; + end; + + {Set Poll Needed} + State.poll_needed:=1; + + {Memory Barrier} + DataMemoryBarrier; + + {... and ensure the slot handler runs} + VCHIQRemoteEventSignalLocal(@State.local.trigger); +end; + +{==============================================================================} + +function VCHIQReserveSpace(State:PVCHIQ_STATE_T;Space:Integer;IsBlocking:Boolean):PVCHIQ_HEADER_T; +{From reserve_space in vchiq_core.c} + +{Called from VCHIQQueueMessageInternal, by the slot handler and application threads, with slot_mutex held} +var + TxPos:Integer; + SlotSpace:Integer; + SlotIndex:Integer; + Header:PVCHIQ_HEADER_T; + Local:PVCHIQ_SHARED_STATE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Reserve Space (State=' + IntToHex(PtrUInt(State),8) + ' Space=' + IntToStr(Space) + ' IsBlocking=' + BoolToStr(IsBlocking) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Local} + Local:=State.local; + + {Get TxPos and SlotSpace} + TxPos:=State.local_tx_pos; + SlotSpace:=VCHIQ_SLOT_SIZE - (TxPos and VCHIQ_SLOT_MASK); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Reserve Space (TxPos=' + IntToStr(TxPos) + ' SlotSpace=' + IntToStr(SlotSpace) + ')'); + {$ENDIF} + + if Space > SlotSpace then + begin + //To Do //Continuing //Log Warning on tx_data = nil + + {Fill the remaining space with padding} + Header:=PVCHIQ_HEADER_T(State.tx_data + (TxPos and VCHIQ_SLOT_MASK)); + Header.msgid:=VCHIQ_MSGID_PADDING; + Header.size:=SlotSpace - VCHIQ_HEADER_SIZE; {SizeOf(VCHIQ_HEADER_T)} {Do not include the data member} + + TxPos:=TxPos + SlotSpace; + end; + + {If necessary, get the next slot} + if (TxPos and VCHIQ_SLOT_MASK) = 0 then + begin + {If there is no free slot...} + if SemaphoreWaitEx(State.slot_available_event,0) <> ERROR_SUCCESS then + begin + {Update Statistics} + Inc(State.stats.slot_stalls); + + {But first, flush through the last slot} + State.local_tx_pos:=TxPos; + Local.tx_pos:=TxPos; + VCHIQRemoteEventSignal(@State.remote.trigger); + + if not(IsBlocking) or (SemaphoreWait(State.slot_available_event) <> ERROR_SUCCESS) then + begin + {No space available} + Exit; + end; + end; + + //To Do //Continuing //Log Error on TxPos = (State.slot_queue_available * VCHIQ_SLOT_SIZE) + + SlotIndex:=Local.slot_queue[VCHIQ_SLOT_QUEUE_INDEX_FROM_POS(TxPos) and VCHIQ_SLOT_QUEUE_MASK]; + State.tx_data:=VCHIQ_SLOT_DATA_FROM_INDEX(State,SlotIndex); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Reserve Space (SlotIndex=' + IntToStr(SlotIndex) + ' TxData=' + IntToHex(PtrUInt(State.tx_data),8) + ')'); + {$ENDIF} + end; + + {Update Local TxPos} + State.local_tx_pos:=TxPos + Space; + + {Return Header} + Result:=PVCHIQ_HEADER_T(State.tx_data + (TxPos and VCHIQ_SLOT_MASK)); +end; + +{==============================================================================} + +procedure VCHIQDumpState(Context:Pointer;State:PVCHIQ_STATE_T); +{From vchiq_dump_state in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Dump State (Context=' + IntToHex(PtrUInt(Context),8) + 'State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + //TO DO //Continuing + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQDumpState'); //To Do //Temp + +end; + +{==============================================================================} + +procedure VCHIQDumpSharedState(Context:Pointer;State:PVCHIQ_STATE_T;Shared:PVCHIQ_SHARED_STATE_T;Text:PChar); +{From vchiq_dump_shared_state in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Dump Shared State (Context=' + IntToHex(PtrUInt(Context),8) + 'Shared=' + IntToHex(PtrUInt(Shared),8) + ')'); + {$ENDIF} + + //TO DO //Continuing + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQDumpSharedState'); //To Do //Temp + +end; + +{==============================================================================} + +procedure VCHIQDumpServiceState(Context:Pointer;Service:PVCHIQ_SERVICE_T); +{From vchiq_dump_service_state in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Dump Service State (Context=' + IntToHex(PtrUInt(Context),8) + 'Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + //TO DO //Continuing + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQDumpServiceState'); //To Do //Temp + +end; + +{==============================================================================} + +procedure VCHIQSetConnState(State:PVCHIQ_STATE_T;NewState:VCHIQ_CONNSTATE_T); inline; +{From vchiq_set_conn_state in vchiq_core.c} +var + OldState:VCHIQ_CONNSTATE_T; +begin + {} + {Check State} + if State = nil then Exit; + + OldState:=State.conn_state; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Set Conn State (Id=' + IntToStr(State.id) + ' OldState=' + VCHIQConnStateToString(OldState) + ' NewState=' + VCHIQConnStateToString(NewState) + ')'); + {$ENDIF} + + State.conn_state:=NewState; + + VCHIQPlatformConnStateChanged(State,OldState,NewState); +end; + +{==============================================================================} + +procedure VCHIQSetServiceState(Service:PVCHIQ_SERVICE_T;NewState:VCHIQ_SRVSTATE_T); inline; +{From vchiq_set_service_state in vchiq_core.c} +begin + {} + {Check Service} + if Service = nil then Exit; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Set Service State (Id=' + IntToStr(Service.state.id) + ' LocalPort=' + IntToStr(Service.localport) + ' ServiceState=' + VCHIQServiceStateToString(Service.srvstate) + ' NewState=' + VCHIQServiceStateToString(NewState) + ')'); + {$ENDIF} + + Service.srvstate:=NewState; +end; + +{==============================================================================} + +function VCHIQQueueMessage(Handle:VCHIQ_SERVICE_HANDLE_T;Elements:PVCHIQ_ELEMENT_ARRAY_T;Count:LongWord):VCHIQ_STATUS_T; +{From vchiq_queue_message in vchiq_core.c} +var + Size:Integer; + Index:Integer; + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Message (Handle=' + IntToHex(Handle,8) + ' Elements=' + IntToHex(PtrUInt(Elements),8) + ' Count=' + IntToStr(Count) + ')'); + {$ENDIF} + + {Check Elements} + if Elements = nil then Exit; + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service = nil then Exit; + try + {Check Service} + if VCHIQCheckService(Service) <> VCHIQ_SUCCESS then Exit; + + {Get Size} + Size:=0; + for Index:=0 to Count - 1 do + begin + if Elements[Index].size <> 0 then + begin + if Elements[Index].data = nil then + begin + {Update Statistics} + Inc(Service.stats.error_count); + Exit; + end; + + {Update Size} + Size:=Size + Elements[Index].size; + end; + end; + + {Check Size} + if Size > VCHIQ_MAX_MSG_SIZE then + begin + {Update Statistics} + Inc(Service.stats.error_count); + Exit; + end; + + {Check Service State} + case Service.srvstate of + VCHIQ_SRVSTATE_OPEN:begin + {Queue Message Internal} + Result:=VCHIQQueueMessageInternal(Service.state,Service,VCHIQ_MAKE_MSG(VCHIQ_MSG_DATA,Service.localport,Service.remoteport),Elements,Count,Size,QMFLAGS_IS_BLOCKING); + end; + VCHIQ_SRVSTATE_OPENSYNC:begin + {Queue Message Internal Sync} + Result:=VCHIQQueueMessageInternalSync(Service.state,Service,VCHIQ_MAKE_MSG(VCHIQ_MSG_DATA,Service.localport,Service.remoteport),Elements,Count,Size,True); + end; + end; + finally + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +procedure VCHIQReleaseMessage(Handle:VCHIQ_SERVICE_HANDLE_T;Header:PVCHIQ_HEADER_T); +{From vchiq_release_message in vchiq_core.c} +var + MsgId:Integer; + SlotIndex:Integer; + State:PVCHIQ_STATE_T; + Slot:PVCHIQ_SLOT_INFO_T; + Service:PVCHIQ_SERVICE_T; + Remote:PVCHIQ_SHARED_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Message (Handle=' + IntToHex(Handle,8) + ' Header=' + IntToHex(PtrUInt(Header),8) + ')'); + {$ENDIF} + + {Check Header} + if Header = nil then Exit; + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service = nil then Exit; + try + {Get State} + State:=Service.state; + + {Get Remote} + Remote:=State.remote; + + {Get Slot Index} + SlotIndex:=VCHIQ_SLOT_INDEX_FROM_DATA(State,PByte(Header)); + if (SlotIndex >= Remote.slot_first) and (SlotIndex <= Remote.slot_last) then + begin + {Get Message Id} + MsgId:=Header.msgid; + if (MsgId and VCHIQ_MSGID_CLAIMED) <> 0 then + begin + {Get Slot} + Slot:=VCHIQ_SLOT_INFO_FROM_INDEX(State,SlotIndex); + + {Release Slot} + VCHIQReleaseSlot(State,Slot,Header,Service); + end; + end + else if SlotIndex = Remote.slot_sync then + begin + {Release Message Sync} + VCHIQReleaseMessageSync(State,Header); + end; + finally + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +function VCHIQQueueMessageInternal(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T;MsgId:Integer;Elements:PVCHIQ_ELEMENT_ARRAY_T;Count,Size,Flags:Integer):VCHIQ_STATUS_T; +{From queue_message in vchiq_core.c} + +{Called by the slot handler and application threads} +var + Index:Integer; + Position:Integer; + + TxEndIndex:Integer; + SlotUseCount:Integer; + + Stride:LongWord; + MsgType:LongWord; + Header:PVCHIQ_HEADER_T; + Local:PVCHIQ_SHARED_STATE_T; + ServiceQuota:PVCHIQ_SERVICE_QUOTA_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Message Internal (State=' + IntToHex(PtrUInt(State),8) + ' Service=' + IntToHex(PtrUInt(Service),8) + ' MsgId=' + IntToStr(MsgId) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Set Defaults} + ServiceQuota:=nil; + + {Get Message Type} + MsgType:=VCHIQ_MSG_TYPE(MsgId); + + {Get Local} + Local:=State.Local; + + {Calculate Stride} + Stride:=VCHIQCalcStride(Size); + if Stride > VCHIQ_SLOT_SIZE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue Message: Stride > VCHIQ_SLOT_SIZE'); + end; + + {Lock Mutex} + if ((Flags and QMFLAGS_NO_MUTEX_LOCK) = 0) and (MutexLock(State.slot_mutex) <> ERROR_SUCCESS) then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Check Message Type} + if MsgType = VCHIQ_MSG_DATA then + begin + {Check Service} + if Service = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue Message: Service = nil'); + + {Unlock Mutex} + if (Flags and QMFLAGS_NO_MUTEX_LOCK) = 0 then + begin + MutexUnlock(State.slot_mutex); + end; + + Exit; + end; + + {Check Flags} + if (Flags and (QMFLAGS_NO_MUTEX_LOCK or QMFLAGS_NO_MUTEX_UNLOCK)) <> 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue Message: (Flags and (QMFLAGS_NO_MUTEX_LOCK or QMFLAGS_NO_MUTEX_UNLOCK)) <> 0'); + + {Unlock Mutex} + if (Flags and QMFLAGS_NO_MUTEX_LOCK) = 0 then + begin + MutexUnlock(State.slot_mutex); + end; + + Exit; + end; + + {Check Closing} + if Service.closing <> 0 then + begin + {The service has been closed} + MutexUnlock(State.slot_mutex); + Exit; + end; + + {Get Service Quota} + ServiceQuota:=@State.service_quotas[Service.localport]; + + {Lock Spinlock} + SpinLock(VCHIQQuotaLock); + + {Ensure this service doesn't use more than its quota of messages or slots} + TxEndIndex:=VCHIQ_SLOT_QUEUE_INDEX_FROM_POS(State.local_tx_pos + Stride - 1); + + {Ensure data messages don't use more than their quota of slots} + while (TxEndIndex <> State.previous_data_index) and (State.data_use_count = State.data_quota) do + begin + {Update Statistics} + Inc(State.stats.data_stalls); + + {Unlock Spinlock} + SpinUnlock(VCHIQQuotaLock); + + {Unlock Mutex} + MutexUnlock(State.slot_mutex); + + {Wait for Data Quota Event} + if SemaphoreWait(State.data_quota_event) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Lock Mutex} + MutexLock(State.slot_mutex); + + {Lock Spinlock} + SpinLock(VCHIQQuotaLock); + + TxEndIndex:=VCHIQ_SLOT_QUEUE_INDEX_FROM_POS(State.local_tx_pos + Stride - 1); + if (TxEndIndex = State.previous_data_index) or (State.data_use_count < State.data_quota) then + begin + {Pass the signal on to other waiters} + SemaphoreSignal(State.data_quota_event); + Break; + end; + end; + + while (ServiceQuota.message_use_count = ServiceQuota.message_quota) or ((TxEndIndex <> ServiceQuota.previous_tx_index) and (ServiceQuota.slot_use_count = ServiceQuota.slot_quota)) do + begin + {Unlock Spinlock} + SpinUnlock(VCHIQQuotaLock); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then + begin + DeviceLogDebug(nil,'VCHIQ: Queue Message Internal: Quota Stall'); + DeviceLogDebug(nil,'VCHIQ: Id=' + IntToStr(State.id)); + DeviceLogDebug(nil,'VCHIQ: LocalPort=' + IntToStr(Service.localport)); + DeviceLogDebug(nil,'VCHIQ: MessageType=' + VCHIQMessageTypeToString(MsgType)); + DeviceLogDebug(nil,'VCHIQ: Size=' + IntToStr(Size)); + DeviceLogDebug(nil,'VCHIQ: MessageUseCount=' + IntToStr(ServiceQuota.message_use_count)); + DeviceLogDebug(nil,'VCHIQ: SlotUseCount=' + IntToStr(ServiceQuota.slot_use_count)); + end; + {$ENDIF} + + {Update Statistics} + Inc(Service.stats.quota_stalls); + + {Unlock Mutex} + MutexUnlock(State.slot_mutex); + + {Wait for Quota Event} + if SemaphoreWait(ServiceQuota.quota_event) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Check Closing} + if Service.closing <> 0 then + begin + Exit; + end; + + {Lock Mutex} + if MutexLock(State.slot_mutex) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Check Service State} + if Service.srvstate <> VCHIQ_SRVSTATE_OPEN then + begin + {The service has been closed} + MutexUnlock(State.slot_mutex); + Exit; + end; + + {Lock Spinlock} + SpinLock(VCHIQQuotaLock); + + TxEndIndex:=VCHIQ_SLOT_QUEUE_INDEX_FROM_POS(State.local_tx_pos + Stride - 1); + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQQuotaLock); + end; + + {Reserve Space} + Header:=VCHIQReserveSpace(State,Stride,(Flags and QMFLAGS_IS_BLOCKING) <> 0); + if Header = nil then + begin + {Update Statistics} + if Service <> nil then Inc(Service.stats.slot_stalls); + + {In the event of a failure, return the mutex to the state it was in} + if (Flags and QMFLAGS_NO_MUTEX_LOCK) = 0 then + begin + MutexUnlock(State.slot_mutex); + end; + + Result:=VCHIQ_RETRY; + Exit; + end; + + {Check Message Type} + if MsgType = VCHIQ_MSG_DATA then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Message Internal (Id=' + IntToStr(State.id) + ' MessageType=' + VCHIQMessageTypeToString(MsgType) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Size) + ' SourcePort=' + IntToStr(VCHIQ_MSG_SRCPORT(MsgId)) + ' DestPort=' + IntToStr(VCHIQ_MSG_DSTPORT(MsgId)) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue Message: Service = nil'); + ThreadHalt(0); + end; + + {Check Flags} + if (Flags and (QMFLAGS_NO_MUTEX_LOCK or QMFLAGS_NO_MUTEX_UNLOCK)) <> 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue Message: (Flags and (QMFLAGS_NO_MUTEX_LOCK or QMFLAGS_NO_MUTEX_UNLOCK)) <> 0'); + ThreadHalt(0); + end; + + {Copy Elements} + Index:=0; + Position:=0; + while Index < Count do + begin + {Check Size} + if Elements[Index].size <> 0 then + begin + {Copy Element} + System.Move(Elements[Index].data^,Pointer(@Header.data + Position)^,Elements[Index].size); + end; + + {Update Position} + Inc(Position,Elements[Index].size); + + {Update Index} + Inc(Index); + end; + + //To Do //Continuing //Log Trace + + {Lock Spinlock} + SpinLock(VCHIQQuotaLock); + + {Update Message Use Count} + Inc(ServiceQuota.message_use_count); + + {Get Tx End Index} + TxEndIndex:=VCHIQ_SLOT_QUEUE_INDEX_FROM_POS(State.local_tx_pos - 1); + + {If this transmission can't fit in the last slot used by any service, the data_use_count must be increased} + if TxEndIndex <> State.previous_data_index then + begin + State.previous_data_index:=TxEndIndex; + Inc(State.data_use_count); + end; + + {If this isn't the same slot last used by this service, the service's slot_use_count must be increased} + if TxEndIndex <> ServiceQuota.previous_tx_index then + begin + ServiceQuota.previous_tx_index:=TxEndIndex; + Inc(ServiceQuota.slot_use_count); + SlotUseCount:=ServiceQuota.slot_use_count; + end + else + begin + SlotUseCount:=0; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQQuotaLock); + + {Check Slot Use Count} + if SlotUseCount <> 0 then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Message Internal (Id=' + IntToStr(State.id) + ' LocalPort=' + IntToStr(Service.localport) + ' MessageType=' + VCHIQMessageTypeToString(MsgType) + ' Size=' + IntToStr(Size) + ' SlotUseCount=' + IntToStr(SlotUseCount) + ')'); + {$ENDIF} + end; + + {Update Statistics} + Inc(Service.stats.ctrl_tx_count); + Inc(Service.stats.ctrl_tx_bytes,Size); + end + else + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Message Internal (Id=' + IntToStr(State.id) + ' MessageType=' + VCHIQMessageTypeToString(MsgType) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Size) + ' SourcePort=' + IntToStr(VCHIQ_MSG_SRCPORT(MsgId)) + ' DestPort=' + IntToStr(VCHIQ_MSG_DSTPORT(MsgId)) + ')'); + {$ENDIF} + + {Check Size} + if Size <> 0 then + begin + if (Count <> 1) or (Size <> Elements[0].size) then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue Message: (Count <> 1) or (Size <> Elements[0].size)'); + end; + + {Copy Data} + System.Move(Elements[0].data^,Header.data[0],Elements[0].size); + end; + + {Update Statistics} + Inc(State.stats.ctrl_tx_count); + end; + + {Update Header} + Header.msgid:=MsgId; + Header.size:=Size; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then + begin + DeviceLogDebug(nil,'VCHIQ: Queue Message Internal: Sent Message'); + DeviceLogDebug(nil,'VCHIQ: MessageType=' + VCHIQMessageTypeToString(MsgType)); + DeviceLogDebug(nil,'VCHIQ: MessageNo=' + IntToStr(MsgType)); + if Service <> nil then DeviceLogDebug(nil,'VCHIQ: Fourcc=' + VCHIQFourccToString(Service.base.fourcc)); + DeviceLogDebug(nil,'VCHIQ: SourcePort=' + IntToStr(VCHIQ_MSG_SRCPORT(MsgId))); + DeviceLogDebug(nil,'VCHIQ: DestPort=' + IntToStr(VCHIQ_MSG_DSTPORT(MsgId))); + DeviceLogDebug(nil,'VCHIQ: Size=' + IntToStr(Size)); + end; + {$ENDIF} + + {Make sure the new header is visible to the peer} + DataMemoryBarrier; + + {Make the new tx_pos visible to the peer} + Local.tx_pos:=State.local_tx_pos; + + {Memory Barrier} + DataMemoryBarrier; + + {Check Close} + if (Service <> nil) and (MsgType = VCHIQ_MSG_CLOSE) then + begin + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_CLOSESENT); + end; + + {Unlock Mutex} + if (Flags and QMFLAGS_NO_MUTEX_UNLOCK) = 0 then + begin + MutexUnlock(State.slot_mutex); + end; + + {Signal Remote Event} + VCHIQRemoteEventSignal(@State.remote.trigger); + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQQueueMessageInternalSync(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T;MsgId:Integer;Elements:PVCHIQ_ELEMENT_ARRAY_T;Count,Size:Integer;IsBlocking:Boolean):VCHIQ_STATUS_T; +{From queue_message_sync in vchiq_core.c} + +{Called by the slot handler and application threads} +var + Index:Integer; + Position:Integer; + OldMsgId:Integer; + {ServiceFourcc:Integer;} {Not Used} + Header:PVCHIQ_HEADER_T; + Local:PVCHIQ_SHARED_STATE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Message Internal Sync (State=' + IntToHex(PtrUInt(State),8) + ' Service=' + IntToHex(PtrUInt(Service),8) + ' MsgId=' + IntToStr(MsgId) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Service} + if Service = nil then Exit; + + {Get Local} + Local:=State.local; + + {Check Message Type and Lock Mutex} + if (VCHIQ_MSG_TYPE(MsgId) <> VCHIQ_MSG_RESUME) and (MutexLock(State.sync_mutex) <> ERROR_SUCCESS) then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Wait Remote Event} + VCHIQRemoteEventWait(@Local.sync_release); + + {Memory Barrier} + DataMemoryBarrier; + + {Get Header} + Header:=PVCHIQ_HEADER_T(VCHIQ_SLOT_DATA_FROM_INDEX(State,Local.slot_sync)); + + {Check Header} + OldMsgId:=Header.msgid; + if OldMsgId <> VCHIQ_MSGID_PADDING then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue Message Sync: Message Id not PADDING (Id=' + IntToStr(State.id) + ' MsgId=' + IntToHex(PtrUInt(OldMsgId),8) + ')'); + end; + + {Check Service} + if Service <> nil then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Message Internal Sync (Id=' + IntToStr(State.id) + ' MessageType=' + VCHIQMessageTypeToString(VCHIQ_MSG_TYPE(MsgId)) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Size) + ' SourcePort=' + IntToStr(VCHIQ_MSG_SRCPORT(MsgId)) + ' DestPort=' + IntToStr(VCHIQ_MSG_DSTPORT(MsgId)) + ')'); + {$ENDIF} + + {Copy Elements} + Index:=0; + Position:=0; + while Index < Count do + begin + {Check Size} + if Elements[Index].size <> 0 then + begin + {Copy Element} + System.Move(Elements[Index].data^,Pointer(@Header.data + Position)^,Elements[Index].size); + end; + + {Update Position} + Inc(Position,Elements[Index].size); + + {Update Index} + Inc(Index); + end; + + //To Do //Continuing //Log Trace + + {Update Statistics} + Inc(Service.stats.ctrl_tx_count); + Inc(Service.stats.ctrl_tx_bytes,Size); + end + else + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Message Internal Sync (Id=' + IntToStr(State.id) + ' MessageType=' + VCHIQMessageTypeToString(VCHIQ_MSG_TYPE(MsgId)) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Size) + ' SourcePort=' + IntToStr(VCHIQ_MSG_SRCPORT(MsgId)) + ' DestPort=' + IntToStr(VCHIQ_MSG_DSTPORT(MsgId)) + ')'); + {$ENDIF} + + {Check Size} + if Size <> 0 then + begin + if (Count <> 1) or (Size <> Elements[0].size) then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue Message Sync: (Count <> 1) or (Size <> Elements[0].size)'); + end; + + {Copy Data} + System.Move(Elements[0].data^,Header.data[0],Elements[0].size); + end; + + {Update Statistics} + Inc(State.stats.ctrl_tx_count); + end; + + {Update Header} + Header.size:=Size; + Header.msgid:=MsgId; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then + begin + DeviceLogDebug(nil,'VCHIQ: Queue Message Internal Sync: Sent Sync Message'); + DeviceLogDebug(nil,'VCHIQ: MessageType=' + VCHIQMessageTypeToString(VCHIQ_MSG_TYPE(MsgId))); + DeviceLogDebug(nil,'VCHIQ: MessageNo=' + IntToStr(VCHIQ_MSG_TYPE(MsgId))); + if Service <> nil then DeviceLogDebug(nil,'VCHIQ: Fourcc=' + VCHIQFourccToString(Service.base.fourcc)); + DeviceLogDebug(nil,'VCHIQ: SourcePort=' + IntToStr(VCHIQ_MSG_SRCPORT(MsgId))); + DeviceLogDebug(nil,'VCHIQ: DestPort=' + IntToStr(VCHIQ_MSG_DSTPORT(MsgId))); + DeviceLogDebug(nil,'VCHIQ: Size=' + IntToStr(Size)); + end; + {$ENDIF} + + {Make sure the new header is visible to the peer} + DataMemoryBarrier; + + {Signal Remote Event} + VCHIQRemoteEventSignal(@State.remote.sync_trigger); + + {Check Message Type} + if VCHIQ_MSG_TYPE(MsgId) <> VCHIQ_MSG_PAUSE then + begin + {Unlock Mutex} + MutexUnlock(State.sync_mutex); + end; + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +procedure VCHIQReleaseMessageSync(State:PVCHIQ_STATE_T;Header:PVCHIQ_HEADER_T); +{From release_message_sync in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Message Syn (State=' + IntToHex(PtrUInt(State),8) + ' Header=' + IntToHex(PtrUInt(Header),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Header} + if Header = nil then Exit; + + {Update Message Id} + Header.msgid:=VCHIQ_MSGID_PADDING; + + {Memory Barrier} + DataMemoryBarrier; + + {Signal Remote Event} + VCHIQRemoteEventSignal(@State.remote.sync_release); +end; + +{==============================================================================} + +procedure VCHIQClaimSlot(Slot:PVCHIQ_SLOT_INFO_T); inline; +{From claim_slot in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Claim Slot (Slot=' + IntToHex(PtrUInt(Slot),8) + ')'); + {$ENDIF} + + {Check Slot} + if Slot = nil then Exit; + + {Update Use Count} + Inc(Slot.use_count); +end; + +{==============================================================================} + +procedure VCHIQReleaseSlot(State:PVCHIQ_STATE_T;Slot:PVCHIQ_SLOT_INFO_T;Header:PVCHIQ_HEADER_T;Service:PVCHIQ_SERVICE_T); +{From release_slot in vchiq_core.c} +var + MsgId:Integer; + ReleaseCount:Integer; + SlotQueueRecycle:Integer; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Slot (State=' + IntToHex(PtrUInt(State),8) + ' Slot=' + IntToHex(PtrUInt(Slot),8) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Slot} + if Slot = nil then Exit; + + {Lock Mutex} + MutexLock(State.recycle_mutex); + + {Check Header} + if Header <> nil then + begin + MsgId:=Header.msgid; + if ((MsgId and VCHIQ_MSGID_CLAIMED) = 0) or ((Service <> nil) and (Service.closing <> 0)) then + begin + {Unlock Mutex} + MutexUnlock(State.recycle_mutex); + + Exit; + end; + + {Rewrite the message header to prevent a double release} + Header.msgid:=MsgId and not(VCHIQ_MSGID_CLAIMED); + end; + + {Update Release Count} + ReleaseCount:=Slot.release_count; + Inc(ReleaseCount); + Slot.release_count:=ReleaseCount; + + if ReleaseCount = Slot.use_count then + begin + {Add to the freed queue} + {A read barrier is necessary here to prevent speculative fetches of Remote.slot_queue_recycle from overtaking the mutex} + DataMemoryBarrier; + + {Update Slot Queue Recycle} + SlotQueueRecycle:=State.remote.slot_queue_recycle; + State.remote.slot_queue[SlotQueueRecycle and VCHIQ_SLOT_QUEUE_MASK]:=VCHIQ_SLOT_INDEX_FROM_INFO(State,Slot); + State.remote.slot_queue_recycle:=SlotQueueRecycle + 1; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then + begin + DeviceLogDebug(nil,'VCHIQ: Release Slot'); + DeviceLogDebug(nil,'VCHIQ: Id=' + IntToStr(State.id)); + DeviceLogDebug(nil,'VCHIQ: SlotIndex=' + IntToStr(VCHIQ_SLOT_INDEX_FROM_INFO(State,Slot))); + DeviceLogDebug(nil,'VCHIQ: SlotQueueRecycle=' + IntToStr(State.remote.slot_queue_recycle)); + end; + {$ENDIF} + + {A write barrier is necessary, but VCHIQRemoteEventSignal contains one} + VCHIQRemoteEventSignal(@State.remote.recycle); + end; + + {Unlock Mutex} + MutexUnlock(State.recycle_mutex); +end; + +{==============================================================================} + +procedure VCHIQRemoteEventCreate(Event:PREMOTE_EVENT_T); +{From remote_event_create in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Remote Event Create (Event=' + IntToHex(PtrUInt(Event),8) + ')'); + {$ENDIF} + + {Check Event} + if Event = nil then Exit; + + {Set Armed} + Event.armed:=0; + + {Don't clear the 'fired' flag because it may already have been set by the other side} + Event.event:=SemaphoreCreateEx(0,SEMAPHORE_DEFAULT_MAXIMUM,SEMAPHORE_FLAG_IRQ); {Used within interrupt handler} +end; + +{==============================================================================} + +procedure VCHIQRemoteEventDestroy(Event:PREMOTE_EVENT_T); +{From remote_event_destroy in vchiq_core.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Remote Event Destroy (Event=' + IntToHex(PtrUInt(Event),8) + ')'); + {$ENDIF} + + {Check Event} + if Event = nil then Exit; + + {Destroy Semaphore} + SemaphoreDestroy(Event.event); + + {Invalidate Semaphore} + Event.event:=INVALID_HANDLE_VALUE; +end; + +{==============================================================================} + +function VCHIQRemoteEventWait(Event:PREMOTE_EVENT_T):Boolean; +{From remote_event_wait in vchiq_core.c} +begin + {} + Result:=False; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Remote Event Wait (Event=' + IntToHex(PtrUInt(Event),8) + ')'); + {$ENDIF} + + {Check Event} + if Event = nil then Exit; + + {Check Fired} + if Event.fired = 0 then + begin + {Set Armed} + Event.armed:=1; + + {Synchronization Barrier} + DataSynchronizationBarrier; + + {Check Fired} + if Event.fired = 0 then + begin + {Wait Event} + if SemaphoreWait(Event.event) <> ERROR_SUCCESS then + begin + {Reset Armed} + Event.armed:=0; + Exit; + end; + end; + + {Reset Armed} + Event.armed:=0; + + {Memory Barrier} + DataMemoryBarrier; + end; + + {Reset Fired} + Event.fired:=0; + + Result:=True; +end; + +{==============================================================================} + +procedure VCHIQRemoteEventSignalLocal(Event:PREMOTE_EVENT_T); +{From remote_event_signal_local in vchiq_core.c} + +{Called by the doorbell interrupt handler} +begin + {} + {$IF DEFINED(VC4VCHIQ_DEBUG) and DEFINED(INTERRUPT_DEBUG)} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Remote Event Signal Local (Event=' + IntToHex(PtrUInt(Event),8) + ')'); + {$ENDIF} + + {Check Event} + if Event = nil then Exit; + + {Reset Armed} + Event.armed:=0; + + {Signal Event} + SemaphoreSignal(Event.event); +end; + +{==============================================================================} + +procedure VCHIQRemoteEventPoll(Event:PREMOTE_EVENT_T); +{From remote_event_poll in vchiq_core.c} + +{Called by the doorbell interrupt handler} +begin + {} + {$IF DEFINED(VC4VCHIQ_DEBUG) and DEFINED(INTERRUPT_DEBUG)} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Remote Event Poll (Event=' + IntToHex(PtrUInt(Event),8) + ')'); + {$ENDIF} + + {Check Event} + if Event = nil then Exit; + + {Check Fired and Armed} + if (Event.fired <> 0) and (Event.armed <> 0) then + begin + {Signal Event Local} + VCHIQRemoteEventSignalLocal(Event); + end; +end; + +{==============================================================================} + +procedure VCHIQRemoteEventPollAll(State:PVCHIQ_STATE_T); +{From remote_event_pollall in vchiq_core.c} + +{Called by the doorbell interrupt handler} +begin + {} + {$IF DEFINED(VC4VCHIQ_DEBUG) and DEFINED(INTERRUPT_DEBUG)} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Remote Event Poll All (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Poll Events} + VCHIQRemoteEventPoll(@State.local.sync_trigger); + VCHIQRemoteEventPoll(@State.local.sync_release); + VCHIQRemoteEventPoll(@State.local.trigger); + VCHIQRemoteEventPoll(@State.local.recycle); +end; + +{==============================================================================} + +function VCHIQSyncExecute(VCHIQ:PVCHIQDevice):PtrInt; +{From sync_func in vchiq_core.c} + +{Called by the sync thread} +var + Size:Integer; + MsgId:Integer; + MsgType:Integer; + LocalPort:LongWord; + RemotePort:LongWord; + Header:PVCHIQ_HEADER_T; + Service:PVCHIQ_SERVICE_T; + {ServiceFourcc:Integer;} {Not Used} + Payload:PVCHIQ_OPENACK_PAYLOAD; + + State:PVCHIQ_STATE_T; + Local:PVCHIQ_SHARED_STATE_T; +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Sync Execute (ThreadID=' + IntToHex(ThreadGetCurrent,8) + ')'); + {$ENDIF} + + {Check VCHIQ} + if VCHIQ = nil then Exit; + + {Get State} + State:=VCHIQ.State; + + {Get Local} + Local:=State.local; + + {Get Header} + Header:=PVCHIQ_HEADER_T(VCHIQ_SLOT_DATA_FROM_INDEX(State,State.remote.slot_sync)); + + {Update Priority} + Sleep(1); + + while True do + begin + {Wait for Sync Trigger Event} + VCHIQRemoteEventWait(@Local.sync_trigger); + + {Memory Barrier} + DataMemoryBarrier; + + {Get Message} + MsgId:=Header.msgid; + Size:=Header.size; + MsgType:=VCHIQ_MSG_TYPE(MsgId); + LocalPort:=VCHIQ_MSG_DSTPORT(MsgId); + RemotePort:=VCHIQ_MSG_SRCPORT(MsgId); + + {Get Service} + Service:=VCHIQFindServiceByPort(State,LocalPort); + if Service = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Invalid/closed service (Id=' + IntToStr(State.id) + ' MessageType=' + VCHIQMessageTypeToString(MsgType) + ' LocalPort=' + IntToStr(LocalPort) + ' RemotePort=' + IntToStr(RemotePort) + ')'); + + {Release Message Sync} + VCHIQReleaseMessageSync(State,Header); + end + else + begin + //To Do //Continuing //Log Trace + + {Check Message Type} + case MsgType of + VCHIQ_MSG_OPENACK:begin + {Check Size} + if Size >= SizeOf(VCHIQ_OPENACK_PAYLOAD) then + begin + {Get Payload} + Payload:=PVCHIQ_OPENACK_PAYLOAD(@Header.data); + + {Get Peer Version} + Service.peer_version:=Payload.version; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: VCHIQ_MSG_OPENACK (Id=' + IntToStr(State.id) + ' Size=' + IntToStr(Size) + ' LocalPort=' + IntToStr(LocalPort) + ' RemotePort=' + IntToStr(RemotePort) + ' PeerVersion=' + IntToStr(Service.peer_version) + ')'); + {$ENDIF} + + {Check Service State} + if Service.srvstate = VCHIQ_SRVSTATE_OPENING then + begin + {Update Service} + Service.remoteport:=RemotePort; + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_OPENSYNC); + Service.sync:=1; + + {Signal Remove Event} + SemaphoreSignal(Service.remove_event); + end; + + {Release Message Sync} + VCHIQReleaseMessageSync(State,Header); + end; + VCHIQ_MSG_DATA:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: VCHIQ_MSG_DATA (Id=' + IntToStr(State.id) + ' Size=' + IntToStr(Size) + ' LocalPort=' + IntToStr(LocalPort) + ' RemotePort=' + IntToStr(RemotePort) + ')'); + {$ENDIF} + + {Check Remote Port and Service State} + if (Service.remoteport = RemotePort) and (Service.srvstate = VCHIQ_SRVSTATE_OPENSYNC) then + begin + {Make Service Callback} + if VCHIQMakeServiceCallback(Service,VCHIQ_MESSAGE_AVAILABLE,Header,nil) = VCHIQ_RETRY then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Synchronous callback to service returns VCHIQ_RETRY (LocalPort=' + IntToStr(LocalPort) + ')'); + end; + end; + end; + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Unexpected message id (Id=' + IntToStr(State.id) + ' MessageId=' + IntToStr(MsgId) + ' Size=' + IntToStr(Size) + ')'); + + {Release Message Sync} + VCHIQReleaseMessageSync(State,Header); + end; + end; + + {Unlock Service} + VCHIQUnlockService(Service); + end; + end; +end; + +{==============================================================================} + +procedure VCHIQProcessFreeQueue(State:PVCHIQ_STATE_T); +{From process_free_queue in vchiq_core.c} + +{Called by the recycle thread} +var + Local:PVCHIQ_SHARED_STATE_T; + SlotQueueAvailable:Integer; + + Data:PByte; + MsgId:Integer; + Port:Integer; + Count:Integer; + Position:LongWord; + SlotIndex:Integer; + DataFound:Boolean; + Header:PVCHIQ_HEADER_T; + ServiceQuota:PVCHIQ_SERVICE_QUOTA_T; + ServiceFound:array[0..VCHIQ_MAX_SERVICES_BITSET_SIZE - 1] of BITSET_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Process Free Queue (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Local} + Local:=State.local; + if Local = nil then Exit; + + {Find slots which have been freed by the other side, and return them to the available queue} + SlotQueueAvailable:=State.slot_queue_available; + + {Use a memory barrier to ensure that any state that may have been modified by another thread is not masked by stale prefetched values} + DataMemoryBarrier; + + while SlotQueueAvailable <> Local.slot_queue_recycle do + begin + {Get Slot Index} + SlotIndex:=Local.slot_queue[SlotQueueAvailable and VCHIQ_SLOT_QUEUE_MASK]; + Inc(SlotQueueAvailable); + + {Get Data} + Data:=VCHIQ_SLOT_DATA_FROM_INDEX(State,SlotIndex); + DataFound:=False; + + {Memory Barrier} + DataMemoryBarrier; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Process Free Queue (Id=' + IntToStr(State.id) + ' SlotIndex=' + IntToStr(SlotIndex) + ' Data=' + IntToHex(PtrUInt(Data),8) + ' SlotQueueRecycle=' + IntToStr(Local.slot_queue_recycle) + ' SlotQueueAvailable=' + IntToStr(SlotQueueAvailable) + ')'); + {$ENDIF} + + {Initialise the bitmask for services which have used this slot} + VCHIQ_BITSET_ZERO(@ServiceFound,VCHIQ_MAX_SERVICES_BITSET_SIZE); + + Position:=0; + while Position < VCHIQ_SLOT_SIZE do + begin + {Get Header} + Header:=PVCHIQ_HEADER_T(Data + Position); + + {Get Message Id} + MsgId:=Header.msgid; + + {Check Message Type} + if VCHIQ_MSG_TYPE(MsgId) = VCHIQ_MSG_DATA then + begin + {Get Port} + Port:=VCHIQ_MSG_SRCPORT(MsgId); + + {Get Service Quota} + ServiceQuota:=@State.service_quotas[Port]; + + {Lock Spinlock} + SpinLock(VCHIQQuotaLock); + + {Get Message Use Count} + Count:=ServiceQuota.message_use_count; + if Count > 0 then + begin + ServiceQuota.message_use_count:=Count - 1; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQQuotaLock); + + {Check Message Quota} + if Count = ServiceQuota.message_quota then + begin + {Signal the service that it has dropped below its quota} + SemaphoreSignal(ServiceQuota.quota_event); + end + else if Count = 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Process Free Queue: Invalid message use count (Port=' + IntToStr(Port) + ' MessageUseCount=' + IntToStr(ServiceQuota.message_quota) + ' MsgId=' + IntToHex(MsgId,8) + ' Size=' + IntToStr(Header.size) + ')'); + end; + + if not VCHIQ_BITSET_IS_SET(@ServiceFound,Port) then + begin + {Set the found bit for this service} + VCHIQ_BITSET_SET(@ServiceFound,Port); + + {Lock Spinlock} + SpinLock(VCHIQQuotaLock); + + {Get Slot Use Count} + Count:=ServiceQuota.slot_use_count; + if Count > 0 then + begin + ServiceQuota.slot_use_count:=Count - 1; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQQuotaLock); + + {Check Count} + if Count > 0 then + begin + {Signal the service in case it has dropped below its quota} + SemaphoreSignal(ServiceQuota.quota_event); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Process Free Queue (Id=' + IntToStr(State.id) + ' Port=' + IntToStr(Port) + ' Size=' + IntToStr(Header.size) + ' Count=' + IntToStr(Count - 1) + ')'); + {$ENDIF} + end + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Process Free Queue: Invalid message use count (Port=' + IntToStr(Port) + ' SlotUseCount=' + IntToStr(ServiceQuota.slot_use_count) + ' MsgId=' + IntToHex(MsgId,8) + ' Size=' + IntToStr(Header.size) + ')'); + end; + end; + + DataFound:=True; + end; + + {Update Position} + Position:=Position + VCHIQCalcStride(Header.size); + if Position > VCHIQ_SLOT_SIZE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Process Free Queue: Invalid slot position (Position=' + IntToStr(Position) + ' MsgId=' + IntToHex(MsgId,8) + ' Size=' + IntToStr(Header.size) + ')'); + end; + end; + + {Check Data Found} + if DataFound then + begin + {Lock Spinlock} + SpinLock(VCHIQQuotaLock); + + {Get Data Use Count} + Count:=State.data_use_count; + if Count > 0 then + begin + State.data_use_count:=Count - 1; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQQuotaLock); + + {Check Data Quota} + if Count = State.data_quota then + begin + {Signal Data Quota} + SemaphoreSignal(State.data_quota_event); + end; + end; + + {Memory Barrier} + DataMemoryBarrier; + + {Update Slot Queue Available} + State.slot_queue_available:=SlotQueueAvailable; + + {Signal Slot Queue Event} + SemaphoreSignal(State.slot_available_event) + end; +end; + +{==============================================================================} + +function VCHIQRecycleExecute(VCHIQ:PVCHIQDevice):PtrInt; +{From recycle_func in vchiq_core.c} + +{Called by the recycle thread} +var + State:PVCHIQ_STATE_T; + Local:PVCHIQ_SHARED_STATE_T; +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Recycle Execute (ThreadID=' + IntToHex(ThreadGetCurrent,8) + ')'); + {$ENDIF} + + {Check VCHIQ} + if VCHIQ = nil then Exit; + + {Get State} + State:=VCHIQ.State; + + {Get Local} + Local:=State.local; + + {Update Priority} + Sleep(1); + + while True do + begin + {Wait for Recycle Event} + VCHIQRemoteEventWait(@Local.recycle); + + {Process Free Queue} + VCHIQProcessFreeQueue(State); + end; +end; + +{==============================================================================} + +function VCHIQGetListeningService(State:PVCHIQ_STATE_T;Fourcc:Integer):PVCHIQ_SERVICE_T; +{From get_listening_service in vchiq_core.c} + +{Called by the slot handler thread} +var + Count:Integer; + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Get Listening Service (State=' + IntToHex(PtrUInt(State),8) + ' Fourcc=' + IntToHex(Fourcc,8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Fourcc} + if Fourcc = VCHIQ_FOURCC_INVALID then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Fourcc = VCHIQ_FOURCC_INVALID'); + end; + + {Get Service} + for Count:=0 to State.unused_service - 1 do + begin + Service:=State.services[Count]; + if (Service <> nil) and (Service.public_fourcc = Fourcc) and ((Service.srvstate = VCHIQ_SRVSTATE_LISTENING) or (Service.srvstate = VCHIQ_SRVSTATE_OPEN)) and (Service.remoteport = VCHIQ_PORT_FREE) then + begin + VCHIQLockService(Service); + + Result:=Service; + Exit; + end; + end; +end; + +{==============================================================================} + +function VCHIQGetConnectedService(State:PVCHIQ_STATE_T;Port:longWord):PVCHIQ_SERVICE_T; +{From get_connected_service in vchiq_core.c} + +{Called by the slot handler thread} +var + Count:Integer; + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Get Connected Service (State=' + IntToHex(PtrUInt(State),8) + ' Port=' + IntToStr(Port) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Service} + for Count:=0 to State.unused_service - 1 do + begin + Service:=State.services[Count]; + if (Service <> nil) and (Service.srvstate = VCHIQ_SRVSTATE_OPEN) and (Service.remoteport = Port) then + begin + VCHIQLockService(Service); + + Result:=Service; + Exit; + end; + end; +end; + +{==============================================================================} + +procedure VCHIQPollServices(State:PVCHIQ_STATE_T); +{From poll_services in vchiq_core.c} + +{Called by the slot handler thread} +var + Group:Integer; + Count:Integer; + Flags:LongWord; + Service:PVCHIQ_SERVICE_T; + ServiceFlags:LongWord; +begin + {} + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Poll Services (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + for Group:=0 to VCHIQ_BITSET_SIZE(State.unused_service) - 1 do + begin + {Get Flags} + Flags:=InterlockedExchange(State.poll_services[Group],0); + + Count:=0; + while Flags <> 0 do + begin + {Check Flags} + if (Flags and (1 shl Count)) <> 0 then + begin + {Get Service} + Service:=VCHIQFindServiceByPort(State,(Group shl 5) + Count); + + {Update Flags} + Flags:=Flags and not(1 shl Count); + + {Check Service} + if Service <> nil then + begin + {Get Service Flags} + ServiceFlags:=InterlockedExchange(Service.poll_flags,0); + + {Check Service Flags} + if (ServiceFlags and (1 shl Ord(VCHIQ_POLL_REMOVE))) <> 0 then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Poll Services: Remove (Id=' + IntToStr(State.id) + ' LocalPort=' + IntToStr(Service.localport) + ' RemotePort=' + IntToStr(Service.remoteport) + ')'); + {$ENDIF} + + {Make it look like a client, because it must be removed and not left in the LISTENING state} + Service.public_fourcc:=VCHIQ_FOURCC_INVALID; + + {Close Service Internal} + if VCHIQCloseServiceInternal(Service,False) <> VCHIQ_SUCCESS then {Not CloseReceived} + begin + {Request Poll} + VCHIQRequestPoll(State,Service,VCHIQ_POLL_REMOVE); + end; + end + else if (ServiceFlags and (1 shl Ord(VCHIQ_POLL_TERMINATE))) <> 0 then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Poll Services: Terminate (Id=' + IntToStr(State.id) + ' LocalPort=' + IntToStr(Service.localport) + ' RemotePort=' + IntToStr(Service.remoteport) + ')'); + {$ENDIF} + + {Close Service Internal} + if VCHIQCloseServiceInternal(Service,False) <> VCHIQ_SUCCESS then {Not CloseReceived} + begin + {Request Poll} + VCHIQRequestPoll(State,Service,VCHIQ_POLL_TERMINATE); + end; + end; + + {Check Service Flags} + if (ServiceFlags and (1 shl Ord(VCHIQ_POLL_TXNOTIFY))) <> 0 then + begin + {Notify Bulks} + VCHIQNotifyBulks(Service,@Service.bulk_tx,True); {RetryPoll} + end; + + {Check Service Flags} + if (ServiceFlags and (1 shl Ord(VCHIQ_POLL_RXNOTIFY))) <> 0 then + begin + {Notify Bulks} + VCHIQNotifyBulks(Service,@Service.bulk_rx,True); {RetryPoll} + end; + + {Unlock Service} + VCHIQUnlockService(Service); + end; + end; + + {Update Count} + Inc(Count); + end; + end; +end; + +{==============================================================================} + +function VCHIQNotifyBulks(Service:PVCHIQ_SERVICE_T;Queue:PVCHIQ_BULK_QUEUE_T;RetryPoll:Boolean):VCHIQ_STATUS_T; +{From notify_bulks in vchiq_core.c} + +{Called by the slot handler - don't hold the bulk mutex} +var + MsgId:Integer; + MsgType:Integer; + Bulk:PVCHIQ_BULK_T; + Status:VCHIQ_STATUS_T; + Reason:VCHIQ_REASON_T; + + Element:VCHIQ_ELEMENT_T; + BulkWaiter:PVCHIQ_BULK_WAITER_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Notify Bulks (Service=' + IntToHex(PtrUInt(Service),8) + ' Queue=' + IntToHex(PtrUInt(Queue),8) + ' RetryPoll=' + BoolToStr(RetryPoll) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Check Queue} + if Queue = nil then Exit; + + {Setup Defaults} + Status:=VCHIQ_SUCCESS; + + {Check Master} + if Service.state.is_master then + begin + while Queue.remote_notify <> Queue.process do + begin + {Get Bulk} + Bulk:=@Queue.bulks[VCHIQ_BULK_INDEX(Queue.remote_notify)]; + + {Get Message Type} + MsgType:=VCHIQ_MSG_BULK_TX_DONE; + if Bulk.dir = VCHIQ_BULK_TRANSMIT then MsgType:=VCHIQ_MSG_BULK_RX_DONE; + + {Get Message Id} + MsgId:=VCHIQ_MAKE_MSG(MsgType,Service.localport,Service.remoteport); + + {Create Element} + Element.data:=@Bulk.actual; + Element.size:=4; + + {Only reply to non-dummy bulk requests} + if Bulk.remote_data <> nil then + begin + {Queue Message} + Status:=VCHIQQueueMessageInternal(Service.state,nil,MsgId,@Element,1,4,0); + if Status <> VCHIQ_SUCCESS then Break; + end; + + {Update Remote Notify} + Inc(Queue.remote_notify); + end; + end + else + begin + {Update Remote Notify} + Queue.remote_notify:=Queue.process; + end; + + if Status = VCHIQ_SUCCESS then + begin + while Queue.remove <> Queue.remote_notify do + begin + {Get Bulk} + Bulk:=@Queue.bulks[VCHIQ_BULK_INDEX(Queue.remove)]; + + {Only generate callbacks for non-dummy bulk requests, and non-terminated services} + if (Bulk.data <> nil) and (Service.instance <> nil) then + begin + {Check Actual} + if Bulk.actual <> VCHIQ_BULK_ACTUAL_ABORTED then + begin + {Check Direction} + if Bulk.dir = VCHIQ_BULK_TRANSMIT then + begin + {Update Statistics} + Inc(Service.stats.bulk_tx_count); + Inc(Service.stats.bulk_tx_bytes,Bulk.actual); + end + else + begin + {Update Statistics} + Inc(Service.stats.bulk_rx_count); + Inc(Service.stats.bulk_rx_bytes,Bulk.actual); + end; + end + else + begin + {Update Statistics} + Inc(Service.stats.bulk_aborted_count); + end; + + {Check Mode} + if Bulk.mode = VCHIQ_BULK_MODE_BLOCKING then + begin + {Lock Spinlock} + SpinLock(VCHIQBulkWaiterLock); + + {Get Bulk Waiter} + BulkWaiter:=PVCHIQ_BULK_WAITER_T(Bulk.userdata); + if BulkWaiter <> nil then + begin + {Update Actual} + BulkWaiter.actual:=Bulk.actual; + + {Signal Event} + SemaphoreSignal(BulkWaiter.event); + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQBulkWaiterLock); + end + else if Bulk.mode = VCHIQ_BULK_MODE_CALLBACK then + begin + {Check Direction} + if Bulk.dir = VCHIQ_BULK_TRANSMIT then + begin + {Get Reason} + Reason:=VCHIQ_BULK_TRANSMIT_DONE; + if Bulk.actual = VCHIQ_BULK_ACTUAL_ABORTED then Reason:=VCHIQ_BULK_TRANSMIT_ABORTED; + end + else + begin + {Get Reason} + Reason:=VCHIQ_BULK_RECEIVE_DONE; + if Bulk.actual = VCHIQ_BULK_ACTUAL_ABORTED then Reason:=VCHIQ_BULK_RECEIVE_ABORTED; + end; + + {Make Service Callback} + Status:=VCHIQMakeServiceCallback(Service,Reason,nil,Bulk.userdata); + if Status = VCHIQ_RETRY then Break; + end; + end; + + {Update Remove} + Inc(Queue.remove); + + {Signal Bulk Remove} + SemaphoreSignal(Service.bulk_remove_event); + end; + + if not RetryPoll then Status:=VCHIQ_SUCCESS; + end; + + if Status = VCHIQ_RETRY then + begin + {Check Queue} + if Queue = @Service.bulk_tx then + begin + {Request Poll} + VCHIQRequestPoll(Service.state,Service,VCHIQ_POLL_TXNOTIFY); + end + else + begin + {Request Poll} + VCHIQRequestPoll(Service.state,Service,VCHIQ_POLL_RXNOTIFY); + end; + end; + + {Return Status} + Result:=Status; +end; + +{==============================================================================} + +function VCHIQResolveBulks(Service:PVCHIQ_SERVICE_T;Queue:PVCHIQ_BULK_QUEUE_T):Integer; +{From resolve_bulks in vchiq_core.c} + +{Called by the slot handler or application threads, holding the bulk mutex} +var + Resolved:Integer; + Bulk:PVCHIQ_BULK_T; + State:PVCHIQ_STATE_T; +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Resolve Bulks (Service=' + IntToHex(PtrUInt(Service),8) + ' Queue=' + IntToHex(PtrUInt(Queue),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Check Queue} + if Queue = nil then Exit; + + {Get State} + State:=Service.state; + + {Setup Defaults} + Resolved:=0; + + while (Queue.process <> Queue.local_insert) and (Queue.process <> Queue.remote_insert) do + begin + {Get Bulk} + Bulk:=@Queue.bulks[VCHIQ_BULK_INDEX(Queue.process)]; + + //To Do //Continuing //Log Error + + {Lock Mutex} + if MutexLock(State.bulk_transfer_mutex) <> ERROR_SUCCESS then Break; + + {Transfer Bulk} + VCHIQTransferBulk(Bulk); + + {Unlock Mutex} + MutexUnlock(State.bulk_transfer_mutex); + + //To Do //Continuing //Log Trace + + {Complete Bulk} + VCHIQCompleteBulk(Bulk); + + {Update Process} + Inc(Queue.process); + + {Update Resolved} + Inc(Resolved); + end; + + {Return Resolved} + Result:=Resolved; +end; + +{==============================================================================} + +procedure VCHIQAbortOutstandingBulks(Service:PVCHIQ_SERVICE_T;Queue:PVCHIQ_BULK_QUEUE_T); +{From abort_outstanding_bulks in vchiq_core.c} + +{Called with the bulk mutex held} +var + IsTx:Boolean; + Bulk:PVCHIQ_BULK_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Abort Outstanding Bulks (Service=' + IntToHex(PtrUInt(Service),8) + ' Queue=' + IntToHex(PtrUInt(Queue),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Check Queue} + if Queue = nil then Exit; + + {Get Is Tx} + IsTx:=(Queue = @Service.bulk_tx); + + {Check Local Insert} + if (Queue.local_insert - Queue.process) < 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: (Queue.local_insert - Queue.process) < 0'); + end; + + {Check Remote Insert} + if (Queue.remote_insert - Queue.process) < 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: (Queue.remote_insert - Queue.process) < 0'); + end; + + while (Queue.process <> Queue.local_insert) or (Queue.process <> Queue.remote_insert) do + begin + {Get Bulk} + Bulk:=@Queue.bulks[VCHIQ_BULK_INDEX(Queue.process)]; + + if Queue.process = Queue.remote_insert then + begin + {Fabricate a matching dummy bulk} + Bulk.remote_data:=nil; + Bulk.remote_size:=0; + + {Update Remote Insert} + Inc(Queue.remote_insert); + end; + + if Queue.process <> Queue.local_insert then + begin + {Complete Bulk} + VCHIQCompleteBulk(Bulk); + + //To Do //Continuing //Log Trace + end + else + begin + {Fabricate a matching dummy bulk} + Bulk.data:=nil; + Bulk.size:=0; + Bulk.actual:=VCHIQ_BULK_ACTUAL_ABORTED; + if IsTx then + begin + Bulk.dir:=VCHIQ_BULK_TRANSMIT; + end + else + begin + Bulk.dir:=VCHIQ_BULK_RECEIVE; + end; + + {Update Local Insert} + Inc(Queue.local_insert); + end; + + {Update Process} + Inc(Queue.process); + end; +end; + +{==============================================================================} + +procedure VCHIQPauseBulks(State:PVCHIQ_STATE_T); +{From pause_bulks in vchiq_core.c} + +{Called from the slot handler thread} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Pause Bulks (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Increment Pause Count} + if InterlockedIncrement(VCHIQPauseBulksCount) <> 1 then + begin + InterlockedExchange(VCHIQPauseBulksCount,1); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQPauseBulksCount <> 1'); + Exit; + end; + + {Block bulk transfers from all services} + MutexLock(State.bulk_transfer_mutex); +end; + +{==============================================================================} + +procedure VCHIQResumeBulks(State:PVCHIQ_STATE_T); +{From resume_bulks in vchiq_core.c} + +{Called from the slot handler thread} +var + Count:Integer; + ResolvedRx:Integer; + ResolvedTx:Integer; + Service:PVCHIQ_SERVICE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Resume Bulks (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Decrement Pause Count} + if InterlockedDecrement(VCHIQPauseBulksCount) <> 0 then + begin + InterlockedExchange(VCHIQPauseBulksCount,0); + + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQPauseBulksCount <> 0'); + Exit; + end; + + {Allow bulk transfers from all services} + MutexUnlock(State.bulk_transfer_mutex); + + {Check Deferred Bulks} + if State.deferred_bulks = 0 then Exit; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Resume Bulks (DeferredBulks=' + IntToStr(State.deferred_bulks) + ')'); + {$ENDIF} + + {Deal with any bulks which had to be deferred due to being in paused state} + for Count:=0 to State.unused_service - 1 do + begin + {Get Service} + Service:=State.services[Count]; + + {Check Service} + if (Service <> nil) and (Service.srvstate = VCHIQ_SRVSTATE_OPEN) then + begin + {Lock Mutex} + MutexLock(Service.bulk_mutex); + + {Resolve Rx and Tx} + ResolvedRx:=VCHIQResolveBulks(Service,@Service.bulk_rx); + ResolvedTx:=VCHIQResolveBulks(Service,@Service.bulk_tx); + + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + {Notify Rx and Tx} + if ResolvedRx > 0 then VCHIQNotifyBulks(Service,@Service.bulk_rx,True); {RetryPoll} + if ResolvedTx > 0 then VCHIQNotifyBulks(Service,@Service.bulk_tx,True); {RetryPoll} + end; + end; + + {Reset Deferred Bulks} + State.deferred_bulks:=0; +end; + +{==============================================================================} + +function VCHIQParseOpen(State:PVCHIQ_STATE_T;Header:PVCHIQ_HEADER_T):Boolean; +{From parse_open in vchiq_core.c} +var + Size:Integer; + MsgId:Integer; + {MsgType:Integer;} {Not Used} + LocalPort:LongWord; + RemotePort:LongWord; + Service:PVCHIQ_SERVICE_T; + Payload:PVCHIQ_OPEN_PAYLOAD; + + Fourcc:Integer; + Version:SmallInt; + VersionMin:SmallInt; + + Body:VCHIQ_ELEMENT_T; + AckPayload:VCHIQ_OPENACK_PAYLOAD; +begin + {} + Result:=False; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse Open (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Header} + if Header = nil then Exit; + + {Get Message} + MsgId:=Header.msgid; + Size:=Header.size; + {MsgType:=VCHIQ_MSG_TYPE(MsgId);} {Not Used} + LocalPort:=VCHIQ_MSG_DSTPORT(MsgId); + RemotePort:=VCHIQ_MSG_SRCPORT(MsgId); + + {Check Size} + if Size >= SizeOf(VCHIQ_OPEN_PAYLOAD) then + begin + {Get Payload} + Payload:=PVCHIQ_OPEN_PAYLOAD(@Header.data); + + {Get Fourcc} + Fourcc:=Payload.fourcc; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: OPEN (Id=' + IntToStr(State.id) + ' LocalPort=' + IntToStr(LocalPort) + ' Fourcc=' + VCHIQFourccToString(Fourcc) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQGetListeningService(State,Fourcc); + if Service <> nil then + begin + try + {A matching service exists} + Version:=Payload.version; + VersionMin:=Payload.version_min; + + {Check Version} + if (Service.version < VersionMin) or (Version < Service.version_min) then + begin + {Version mismatch} + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Service Version Mismatch (Id=' + IntToStr(State.id) + ' LocalPort=' + IntToStr(Service.localport) + ' Fourcc=' + VCHIQFourccToString(Fourcc) + ' Local Version / Min=' + IntToStr(Service.version) + ' / ' + IntToStr(Service.version_min) + ' Remote Version / Min=' + IntToStr(Version) + ' / ' + IntToStr(VersionMin) + ')'); + + {No available service, or an invalid request - send a CLOSE} + if VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_CLOSE,0,VCHIQ_MSG_SRCPORT(MsgId)),nil,0,0,0) = VCHIQ_RETRY then + begin + Exit; + end; + + Result:=True; + Exit; + end; + + {Update Peer Version} + Service.peer_version:=Version; + + {Check Service State} + if Service.srvstate = VCHIQ_SRVSTATE_LISTENING then + begin + {Create Payload} + AckPayload.version:=Service.version; + + {Create Body} + Body.data:=@AckPayload; + Body.size:=SizeOf(VCHIQ_OPENACK_PAYLOAD); + + {Check Version} + if State.version_common < VCHIQ_VERSION_SYNCHRONOUS_MODE then + begin + Service.sync:=0; + end; + + {Acknowledge the OPEN} + if (Service.sync <> 0) and (State.version_common >= VCHIQ_VERSION_SYNCHRONOUS_MODE) then + begin + {Queue Message Internal Sync} + if VCHIQQueueMessageInternalSync(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_OPENACK,Service.localport,RemotePort),@Body,1,SizeOf(VCHIQ_OPENACK_PAYLOAD),False) = VCHIQ_RETRY then + begin + Exit; + end; + end + else + begin + {Queue Message Internal} + if VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_OPENACK,Service.localport,RemotePort),@Body,1,SizeOf(VCHIQ_OPENACK_PAYLOAD),0) = VCHIQ_RETRY then + begin + Exit; + end; + end; + + {The service is now open} + if Service.sync <> 0 then + begin + {Set Service State} + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_OPENSYNC); + end + else + begin + {Set Service State} + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_OPEN); + end; + end; + + {Update Service} + Service.remoteport:=RemotePort; + Service.client_id:=Payload.client_id; + + {Make Service Callback} + if VCHIQMakeServiceCallback(Service,VCHIQ_SERVICE_OPENED,nil,nil) = VCHIQ_RETRY then + begin + {Bail out if not ready} + Service.remoteport:=VCHIQ_PORT_FREE; + + Exit; + end; + + {Success (The message has been dealt with)} + Result:=True; + finally + {Unlock Service} + VCHIQUnlockService(Service); + end; + end + else + begin + {No available service, or an invalid request - send a CLOSE} + if VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_CLOSE,0,VCHIQ_MSG_SRCPORT(MsgId)),nil,0,0,0) = VCHIQ_RETRY then + begin + Exit; + end; + + Result:=True; + end; + end + else + begin + {No available service, or an invalid request - send a CLOSE} + if VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_CLOSE,0,VCHIQ_MSG_SRCPORT(MsgId)),nil,0,0,0) = VCHIQ_RETRY then + begin + Exit; + end; + + Result:=True; + end; +end; + +{==============================================================================} + +procedure VCHIQParseRxSlots(State:PVCHIQ_STATE_T); +{From parse_rx_slots in vchiq_core.c} + +{Called by the slot handler thread} +var + TxPos:Integer; + RxIndex:Integer; + Size:Integer; + MsgId:Integer; + MsgType:Integer; + LocalPort:LongWord; + RemotePort:LongWord; + Header:PVCHIQ_HEADER_T; + Service:PVCHIQ_SERVICE_T; + Remote:PVCHIQ_SHARED_STATE_T; + Payload:PVCHIQ_OPENACK_PAYLOAD; + + SkipMessage:Boolean; + + Resolved:Integer; + Bulk:PVCHIQ_BULK_T; + Queue:PVCHIQ_BULK_QUEUE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse Rx Slots (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Remote} + Remote:=State.remote; + + {Get Tx Pos} + TxPos:=Remote.tx_pos; + + {Set Defaults} + Service:=nil; + + while State.rx_pos <> TxPos do + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse Rx Slots (TxPos=' + IntToStr(TxPos) + ' RxPos=' + IntToStr(State.rx_pos) + ')'); + {$ENDIF} + + SkipMessage:=False; + + {Check Rx Data} + if State.rx_data = nil then + begin + if (State.rx_pos and VCHIQ_SLOT_MASK) <> 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: (State.rx_pos and VCHIQ_SLOT_MASK) <> 0'); + end; + + {Get Rx Data and Info} + RxIndex:=Remote.slot_queue[VCHIQ_SLOT_QUEUE_INDEX_FROM_POS(State.rx_pos) and VCHIQ_SLOT_QUEUE_MASK]; + State.rx_data:=VCHIQ_SLOT_DATA_FROM_INDEX(State,RxIndex); + State.rx_info:=VCHIQ_SLOT_INFO_FROM_INDEX(State,RxIndex); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse Rx Slots (RxIndex=' + IntToStr(RxIndex) + ' RxData=' + IntToHex(PtrUInt(State.rx_data),8) + ' RxInfo=' + IntToHex(PtrUInt(State.rx_info),8) + ')'); + {$ENDIF} + + {Initialise use_count to one, and increment release_count at the end of the slot to avoid releasing the slot prematurely} + State.rx_info.use_count:=1; + State.rx_info.release_count:=0; + end; + + {Get Header} + Header:=PVCHIQ_HEADER_T(State.rx_data + (State.rx_pos and VCHIQ_SLOT_MASK)); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse Rx Slots (Header=' + IntToHex(PtrUInt(Header),8) + ')'); + {$ENDIF} + + {Get Message} + MsgId:=Header.msgid; + Size:=Header.size; + MsgType:=VCHIQ_MSG_TYPE(MsgId); + LocalPort:=VCHIQ_MSG_DSTPORT(MsgId); + RemotePort:=VCHIQ_MSG_SRCPORT(MsgId); + + {Update Statistics} + if MsgType <> VCHIQ_MSG_DATA then Inc(State.stats.ctrl_rx_count); + + {Check Message Type} + case MsgType of + VCHIQ_MSG_OPENACK, + VCHIQ_MSG_CLOSE, + VCHIQ_MSG_DATA, + VCHIQ_MSG_BULK_RX, + VCHIQ_MSG_BULK_TX, + VCHIQ_MSG_BULK_RX_DONE, + VCHIQ_MSG_BULK_TX_DONE:begin + {Get Service} + Service:=VCHIQFindServiceByPort(State,LocalPort); + + {Check Service} + if ((Service = nil) or ((Service.remoteport <> RemotePort) and (Service.remoteport <> VCHIQ_PORT_FREE))) and (LocalPort = 0) and (MsgType = VCHIQ_MSG_CLOSE) then + begin + {This could be a CLOSE from a client which hadn't yet received the OPENACK (Look for the connected service)} + {Unlock Service} + if Service <> nil then VCHIQUnlockService(Service); + + {Get Connected Service} + Service:=VCHIQGetConnectedService(State,RemotePort); + if Service <> nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Found Connected Service (Id=' + IntToStr(State.id) + ' MessageType=' + VCHIQMessageTypeToString(MsgType) + ' LocalPort=' + IntToStr(LocalPort) + ' RemotePort=' + IntToStr(RemotePort) + ')'); + end; + end; + + {Check Service} + if Service = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Invalid / Closed Service (Id=' + IntToStr(State.id) + ' MessageType=' + VCHIQMessageTypeToString(MsgType) + ' LocalPort=' + IntToStr(LocalPort) + ' RemotePort=' + IntToStr(RemotePort) + ')'); + + SkipMessage:=True; + end; + end; + end; + + if not SkipMessage then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse Rx Slots (MsgId=' + IntToHex(MsgId,8) + ' Size=' + IntToStr(Size) + ' MessageType=' + VCHIQMessageTypeToString(MsgType) + ' LocalPort=' + IntToStr(LocalPort) + ' RemotePort=' + IntToStr(RemotePort) + ')'); + {$ENDIF} + + //To Do //Continuing //Log Trace + + {Check Size} + if (PtrUInt(Header) and VCHIQ_SLOT_MASK) + VCHIQCalcStride(Size) > VCHIQ_SLOT_SIZE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Size Too Big For Slot (MsgId=' + IntToHex(MsgId,8) + ' Size=' + IntToStr(Size) + ')'); + end; + + {Check Message Type} + case MsgType of + VCHIQ_MSG_OPEN:begin + {Check Dest Port} + if VCHIQ_MSG_DSTPORT(MsgId) <> 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQ_MSG_DSTPORT(MsgId) <> 0'); + end; + + {Parse Open} + if not VCHIQParseOpen(State,Header) then + begin + {Unlock Service} + if Service <> nil then VCHIQUnlockService(Service); + Exit; + end; + end; + VCHIQ_MSG_OPENACK:begin + {Check Size} + if Size >= SizeOf(VCHIQ_OPENACK_PAYLOAD) then + begin + {Get Payload} + Payload:=PVCHIQ_OPENACK_PAYLOAD(@Header.data); + + {Get Peer Version} + Service.peer_version:=Payload.version; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: OPENACK (Id=' + IntToStr(State.id) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Size) + ' RemotePort=' + IntToStr(RemotePort) + ' LocalPort=' + IntToStr(LocalPort) + ' PeerVersion=' + IntToStr(Service.peer_version) + ')'); + {$ENDIF} + + {Check Service State} + if Service.srvstate = VCHIQ_SRVSTATE_OPENING then + begin + {Update Service} + Service.remoteport:=RemotePort; + VCHIQSetServiceState(Service,VCHIQ_SRVSTATE_OPEN); + + {Signal Remove Event} + SemaphoreSignal(Service.remove_event); + end + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: OPENACK received in state ' + VCHIQServiceStateToString(Service.srvstate)); + end; + end; + VCHIQ_MSG_CLOSE:begin + {Check Size} + if Size <> 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Size <> 0'); + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: CLOSE (Id=' + IntToStr(State.id) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' RemotePort=' + IntToStr(RemotePort) + ' LocalPort=' + IntToStr(LocalPort) + ')'); + {$ENDIF} + + {Mark Service Closing Internal} + VCHIQMarkServiceClosingInternal(Service,True); + + {Close Service Internal} + if VCHIQCloseServiceInternal(Service,True) = VCHIQ_RETRY then {CloseReceived} + begin + {Unlock Service} + if Service <> nil then VCHIQUnlockService(Service); + Exit; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: Close Service (Fourcc=' + VCHIQFourccToString(Service.base.fourcc) + ' LocalPort=' + IntToStr(Service.localport) + ' RemotePort=' + IntToStr(Service.remoteport) + ')'); + {$ENDIF} + end; + VCHIQ_MSG_DATA:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: DATA (Id=' + IntToStr(State.id) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Size) + ' RemotePort=' + IntToStr(RemotePort) + ' LocalPort=' + IntToStr(LocalPort) + ')'); + {$ENDIF} + + {Check Remote Port and Service State} + if (Service.remoteport = RemotePort) and (Service.srvstate = VCHIQ_SRVSTATE_OPEN) then + begin + {Update Header} + Header.msgid:=MsgId or VCHIQ_MSGID_CLAIMED; + + {Claim Slot} + VCHIQClaimSlot(State.rx_info); + + {Make Service Callback} + if VCHIQMakeServiceCallback(Service,VCHIQ_MESSAGE_AVAILABLE,Header,nil) = VCHIQ_RETRY then + begin + {Unlock Service} + if Service <> nil then VCHIQUnlockService(Service); + Exit; + end; + + {Update Statistics} + Inc(Service.stats.ctrl_rx_count); + Inc(Service.stats.ctrl_rx_bytes,Size); + end + else + begin + {Update Statistics} + Inc(State.stats.error_count); + end; + end; + VCHIQ_MSG_CONNECT:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: CONNECT (Id=' + IntToStr(State.id) + ' Header=' + IntToHex(PtrUInt(Header),8) + ')'); + {$ENDIF} + + {Get Version Common} + State.version_common:=PVCHIQ_SLOT_ZERO_T(State.slot_data).version; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse Rx Slots (VersionCommon=' + IntToStr(State.version_common) + ')'); + {$ENDIF} + + {Signal Connect} + SemaphoreSignal(State.connect); + end; + VCHIQ_MSG_BULK_RX, + VCHIQ_MSG_BULK_TX:begin + {Check Master} + if not State.is_master then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: not State.is_master'); + end; + + {Get Queue} + if MsgType = VCHIQ_MSG_BULK_RX then + begin + Queue:=@Service.bulk_tx; + end + else + begin + Queue:=@Service.bulk_rx; + end; + + {Check Remote Port and Service State} + if (Service.remoteport = RemotePort) and (Service.srvstate = VCHIQ_SRVSTATE_OPEN) then + begin + {Lock Mutex} + if MutexLock(Service.bulk_mutex) <> ERROR_SUCCESS then + begin + {Unlock Service} + if Service <> nil then VCHIQUnlockService(Service); + Exit; + end; + + if Queue.remote_insert >= Queue.remove + VCHIQ_NUM_SERVICE_BULKS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue.remote_insert >= Queue.remove + VCHIQ_NUM_SERVICE_BULKS'); + end; + + {Get Bulk} + Bulk:=@Queue.bulks[VCHIQ_BULK_INDEX(Queue.remote_insert)]; + Bulk.remote_data:=Pointer(PVCHIQ_BULK_PAYLOAD(@Header.data).data); + Bulk.remote_size:=PVCHIQ_BULK_PAYLOAD(@Header.data).size; + + {Memory Barrier} + DataMemoryBarrier; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: BULK (Id=' + IntToStr(State.id) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' RemotePort=' + IntToStr(RemotePort) + ' LocalPort=' + IntToStr(LocalPort) + ' RemoteSize=' + IntToStr(Bulk.remote_size) + ' RemoteData=' + IntToHex(PtrUInt(Bulk.remote_data),8) + ')'); + {$ENDIF} + + {Update Remote Insert} + Inc(Queue.remote_insert); + + Resolved:=0; + + {Check Pause} + if VCHIQPauseBulksCount <> 0 then + begin + {Update Deferred} + Inc(State.deferred_bulks); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Deferring Bulk (DeferredBulks=' + IntToStr(State.deferred_bulks) + ')'); + {$ENDIF} + + {Check State} + if State.conn_state <> VCHIQ_CONNSTATE_PAUSE_SENT then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: State.conn_state <> VCHIQ_CONNSTATE_PAUSE_SENT'); + end; + end + else if State.conn_state = VCHIQ_CONNSTATE_CONNECTED then + begin + {Resolve Bulks} + Resolved:=VCHIQResolveBulks(Service,Queue); + end; + + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + {Notify Bulks} + if Resolved <> 0 then VCHIQNotifyBulks(Service,Queue,True); {RetryPoll} + end; + end; + VCHIQ_MSG_BULK_RX_DONE, + VCHIQ_MSG_BULK_TX_DONE:begin + {Check Master} + if State.is_master then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: State.is_master'); + end; + + {Check Remote Port and Service State} + if (Service.remoteport = RemotePort) and (Service.srvstate <> VCHIQ_SRVSTATE_FREE) then + begin + {Get Queue} + if MsgType = VCHIQ_MSG_BULK_RX_DONE then + begin + Queue:=@Service.bulk_rx; + end + else + begin + Queue:=@Service.bulk_tx; + end; + + {Lock Mutex} + if MutexLock(Service.bulk_mutex) <> ERROR_SUCCESS then + begin + {Unlock Service} + if Service <> nil then VCHIQUnlockService(Service); + Exit; + end; + + if (Queue.remote_insert - Queue.local_insert) >= 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: (Queue.remote_insert - Queue.local_insert) >= 0'); + + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + Break; + end; + + if Queue.process = Queue.local_insert then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue.process = Queue.local_insert'); + ThreadHalt(0); + end; + + if Queue.process <> Queue.remote_insert then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue.process <> Queue.remote_insert'); + ThreadHalt(0); + end; + + {Get Bulk} + Bulk:=@Queue.bulks[VCHIQ_BULK_INDEX(Queue.remote_insert)]; + Bulk.actual:=PInteger(@Header.data)^; + + {Update Remote Insert} + Inc(Queue.remote_insert); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: BULK DONE (Id=' + IntToStr(State.id) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' RemotePort=' + IntToStr(RemotePort) + ' LocalPort=' + IntToStr(LocalPort) + ' Actual=' + IntToStr(Bulk.actual) + ' Data=' + IntToHex(PtrUInt(Bulk.data),8) + ')'); + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: BULK DONE (Id=' + IntToStr(State.id) + ' LocalInsert=' + IntToStr(Queue.local_insert) + ' RemoteInsert=' + IntToStr(Queue.remote_insert) + ' Process=' + IntToStr(Queue.process) + ')'); + {$ENDIF} + + if Queue.process = Queue.local_insert then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Queue.process = Queue.local_insert'); + end; + + {Complete Bulk} + VCHIQCompleteBulk(Bulk); + + {Update Process} + Inc(Queue.process); + + {Unlock Mutex} + MutexUnlock(Service.bulk_mutex); + + {Notify Bulks} + VCHIQNotifyBulks(Service,Queue,True); {RetryPoll} + end; + end; + VCHIQ_MSG_PADDING:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: PADDING (Id=' + IntToStr(State.id) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Size) + ')'); + {$ENDIF} + end; + VCHIQ_MSG_PAUSE:begin + {If initiated, signal the application thread} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: PAUSE (Id=' + IntToStr(State.id) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Size) + ')'); + {$ENDIF} + + {Check Connection State} + if State.conn_state = VCHIQ_CONNSTATE_PAUSED then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: PAUSE received in state PAUSED (Id=' + IntToStr(State.id) + ')'); + + Break; + end; + + {Check Connection State} + if State.conn_state <> VCHIQ_CONNSTATE_PAUSE_SENT then + begin + {Send a PAUSE in response} + if VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_PAUSE,0,0),nil,0,0,QMFLAGS_NO_MUTEX_UNLOCK) = VCHIQ_RETRY then + begin + {Unlock Service} + if Service <> nil then VCHIQUnlockService(Service); + Exit; + end; + + {Pause Bulks} + if State.is_master then VCHIQPauseBulks(State); + end; + + {At this point slot_mutex is held} + VCHIQSetConnState(State,VCHIQ_CONNSTATE_PAUSED); + VCHIQPlatformPaused(State); + end; + VCHIQ_MSG_RESUME:begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Parse: RESUME (Id=' + IntToStr(State.id) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' Size=' + IntToStr(Size) + ')'); + {$ENDIF} + + {Release the slot mutex} + MutexUnlock(State.slot_mutex); + + {Resume Bulks} + if State.is_master then VCHIQResumeBulks(State); + + VCHIQSetConnState(State,VCHIQ_CONNSTATE_CONNECTED); + VCHIQPlatformResumed(State); + end; + VCHIQ_MSG_REMOTE_USE:begin + {On Remote Use} + VCHIQOnRemoteUse(State); + end; + VCHIQ_MSG_REMOTE_RELEASE:begin + {On Remote Release} + VCHIQOnRemoteRelease(State); + end; + VCHIQ_MSG_REMOTE_USE_ACTIVE:begin + {On Remote Use Active} + VCHIQOnRemoteUseActive(State); + end; + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Invalid Message Id (Id=' + IntToStr(State.id) + ' MsgId=' + IntToHex(MsgId,8) + ' Size=' + IntToStr(Size) + ')'); + end; + end; + end; + + {Unlock Service} + if Service <> nil then + begin + VCHIQUnlockService(Service); + Service:=nil; + end; + + {Update Rx Pos} + State.rx_pos:=State.rx_pos + VCHIQCalcStride(Size); + + {Perform some housekeeping when the end of the slot is reached} + if (State.rx_pos and VCHIQ_SLOT_MASK) = 0 then + begin + {Remove the extra reference count} + VCHIQReleaseSlot(State,State.rx_info,nil,nil); + State.rx_data:=nil; + end; + end; +end; + +{==============================================================================} + +function VCHIQSlotHandlerExecute(VCHIQ:PVCHIQDevice):PtrInt; +{From slot_handler_func in vchiq_core.c} + +{Called by the slot handler thread} +var + State:PVCHIQ_STATE_T; + Local:PVCHIQ_SHARED_STATE_T; +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Slot Handler Execute (ThreadID=' + IntToHex(ThreadGetCurrent,8) + ')'); + {$ENDIF} + + {Check VCHIQ} + if VCHIQ = nil then Exit; + + {Get State} + State:=VCHIQ.State; + + {Get Local} + Local:=State.local; + + {Update Priority} + Sleep(1); + + while True do + begin + {Wait for Trigger Event} + VCHIQRemoteEventWait(@Local.trigger); + + {Memory Barrier} + DataMemoryBarrier; + + {Check Poll Needed} + if State.poll_needed <> 0 then + begin + {Check if we need to suspend (May change our conn_state)} + VCHIQPlatformCheckSuspend(State); + + {Reset Poll Needed} + State.poll_needed:=0; + + {Handle service polling and other rare conditions here out of the mainline code} + case State.conn_state of + VCHIQ_CONNSTATE_CONNECTED:begin + {Poll the services as requested} + VCHIQPollServices(State); + end; + VCHIQ_CONNSTATE_PAUSING:begin + {Check Master} + if State.is_master then + begin + {Pause Bulks} + VCHIQPauseBulks(State); + end; + + {Queue Message Internal} + if VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_PAUSE,0,0),nil,0,0,QMFLAGS_NO_MUTEX_UNLOCK) <> VCHIQ_RETRY then + begin + {Set Connection State} + VCHIQSetConnState(State,VCHIQ_CONNSTATE_PAUSE_SENT); + end + else + begin + {Check Master} + if State.is_master then + begin + {Resume Bulks} + VCHIQResumeBulks(State); + end; + + {Retry later} + State.poll_needed:=1; + end; + end; + VCHIQ_CONNSTATE_PAUSED:begin + {Platform Resume} + VCHIQPlatformResume(State); + end; + VCHIQ_CONNSTATE_RESUMING:begin + {Queue Message Internal} + if VCHIQQueueMessageInternal(State,nil,VCHIQ_MAKE_MSG(VCHIQ_MSG_RESUME,0,0),nil,0,0,QMFLAGS_NO_MUTEX_LOCK) <> VCHIQ_RETRY then + begin + {Check Master} + if State.is_master then + begin + {Resume Bulks} + VCHIQResumeBulks(State); + end; + + {Set Connection State} + VCHIQSetConnState(State,VCHIQ_CONNSTATE_CONNECTED); + + {Platform Resumed} + VCHIQPlatformResumed(State); + end + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Failed to send VCHIQ_MSG_RESUME'); + + {This should really be impossible, since the PAUSE should have flushed through outstanding messages} + ThreadHalt(0); + end; + end; + VCHIQ_CONNSTATE_PAUSE_TIMEOUT,VCHIQ_CONNSTATE_RESUME_TIMEOUT:begin + {Platform Handle Timeout} + VCHIQPlatformHandleTimeout(State); + end; + end; + end; + + {Parse Rx Slots} + VCHIQParseRxSlots(State); + end; +end; + +{==============================================================================} +{==============================================================================} +{VCHIQ Platform Functions} +function VCHIQPlatformInit(VCHIQ:PVCHIQDevice;State:PVCHIQ_STATE_T):LongWord; +{From vchiq_platform_init in vchiq_2835_arm.c} +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Init (VCHIQ=' + IntToHex(PtrUInt(VCHIQ),8) + ' State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check VCHIQ} + if VCHIQ = nil then Exit; + if VCHIQ.Device.Signature <> DEVICE_SIGNATURE then Exit; + + {Check State} + if State = nil then Exit; + + //To Do //Not Required, built into VCHIQDeviceStart //Should we separate for clarity ? + +end; + +{==============================================================================} + +function VCHIQPlatformInitState(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +{From vchiq_platform_init_state in vchiq_2835_arm.c} +{ And vchiq_arm_init_state in vchiq_arm.c} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Init State (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Allocate Platform State} + PlatformState:=AllocMem(SizeOf(VCHIQ_PLATFORM_STATE_T)); + if PlatformState = nil then Exit; + + {Initialize Platform State} + PlatformState.susp_res_lock:=SynchronizerCreate; + + PlatformState.ka_evt:=CompletionCreate(COMPLETION_FLAG_COUNTED); + PlatformState.ka_use_count:=0; + PlatformState.ka_use_ack_count:=0; + PlatformState.ka_release_count:=0; + + PlatformState.vc_suspend_complete:=CompletionCreate(COMPLETION_FLAG_COUNTED); + + PlatformState.vc_resume_complete:=CompletionCreate(COMPLETION_FLAG_COUNTED); + {Initialise to 'done' state. We only want to block on resume completion while VideoCore is suspended} + VCHIQSetResumeState(PlatformState,VC_RESUME_RESUMED); + + PlatformState.resume_blocker:=CompletionCreate(COMPLETION_FLAG_COUNTED); + {Initialise to 'done' state. We only want to block on this completion while resume is blocked} + CompletionCompleteAll(PlatformState.resume_blocker); + + PlatformState.blocked_blocker:=CompletionCreate(COMPLETION_FLAG_COUNTED); + {Initialise to 'done' state. We only want to block on this completion while things are waiting on the resume blocker} + CompletionCompleteAll(PlatformState.blocked_blocker); + + PlatformState.suspend_timer_timeout:=VCHIQ_SUSPEND_TIMER_TIMEOUT_MS; + PlatformState.suspend_timer_running:=False; + PlatformState.suspend_timer:=TimerCreate(VCHIQ_SUSPEND_TIMER_TIMEOUT_MS,False,False,TTimerEvent(VCHIQSuspendTimerCallback),State); + + PlatformState.first_connect:=False; + + PlatformState.inited:=True; + + {Store Platform State} + State.platform_state:=PlatformState; + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQCheckService(Service:PVCHIQ_SERVICE_T):VCHIQ_STATUS_T; +{From vchiq_check_service in vchiq_arm.c} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Check Service (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Check State} + if Service.state = nil then Exit; + + {Get Platform State} + PlatformState:=Service.state.platform_state; + if PlatformState = nil then Exit; + + {Lock Reader} + if SynchronizerReaderLock(PlatformState.susp_res_lock) <> ERROR_SUCCESS then Exit; + + if Service.service_use_count <> 0 then + begin + Result:=VCHIQ_SUCCESS; + end; + + {Unlock Reader} + SynchronizerReaderUnlock(PlatformState.susp_res_lock); + + if Result = VCHIQ_ERROR then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Check Service (Fourcc=' + VCHIQFourccToString(Service.base.fourcc) + ' ClientId=' + IntToStr(Service.client_id) + ' ServiceUseCont=' + IntToStr(Service.service_use_count) + ' VideocoreUseCount=' + IntToStr(PlatformState.videocore_use_count) + ')'); + end; +end; + +{==============================================================================} + +function VCHIQUseServiceNoResume(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +{From vchiq_use_service_no_resume in vchiq_arm.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Use Service No Resume (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service <> nil then + begin + {Use Internal} + Result:=VCHIQUseInternal(Service.state,Service,USE_TYPE_SERVICE_NO_RESUME); + + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +function VCHIQUseService(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +{From vchiq_use_service in vchiq_arm.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Use Service (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service <> nil then + begin + {Use Internal} + Result:=VCHIQUseInternal(Service.state,Service,USE_TYPE_SERVICE); + + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +function VCHIQReleaseService(Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +{From vchiq_release_service in vchiq_arm.c} +var + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Service (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service <> nil then + begin + {Release Internal} + Result:=VCHIQReleaseInternal(Service.state,Service); + + {Unlock Service} + VCHIQUnlockService(Service); + end; +end; + +{==============================================================================} + +function VCHIQAddCompletion(Instance:PVCHIQInstance;Reason:VCHIQ_REASON_T;Header:PVCHIQ_HEADER_T;UserService:PVCHIQ_USER_SERVICE_T;BulkUserdata:Pointer):VCHIQ_STATUS_T; +{From add_completion in vchiq_arm.c} +var + Completion:PVCHIQ_COMPLETION_DATA_T; + CompletionInsert:Integer; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Add Completion (Instance=' + IntToHex(PtrUInt(Instance),8) + ' Reason=' + VCHIQReasonToString(Reason) + ' Header=' + IntToHex(PtrUInt(Header),8) + ' UserService=' + IntToHex(PtrUInt(UserService),8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Check User Service} + if UserService = nil then Exit; + + CompletionInsert:=Instance.CompletionInsert; + while (CompletionInsert - Instance.CompletionRemove) >= VCHIQ_MAX_COMPLETIONS do + begin + {Out of space - wait for the client} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Add Completion: Completion queue full'); + {$ENDIF} + + {Wait for Remove Event} + if SemaphoreWait(Instance.RemoveEvent) <> ERROR_SUCCESS then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Add Completion: Wait failed'); + {$ENDIF} + + Result:=VCHIQ_RETRY; + Exit; + end; + + {Check Closing} + if Instance.Closing then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Add Completion: Instance closing'); + {$ENDIF} + + Result:=VCHIQ_SUCCESS; + Exit; + end; + end; + + {Get Completion} + Completion:=@Instance.Completions[CompletionInsert and (VCHIQ_MAX_COMPLETIONS - 1)]; + + {Update Completion} + Completion.header:=Header; + Completion.reason:=Reason; + {N.B. service_userdata is updated while processing AWAIT_COMPLETION} + Completion.service_userdata:=UserService.service; + Completion.bulk_userdata:=BulkUserdata; + + {Check Reason} + if Reason = VCHIQ_SERVICE_CLOSED then + begin + {Take an extra reference, to be held until this CLOSED notification is delivered} + VCHIQLockService(UserService.service); + if Instance.UseCloseDelivered then + begin + UserService.close_pending:=True; + end; + end; + + {A write barrier is needed here to ensure that the entire completion record is written out before the insert point} + DataMemoryBarrier; + + {Check Reason} + if Reason = VCHIQ_MESSAGE_AVAILABLE then + begin + UserService.message_available_pos:=CompletionInsert; + end; + + {Update Completion Insert} + Inc(CompletionInsert); + Instance.CompletionInsert:=CompletionInsert; + + {Signal Insert Event} + SemaphoreSignal(Instance.InsertEvent); + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQServiceCallback(Reason:VCHIQ_REASON_T;Header:PVCHIQ_HEADER_T;Handle:VCHIQ_SERVICE_HANDLE_T;BulkUserdata:Pointer):VCHIQ_STATUS_T; +{From service_callback in vchiq_arm.c} +var + Status:VCHIQ_STATUS_T; + SkipCompletion:Boolean; + Instance:PVCHIQInstance; + Service:PVCHIQ_SERVICE_T; + UserService:PVCHIQ_USER_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Service Callback (Reason=' + VCHIQReasonToString(Reason) + ')'); + {$ENDIF} + + {How do we ensure the callback goes to the right client? The service userdata points to a VCHIQ_USER_SERVICE_T record + containing the original callback and the user state structure, which contains a circular buffer for completion records} + + {Get Service} + Service:=VCHIQHandleToService(Handle); + if Service = nil then Exit; + + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Service.base.userdata); + if UserService = nil then Exit; + + {Get Instance} + Instance:=UserService.instance; + if (Instance = nil) or (Instance.Closing) then + begin + Result:=VCHIQ_SUCCESS; + Exit; + end; + + {Setup Defaults} + SkipCompletion:=False; + + {Check Header and User Service} + if (Header <> nil) and (UserService.is_vchi) then + begin + {Lock Spinlock} + if SpinLock(VCHIQMessageQueueLock) <> ERROR_SUCCESS then Exit; + + {Check Message Queue} + while UserService.msg_insert = (UserService.msg_remove + VCHIQ_MSG_QUEUE_SIZE) do + begin + {Unlock Spinlock} + SpinUnlock(VCHIQMessageQueueLock); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Service Callback: Message queue full'); + {$ENDIF} + + {If there is no MESSAGE_AVAILABLE in the completion queue, add one} + if (UserService.message_available_pos - Instance.CompletionRemove) < 0 then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Service Callback: Inserting extra MESSAGE_AVAILABLE'); + {$ENDIF} + + {Add Completion} + Status:=VCHIQAddCompletion(Instance,Reason,nil,UserService,BulkUserdata); + if Status <> VCHIQ_SUCCESS then + begin + Result:=Status; + Exit; + end; + end; + + {Wait for Remove Event} + if SemaphoreWait(UserService.remove_event) <> ERROR_SUCCESS then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Service Callback: Wait failed'); + {$ENDIF} + + Result:=VCHIQ_RETRY; + Exit; + end + else if Instance.Closing then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Service Callback: Instance closing'); + {$ENDIF} + + Result:=VCHIQ_ERROR; + Exit; + end; + + {Lock Spinlock} + SpinLock(VCHIQMessageQueueLock); + end; + + {Update Message Queue} + UserService.msg_queue[UserService.msg_insert and (VCHIQ_MSG_QUEUE_SIZE - 1)]:=Header; + Inc(UserService.msg_insert); + + {If there is a thread waiting in DEQUEUE_MESSAGE, or if there is a MESSAGE_AVAILABLE in the completion queue then bypass the completion queue} + if ((UserService.message_available_pos - Instance.CompletionRemove) >= 0) or (UserService.dequeue_pending) then + begin + UserService.dequeue_pending:=False; + SkipCompletion:=True; + end; + + {Unlock Spinlock} + SpinUnlock(VCHIQMessageQueueLock); + + {Signal Insert Event} + SemaphoreSignal(UserService.insert_event); + + {Reset Header} + Header:=nil; + end; + + {Check Skip} + if SkipCompletion then + begin + Result:=VCHIQ_SUCCESS; + Exit; + end; + + {Add Completion} + Result:=VCHIQAddCompletion(Instance,Reason,Header,UserService,BulkUserdata); +end; + +{==============================================================================} + +procedure VCHIQUserServiceFree(Userdata:Pointer); +{From user_service_free in vchiq_arm.c} +var + UserService:PVCHIQ_USER_SERVICE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: User Service Free (Userdata=' + IntToHex(PtrUInt(Userdata),8) + ')'); + {$ENDIF} + + {Check Userdata} + if Userdata = nil then Exit; + + {Get User Service} + UserService:=PVCHIQ_USER_SERVICE_T(Userdata); + + {Destroy Semaphores} + SemaphoreDestroy(UserService.insert_event); + SemaphoreDestroy(UserService.remove_event); + SemaphoreDestroy(UserService.close_event); + + {Invalidate Semaphores} + UserService.insert_event:=INVALID_HANDLE_VALUE; + UserService.remove_event:=INVALID_HANDLE_VALUE; + UserService.close_event:=INVALID_HANDLE_VALUE; + + {Free User Service} + FreeMem(UserService); +end; + +{==============================================================================} + +procedure VCHIQCloseDelivered(UserService:PVCHIQ_USER_SERVICE_T); +{From close_delivered in vchiq_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Close Delivered (UserService=' + IntToHex(PtrUInt(UserService),8) + ')'); + {$ENDIF} + + {Check User Service} + if UserService = nil then Exit; + + if UserService.close_pending then + begin + {Allow the underlying service to be culled} + VCHIQUnlockService(UserService.service); + + {Wake the user-thread blocked in close_ or remove_service} + SemaphoreSignal(UserService.close_event); + + UserService.close_pending:=False; + end; +end; + +{==============================================================================} + +function VCHIQPrepareBulkData(Bulk:PVCHIQ_BULK_T;MemHandle:VCHI_MEM_HANDLE_T;Offset:Pointer;Size:Integer;Dir:VCHIQ_BULK_DIR_T):VCHIQ_STATUS_T; +{From vchiq_prepare_bulk_data in vchiq_2835_arm.c} +var + PageType:Word; + Pagelist:PVCHIQ_PAGELIST_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Prepare Bulk Data (Bulk=' + IntToHex(PtrUInt(Bulk),8) + ' MemHandle=' + IntToHex(MemHandle,8) + ' Offset=' + IntToHex(PtrUInt(Offset),8) + ' Size=' + IntToStr(Size) + ' Dir=' + VCHIQBulkDirToString(Dir) + ')'); + {$ENDIF} + + {Check Bulk} + if Bulk = nil then Exit; + + {Check MemHandle} + if MemHandle <> VCHI_MEM_HANDLE_INVALID then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: MemHandle <> VCHI_MEM_HANDLE_INVALID'); + end; + + {Get Page Type} + PageType:=VCHIQ_PAGELIST_WRITE; + if Dir = VCHIQ_BULK_RECEIVE then PageType:=VCHIQ_PAGELIST_READ; + + {Create Pagelist} + if VCHIQCreatePagelist(Offset,Size,PageType,Pagelist) <> ERROR_SUCCESS then Exit; + + {Update Bulk} + Bulk.handle:=MemHandle; + Bulk.data:=Pointer(PhysicalToBusAddress(Pagelist)); + + {Store the pagelist address in remote_data, which isn't used by the slave} + Bulk.remote_data:=Pagelist; + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +procedure VCHIQCompleteBulk(Bulk:PVCHIQ_BULK_T); +{From vchiq_complete_bulk in vchiq_2835_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Complete Bulk (Bulk=' + IntToHex(PtrUInt(Bulk),8) + ')'); + {$ENDIF} + + {Check Bulk} + if Bulk = nil then Exit; + + {Check Remote Data} + if Bulk.remote_data = nil then Exit; + + {Check Actual Size} + if Bulk.actual = 0 then Exit; + + {Free Pagelist} + VCHIQFreePagelist(PVCHIQ_PAGELIST_T(Bulk.remote_data),Bulk.actual); +end; + +{==============================================================================} + +procedure VCHIQTransferBulk(Bulk:PVCHIQ_BULK_T); +{From vchiq_transfer_bulk in vchiq_2835_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Transfer Bulk (Bulk=' + IntToHex(PtrUInt(Bulk),8) + ')'); + {$ENDIF} + + {This should only be called on the master (VideoCore) side} + ThreadHalt(0); +end; + +{==============================================================================} + +function VCHIQGetState:PVCHIQ_STATE_T; +{From vchiq_get_state in vchiq_arm.c} +begin + {} + Result:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Get State'); + {$ENDIF} + + if VCHIQState.remote = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQState.remote = nil'); + end + else if VCHIQState.remote.initialised <> 1 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQState.remote.initialised <> 1'); + end; + + if (VCHIQState.remote <> nil) and (VCHIQState.remote.initialised = 1) then + begin + Result:=VCHIQState; + end; +end; + +{==============================================================================} + +function VCHIQUseInternal(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T;UseType:VC_USE_TYPE_T):VCHIQ_STATUS_T; +{From vchiq_use_internal in vchiq_arm.c} +var + Entity:String; + LocalUseCount:Integer; + EntityUseCount:PInteger; + LocalEntityUseCount:Integer; + + AckCount:LongInt; + Status:VCHIQ_STATUS_T; + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Use Internal (State=' + IntToHex(PtrUInt(State),8) + ' Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + if PlatformState = nil then Exit; + + {Check Use Type} + if UseType = USE_TYPE_VCHIQ then + begin + Entity:='VCHIQ:'; + EntityUseCount:=@PlatformState.peer_use_count; + end + else if Service <> nil then + begin + Entity:=VCHIQFourccToString(Service.base.fourcc) + ':' + IntToStr(Service.client_id); + EntityUseCount:=@Service.service_use_count; + end + else + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Service = nil'); + + Exit; + end; + + {Lock Writer} + SynchronizerWriterLock(PlatformState.susp_res_lock); + + while PlatformState.resume_blocked <> 0 do + begin + {If we call 'use' while force suspend is waiting for suspend, then we're about to block the thread which the force is waiting to complete, so + we're bound to just time out. In this case, set the suspend state such that the wait will be canceled, so we can complete as quickly as possible} + if (PlatformState.resume_blocked <> 0) and (PlatformState.vc_suspend_state = VC_SUSPEND_IDLE) then + begin + {Set Suspend State} + VCHIQSetSuspendState(PlatformState,VC_SUSPEND_FORCE_CANCELED); + + Break; + end; + + {If suspend is already in progress then we need to block} + if CompletionTryWait(PlatformState.resume_blocker) = ERROR_NOT_READY then + begin + {Indicate that there are threads waiting on the resume blocker. These need to be allowed to complete before + a _second_ call to force suspend can complete, otherwise low priority threads might never actually continue} + Inc(PlatformState.blocked_count); + + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Resume Blocked Waiting (Entity=' + Entity + ')'); + {$ENDIF} + + if CompletionWait(PlatformState.resume_blocker) <> ERROR_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Wait for resume blocker failed'); + + {Lock Writer} + SynchronizerWriterLock(PlatformState.susp_res_lock); + + {Update Blocked Count} + Dec(PlatformState.blocked_count); + + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); + + Exit; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Resume Unblocked (Entity=' + Entity + ')'); + {$ENDIF} + + {Lock Writer} + SynchronizerWriterLock(PlatformState.susp_res_lock); + + {Update Blocked Count} + Dec(PlatformState.blocked_count); + if PlatformState.blocked_count = 0 then + begin + CompletionCompleteAll(PlatformState.blocked_blocker); + end; + end; + end; + + {Stop Suspend Timer} + VCHIQStopSuspendTimer(PlatformState); + + {Update Use Count} + Inc(PlatformState.videocore_use_count); + LocalUseCount:=PlatformState.videocore_use_count; + Inc(EntityUseCount^); + LocalEntityUseCount:=EntityUseCount^; + + {If there's a pending request which hasn't yet been serviced then just clear it. If we're past VC_SUSPEND_REQUESTED + state then vc_resume_complete will block until we either resume or fail to suspend} + if PlatformState.vc_suspend_state <= VC_SUSPEND_REQUESTED then + begin + {Set Suspend State} + VCHIQSetSuspendState(PlatformState,VC_SUSPEND_IDLE); + end; + + {Check Use Type} + if (UseType <> USE_TYPE_SERVICE_NO_RESUME) and VCHIQNeedResume(State) then + begin + {Set Resume State} + VCHIQSetResumeState(PlatformState,VC_RESUME_REQUESTED); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Use Internal (Entity=' + Entity + ' EntityUseCount=' + IntToStr(LocalEntityUseCount) + ' UseCount=' + IntToStr(LocalUseCount) + ')'); + {$ENDIF} + + {Request Poll} + VCHIQRequestPoll(State,nil,VCHIQ_POLL_TERMINATE); {Note: PollType not used if Service is nil} + end + else + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Use Internal (Entity=' + Entity + ' EntityUseCount=' + IntToStr(EntityUseCount^) + ' UseCount=' + IntToStr(LocalUseCount) + ')'); + {$ENDIF} + end; + + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); + + {Completion is in a done state when we're not suspended, so this won't block for the non-suspended case} + if CompletionTryWait(PlatformState.vc_resume_complete) = ERROR_NOT_READY then + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Wait for Resume (Entity=' + Entity + ')'); + {$ENDIF} + + if CompletionWait(PlatformState.vc_resume_complete) <> ERROR_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Wait for resume complete failed'); + + Exit; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Resumed (Entity=' + Entity + ')'); + {$ENDIF} + end; + + {Get Ack Count} + Status:=VCHIQ_SUCCESS; + AckCount:=InterlockedExchange(PlatformState.ka_use_ack_count,0); + while (AckCount <> 0) and (Status = VCHIQ_SUCCESS) do + begin + {Send the use notify to videocore} + Status:=VCHIQSendRemoteUseActive(State); + if Status = VCHIQ_SUCCESS then + begin + {Update Ack Count} + Dec(AckCount); + end + else + begin + {Restore Ack Count} + InterlockedAddExchange(PlatformState.ka_use_ack_count,AckCount); + end; + end; + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQReleaseInternal(State:PVCHIQ_STATE_T;Service:PVCHIQ_SERVICE_T):VCHIQ_STATUS_T; +{From vchiq_release_internal in vchiq_arm.c} +var + Entity:String; + {LocalUseCount:Integer;} {Not Used} + EntityUseCount:PInteger; + {LocalEntityUseCount:Integer;} {Not Used} + + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Internal (State=' + IntToHex(PtrUInt(State),8) + ' Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + if PlatformState = nil then Exit; + + {Check Service} + if Service <> nil then + begin + Entity:=VCHIQFourccToString(Service.base.fourcc) + ':' + IntToStr(Service.client_id); + EntityUseCount:=@Service.service_use_count; + end + else + begin + Entity:='PEER:'; + EntityUseCount:=@PlatformState.peer_use_count; + end; + + {Lock Writer} + SynchronizerWriterLock(PlatformState.susp_res_lock); + try + {Check Use Count} + if (PlatformState.videocore_use_count = 0) or (EntityUseCount^ = 0) then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: (PlatformState.videocore_use_count = 0) or (EntityUseCount^ = 0)'); + + Result:=VCHIQ_ERROR; + Exit; + end; + + {Update Use Count} + Dec(PlatformState.videocore_use_count); + {LocalUseCount:=PlatformState.videocore_use_count;} {Not Used} + Dec(EntityUseCount^); + {LocalEntityUseCount:=EntityUseCount^;} {Not Used} + + {Check VideoCore Wanted} + if not VCHIQVideocoreWanted(State) then + begin + {Check Suspend Timer and Resume Blocked} + if (VCHIQPlatformUseSuspendTimer <> 0) and (PlatformState.resume_blocked = 0) then + begin + {Only use the timer if we're not trying to force suspend (=> resume_blocked)} + VCHIQStartSuspendTimer(PlatformState); + end + else + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Internal - Suspending (Entity=' + Entity + ' EntityUseCount=' + IntToStr(EntityUseCount^) + ' VideocoreUseCount=' + IntToStr(PlatformState.videocore_use_count) + ')'); + {$ENDIF} + + {ARM VC Suspend} + VCHIQARMVCSuspend(State); + end; + end + else + begin + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Internal (Entity=' + Entity + ' EntityUseCount=' + IntToStr(EntityUseCount^) + ' VideocoreUseCount=' + IntToStr(PlatformState.videocore_use_count) + ')'); + {$ENDIF} + end; + + {Return Success} + Result:=VCHIQ_SUCCESS; + finally + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); + end; +end; + +{==============================================================================} + +procedure VCHIQOnRemoteUse(State:PVCHIQ_STATE_T); +{From vchiq_on_remote_use in vchiq_arm.c} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: On Remote Use (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + + {Update Use Count} + InterlockedIncrement(PlatformState.ka_use_count); + + {Signal Completion} + CompletionComplete(PlatformState.ka_evt); +end; + +{==============================================================================} + +procedure VCHIQOnRemoteRelease(State:PVCHIQ_STATE_T); +{From vchiq_on_remote_release in vchiq_arm.c} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: On Remote Release (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + + {Update Release Count} + InterlockedIncrement(PlatformState.ka_release_count); + + {Signal Completion} + CompletionComplete(PlatformState.ka_evt); +end; + +{==============================================================================} + +function VCHIQUseServiceInternal(Service:PVCHIQ_SERVICE_T):VCHIQ_STATUS_T; +{From vchiq_use_service_internal in vchiq_arm.c} +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Use Service Internal (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Use Internal} + Result:=VCHIQUseInternal(Service.state,Service,USE_TYPE_SERVICE); +end; + +{==============================================================================} + +function VCHIQReleaseServiceInternal(Service:PVCHIQ_SERVICE_T):VCHIQ_STATUS_T; +{From vchiq_release_service_internal in vchiq_arm.c} +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Release Service Internal (Service=' + IntToHex(PtrUInt(Service),8) + ')'); + {$ENDIF} + + {Check Service} + if Service = nil then Exit; + + {Release Internal} + Result:=VCHIQReleaseInternal(Service.state,Service); +end; + +{==============================================================================} + +function VCHIQInstanceGetUseCount(Instance:PVCHIQInstance):Integer; +{From vchiq_instance_get_use_count in vchiq_arm.c} +var + Index:Integer; + UseCount:Integer; + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Instance Get Use Count (Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Set Defaults} + Index:=0; + UseCount:=0; + + {Get Service} + Service:=VCHIQNextServiceByInstance(Instance.State,Instance,Index); + while Service <> nil do + begin + {Update Use Count} + Inc(UseCount,Service.service_use_count); + + {Unlock Service} + VCHIQUnlockService(Service); + + {Next Service} + Service:=VCHIQNextServiceByInstance(Instance.State,Instance,Index); + end; + + {Return Use Count} + Result:=UseCount; +end; + +{==============================================================================} + +function VCHIQInstanceGetPID(Instance:PVCHIQInstance):Integer; +{From vchiq_instance_get_pid in vchiq_arm.c} +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Instance Get PID (Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Return PID} + Result:=Instance.PID; +end; + +{==============================================================================} + +function VCHIQInstanceGetTrace(Instance:PVCHIQInstance):Boolean; +{From vchiq_instance_get_trace in vchiq_arm.c} +begin + {} + Result:=False; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Instance Get Trace (Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Return Trace} + Result:=Instance.Trace; +end; + +{==============================================================================} + +procedure VCHIQInstanceSetTrace(Instance:PVCHIQInstance;Trace:Integer); +{From vchiq_instance_set_trace in vchiq_arm.c} +var + Index:Integer; + Service:PVCHIQ_SERVICE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Instance Set Trace (Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Set Defaults} + Index:=0; + + {Get Service} + Service:=VCHIQNextServiceByInstance(Instance.State,Instance,Index); + while Service <> nil do + begin + {Set Trace} + Service.trace:=Trace; + + {Unlock Service} + VCHIQUnlockService(Service); + + {Next Service} + Service:=VCHIQNextServiceByInstance(Instance.State,Instance,Index); + end; + + {Set Trace} + Instance.Trace:=(Trace <> 0); +end; + +{==============================================================================} + +procedure VCHIQDumpPhysicalMemory(VirtAddr:Pointer;NumBytes:LongWord); +{From dump_phys_mem in vchiq_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Dump Physical Memory (VirtAddr=' + IntToHex(PtrUInt(VirtAddr),8) + ' NumBytes=' + IntToStr(NumBytes) + ')'); + {$ENDIF} + + //To Do //Continuing + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQDumpPhysicalMemory'); //To Do //Temp + +end; + +{==============================================================================} + +procedure VCHIQOnRemoteUseActive(State:PVCHIQ_STATE_T); +{From vchiq_on_remote_use_active in vchiq_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: On Remote Use Active (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Nothing} +end; + +{==============================================================================} + +procedure VCHIQPlatformConnStateChanged(State:PVCHIQ_STATE_T;OldState,NewState:VCHIQ_CONNSTATE_T); +{From vchiq_platform_conn_state_changed in vchiq_arm.c} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Conn State Changed (State=' + IntToHex(PtrUInt(State),8) + ' OldState=' + VCHIQConnStateToString(OldState) + ' NewState=' + VCHIQConnStateToString(NewState) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Check Connection State} + if State.conn_state = VCHIQ_CONNSTATE_CONNECTED then + begin + {Get Platform State} + PlatformState:=State.platform_state; + if PlatformState = nil then Exit; + + {Lock Writer} + if SynchronizerWriterLock(PlatformState.susp_res_lock) <> ERROR_SUCCESS then Exit; + + {Check First Connect} + if not PlatformState.first_connect then + begin + {Set First Connect} + PlatformState.first_connect:=True; + + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); + + {Create Keepalive Thread} + PlatformState.ka_thread:=BeginThread(TThreadStart(VCHIQKeepaliveExecute),State,PlatformState.ka_thread,VCHIQ_KEEPALIVE_THREAD_STACK_SIZE); + if PlatformState.ka_thread = INVALID_HANDLE_VALUE then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Conn State: Failed to create keepalive thread'); + Exit; + end; + ThreadSetPriority(PlatformState.ka_thread,VCHIQ_KEEPALIVE_THREAD_PRIORITY); + ThreadSetName(PlatformState.ka_thread,VCHIQ_KEEPALIVE_THREAD_NAME); + end + else + begin + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); + end; + end; +end; + +{==============================================================================} + +procedure VCHIQRemoteEventSignal(Event:PREMOTE_EVENT_T); +{From remote_event_signal in vchiq_2835_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Remote Event Signal (Event=' + IntToHex(PtrUInt(Event),8) + ')'); + {$ENDIF} + + {Check Event} + if Event = nil then Exit; + + {Memory Barrier} + DataMemoryBarrier; + + {Set Fired} + Event.fired:=1; + + {Synchronization Barrier} + DataSynchronizationBarrier; + + {Check Armed} + if Event.armed <> 0 then + begin + {Memory Barrier} + DataMemoryBarrier; {Before the First Write} + + {Trigger VC Interrupt} + PLongWord(PERIPHERALS_BASE + VCHIQ_DOORBELL_REGS_BASE + VCHIQ_DOORBELL_BELL2)^:=0; + end; +end; + +{==============================================================================} + +procedure VCHIQCheckSuspend(State:PVCHIQ_STATE_T); +{From vchiq_check_suspend in vchiq_arm.c} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Check Suspend (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + if PlatformState = nil then Exit; + + {Lock Writer} + if SynchronizerWriterLock(PlatformState.susp_res_lock) <> ERROR_SUCCESS then Exit; + + {Check State} + if (PlatformState.vc_suspend_state <> VC_SUSPEND_SUSPENDED) and PlatformState.first_connect and not(VCHIQVideocoreWanted(State)) then + begin + {ARM VC Suspend} + VCHIQARMVCSuspend(State); + end; + + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); +end; + +{==============================================================================} + +procedure VCHIQPlatformCheckSuspend(State:PVCHIQ_STATE_T); +{From vchiq_platform_check_suspend in vchiq_arm.c} +var + Suspend:Boolean; + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Check Suspend (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + if PlatformState = nil then Exit; + + {Set Defaults} + Suspend:=False; + + {Lock Writer} + if SynchronizerWriterLock(PlatformState.susp_res_lock) <> ERROR_SUCCESS then Exit; + + if (PlatformState.vc_suspend_state = VC_SUSPEND_REQUESTED) and (PlatformState.vc_resume_state = VC_RESUME_RESUMED) then + begin + VCHIQSetSuspendState(PlatformState,VC_SUSPEND_IN_PROGRESS); + Suspend:=True; + end; + + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); + + {Check Suspend} + if Suspend then + begin + {Platform Suspend} + VCHIQPlatformSuspend(State); + end; +end; + +{==============================================================================} + +function VCHIQPlatformSuspend(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +{From vchiq_platform_suspend in vchiq_2835_arm.c} +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Suspend (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function VCHIQPlatformResume(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +{From vchiq_platform_resume in vchiq_2835_arm.c} +begin + {} + Result:=VCHIQ_SUCCESS; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Resume (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +procedure VCHIQPlatformPaused(State:PVCHIQ_STATE_T); +{From vchiq_platform_paused in vchiq_2835_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Paused (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +procedure VCHIQPlatformResumed(State:PVCHIQ_STATE_T); +{From vchiq_platform_resumed in vchiq_2835_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Resumed (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function VCHIQVideocoreWanted(State:PVCHIQ_STATE_T):Boolean; +{From vchiq_videocore_wanted in vchiq_arm.c} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + Result:=True; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Videocore Wanted (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + + {Check Platform State} + if PlatformState = nil then + begin + {Autosuspend not supported (Always return wanted)} + Result:=True; + end + else if PlatformState.blocked_count <> 0 then + begin + Result:=True; + end + else if PlatformState.videocore_use_count = 0 then + begin + {Usage count zero (Check for override unless forcing)} + if PlatformState.resume_blocked <> 0 then + begin + Result:=False; + end + else + begin + Result:=VCHIQPlatformVideocoreWanted(State); + end; + end + else + begin + {Non-zero usage count (Videocore still required)} + Result:=True; + end; +end; + +{==============================================================================} + +function VCHIQPlatformVideocoreWanted(State:PVCHIQ_STATE_T):Boolean; +{From vchiq_platform_videocore_wanted in vchiq_2835_arm.c} +begin + {} + Result:=True; {Autosuspend not supported (Videocore always wanted)} + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Videocore Wanted (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +function VCHIQPlatformUseSuspendTimer:Integer; +{From vchiq_platform_use_suspend_timer in vchiq_2835_arm.c} +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Use Suspend Timer'); + {$ENDIF} +end; + +{==============================================================================} + +procedure VCHIQDumpPlatformUseState(State:PVCHIQ_STATE_T); +{From vchiq_dump_platform_use_state in vchiq_2835_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Dump Platform Use State (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +procedure VCHIQPlatformHandleTimeout(State:PVCHIQ_STATE_T); +{From vchiq_platform_handle_timeout in vchiq_2835_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Platform Handle Timeout (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} +end; + +{==============================================================================} + +procedure VCHIQSetSuspendState(PlatformState:PVCHIQ_PLATFORM_STATE_T;NewState:VC_SUSPEND_STATUS_T); +{From set_suspend_state in vchiq_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Set Suspend State (PlatformState=' + IntToHex(PtrUInt(PlatformState),8) + ' NewState=' + VCHIQSuspendStatusToString(NewState) + ')'); + {$ENDIF} + + {Check Platform State} + if PlatformState = nil then Exit; + + {Set the state in all cases} + PlatformState.vc_suspend_state:=NewState; + + {State specific additional actions} + case NewState of + VC_SUSPEND_FORCE_CANCELED:begin + CompletionCompleteAll(PlatformState.vc_suspend_complete); + end; + VC_SUSPEND_REJECTED:begin + CompletionCompleteAll(PlatformState.vc_suspend_complete); + end; + VC_SUSPEND_FAILED:begin + CompletionCompleteAll(PlatformState.vc_suspend_complete); + + PlatformState.vc_resume_state:=VC_RESUME_RESUMED; + + CompletionCompleteAll(PlatformState.vc_resume_complete); + end; + VC_SUSPEND_IDLE:begin + CompletionReset(PlatformState.vc_suspend_complete); + end; + VC_SUSPEND_REQUESTED:begin + {Nothing} + end; + VC_SUSPEND_IN_PROGRESS:begin + VCHIQSetResumeState(PlatformState,VC_RESUME_IDLE); + end; + VC_SUSPEND_SUSPENDED:begin + CompletionCompleteAll(PlatformState.vc_suspend_complete); + end; + end; +end; + +{==============================================================================} + +procedure VCHIQSetResumeState(PlatformState:PVCHIQ_PLATFORM_STATE_T;NewState:VC_RESUME_STATUS_T); +{From set_resume_state in vchiq_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Set Resume State (PlatformState=' + IntToHex(PtrUInt(PlatformState),8) + ' NewState=' + VCHIQResumeStatusToString(NewState) + ')'); + {$ENDIF} + + {Check Platform State} + if PlatformState = nil then Exit; + + {Set the state in all cases} + PlatformState.vc_resume_state:=NewState; + + {State specific additional actions} + case NewState of + VC_RESUME_FAILED:begin + {Nothing} + end; + VC_RESUME_IDLE:begin + CompletionReset(PlatformState.vc_resume_complete); + end; + VC_RESUME_REQUESTED:begin + {Nothing} + end; + VC_RESUME_IN_PROGRESS:begin + {Nothing} + end; + VC_RESUME_RESUMED:begin + CompletionCompleteAll(PlatformState.vc_resume_complete); + + VCHIQSetSuspendState(PlatformState,VC_SUSPEND_IDLE); + end; + end; +end; + +{==============================================================================} + +procedure VCHIQStartSuspendTimer(PlatformState:PVCHIQ_PLATFORM_STATE_T); +{From start_suspend_timer in vchiq_arm.c} + +{Should be called with the write lock held} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Start Suspend Timer (PlatformState=' + IntToHex(PtrUInt(PlatformState),8) + ')'); + {$ENDIF} + + {Check PlatformState} + if PlatformState = nil then Exit; + + {Disable Timer} + TimerDisable(PlatformState.suspend_timer); + + {Enable Timer} + TimerEnable(PlatformState.suspend_timer); + + {Update Running} + PlatformState.suspend_timer_running:=True; +end; + +{==============================================================================} + +procedure VCHIQStopSuspendTimer(PlatformState:PVCHIQ_PLATFORM_STATE_T); +{From stop_suspend_timer in vchiq_arm.c} + +{Should be called with the write lock held} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Stop Suspend Timer (PlatformState=' + IntToHex(PtrUInt(PlatformState),8) + ')'); + {$ENDIF} + + {Check PlatformState} + if PlatformState = nil then Exit; + + {Check Running} + if PlatformState.suspend_timer_running then + begin + {Disable Timer} + TimerDisable(PlatformState.suspend_timer); + + {Update Running} + PlatformState.suspend_timer_running:=False; + end; +end; + +{==============================================================================} + +function VCHIQNeedResume(State:PVCHIQ_STATE_T):Boolean; +{From need_resume in vchiq_arm.c} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + Result:=False; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Need Resume (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + if PlatformState = nil then Exit; + + {Get Result} + Result:=(PlatformState.vc_suspend_state > VC_SUSPEND_IDLE) and (PlatformState.vc_resume_state < VC_RESUME_REQUESTED) and VCHIQVideocoreWanted(State); +end; + +{==============================================================================} + +function VCHIQBlockResume(PlatformState:PVCHIQ_PLATFORM_STATE_T):VCHIQ_STATUS_T; +{From block_resume in vchiq_arm.c} +var + ResumeCount:Integer; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Block Resume (PlatformState=' + IntToHex(PtrUInt(PlatformState),8) + ')'); + {$ENDIF} + + {Check Platform State} + if PlatformState = nil then Exit; + + {Allow any threads which were blocked by the last force suspend to complete if they haven't already. Only give this one shot; if blocked_count is + incremented after blocked_blocker is completed (which only happens when blocked_count hits 0) then those threads will have to wait until next time around} + if PlatformState.blocked_count <> 0 then + begin + {Reset Completion} + CompletionReset(PlatformState.blocked_blocker); + + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Block Resume: Wait for previously blocked clients (BlockedCount=' + IntToStr(PlatformState.blocked_count) + ')'); + {$ENDIF} + + {Wait for Completion} + if CompletionWait(PlatformState.blocked_blocker,VCHIQ_FORCE_SUSPEND_TIMEOUT_MS) <> ERROR_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Block Resume: Wait for previously blocked clients failed'); + + {Lock Writer} + SynchronizerWriterLock(PlatformState.susp_res_lock); + + Result:=VCHIQ_ERROR; + Exit; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Block Resume: Previously blocked clients resumed'); + {$ENDIF} + + {Lock Writer} + SynchronizerWriterLock(PlatformState.susp_res_lock); + end; + + {We need to wait for resume to complete if it's in process} + ResumeCount:=0; + while (PlatformState.vc_resume_state <> VC_RESUME_RESUMED) and (PlatformState.vc_resume_state > VC_RESUME_IDLE) do + begin + {Check Resume Count} + if ResumeCount > 1 then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Block Resume: Waited too many times for resume'); + + Result:=VCHIQ_ERROR; + Exit; + end; + + {Unlock Writer} + SynchronizerWriterUnlock(PlatformState.susp_res_lock); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Block Resume: Wait for resume'); + {$ENDIF} + + {Wait for Completion} + if CompletionWait(PlatformState.vc_resume_complete,VCHIQ_FORCE_SUSPEND_TIMEOUT_MS) <> ERROR_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Block Resume: Wait for resume failed (ResumeState=' + VCHIQResumeStatusToString(PlatformState.vc_resume_state) + ')'); + + {Lock Writer} + SynchronizerWriterLock(PlatformState.susp_res_lock); + + Result:=VCHIQ_ERROR; + Exit; + end; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Block Resume: Resumed'); + {$ENDIF} + + {Lock Writer} + SynchronizerWriterLock(PlatformState.susp_res_lock); + + {Update Resume Count} + Inc(ResumeCount); + end; + + {Reset Completion} + CompletionReset(PlatformState.resume_blocker); + + {Update Resume Blocked} + PlatformState.resume_blocked:=1; + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +procedure VCHIQUnlockResume(PlatformState:PVCHIQ_PLATFORM_STATE_T); +{From unblock_resume in vchiq_arm.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Unblock Resume (PlatformState=' + IntToHex(PtrUInt(PlatformState),8) + ')'); + {$ENDIF} + + {Check Platform State} + if PlatformState = nil then Exit; + + CompletionCompleteAll(PlatformState.resume_blocker); + PlatformState.resume_blocked:=0; +end; + +{==============================================================================} + +function VCHIQARMVCSuspend(State:PVCHIQ_STATE_T):VCHIQ_STATUS_T; +{From vchiq_arm_vcsuspend in vchiq_arm.c} + +{Initiate suspend via slot handler. Should be called with the write lock held} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: ARM VC Suspend (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + if PlatformState = nil then Exit; + + {Check Suspend State} + case PlatformState.vc_suspend_state of + VC_SUSPEND_REQUESTED:begin + if DEVICE_LOG_ENABLED then DeviceLogInfo(nil,'VCHIQ: Suspend already requested'); + end; + VC_SUSPEND_IN_PROGRESS:begin + if DEVICE_LOG_ENABLED then DeviceLogInfo(nil,'VCHIQ: Suspend already in progress'); + end; + VC_SUSPEND_REJECTED, + VC_SUSPEND_FAILED:begin + {Ensure any idle state actions have been run} + VCHIQSetSuspendState(PlatformState,VC_SUSPEND_IDLE); + + if DEVICE_LOG_ENABLED then DeviceLogInfo(nil,'VCHIQ: Suspending'); + + {Set Suspend State} + VCHIQSetSuspendState(PlatformState,VC_SUSPEND_REQUESTED); + + {Ask the slot handler thread to initiate suspend} + VCHIQRequestPoll(State,nil,VCHIQ_POLL_TERMINATE); {Note: PollType not used if Service is nil} + end; + VC_SUSPEND_IDLE:begin + if DEVICE_LOG_ENABLED then DeviceLogInfo(nil,'VCHIQ: Suspending'); + + {Set Suspend State} + VCHIQSetSuspendState(PlatformState,VC_SUSPEND_REQUESTED); + + {Ask the slot handler thread to initiate suspend} + VCHIQRequestPoll(State,nil,VCHIQ_POLL_TERMINATE); {Note: PollType not used if Service is nil} + end; + else + begin + {We don't expect to be in other states, so log but continue anyway} + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Unexpected suspend state (State=' + VCHIQSuspendStatusToString(PlatformState.vc_suspend_state) + ')'); + + {Ensure any idle state actions have been run} + VCHIQSetSuspendState(PlatformState,VC_SUSPEND_IDLE); + + if DEVICE_LOG_ENABLED then DeviceLogInfo(nil,'VCHIQ: Suspending'); + + {Set Suspend State} + VCHIQSetSuspendState(PlatformState,VC_SUSPEND_REQUESTED); + + {Ask the slot handler thread to initiate suspend} + VCHIQRequestPoll(State,nil,VCHIQ_POLL_TERMINATE); {Note: PollType not used if Service is nil} + end; + end; + + {Return Success} + Result:=VCHIQ_SUCCESS +end; + +{==============================================================================} + +procedure VCHIQSuspendTimerCallback(State:PVCHIQ_STATE_T); +{From suspend_timer_callback in vchiq_arm.c} +var + PlatformState:PVCHIQ_PLATFORM_STATE_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Suspend Timer Callback (State=' + IntToHex(PtrUInt(State),8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + if PlatformState = nil then Exit; + + {Check Suspend} + VCHIQCheckSuspend(State); +end; + +{==============================================================================} + +function VCHIQCreatePages(Data:Pointer;Count:PtrUInt;PageType:Word;NumPages:LongWord;Pages:PVCHIQ_PAGELIST_PAGES):LongWord; +var + PageCount:LongWord; + BaseAddress:PtrUInt; + PageTableEntry:TPageTableEntry; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Create Pages (Data=' + IntToHex(PtrUInt(Data),8) + ' Count=' + IntToStr(Count) + ' PageType=' + VCHIQPageTypeToString(PageType) + ' NumPages=' + IntToStr(NumPages) + ' Pages=' + IntToHex(PtrUInt(Pages),8) + ')'); + {$ENDIF} + + {Check Data} + if Data = nil then Exit; + + {Check Pages} + if Pages = nil then Exit; + + {Get Base} + BaseAddress:=PtrUInt(Data) and not(MEMORY_PAGE_SIZE - 1); + + {Get Pages} + for PageCount:=0 to NumPages - 1 do + begin + {Get Page} + PageTableGetEntry(BaseAddress,PageTableEntry); + + {Check Page} + if PageTableEntry.Size <> MEMORY_PAGE_SIZE then + begin + {Update Page} + PageTableEntry.Size:=MEMORY_PAGE_SIZE; + + {Set Page} + PageTableSetEntry(PageTableEntry); + + {Get Page} + PageTableGetEntry(BaseAddress,PageTableEntry); + end; + + {Get Physical Address} + Pages[PageCount]:=PageTableEntry.PhysicalAddress; + + {Update Base} + Inc(BaseAddress,MEMORY_PAGE_SIZE); + end; + + {Return Success} + Result:=ERROR_SUCCESS; +end; + +{==============================================================================} + +function VCHIQCreatePagelist(Data:Pointer;Count:PtrUInt;PageType:Word;var Pagelist:PVCHIQ_PAGELIST_T):LongWord; +{From create_pagelist in vchiq_2835_arm.c} +var + Offset:LongWord; + NumPages:LongWord; + PageCount:LongWord; + Fragments:Pointer; + PageAddress:Pointer; + BaseAddress:Pointer; + NextAddress:Pointer; + RunLength:Integer; + Addresses:PLongWord; {Use LongWord to ensure size as VC4 is 32-bit} + AddressIndex:Integer; + Pages:PVCHIQ_PAGELIST_PAGES; +begin + {} + Result:=ERROR_INVALID_PARAMETER; + + {Set Defaults} + Pagelist:=nil; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Create Pagelist (Data=' + IntToHex(PtrUInt(Data),8) + ' Count=' + IntToStr(Count) + ' PageType=' + VCHIQPageTypeToString(PageType) + ')'); + {$ENDIF} + + {Check Data} + if Data = nil then Exit; + + {Check VCHIQ} + if VCHIQDevice = nil then Exit; + + {Get Offset} + Offset:=PtrUInt(Data) and (MEMORY_PAGE_SIZE - 1); + + {Get Num Pages} + NumPages:=(Count + Offset + MEMORY_PAGE_SIZE - 1) div MEMORY_PAGE_SIZE; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Create Pagelist (Offset=' + IntToStr(Offset) + ' NumPages=' + IntToStr(NumPages) + ')'); + {$ENDIF} + + {Allocate enough storage to hold the page pointers and the page list} + Pagelist:=GetMem(SizeOf(VCHIQ_PAGELIST_T) + (NumPages * SizeOf(LongWord)) + (NumPages * SizeOf(PtrUInt))); + if Pagelist = nil then + begin + Result:=ERROR_NOT_ENOUGH_MEMORY; + Exit; + end; + + {Get Pages} + Pages:=PVCHIQ_PAGELIST_PAGES(PtrUInt(Pagelist) + SizeOf(VCHIQ_PAGELIST_T) + (NumPages * SizeOf(LongWord))); + + {Create Pages} + if VCHIQCreatePages(Data,Count,PageType,NumPages,Pages) <> ERROR_SUCCESS then + begin + {Free Pagelist} + FreeMem(Pagelist); + Pagelist:=nil; + + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Update Pagelist} + Pagelist.length:=Count; + Pagelist.pagetype:=PageType; + Pagelist.offset:=Offset; + + {Get Addresses} + Addresses:=@Pagelist.addrs[0]; + + {Check PageType} + if PageType = VCHIQ_PAGELIST_WRITE then + begin + {Clean Cache Range (Source)} + CleanDataCacheRange(PtrUInt(Data),Count); + end + else + begin + {Clean Cache Range (Dest)} + CleanDataCacheRange(PtrUInt(Data),Count); + end; + + {Group the pages into runs of contiguous physical pages} + BaseAddress:=Pointer(PhysicalToBusAddress(Pointer(Pages[0]))); + NextAddress:=BaseAddress + MEMORY_PAGE_SIZE; + RunLength:=0; + AddressIndex:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Create Pagelist (BaseAddress=' + IntToHex(PtrUInt(BaseAddress),8) + ' NextAddress=' + IntToHex(PtrUInt(NextAddress),8) + ')'); + {$ENDIF} + + for PageCount:=1 to NumPages - 1 do + begin + {Get Physical Address} + PageAddress:=Pointer(PhysicalToBusAddress(Pointer(Pages[PageCount]))); + + {Check Address and Length (Must be less than 16MB)} + if (PageAddress = NextAddress) and (RunLength < (MEMORY_PAGE_SIZE - 1)) then + begin + {Update Next and Length} + Inc(NextAddress,MEMORY_PAGE_SIZE); + Inc(RunLength); + end + else + begin + {Update Page} + Addresses[AddressIndex]:=LongWord(BaseAddress + RunLength); + Inc(AddressIndex); + + {Get Next Page} + BaseAddress:=NextAddress; + NextAddress:=BaseAddress + MEMORY_PAGE_SIZE; + RunLength:=0; + end; + end; + + {Update Last Page} + Addresses[AddressIndex]:=LongWord(BaseAddress + RunLength); + {Inc(AddressIndex);} {Not Used} + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Create Pagelist (AddressIndex=' + IntToStr(AddressIndex) + ' RunLength=' + IntToStr(RunLength) + ')'); + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Create Pagelist (BaseAddress=' + IntToHex(PtrUInt(BaseAddress),8) + ' NextAddress=' + IntToHex(PtrUInt(NextAddress),8) + ')'); + {$ENDIF} + + {Partial cache lines (fragments) require special measures} + if (PageType = VCHIQ_PAGELIST_READ) and (((Pagelist.offset and (VCHIQDevice.CacheLineSize - 1)) <> 0) or (((Pagelist.offset + Pagelist.length) and (VCHIQDevice.CacheLineSize - 1)) <> 0)) then + begin + + //To Do //Continuing //Resolve cache line size difference between ARMv6 and ARMv7 + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQCreatePagelist - Fragments'); //To Do //Temp + + {Wait Free Fragments} + if SemaphoreWait(VCHIQDevice.FragmentsSemaphore) <> ERROR_SUCCESS then + begin + {Free Pagelist} + FreeMem(Pagelist); + Pagelist:=nil; + + Result:=ERROR_OPERATION_FAILED; + Exit; + end; + + {Check Free Fragments} + if VCHIQDevice.FreeFragments = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Create Pagelist: VCHIQDevice.FreeFragments = nil'); + end; + + {Lock Mutex} + MutexLock(VCHIQDevice.FragmentsMutex); + + {Get Fragments} + Fragments:=VCHIQDevice.FreeFragments; + + {Update Free Fragments} + VCHIQDevice.FreeFragments:=PPointer(VCHIQDevice.FreeFragments)^; + + {Unlock Mutex} + MutexUnlock(VCHIQDevice.FragmentsMutex); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Create Pagelist (Fragments=' + IntToHex(PtrUInt(Fragments),8) + ' FreeFragments=' + IntToHex(PtrUInt(VCHIQDevice.FreeFragments),8) + ')'); + {$ENDIF} + + {Update Pagelist} + Pagelist.pagetype:=VCHIQ_PAGELIST_READ_WITH_FRAGMENTS + ((Fragments - VCHIQDevice.FragmentsBase) div VCHIQDevice.FragmentsSize); + end; + + {Clean Cache Range (Pagelist)} + CleanDataCacheRange(PtrUInt(Pagelist),SizeOf(VCHIQ_PAGELIST_T) + (NumPages * SizeOf(LongWord))); + + {Return Success} + Result:=ERROR_SUCCESS; +end; + +{==============================================================================} + +procedure VCHIQFreePagelist(Pagelist:PVCHIQ_PAGELIST_T;Actual:Integer); +{From free_pagelist in vchiq_2835_arm.c} +var + Bytes:LongWord; + Count:LongWord; + Offset:LongWord; + NumPages:LongWord; + PageCount:LongWord; + Fragments:Pointer; + HeadBytes:Integer; + TailBytes:Integer; + Pages:PVCHIQ_PAGELIST_PAGES; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Free Pagelist (Pagelist=' + IntToHex(PtrUInt(Pagelist),8) + ' Actual=' + IntToStr(Actual) + ')'); + {$ENDIF} + + {Check Pagelist} + if Pagelist = nil then Exit; + + {Check VCHIQ} + if VCHIQDevice = nil then Exit; + + {Get Num Pages} + NumPages:=(Pagelist.length + Pagelist.offset + MEMORY_PAGE_SIZE - 1) div MEMORY_PAGE_SIZE; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Free Pagelist (NumPages=' + IntToStr(NumPages) + ')'); + {$ENDIF} + + {Get Pages} + Pages:=PVCHIQ_PAGELIST_PAGES(PtrUInt(Pagelist) + SizeOf(VCHIQ_PAGELIST_T) + (NumPages * SizeOf(LongWord))); + + {Check PageType} + if Pagelist.pagetype <> VCHIQ_PAGELIST_WRITE then + begin + {Get Count and Offset} + Count:=Pagelist.length; + Offset:=Pagelist.offset; + + {Get Head and Tail Bytes} + HeadBytes:=0; + TailBytes:=0; + + {Check for Fragments} + if Pagelist.pagetype >= VCHIQ_PAGELIST_READ_WITH_FRAGMENTS then + begin + {Get Head Bytes} + HeadBytes:=(VCHIQDevice.CacheLineSize - Pagelist.offset) and (VCHIQDevice.CacheLineSize - 1); + + {Get Tail Bytes} + TailBytes:=(Pagelist.offset + Actual) and (VCHIQDevice.CacheLineSize - 1); + end; + + for PageCount:=0 to NumPages - 1 do + begin + {Get Bytes} + Bytes:=MEMORY_PAGE_SIZE - (Offset + HeadBytes); + if Bytes > Count then Bytes:=(Count - (HeadBytes + TailBytes)); + + {Invalidate Cache Range (Dest)} + InvalidateDataCacheRange(Pages[PageCount] + Offset + HeadBytes,Bytes); + + {Update Count and Offset} + Dec(Count,Bytes + HeadBytes); + Offset:=0; + + {Update Head Bytes} + HeadBytes:=0; + end; + end; + + {Deal with any partial cache lines (fragments)} + if Pagelist.pagetype >= VCHIQ_PAGELIST_READ_WITH_FRAGMENTS then + begin + + //To Do //Continuing //Resolve cache line size difference between ARMv6 and ARMv7 + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQFreePagelist - Fragments'); //To Do //Temp + + {Get Fragments} + Fragments:=VCHIQDevice.FragmentsBase + ((Pagelist.pagetype - VCHIQ_PAGELIST_READ_WITH_FRAGMENTS) * VCHIQDevice.FragmentsSize); + + {Get Head Bytes} + HeadBytes:=(VCHIQDevice.CacheLineSize - Pagelist.offset) and (VCHIQDevice.CacheLineSize - 1); + + {Get Tail Bytes} + TailBytes:=(Pagelist.offset + Actual) and (VCHIQDevice.CacheLineSize - 1); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Free Pagelist (HeadBytes=' + IntToStr(HeadBytes) + ' TailBytes=' + IntToStr(TailBytes) + ')'); + {$ENDIF} + + {Copy Head Bytes} + if (Actual >= 0) and (HeadBytes <> 0) then + begin + if HeadBytes > Actual then HeadBytes:=Actual; + + System.Move(Fragments^,Pointer(Pages[0] + Pagelist.offset)^,HeadBytes); + end; + + {Copy Tail Bytes} + if (Actual >= 0) and (HeadBytes < Actual) and (TailBytes <> 0) then + begin + System.Move(Pointer(Fragments + VCHIQDevice.CacheLineSize)^,Pointer(Pages[NumPages - 1] + PtrUInt((Pagelist.offset + Actual) and (MEMORY_PAGE_SIZE - 1) and not(VCHIQDevice.CacheLineSize - 1)))^,TailBytes); + end; + + {Lock Mutex} + MutexLock(VCHIQDevice.FragmentsMutex); + + {Update Fragments} + PPointer(Fragments)^:=VCHIQDevice.FreeFragments; + + {Set Free Fragments} + VCHIQDevice.FreeFragments:=Fragments; + + {Unlock Mutex} + MutexUnlock(VCHIQDevice.FragmentsMutex); + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Free Pagelist (Fragments=' + IntToHex(PtrUInt(Fragments),8) + ' FreeFragments=' + IntToHex(PtrUInt(VCHIQDevice.FreeFragments),8) + ')'); + {$ENDIF} + + {Wait Free Fragments} + SemaphoreSignal(VCHIQDevice.FragmentsSemaphore); + end; + + {Free Pagelist} + FreeMem(Pagelist); +end; + +{==============================================================================} + +procedure VCHIQDoorbellInterruptHandler(VCHIQ:PVCHIQDevice); +{From vchiq_doorbell_irq in vchiq_2835_arm.c} +var + Status:LongWord; +begin + {} + {Check VCHIQ} + if VCHIQ = nil then Exit; + + {Update Statistics} + Inc(VCHIQ.DoorbellInterruptCount); + + {Read (and Clear) the Doorbell} + Status:=PLongWord(PERIPHERALS_BASE + VCHIQ_DOORBELL_REGS_BASE + VCHIQ_DOORBELL_BELL0)^; + + {Memory Barrier} + DataMemoryBarrier; {After the Last Read} + + {Was the doorbell rung?} + if (Status and $04) <> 0 then + begin + VCHIQRemoteEventPollAll(VCHIQ.State); + end; +end; + +{==============================================================================} + +function VCHIQKeepaliveExecute(State:PVCHIQ_STATE_T):PtrInt; +{From vchiq_keepalive_thread_func in vchiq_arm.c} +var + UseCount:LongInt; + ReleaseCount:LongInt; + Status:VCHIQ_STATUS_T; + Instance:PVCHIQInstance; + Params:VCHIQ_SERVICE_PARAMS_T; + PlatformState:PVCHIQ_PLATFORM_STATE_T; + KeepaliveHandle:VCHIQ_SERVICE_HANDLE_T; +begin + {} + Result:=0; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Keepalive Execute (ThreadID=' + IntToHex(ThreadGetCurrent,8) + ')'); + {$ENDIF} + + {Check State} + if State = nil then Exit; + + {Get Platform State} + PlatformState:=State.platform_state; + if PlatformState = nil then Exit; + + {Update Priority} + Sleep(1); + + {Create Params} + Params.fourcc:=VCHIQ_MAKE_FOURCC('K','E','E','P'); + Params.callback:=VCHIQKeepaliveCallback; + Params.version:=VCHIQ_KEEPALIVE_VER; + Params.version_min:=VCHIQ_KEEPALIVE_VER_MIN; + + {Initialize} + Status:=VCHIQInitialise(Instance); + if Status <> VCHIQ_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Keepalive: Initialize failed (Status=' + VCHIQStatusToString(Status) + ')'); + + Exit; + end; + try + {Connect} + Status:=VCHIQConnect(Instance); + if Status <> VCHIQ_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Keepalive: Connect failed (Status=' + VCHIQStatusToString(Status) + ')'); + + Exit; + end; + + {Add Service} + Status:=VCHIQAddService(Instance,@Params,KeepaliveHandle); + if Status <> VCHIQ_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Keepalive: Add Service failed (Status=' + VCHIQStatusToString(Status) + ')'); + + Exit; + end; + + while True do + begin + {Set Defaults} + UseCount:=0; + ReleaseCount:=0; + + if CompletionWait(PlatformState.ka_evt) = ERROR_SUCCESS then + begin + {Read and clear counters. Do release_count then use_count to prevent getting more releases than uses} + ReleaseCount:=InterlockedExchange(PlatformState.ka_release_count,0); + UseCount:=InterlockedExchange(PlatformState.ka_use_count,0); + + {Call use/release service the requisite number of times. Process use before release so use counts don't go negative} + while UseCount <> 0 do + begin + {Increment Acknowledge Count} + InterlockedIncrement(PlatformState.ka_use_ack_count); + + {Use Service} + Status:=VCHIQUseService(KeepaliveHandle); + if Status <> VCHIQ_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Keepalive: Use Service failed (Status=' + VCHIQStatusToString(Status) + ')'); + end; + + {Decrement Use Count} + Dec(UseCount); + end; + + while ReleaseCount <> 0 do + begin + {Release Service} + Status:=VCHIQReleaseService(KeepaliveHandle); + if Status <> VCHIQ_SUCCESS then + begin + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Keepalive: Release Service failed (Status=' + VCHIQStatusToString(Status) + ')'); + end; + + {Decrement Release Count} + Dec(ReleaseCount); + end; + end + else + begin + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Keepalive: Wait failed'); + + Sleep(1000); + end; + end; + finally + {Shutdown} + VCHIQShutdown(Instance); + end; +end; + +{==============================================================================} + +function VCHIQKeepaliveCallback(Reason:VCHIQ_REASON_T;Header:PVCHIQ_HEADER_T;Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer):VCHIQ_STATUS_T; +{From vchiq_keepalive_vchiq_callback in vchiq_arm.c} +begin + {} + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Keepalive Callback (Reason=' + VCHIQReasonToString(Reason) + ')'); + + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} +{==============================================================================} +{VCHIQ Kernel Functions} +function VCHIQInitialise(var Instance:PVCHIQInstance):VCHIQ_STATUS_T; +{From vchiq_initialise in vchiq_kern_lib.c} + +{Note: This differs from VCHIQDeviceOpen but is compatible with it} +var + Count:Integer; + State:PVCHIQ_STATE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Initialise (Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {VideoCore may not be ready due to boot up timing. It may never be ready if kernel and firmware are mismatched, so don't block forever} + Count:=0; + while Count < VCHIQ_INIT_RETRIES do + begin + {Get State} + State:=VCHIQGetState; + if State <> nil then Break; + + MicrosecondDelay(500); + Inc(Count); + end; + + {Check Count} + if Count = VCHIQ_INIT_RETRIES then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Initialise: Videocore not intialized'); + Exit; + end + else if Count > 0 then + begin + if DEVICE_LOG_ENABLED then DeviceLogInfo(nil,'VCHIQ: Initialise: Videocore intialized after ' + IntToStr(Count) + ' retries'); + end; + + {Allocate Instance} + Instance:=AllocMem(SizeOf(TVCHIQInstance)); + if Instance = nil then + begin + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: Initialise: Failed to allocate instance'); + Exit; + end; + + {Initialize Instance} + Instance.VCHIQ:=VCHIQDevice; + Instance.State:=State; + Instance.PID:=1; {Ultibo has no concept of process so we use a dummy value} + Instance.InsertEvent:=SemaphoreCreate(0); + Instance.RemoveEvent:=SemaphoreCreate(0); + Instance.CompletionMutex:=MutexCreate; + Instance.BulkWaiterMutex:=MutexCreate; + + {Return Success} + Result:=VCHIQ_SUCCESS; +end; + +{==============================================================================} + +function VCHIQIsConnected(Instance:PVCHIQInstance):Boolean; inline; +{From vchiq_is_connected in vchiq_kern_lib.c} +begin + {} + Result:=(Instance <> nil) and (Instance.Connected); +end; + +{==============================================================================} + +function VCHIQConnect(Instance:PVCHIQInstance):VCHIQ_STATUS_T; +{From vchiq_connect in vchiq_kern_lib.c} +var + State:PVCHIQ_STATE_T; + Status:VCHIQ_STATUS_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Connect (Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Get State} + State:=Instance.State; + if State = nil then Exit; + + {Lock Mutex} + if MutexLock(State.mutex) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Connect Internal} + Status:=VCHIQConnectInternal(State,Instance); + if Status = VCHIQ_SUCCESS then + begin + Instance.Connected:=True; + end; + + {Unlock Mutex} + MutexUnlock(State.mutex); + + {Return Status} + Result:=Status; +end; + +{==============================================================================} + +function VCHIQShutdown(Instance:PVCHIQInstance):VCHIQ_STATUS_T; +{From vchiq_shutdown in vchiq_kern_lib.c} + +{Note: This differs from VCHIQDeviceClose} +var + State:PVCHIQ_STATE_T; + Status:VCHIQ_STATUS_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Shutdown (Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Get State} + State:=Instance.State; + if State = nil then Exit; + + {Lock Mutex} + if MutexLock(State.mutex) <> ERROR_SUCCESS then + begin + Result:=VCHIQ_RETRY; + Exit; + end; + + {Remove all services} + Status:=VCHIQShutdownInternal(State,Instance); + + {Unlock Mutex} + MutexUnlock(State.mutex); + + {Check Status} + if Status = VCHIQ_SUCCESS then + begin + //To Do //Continuing //Instance.bulk_waiter_list + //When freeing Waiter also free the bulk_waiter.event Semaphore + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQShutdown'); //To Do //Temp + + {Destroy Semaphores and Mutexes} + MutexDestroy(Instance.BulkWaiterMutex); + MutexDestroy(Instance.CompletionMutex); + SemaphoreDestroy(Instance.RemoveEvent); + SemaphoreDestroy(Instance.InsertEvent); + + {Invalidate Semaphores and Mutexes} + Instance.BulkWaiterMutex:=INVALID_HANDLE_VALUE; + Instance.CompletionMutex:=INVALID_HANDLE_VALUE; + Instance.RemoveEvent:=INVALID_HANDLE_VALUE; + Instance.InsertEvent:=INVALID_HANDLE_VALUE; + + {Free Instance} + FreeMem(Instance); + end; + + {Return Status} + Result:=Status; +end; + +{==============================================================================} + +function VCHIQAddService(Instance:PVCHIQInstance;Params:PVCHIQ_SERVICE_PARAMS_T;var Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +{From vchiq_add_service in vchiq_kern_lib.c} +var + State:PVCHIQ_STATE_T; + Status:VCHIQ_STATUS_T; + Service:PVCHIQ_SERVICE_T; + ServiceState:VCHIQ_SRVSTATE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {Set Defaults} + Handle:=VCHIQ_SERVICE_HANDLE_INVALID; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Add Service (Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Check Params} + {if Params = nil then Exit;} {Checked by VCHIQAddServiceInternal} + + {Get State} + State:=Instance.State; + if State = nil then Exit; + + {Get Service State} + ServiceState:=VCHIQ_SRVSTATE_HIDDEN; + if VCHIQIsConnected(Instance) then ServiceState:=VCHIQ_SRVSTATE_LISTENING; + + {Add Service Internal} + Service:=VCHIQAddServiceInternal(State,Params,ServiceState,Instance,nil); + if Service <> nil then + begin + {Return Handle} + Handle:=Service.handle; + + Status:=VCHIQ_SUCCESS; + end + else + begin + Status:=VCHIQ_ERROR; + end; + + {Return Status} + Result:=Status; +end; + +{==============================================================================} + +function VCHIQOpenService(Instance:PVCHIQInstance;Params:PVCHIQ_SERVICE_PARAMS_T;var Handle:VCHIQ_SERVICE_HANDLE_T):VCHIQ_STATUS_T; +{From vchiq_open_service in vchiq_kern_lib.c} +var + State:PVCHIQ_STATE_T; + Status:VCHIQ_STATUS_T; + Service:PVCHIQ_SERVICE_T; +begin + {} + Result:=VCHIQ_ERROR; + + {Set Defaults} + Handle:=VCHIQ_SERVICE_HANDLE_INVALID; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Open Service (Instance=' + IntToHex(PtrUInt(Instance),8) + ')'); + {$ENDIF} + + {Check Instance} + if Instance = nil then Exit; + + {Check Params} + {if Params = nil then Exit;} {Checked by VCHIQAddServiceInternal} + + {Get State} + State:=Instance.State; + if State = nil then Exit; + + {Check Connected} + if not VCHIQIsConnected(Instance) then Exit; + + {Add Service Internal} + Service:=VCHIQAddServiceInternal(State,Params,VCHIQ_SRVSTATE_OPENING,Instance,nil); + if Service <> nil then + begin + {Return Handle} + Handle:=Service.handle; + + {Open Service Internal} + Status:=VCHIQOpenServiceInternal(Service,ThreadGetCurrent); {Thread ID (In the Linux driver this is the Process ID which is the Thread ID)} + if Status <> VCHIQ_SUCCESS then + begin + {Remove Service} + VCHIQRemoveService(Service.handle); + + {Reset Handle} + Handle:=VCHIQ_SERVICE_HANDLE_INVALID; + end; + end + else + begin + Status:=VCHIQ_ERROR; + end; + + {Return Status} + Result:=Status; +end; + +{==============================================================================} + +function VCHIQQueueBulkTransmit(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Userdata:Pointer):VCHIQ_STATUS_T; +{From vchiq_queue_bulk_transmit in vchiq_kern_lib.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Bulk Transmit (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + Result:=VCHIQBulkTransfer(Handle,VCHI_MEM_HANDLE_INVALID,Data,Size,Userdata,VCHIQ_BULK_MODE_CALLBACK,VCHIQ_BULK_TRANSMIT); +end; + +{==============================================================================} + +function VCHIQQueueBulkReceive(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Userdata:Pointer):VCHIQ_STATUS_T; +{From vchiq_queue_bulk_receive in vchiq_kern_lib.c} +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Queue Bulk Receive (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + Result:=VCHIQBulkTransfer(Handle,VCHI_MEM_HANDLE_INVALID,Data,Size,Userdata,VCHIQ_BULK_MODE_CALLBACK,VCHIQ_BULK_RECEIVE); +end; + +{==============================================================================} + +function VCHIQBulkTransmit(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Userdata:Pointer;Mode:VCHIQ_BULK_MODE_T):VCHIQ_STATUS_T; +{From vchiq_bulk_transmit in vchiq_kern_lib.c} +var + Status:VCHIQ_STATUS_T; +begin + {} + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Bulk Transmit (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Check Mode} + case Mode of + VCHIQ_BULK_MODE_NOCALLBACK,VCHIQ_BULK_MODE_CALLBACK:begin + Status:=VCHIQBulkTransfer(Handle,VCHI_MEM_HANDLE_INVALID,Data,Size,Userdata,Mode,VCHIQ_BULK_TRANSMIT); + end; + VCHIQ_BULK_MODE_BLOCKING:begin + Status:=VCHIQBlockingBulkTransfer(Handle,Data,Size,VCHIQ_BULK_TRANSMIT); + end; + else + begin + Status:=VCHIQ_ERROR; + end; + end; + + Result:=Status +end; + +{==============================================================================} + +function VCHIQBulkReceive(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Userdata:Pointer;Mode:VCHIQ_BULK_MODE_T):VCHIQ_STATUS_T; +{From vchiq_bulk_receive in vchiq_kern_lib.c} +var + Status:VCHIQ_STATUS_T; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Bulk Receive (Handle=' + IntToHex(Handle,8) + ')'); + {$ENDIF} + + {Check Mode} + case Mode of + VCHIQ_BULK_MODE_NOCALLBACK,VCHIQ_BULK_MODE_CALLBACK:begin + Status:=VCHIQBulkTransfer(Handle,VCHI_MEM_HANDLE_INVALID,Data,Size,Userdata,Mode,VCHIQ_BULK_RECEIVE); + end; + VCHIQ_BULK_MODE_BLOCKING:begin + Status:=VCHIQBlockingBulkTransfer(Handle,Data,Size,VCHIQ_BULK_RECEIVE); + end; + else + begin + Status:=VCHIQ_ERROR; + end; + end; + + Result:=Status +end; + +{==============================================================================} + +function VCHIQBlockingBulkTransfer(Handle:VCHIQ_SERVICE_HANDLE_T;Data:Pointer;Size:LongWord;Dir:VCHIQ_BULK_DIR_T):VCHIQ_STATUS_T; +{From vchiq_blocking_bulk_transfer in vchiq_kern_lib.c} +var + Status:VCHIQ_STATUS_T; + Service:PVCHIQ_SERVICE_T; + Instance:PVCHIQInstance; +begin + {} + Result:=VCHIQ_ERROR; + + {$IFDEF VC4VCHIQ_DEBUG} + if DEVICE_LOG_ENABLED then DeviceLogDebug(nil,'VCHIQ: Blocking Bulk Transfer (Handle=' + IntToHex(Handle,8) + ' Data=' + IntToHex(PtrUInt(Data),8) + ' Size=' + IntToStr(Size) + ' Dir=' + VCHIQBulkDirToString(Dir) + ')'); + {$ENDIF} + + {Get Service} + Service:=VCHIQFindServiceByHandle(Handle); + if Service = nil then Exit; + + {Get Instance} + Instance:=Service.Instance; + + //To Do //Continuing + if DEVICE_LOG_ENABLED then DeviceLogError(nil,'VCHIQ: VCHIQBlockingBulkTransfer'); //To Do //Temp + + {Unlock Service} + VCHIQUnlockService(Service); + + //To Do //Continuing +end; + +{==============================================================================} +{==============================================================================} +{VCHIQ Helper Functions} +function VCHIQ_MAKE_FOURCC(x0, x1, x2, x3: Char): LongWord; inline; +{From vchiq_if.h} +begin + {} + Result:=(Ord(x0) shl 24) or (Ord(x1) shl 16) or (Ord(x2) shl 8) or Ord(x3); +end; + +{==============================================================================} + +function VCHIQ_PORT_IS_VALID(Port:LongWord):Boolean; inline; +{From vchiq_core.h} +begin + {} + Result:=(Port < VCHIQ_PORT_FREE); +end; + +{==============================================================================} + +function VCHIQ_MAKE_MSG(MsgType,SrcPort,DstPort:LongWord):LongWord; inline; +{From vchiq_core.h} +begin + {} + Result:=(MsgType shl 24) or (SrcPort shl 12) or (DstPort shl 0); +end; + +{==============================================================================} + +function VCHIQ_MSG_TYPE(MsgId:LongWord):LongWord; inline; +{From vchiq_core.h} +begin + {} + Result:=MsgId shr 24; +end; + +{==============================================================================} + +function VCHIQ_MSG_SRCPORT(MsgId:LongWord):LongWord; inline; +{From vchiq_core.h} +begin + {} + Result:=(MsgId shr 12) and $fff; +end; + +{==============================================================================} + +function VCHIQ_MSG_DSTPORT(MsgId:LongWord):LongWord; inline; +{From vchiq_core.h} +begin + {} + Result:=MsgId and $fff; +end; + +{==============================================================================} + +procedure VCHIQ_FOURCC_AS_4CHARS(Fourcc:LongWord;var chars:VCHIQ_FOURCC_CHARS); +{From vchiq_core.h} +begin + {} + chars[0]:=(fourcc shr 24) and $ff; + chars[1]:=(fourcc shr 16) and $ff; + chars[2]:=(fourcc shr 8) and $ff; + chars[3]:=fourcc and $ff; +end; + +{==============================================================================} + +function VCHIQ_FOURCC_IS_LEGAL(Fourcc:LongWord):Boolean; inline; +{From vchiq_core.h} +begin + {} + Result:=(fourcc <> VCHIQ_FOURCC_INVALID); +end; + +{==============================================================================} + +function VCHIQ_BITSET_SIZE(b:LongWord):LongWord; inline; +{From vchiq_core.h} +begin + {} + Result:=(b + 31) shr 5; +end; + +{==============================================================================} + +function VCHIQ_BITSET_WORD(b:LongWord):LongWord; inline; +{From vchiq_core.h} +begin + {} + Result:=b shr 5; +end; + +{==============================================================================} + +function VCHIQ_BITSET_BIT(b:LongWord):LongWord; inline; +{From vchiq_core.h} +begin + {} + Result:=1 shl (b and 31); +end; + +{==============================================================================} + +procedure VCHIQ_BITSET_ZERO(bs:PBITSET_T;Size:LongWord); inline; +{From vchiq_core.h} +begin + {} + FillChar(bs^,Size * SizeOf(BITSET_T),0); +end; + +{==============================================================================} + +function VCHIQ_BITSET_IS_SET(bs:PBITSET_T;b:LongWord):Boolean; inline; +{From vchiq_core.h} +begin + {} + Result:=(bs[VCHIQ_BITSET_WORD(b)] and VCHIQ_BITSET_BIT(b)) <> 0; +end; + +{==============================================================================} + +procedure VCHIQ_BITSET_SET(bs:PBITSET_T;b:LongWord); inline; +{From vchiq_core.h} +begin + {} + bs[VCHIQ_BITSET_WORD(b)]:=bs[VCHIQ_BITSET_WORD(b)] or VCHIQ_BITSET_BIT(b); +end; + +{==============================================================================} + +procedure VCHIQ_BITSET_CLR(bs:PBITSET_T;b:LongWord); inline; +{From vchiq_core.h} +begin + {} + bs[VCHIQ_BITSET_WORD(b)]:=bs[VCHIQ_BITSET_WORD(b)] and not(VCHIQ_BITSET_BIT(b)); +end; + +{==============================================================================} + +function VCHIQ_SLOT_INFO_FROM_INDEX(State:PVCHIQ_STATE_T;Index:Integer):PVCHIQ_SLOT_INFO_T; +{From vchiq_core.c} +begin + {} + Result:=@State.slot_info[Index]; +end; + +{==============================================================================} + +function VCHIQ_SLOT_DATA_FROM_INDEX(State:PVCHIQ_STATE_T;Index:Integer):PByte; +{From vchiq_core.c} +begin + {} + Result:=@State.slot_data[Index]; +end; + +{==============================================================================} + +function VCHIQ_SLOT_INDEX_FROM_DATA(State:PVCHIQ_STATE_T;Data:PByte):Integer; +{From vchiq_core.c} +begin + {} + Result:=(PtrUInt(Data) - PtrUInt(State.slot_data)) div VCHIQ_SLOT_SIZE; +end; + +{==============================================================================} + +function VCHIQ_SLOT_INDEX_FROM_INFO(State:PVCHIQ_STATE_T;Info:PVCHIQ_SLOT_INFO_T):Integer; +{From vchiq_core.c} +begin + {} + Result:=(PtrUInt(Info) - PtrUInt(@State.slot_info)) div SizeOf(VCHIQ_SLOT_INFO_T); +end; + +{==============================================================================} + +function VCHIQ_SLOT_QUEUE_INDEX_FROM_POS(Pos:LongWord):Integer; +{From vchiq_core.c} +begin + {} + Result:=(Pos div VCHIQ_SLOT_SIZE); +end; + +{==============================================================================} + +function VCHIQ_BULK_INDEX(x:Integer):Integer; inline; +{From vchiq_core.c} +begin + {} + Result:=x and (VCHIQ_NUM_SERVICE_BULKS - 1); +end; + +{==============================================================================} + +function VCHIQCalcStride(Size:LongWord):LongWord; inline; +{From calc_stride in vchiq_core.c} +begin + {} + {Allow room for the header} + Size:=Size + VCHIQ_HEADER_SIZE; {SizeOf(VCHIQ_HEADER_T)} {Do not include the data member} + + {Round up} + Result:=(Size + VCHIQ_HEADER_SIZE {SizeOf(VCHIQ_HEADER_T)} - 1) and not(VCHIQ_HEADER_SIZE {SizeOf(VCHIQ_HEADER_T)} - 1); {Do not include the data member} +end; + +{==============================================================================} + +function VCHIQFourccToString(Fourcc:LongWord):String; +begin + {} + SetLength(Result,4); + + Result[1]:=Chr((Fourcc shr 24) and $ff); + Result[2]:=Chr((Fourcc shr 16) and $ff); + Result[3]:=Chr((Fourcc shr 8) and $ff); + Result[4]:=Chr(Fourcc and $ff); +end; + +{==============================================================================} + +function VCHIQMessageTypeToString(MsgType:LongWord):String; +begin + {} + Result:='VCHIQ_MSG_UNKNOWN'; + + case MsgType of + VCHIQ_MSG_PADDING:Result:='VCHIQ_MSG_PADDING'; + VCHIQ_MSG_CONNECT:Result:='VCHIQ_MSG_CONNECT'; + VCHIQ_MSG_OPEN:Result:='VCHIQ_MSG_OPEN'; + VCHIQ_MSG_OPENACK:Result:='VCHIQ_MSG_OPENACK'; + VCHIQ_MSG_CLOSE:Result:='VCHIQ_MSG_CLOSE'; + VCHIQ_MSG_DATA:Result:='VCHIQ_MSG_DATA'; + VCHIQ_MSG_BULK_RX:Result:='VCHIQ_MSG_BULK_RX'; + VCHIQ_MSG_BULK_TX:Result:='VCHIQ_MSG_BULK_TX'; + VCHIQ_MSG_BULK_RX_DONE:Result:='VCHIQ_MSG_BULK_RX_DONE'; + VCHIQ_MSG_BULK_TX_DONE:Result:='VCHIQ_MSG_BULK_TX_DONE'; + VCHIQ_MSG_PAUSE:Result:='VCHIQ_MSG_PAUSE'; + VCHIQ_MSG_RESUME:Result:='VCHIQ_MSG_RESUME'; + VCHIQ_MSG_REMOTE_USE:Result:='VCHIQ_MSG_REMOTE_USE'; + VCHIQ_MSG_REMOTE_RELEASE:Result:='VCHIQ_MSG_REMOTE_RELEASE'; + VCHIQ_MSG_REMOTE_USE_ACTIVE:Result:='VCHIQ_MSG_REMOTE_USE_ACTIVE'; + end; +end; + +{==============================================================================} + +function VCHIQPollTypeToString(PollType:VCHIQ_POLL_T):String; +begin + {} + Result:='VCHIQ_POLL_UNKNOWN'; + + case PollType of + VCHIQ_POLL_TERMINATE:Result:='VCHIQ_POLL_TERMINATE'; + VCHIQ_POLL_REMOVE:Result:='VCHIQ_POLL_REMOVE'; + VCHIQ_POLL_TXNOTIFY:Result:='VCHIQ_POLL_TXNOTIFY'; + VCHIQ_POLL_RXNOTIFY:Result:='VCHIQ_POLL_RXNOTIFY'; + end; +end; + +{==============================================================================} + +function VCHIQPageTypeToString(PageType:Word):String; +begin + {} + Result:='VCHIQ_PAGELIST_UNKNOWN'; + + case PageType of + VCHIQ_PAGELIST_WRITE:Result:='VCHIQ_PAGELIST_WRITE'; + VCHIQ_PAGELIST_READ:Result:='VCHIQ_PAGELIST_READ'; + VCHIQ_PAGELIST_READ_WITH_FRAGMENTS:Result:='VCHIQ_PAGELIST_READ_WITH_FRAGMENTS'; + end; +end; + +{==============================================================================} + +function VCHIQStatusToString(Status:VCHIQ_STATUS_T):String; +begin + {} + Result:='VCHIQ_UNKNOWN'; + + case Status of + VCHIQ_ERROR:Result:='VCHIQ_ERROR'; + VCHIQ_SUCCESS:Result:='VCHIQ_SUCCESS'; + VCHIQ_RETRY:Result:='VCHIQ_RETRY'; + end; +end; + +{==============================================================================} + +function VCHIQBulkDirToString(BulkDir:VCHIQ_BULK_DIR_T):String; +begin + {} + Result:='VCHIQ_BULK_DIR_UNKNOWN'; + + case BulkDir of + VCHIQ_BULK_TRANSMIT:Result:='VCHIQ_BULK_TRANSMIT'; + VCHIQ_BULK_RECEIVE:Result:='VCHIQ_BULK_RECEIVE'; + end; +end; + +{==============================================================================} + +function VCHIQBulkModeToString(BulkMode:VCHIQ_BULK_MODE_T):String; +begin + {} + Result:='VCHIQ_BULK_MODE_UNKNOWN'; + + case BulkMode of + VCHIQ_BULK_MODE_CALLBACK:Result:='VCHIQ_BULK_MODE_CALLBACK'; + VCHIQ_BULK_MODE_BLOCKING:Result:='VCHIQ_BULK_MODE_BLOCKING'; + VCHIQ_BULK_MODE_NOCALLBACK:Result:='VCHIQ_BULK_MODE_NOCALLBACK'; + VCHIQ_BULK_MODE_WAITING:Result:='VCHIQ_BULK_MODE_WAITING'; + end; +end; + +{==============================================================================} + +function VCHIQServiceOptionToString(ServiceOption:VCHIQ_SERVICE_OPTION_T):String; +begin + {} + Result:='VCHIQ_SERVICE_OPTION_UNKNOWN'; + + case ServiceOption of + VCHIQ_SERVICE_OPTION_AUTOCLOSE:Result:='VCHIQ_SERVICE_OPTION_AUTOCLOSE'; + VCHIQ_SERVICE_OPTION_SLOT_QUOTA:Result:='VCHIQ_SERVICE_OPTION_SLOT_QUOTA'; + VCHIQ_SERVICE_OPTION_MESSAGE_QUOTA:Result:='VCHIQ_SERVICE_OPTION_MESSAGE_QUOTA'; + VCHIQ_SERVICE_OPTION_SYNCHRONOUS:Result:='VCHIQ_SERVICE_OPTION_SYNCHRONOUS'; + VCHIQ_SERVICE_OPTION_TRACE:Result:='VCHIQ_SERVICE_OPTION_TRACE'; + end; +end; + +{==============================================================================} + +function VCHIQReasonToString(Reason:VCHIQ_REASON_T):String; inline; +{From vchiq_core.h} +begin + {} + Result:=VCHIQ_REASON_NAMES[Reason]; +end; + +{==============================================================================} + +function VCHIQConnStateToString(ConnState:VCHIQ_CONNSTATE_T):String; inline; +{From get_conn_state_name in vchiq_core.h} +begin + {} + Result:=VCHIQ_CONNSTATE_NAMES[ConnState]; +end; + +{==============================================================================} + +function VCHIQServiceStateToString(ServiceState:VCHIQ_SRVSTATE_T):String; inline; +{From vchiq_core.h} +begin + {} + Result:=VCHIQ_SRVSTATE_NAMES[ServiceState]; +end; + +{==============================================================================} + +function VCHIQSuspendStatusToString(Status:VC_SUSPEND_STATUS_T):String; +begin + {} + Result:='VC_SUSPEND_UNKNOWN'; + + case Status of + VC_SUSPEND_FORCE_CANCELED:Result:='VC_SUSPEND_FORCE_CANCELED'; + VC_SUSPEND_REJECTED:Result:='VC_SUSPEND_REJECTED'; + VC_SUSPEND_FAILED:Result:='VC_SUSPEND_FAILED'; + VC_SUSPEND_IDLE:Result:='VC_SUSPEND_IDLE'; + VC_SUSPEND_REQUESTED:Result:='VC_SUSPEND_REQUESTED'; + VC_SUSPEND_IN_PROGRESS:Result:='VC_SUSPEND_IN_PROGRESS'; + VC_SUSPEND_SUSPENDED:Result:='VC_SUSPEND_SUSPENDED'; + end; +end; + +{==============================================================================} + +function VCHIQResumeStatusToString(Status:VC_RESUME_STATUS_T):String; +begin + {} + Result:='VC_RESUME_UNKNOWN'; + + case Status of + VC_RESUME_FAILED:Result:='VC_RESUME_FAILED'; + VC_RESUME_IDLE:Result:='VC_RESUME_IDLE'; + VC_RESUME_REQUESTED:Result:='VC_RESUME_REQUESTED'; + VC_RESUME_IN_PROGRESS:Result:='VC_RESUME_IN_PROGRESS'; + VC_RESUME_RESUMED:Result:='VC_RESUME_RESUMED'; + end; +end; + +{==============================================================================} +{==============================================================================} + +initialization + VCHIQInit; + +{==============================================================================} + +{finalization} + {Nothing} + +{==============================================================================} +{==============================================================================} + +end. + \ No newline at end of file diff --git a/source/rtl/ultibo/drivers/ftdiserial.pas b/source/rtl/ultibo/drivers/ftdiserial.pas index cc39e2a..89755e4 100644 --- a/source/rtl/ultibo/drivers/ftdiserial.pas +++ b/source/rtl/ultibo/drivers/ftdiserial.pas @@ -3760,6 +3760,9 @@ procedure FTDISerialTransmitStart(Request:PUSBRequest); {Check Count} if Count > 0 then begin + {Set Event} + EventSet(Serial.Serial.Transmit.Wait); + {Update Request} Request.Size:=Count; diff --git a/source/rtl/ultibo/drivers/pl110.pas b/source/rtl/ultibo/drivers/pl110.pas index f313b96..0863d07 100644 --- a/source/rtl/ultibo/drivers/pl110.pas +++ b/source/rtl/ultibo/drivers/pl110.pas @@ -999,7 +999,7 @@ function PL110FramebufferSetOffset(Framebuffer:PFramebufferDevice;X,Y:LongWord;P PPL110Framebuffer(Framebuffer).Registers.UPBASE:=UpperBase; PPL110Framebuffer(Framebuffer).Registers.LPBASE:=LowerBase; - {Udpate Offset} + {Update Offset} if not(Pan) then begin Framebuffer.OffsetY:=Y; diff --git a/source/rtl/ultibo/drivers/pl2303.pas b/source/rtl/ultibo/drivers/pl2303.pas index 6316706..4606afa 100644 --- a/source/rtl/ultibo/drivers/pl2303.pas +++ b/source/rtl/ultibo/drivers/pl2303.pas @@ -1598,6 +1598,9 @@ procedure PL2303TransmitStart(Request:PUSBRequest); {Check Count} if Count > 0 then begin + {Set Event} + EventSet(Serial.Serial.Transmit.Wait); + {Update Request} Request.Size:=Count; diff --git a/source/rtl/ultibo/drivers/usbcdcacm.pas b/source/rtl/ultibo/drivers/usbcdcacm.pas index 5e47b85..15f86b8 100644 --- a/source/rtl/ultibo/drivers/usbcdcacm.pas +++ b/source/rtl/ultibo/drivers/usbcdcacm.pas @@ -1613,6 +1613,9 @@ procedure CDCACMTransmitStart(Request:PUSBRequest); {Check Count} if Count > 0 then begin + {Set Event} + EventSet(Serial.Serial.Transmit.Wait); + {Update Request} Request.Size:=Count; diff --git a/source/rtl/ultibo/extra/WebStatus.pas b/source/rtl/ultibo/extra/WebStatus.pas index 3725466..a13800c 100644 --- a/source/rtl/ultibo/extra/WebStatus.pas +++ b/source/rtl/ultibo/extra/WebStatus.pas @@ -1420,11 +1420,11 @@ function TWebStatusMain.AddHeaderEx(AResponse:THTTPServerResponse;const ATitle,A AddContent(AResponse,' '); AddContent(AResponse,' ' + Title + ''); AddContent(AResponse,' '); - AddContent(AResponse,' '); + AddContent(AResponse,' '); AddContent(AResponse,' '); AddContent(AResponse,' '); AddContent(AResponse,' '); - AddContent(AResponse,' '); AddContent(AResponse,' '); AddContent(AResponse,' '); @@ -1436,11 +1436,11 @@ function TWebStatusMain.AddHeaderEx(AResponse:THTTPServerResponse;const ATitle,A AddContent(AResponse,' '); if ASub = nil then begin - AddContent(AResponse,' '); AddContent(AResponse,' '); @@ -1454,11 +1454,11 @@ function TWebStatusMain.AddHeaderEx(AResponse:THTTPServerResponse;const ATitle,A AddContent(AResponse,' '); if Sub = ASub then begin - AddContent(AResponse,' '); AddContent(AResponse,' '); @@ -2056,7 +2056,7 @@ function TWebStatusPlatform.DoGet(AHost:THTTPHost;ARequest:THTTPServerRequest;AR {Add Firmware Revision} AddBlank(AResponse); - AddItem(AResponse,'Firmware Revision:','0x' + IntToHex(FirmwareGetRevision,8)); + AddItem(AResponse,'Firmware Revision:','0x' + IntToHex(FirmwareGetRevision,8) + ' (' + IntToStr(FirmwareGetRevision) + ')'); {Add Machine Type} AddBlank(AResponse); @@ -3235,6 +3235,9 @@ function TWebStatusThreading.DoGet(AHost:THTTPHost;ARequest:THTTPServerRequest;A {Add Condition Count} AddItemEx(AResponse,'Condition Count:',IntToStr(ConditionGetCount),2); + + {Add Completion Count} + AddItemEx(AResponse,'Completion Count:',IntToStr(CompletionGetCount),2); {Add List Count} AddItemEx(AResponse,'Thread List Count:',IntToStr(ListGetCount),2); @@ -5919,7 +5922,7 @@ function TWebStatusPageTables.DoGet(AHost:THTTPHost;ARequest:THTTPServerRequest; AddBold4Column(AResponse,'Virtual','Physical','Size','Flags'); AddBlankEx(AResponse,4); {Get First} - NextEntry:=PageTableGetEntry(Address); + PageTableGetEntry(Address,NextEntry); while NextEntry.Size > 0 do begin if (NextEntry.Size <> CurrentEntry.Size) or (NextEntry.Flags <> CurrentEntry.Flags) then @@ -5980,7 +5983,7 @@ function TWebStatusPageTables.DoGet(AHost:THTTPHost;ARequest:THTTPServerRequest; Inc(Address,NextEntry.Size); {Get Next} - NextEntry:=PageTableGetEntry(Address); + PageTableGetEntry(Address,NextEntry); end; {Add Footer (4 column)} @@ -6378,6 +6381,7 @@ function TWebStatusDebug.DoGet(AHost:THTTPHost;ARequest:THTTPServerRequest;AResp AddItemEx(AResponse,'SynchronizerDeadlockCounter:',IntToStr(SynchronizerDeadlockCounter),2); AddItemEx(AResponse,'SynchronizerRecursionCounter:',IntToStr(SynchronizerRecursionCounter),2); AddItemEx(AResponse,'ConditionDeadlockCounter:',IntToStr(ConditionDeadlockCounter),2); + AddItemEx(AResponse,'CompletionDeadlockCounter:',IntToStr(CompletionDeadlockCounter),2); AddItemEx(AResponse,'MessageslotDeadlockCounter:',IntToStr(MessageslotDeadlockCounter),2); AddItemEx(AResponse,'MailslotDeadlockCounter:',IntToStr(MailslotDeadlockCounter),2); AddItemEx(AResponse,'BufferDeadlockCounter:',IntToStr(BufferDeadlockCounter),2); diff --git a/source/rtl/ultibo/rpi.cfg.template b/source/rtl/ultibo/rpi.cfg.template index 94e538b..2971076 100644 --- a/source/rtl/ultibo/rpi.cfg.template +++ b/source/rtl/ultibo/rpi.cfg.template @@ -7,4 +7,5 @@ -OoFASTMATH -Fu%INSTALLDIRECTORY%/units/armv6-ultibo/rtl -Fu%INSTALLDIRECTORY%/units/armv6-ultibo/packages --Fl%INSTALLDIRECTORY%/units/armv6-ultibo/lib \ No newline at end of file +-Fl%INSTALLDIRECTORY%/units/armv6-ultibo/lib +-Fl%INSTALLDIRECTORY%/units/armv6-ultibo/lib/vc4 \ No newline at end of file diff --git a/source/rtl/ultibo/rpi2.cfg.template b/source/rtl/ultibo/rpi2.cfg.template index a440e38..038a8b5 100644 --- a/source/rtl/ultibo/rpi2.cfg.template +++ b/source/rtl/ultibo/rpi2.cfg.template @@ -7,4 +7,5 @@ -OoFASTMATH -Fu%INSTALLDIRECTORY%/units/armv7-ultibo/rtl -Fu%INSTALLDIRECTORY%/units/armv7-ultibo/packages --Fl%INSTALLDIRECTORY%/units/armv7-ultibo/lib \ No newline at end of file +-Fl%INSTALLDIRECTORY%/units/armv7-ultibo/lib +-Fl%INSTALLDIRECTORY%/units/armv7-ultibo/lib/vc4 \ No newline at end of file diff --git a/source/rtl/ultibo/rpi3.cfg.template b/source/rtl/ultibo/rpi3.cfg.template index f6dd3fc..452d134 100644 --- a/source/rtl/ultibo/rpi3.cfg.template +++ b/source/rtl/ultibo/rpi3.cfg.template @@ -9,6 +9,7 @@ -Fu%INSTALLDIRECTORY%/units/armv7-ultibo/rtl -Fu%INSTALLDIRECTORY%/units/armv7-ultibo/packages -Fl%INSTALLDIRECTORY%/units/armv7-ultibo/lib +-Fl%INSTALLDIRECTORY%/units/armv7-ultibo/lib/vc4 #ENDIF #IFDEF CPUAARCH64 -CfVFP @@ -16,4 +17,5 @@ -Fu%INSTALLDIRECTORY%/units/armv8-ultibo/rtl -Fu%INSTALLDIRECTORY%/units/armv8-ultibo/packages -Fl%INSTALLDIRECTORY%/units/armv8-ultibo/lib +-Fl%INSTALLDIRECTORY%/units/armv8-ultibo/lib/vc4 #ENDIF diff --git a/source/rtl/ultibo/sysutils.pp b/source/rtl/ultibo/sysutils.pp index 0f65a15..1fd77be 100644 --- a/source/rtl/ultibo/sysutils.pp +++ b/source/rtl/ultibo/sysutils.pp @@ -65,7 +65,7 @@ TWin32FindDataA = record type {File Functions} TSysUtilsFileOpen = function(const FileName:RawByteString;Mode:Integer):THandle; - TSysUtilsFileCreate = function(const FileName:RawByteString):THandle; + TSysUtilsFileCreate = function(const FileName:RawByteString;ShareMode:Integer):THandle; TSysUtilsDeleteFile = function(const FileName:RawByteString):Boolean; TSysUtilsFileClose = procedure(Handle:THandle); TSysUtilsRenameFile = function(const OldName,NewName:RawByteString):Boolean; @@ -197,7 +197,7 @@ function FileCreate(const FileName: RawByteString) : THandle; begin if Assigned(SysUtilsFileCreateHandler) then begin - Result:=SysUtilsFileCreateHandler(FileName); + Result:=SysUtilsFileCreateHandler(FileName,fmShareExclusive); end else begin @@ -207,12 +207,26 @@ function FileCreate(const FileName: RawByteString) : THandle; function FileCreate(const FileName: RawByteString; Rights: integer): THandle; begin - Result:=FileCreate(FileName); {Rights is ignored by Ultibo} + if Assigned(SysUtilsFileCreateHandler) then + begin + Result:=SysUtilsFileCreateHandler(FileName,fmShareExclusive); {Rights is ignored by Ultibo} + end + else + begin + Result:=-1; + end; end; -function FileCreate(const FileName: RawByteString; ShareMode: integer; rights : integer): THandle; +function FileCreate(const FileName: RawByteString; ShareMode: integer; Rights : integer): THandle; begin - Result:=FileCreate(FileName); {ShareMode and Rights are ignored by Ultibo} + if Assigned(SysUtilsFileCreateHandler) then + begin + Result:=SysUtilsFileCreateHandler(FileName,ShareMode); {Rights is ignored by Ultibo} + end + else + begin + Result:=-1; + end; end; function FileRead(Handle: THandle; Out Buffer; Count: LongInt): LongInt; diff --git a/units/armv6-ultibo/lib/vc4/libEGL.a b/units/armv6-ultibo/lib/vc4/libEGL.a new file mode 100644 index 0000000000000000000000000000000000000000..4c69005333fda89259564172ba38d95c6a9a5fc3 GIT binary patch literal 215536 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 o9}oLLpzTz$B)Y1X?87LRzmD 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 Z%4mNn*1gwf_T4}CQL;JhM0k7X`(Ni%;5PsO literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libOpenVG.a b/units/armv6-ultibo/lib/vc4/libOpenVG.a new file mode 100644 index 0000000000000000000000000000000000000000..46cbdd1d8fb781e68e1392252e15bd138b405f94 GIT binary patch literal 78742 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ⅈ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 n&&Gvca*E&{q;jfE*!B zBw=I1ZWJTil%QIPal(3WP#ey7_ug~QJ@@~;H!N%IS-V)iHFvdd?F%Ay>v8F8ztpC=wYRrpV^?!W+YD|!?H_CIX8!mO}-n_ZP6fZHj z5RoY2mKz=vxz#gyjayo;E{&I@Wwnu=yL!4euQnnZ$&Ym^B>Q~`*Nh(JQ1EtVXZz;% zE}s>L6=$W$a)W}3#WtMtY4R7hoz8W!UlAbJMV5wY+_J-St=OxveNR_!dyl6fiubl} z?tZY{`HZD;9WKRIceHnQKO`&1=t#Kb>-#z$bXC5gy)}ZZ=-!;`?lqL|YVTU_Nm3FW zT^o%kzNh!jt$poXy&c_MtGDEG-93HnPCcMm+S;ksJyaU2Z4`SmnRpPDKo#zqRu|T) zt)q7aTPkhyN88(T&8?jsHcy^JPkU#3>t$V$Y_jB4MKo%sTV`@vZ-gA((B9<~piNqo zCqDYNB2IbR-dE4IWkj=0Tr^Qd4$U218@gw3bt#|0rMt^$-`?i+n_9az7Ny-$-bliv zpq*N>`EqU@y~NlIr)Qwt+S%E?UYs<#Yo^dnx3zEVj4Q^XNG`8GXYv+Tqci!5XwxF+ zsQR2P7u((y>(-c~SaccA!(W@Z)(2ZVI$PIuT2`&^>_C$=cjVS1>m6NIKQ>2fXOP~A z>t!T3;-j~{t4&R$DVUgj+-|1$l_eW2$aS{%(RgldRxMoDy@l%B+_#BZ(pGSicLb=7 z>`i-@U0VklQ+2#I2yTsc@rpZqmtYGPxegvZJVottVMTBL`uW}K9=J8)aH)+irPf@> z436;L+kSLYPnRb@o&4@xdl%7qKezhCxO7hUPj3su1(^)4)Bl&$)qyR}ECKLqDf`5o ztL{o95_D7TFA>xP1uO^-)*Jg-bq3S~R|Rhfa@kwHA7qEeS2ga>uS)OF&uV;PERlX< zY*sKl{^N@me~=0uoe(S!p2`P7<7BS?`Bab@%9jRf#`QfM3>DcYgVp0dx_EIeZc`1! zbAEOZq>1A+G=gm7M3T;PDsz%Bt0zg@-11<+&`$^Zv3p`H74#cCN&IPOltaU(F@55F z#w`feOx^*V%FG@^=jWkQ6^iD)lkea=8Or|N$!flX#^Ldy5@@%`?uoG=bAq(5o?IOS zyAqk<$yDZOepY&TJP3y;XS+Q6GztGhlkVa1M$vHL$>ZehgjYH?NAhzQ@zuusk)B;u z&Q5uo6$EF}-cNWUpCp~7_)(nc6N3}E?DJFb`%Km7$$TH(f@PkZ^zH}SMl>l_-VmU3w}hyr!VPfd;$0J#sTtg6e$D9Moe{j#_e0ZFO?r`Rld8Mm7^BL?{Pu61pN=$A%{R&6xx*&Mg+ZmaP@c5_; zE13|__FTO9^x@3@{Nd2@H_8j~OuYCM`3U$9o!q_%zLPLJU6?rU{uK8dZZ_SI9Qu2c|F=s3W78Lzn}Ye#~}ECuS9K ztNtne6!j;_d^4~5E}o}?;OPu$4}!sb3FT7b@~|vc{^DB-zNMXPHb6JTRAJ67zvcU) zo9L$w<%Y+}+z&S0YxPKw`Ag(`^`zos;75IFoLr^)g50Zq)~J34O$LhpS1LUV_vbS= zVyGjMp&&PyZ*u8T8K@45f6$yH{xjw4_UFs-KfC3Lv8I;CCggv1W_aAouP=Mm)tgM* zC-X{|;zu^hls;6{)5j&ZF08`%@FuQ|)e~MX9B{H5)m7rpxlcYnrTqNa#fygS|3sct zXD&zg3^L$(q%^E~6~Df|q@8}0F1?xb`#L3=G--v$SHoAI?^LVhO?l?Crp~0o;p>9j zz?|XCz?^hAFz4;iIFQ|uKaCuS-{pLN)yb&J>nwRW9u(@T%IONy`W*hBbMg`|Bc($! zJI?!wh3oXBsf7FG!`m$rg5T1vK8!@*gN!Oe&6tu@L|xly~L~dsf(t36G3irC4TEZxj+BjUHf0E zX&IbI^~1B=;6&xf;6yS+ci`8{qrxiB3RjAp8X2KKAzuCyw`??A3RwhgRFaT)Zef zeH7iI@>ja5eLIjF9#0HQ23Aitij|$pHH0Jx)G%BRjj%BfEd!>WCraTl)45 zBgkq0;KZWF;mPvMU_O-@o~#%i%%}MdhNvsxSBAFyMc0&d_-)dC?<8*2rGY%-aRy?kjex-cXR+VR-$*WA&Kke#~}fvUgk^JVzNH z#0+ElF`FIZUTMZL_f2jx zX?^6{MEZ`BWH^{#OZwN6UeQja2lJ!Ir~0bC&*JkD1U4?@y-amV^@(^)U5Lh`_-`Bk0 z(tq03E!Ac5U40_Ka@rBKhpOMvwg&!}jZ&71cXo*Wq73DK1fKY|L1}vnX;WCaU9PR^ zkA`4;k$J8&pW=?IKD4}C(@mgr!;)`V*a+F25KpCxMN51=k4}?ZADV%dFGI7)X($fzTJiM@q4|d@;v{) zY~7*%JhzGXeR-A;ukx@GI$k%bEIbYLy^$RgCvsK`k1xQ()0h`9(v1f&`!MR`6o5j`MX|`mCgd{A7p6k1KuY#)&sc&ig-&zWJonLrs&iI~GZ^ zAJ0gJHKx?q-M1;p{=xh;zgXO+C~nn3=`!(8@*loYh$XiC*WD3A7lEil$ZK4UOuW^y59Hh;yH*P5MK*XS74BFevK-t zgzAX;v0LH2sVB&5g0k}RiXJjL>X(!b`nA_mP8thVWxqmOOIzY(zWskOKS6)jGES@$=iLgG{M_5UgjiIA*K?eu*tDo^2xDhPU~Cd9On2PaCP)5^48VJzKb8N*etgv*Uj7OCk|RHF)_@!o^wy)(dh74u zQ!RW_J8#2%Mq|dE`)v6#U z*xw$`YYMx%`$AKgw*xlbK5t9d+q1q`u=`d(TikzNcet)SbfwLzV#GbPixgpI>%6Vj zeoI$pN7qMLl?*qqR2))*eNq4NNUZB0Uf)9>@uAKyr$nRU0T43B!BZ3wo_b=y63MC;}-;N!Y-2}BSS?iJ%*2_PWde4 zy1P50vZmEZQ=9Cn)a~KwHOuc^<3&p%1dWJ}xWxaR?{6sbU64N`DB*_A){VVIGUM~) zi*ZI)8zHkYprvbH<~{9wTY9>Xrh>cCT{f=PP9y4J`&J~eH|*#N?ZUU}P9zVmUV9zl zlmA+IWfg8y_vZFnH@5clJbWt^zo(N`yIVWh7Spq#b$$D-EQNJ0@6ZdOyh{A;N>w6w^pbGLc7>ptZe~%|!{d-?NqkvuCFg zS0>6zu1!`X<|N)+TA6rDVs4@;@z#3zk1QJZA&!;4Yp(je-pHb<>a;a3_Y1Nu6V zU&8bWWg%T%LiiQHwX!h3L~s`{%>d^VQ0@vZzxJ0feuZZ-KKwA>_GkSc@F?LQ;#>GK zlIHzypH5~XcoH}DQ|&Kh=8QeYic;_l$lhs-RPbwjtDk3oso*#GSm{yxYYcldg8x3> z{SjRG8H>dKhYoK6`t;Q$LCh}^`~`5#BK%Joeq3EFxe{wND5_Lm6$o)3+$ z?Js4{u03**mp+4uLNHf!9{OR#J}Y2g$Qoqi{NrU z%*2}gC4%=u?{tKo)*F-4<(CRR41PG`-U7Zif*bk~dZJ&&K+MzMfd8flJ+04VB6yGJ zNARuSeGy#rvk`hLz|#zl>@N}g2mBw8`41!R@}Fao%=;g}|LKVTUEr0|@|Fs;{(3&* zuK4#x!i(NXJ1FHV5quW^xk&hZ;Hx6|uYoU%;0M9?MR3tiG9hk%R=%njxO)6|@qZ-Z z|1kL32(IvT5&ufxp$IPbBN1HgE3f09`B{CkCW6a-nFikGmk6FEz8WSN?9bNEl@WLO zPb(7hO9Z3%Z;JT;D)`C>?tKcD2D6NQEZEHoj^kfHjl&YS{|&gl-|Fx);LG@C-r2bS z2wZ)!>m8m#Hn;N49F1{*Gx!kSVu9$r9sB^_KKx?vQSh6bdjt4szNItee>M0ke2YcG z*MX;rv)bVw1Fr*ro5TCTRfjzO1b82~Sf=ow2iH1~PaoFPztUiKj32Xu-@(6rHa&6o z(%?(ZT_TaVqV)!fIY9H2+_G>AzG<9)G#YDLZzj3;5+H%dt z@b}6;`n|!0-vC~VKvYov3jfKN|2;AM_ha~T;L_(~j^1~{rLU#;Memuvg$ z#PBuX($8vF6n-PP^l8T7pNjea9dPMO$+-Og8Tc~r?G8T!E`7Pr;aAc&OFxRO@_+Mm z+ila+2;PLd>WJJo$J{>+-WCb}n=$ue;G1wCbKzfzx&KoP|8Wd|3mK6<_Tg_;#@tWx zdg)#^%Td03a^snyHL>FezaKCMaQEMc<_^20|1tx-}=F>#Dz(ldY#I~T$ z*qi7VEQu0~4dsnDOYb&)FEpeU8d3{Q3=2#Y3k|`AHY+9@3k~swHk6^T$oOAq{4X*- z7a2N>49!J`!XnENLt&8#yU6;l51N}duv50VdH#Y0ix(~_Ldj0lwXWE6rU2^X(bCX?AioVb zB2)z_Z0>ev0ldgY#5qc6lQtJeD43ZkGwt)>`tDv!C1+=Qn#~-PsSrW26*GI(l7NA8 zuEQTKFh>ZS_&He*3`ymtV{@)EMx)5jMmG2Nbg&0nbd{Rs4IBls;ay@L=JeY)p`_H=ph4 z@H%%nUz8{N$O9$aq{I|S(U$r6`2l$~`_7v$O{C+y_Jyn7_8PjL!;#XKhgUmWR+IoY z5oWgEceOHg)ybKUsO&foKhYU9!#-D(He8JPh{;B#N_C=*Gd0$+bsdLSqA_~j$LH`P zS-f-#-)3rtZU64vi(}qp&J#FKmpK;@6Zl9v9CMhA^`}~*XXA<(?We4Y&U4sBmrJQc z*)h}dLL>>(+={F&M4VsW>5tcY$gU`dE~@wm5}QZoc)6n^mpa>EK6jQOMbSyjjo5B( z-@HEOR;r486bH5h3$v6nkc>E1(VeJb!l_!2LDpJeDIKE$hwl-5I0%NF{fO{w^pog| zRehW>j3DlNfY$>@g{$L5U-Wul2o$a{m|&ZOeS*ZNv5LZ4w*9d+=Sv)4R^;yocqpYEi?PYE){enF6MAx8Pk z0I&Zf{aK*s)(a9|^9`kMA%39zopvy!Z*9T}ZlxbC2tT(v`vVRh7JLML3+^CZLHt+J zH?A6>KP(8{wSw?{ufvB0A0=NvrRSI+={YXQ0R4osKk4jG3Bsor1R3Cu36j>+f()Ri z1ViRKoc%cm&pUWQka%7ZB%Xl2ap?{8)djIn31VL^cq4oQRy`I3ErO)KPmuie3zDx9 z!N*BA@cNyk8z?#_1m{s6g3vo9_;%7QNP5Q{JT3SRM~vO}X!@KeMm zxEsC+4zlk;@K^AEC6IKrIoK&ky83}i$4&=#3%-+i4Z&LE4yby0Sa2)p6(oMm0~&q` zB0C|wAygkb1wTza6~y0BLE@bf{0wr%cu)9t2M;-@c|)b+h#-7;&f%ki3*ei>k307h zf(zlBvp?nRUl3db-yD8gu#UY_z^W%GPr)JNjX{<0YC-T82M-E9MLGnPPeIa~W?WhI zS;nSN0%E1=|iEm8sPU@wz zpK|tR1@EHV9DZK#ZuGGrbY5}x0lKktCHe*^J`D(xj=h3Il%wE&tRe{#Bxr)ehAIrIpPerag4xb{9k7P<`yXo7{4{TSB_?Yy${+)u z(7ULBAc2uT)M@u zd3wQ{DIZS^=;_t-9nD8A7D|WmAs)z|aKzfgyAY^fCG?_mZt|yOe8fSeQ@{UM6$IV( z)BKkonKle*%Na}lrD&IL^$5^siK;lw6FD=ZVD?k$TR-nl(DOw0_0T&%zrh^f!GbmOERfPs7@ivF1$dqD2cAEHnXL`%LUI`h@(Z z&%~xpD&Yxx#k9B4?6EfcZ#gf+-Zt%lr99B&oZra|C(@arIm_5nmdp(1wTH2eaCPiK zQ@Bg_W3QP^XZFltuidq2_IvyNk84RlHKx`V*%N-x{=D`K>P+sOs~(+5w6GU7 z$3FQHx5tis<_p+Yr~P)RM)uMT750W+nc>V!$ez(Od+tbU={@tVofU*>_8(4aFQdYQ zdq>7|!xz6ty(k+QW&h+DXO2dn7^@oHJ#k=Uf1XnXO!Izl9Q%A4Q-M1sUx^7u_T@wH z?C8J*Fkg+S0S_7n@<~jpe;}V}JSw| z{EBA^yARrC-yi3mbpC|;XZEMc?Q;9Wl@__nv{0sgKeA+isHe}@YESYk`0dL(dbT#u ze#dao>?2K)7jrfiy2dYI{NBUAA?Po*90HA#Ie^Jiozqgmo_hW(~%h{wy`xfRG=?w*OQci6qO zI)^4crqX-Z6RPtH_fCeuwVciLywF}v()#o&&TX#Z9H!whdxp~>^HZhQ z+%QoBjX77@GX{SJ|CCPQa+`&l&HD$<`BR-06y5IwQ;kFU*};9|-(%l&4Kk%YsPGd0 zJZZjX@vXh3yXFs14iNV~7x#CGql$g@R|c!cm*PkJX|Keeji+&vF2vlXL@{q@hMr!@ zxd)x2FuWPMlsAg27WWF``lO5NsN!<8{_$$NXIkmMLFr^)H@assnd#>oOZ(*e&B|0Q=h$7{m_&UX4e$ZILPwUmu`Bz>?dCf5ywYk+10{!E={w6x`4d);T{ zI6EL6fUKA{g1V6;eiKi>IVUu?9Jx(2qTkcYCsO9j&mL12N$P}Tu_D-$ufmVc163n` z71@Ca?T6QSNS&=zyvfKJDY9wb603?WM$#Jon6L57ieEo^UWkmc@7Vch6_{=g(8O zRKHaY_s}O&TjbA5GW&*1+Pi#`^ud&e1Z|D%7T$yyz*JbaV5-grm#M3Ai>)A`D?aQ_^K=2XvBcQ#>EZyGUPE}LAMecp9Wmb}kx zz+UHvX3D$tkov3AZ-u^P*|8?0napEgha*7K_8{2gOmH-JjRFaOu^A7R;E{X*^-#L&gP>zcc-$O=Z;yJm>V*cKUPbOZYUZPLU^QnFuR_DU_ys5m@A2=5)uj%|TzE^pbAS2Aj>tD`y6qb z^Vemk!~OZwlvl4SuNQ(#<=4l-9SsvYL;4*4#go(SOeAf7Su*5~kMsaMyjOY$y``}b zay|M;Uf;=ZH(_?rKiOk+(d=NyREqYZkNA`6C-Z8L0{Ts<>}QO=SKXA3q+X`cDT!0? zdKG?k$Jk1j)^A~_bi9>uR(blFd}(%gd^v7k$G#8QX~Jkv;WCW&Zhajic{)W|eaw~F zpJ7+ZxBB=&%kcOi%1-0|>9V7q70S-mwcRt6UHpElyJBYz+h!;`e_l5#o6~iTzP-v$ zx`lspYi{5yDdW3YQJrv^~ zQ(5Bw?J7(99LaDeWx3jxC4B+a2aWgWA=2J5K1?%5li6$J0KGPq%I?f-450pk?R!2# zS=zp7!h|g@PoGBJi=z0Y!`G6QzaSmzi^{GMyGHEHxoPSg?YObeVz2W4Dt@2C?f_+| z{jVx>jR#sV|AHx@T&sYZ-;qv9l-TmWh@HlIZvr=SWt4HYjkBGUyY3}Paz6z6Y`mnu zP-j!=&*tf$Fw|Kyxd>R1ytMu%>&Sm~q5k?a$iDubEiJBFwW_jTHh}^8M{m`W9$(N06HcnD6%Tl=^<}~gfr%ye%X}Evl6SpEOlzACx zRv6ufA{+jJ(Fx_!2SZQhQ)5r&o5IKP<)gd6cY*I>KH^EtuKb$tv-w)?ZAy$j zLi=*hcqjhWj6Q~be=PqC$msA#_rLV3AKCv>7)ZBB*ECKtpIufBu5a{RS^2gnU;5g% z|MK!zKYsY-^gsXb<)06N_r5V^HxIi8!mx{VQvJnio%^4-FzB}T=0-ouJuo{aR?^n# zZkqCionr~+I7=7o8mq!CN4hHL*QYuA9E@-m(a;ci86sap%$M{}lmw0A!N?Bm(SKt* zu-`#HddCEJKg^Mcf*qvk-tiK6_b2!}9??0v!{Hs2Zzl6?^16ER zZDGxbJL528Xy8133@-@kcwO@+l1|FZ@c6h(<2> zyYD67<68(Leg-4V5h9PPVtOZggY-A?puZL0`)++?;&(Vx{bA&%lQOKPP1Be(#GjWx z?t;oIUWFm7X-m1Y;f%T816*}K9AbP5uay?$>P*mY?gtw8X)GbVCY>XH_dQlBCU1ua zM}tD06pzZ`(G}1dL0^oZN1i2Jx|1u~Kg&Q{bi6*I?|Ei7dTcjgj2;^q%=^)A8wl5`K1e|fAN*y{NXp>x32Ns^$1ZK^9r4z^Oz}2FM38}MeXU(evf|4cFZv< zX*mPXl|ap1XfCQ8qx*P9(N|rBo2_ts4`4JmW!kAm^c8cgMg75+xW3wx=R5%V>VuOv zOJBw2T-85JGUuA~bFP%ftat60P?=2YE0r~RH_9)`ho65b=q)=2P+UQ7cwFXWN|^z*XQ?IV2|#;Ha&HP@SB41WdV z_6h3B6}whW+|$2u;u_{TQ$KuS=ogtcMrWL%A9;p4a)vs8hWS^6vxI+U2}btF_Zf8i z8T7~*)a_O>1#)q&g$?O2W>E)7! z9pleJH=7;GGX_0V8xG}bGX3bhd&l8b=^v0c%^Q@!N6Dj~?-75mVlF4h&NKa^-z023 zG=2lP4ERN09q$}}IsWP+eerZh zhWvdn)@MpbPY#RdAJp? zQa-uj@{wMcf{#=1WX|!HV%v=`F?Jc}4#Bx9AJrMZwops@zJlEq zKfiL~li?kzo0Hl8{-?go{Db_}5oaCwxDkKa`rPSc`Vmvde$x8& z?_61#@qG*B9j{;1IrSmb{-qc@&1Sq>X><|mFS+4_`teCuSA75c1~VRCqqdng%#P1e zx=V*PO#N83i6@b(lgQO>^5EyxHTE}kjrm>TWIgmI=H>=Wn`zU4?j;S1m-b_PjQXK9 zhtg~2O{g88a}{li@5@ssHLl*C;cjN)@_Kl#tLJ`-!LDzg5?NnYLf!a@B!O}^M&+r$us>-)nn#E{G5q+dII@U|6`v^i{_(`=Jw~W$UQOk#jEWdS(jb6?RR)?%It+<&&$=p?@ooxQOZu=9$pdbq91HFC+xve!8-nZC=O`vJY21dL09$hhROn4C%Iu}%63K+*Q)`PFqp%NT?#FhooG4+8a)leC zXuR4(P00r)LrU3Y@9z?gLGJGbp;jB?_o#~F`| zZuW8@EJu;McxP*apT7np4wwMB@^T zB{VM4*n+nV&S;IgJh(Isf2(?s9UlK3{HRZ~oW4O5GWDH*wDnNq62&|Fl6V_FGmM-1 zOo-CEG5@uW{%kqs0uoqMXIW8#%%BQL96F?UF#S1zZkv`(Wss5V(` z;t}-25qPu*9?gU1NMPGnum9q7y_|U&)cv9wXU!yo%%LJScD+XZW67Y#<6Z_;UK)dF z9CPiip*JFvWzoKDx5|w)X^aG`gGS1r8lydPDU8bCU9LyOtemwlAWzDT)zCZ-bxTp020rx`11f7MEK!2lv2%{s%p;VQm~lyy*3XcK*B(Ds;ZJ2V0u9Y$rAXs{BaN~Jbl##c`>h8amj2whNuUAHx7bu=jaCMUT1m+f=G;<5gW7&O2)Jf(}%9tZ!tU1Fx zgIoVE%rlgtEk87={?~iayN4*lPmo5*h?kF#gG;{`$=hYy{1Xin6aF8;wu0wsN1@kMyzacQf|6n?3_NgL%zW^b3|_-iy&ZW-aChjOHp? z=e2zX`WMa8GxR65r{|mKi8TF0_51ES&$s%A=&Op%lXDvBGpg;sNSHRpr$f80c)5eV zgx)=PeA`!FzINN_ONVhUS+H|r7Jlfj?Py>g1pV=}=;;lhz39*}=t_TlY#H;g+ySlo zm$Ud|PSW`M05Y1x-?#B6{c*+Z%&Xu}bN0*d_n(|U_2s3LkK^yN_)8FHJ?>9BcinNV zHPNHE^BxGY-K05xbSn2SW2e1LpC!M{ofWJUO%T8ZO7GbS3BMbef60nXQR8mWctpq?%6kP`|e9G?y~EQ z*Y4_n=FgB(wa;3s*4qI;M|!lT8tr4f2|KN6(_+56DZ%*_Oa-PKqdAiIxN=k9YPrgV zvTFcF`&d(v@_9Xdtiv;u&jHFuVm66)=9W$2geY(8j8t=KLkoUqIegkE@^ddE7M?8o}(tsK2!nqd8^uv$i@J`M8sjF5v%( ze%2de>xTbY{jB%@8_J2<-~BVliSLWgb8@16b_Xf%8(xQ;lp!bD$GnMf*G1&S_Omok zy~FgiRQAz+R$|*fnZCICS3`5({Bkn=Yp>cDe-=6LGV-6DjC{$-$gfLAwD&2?9_t=E z$EW$JBzLzbS{Ogmwpbm%hBZCrm6%tif#vUmlV*(6Kb!~+uCoTi3C;bfk9iC2m)c{< zGY+!zVl+jxahe0Ucbs)rGX~a}ZXY_~TmO@{T;lpAqWiV~#NQ{cbVTFVn)Bb%ey;r_ zZYZi|F_l)__nEW?{bny{;@kMuUOMfQ(>VT%)8}LEpQH_#>(9;jwu?67 z>2h>qIcYVzk^KvQ7}Jg4FnYXk@OEH#?`2ym^xh_vRDy zb%Op!=yx2;s}Cl-n)HqdjRS+xy>r-)huO=yp508T?3`0edCVq!Z9n@?V&R`wcna`07F|P!+U7}Mpz5g-0{L((Vm7z=f>Xnp3bWK6)!YO#2^1NnU_>W?| zJ{Q<9(|z^nwGg|vR_h@)KD!^m_Yt%%ta%r&iVC7&Ga&sQ7X_fJ)`*GFO0PYnW<-Dv(#;C(&(RewNz0nN9Z z#auJnmWAJIs`dEzT5pusj0H?x)gF+B8F*a>uhozCZGP#p;yoayF3d33YQ{+HJH1@L zEWQWi6taE_ng6RF+WElfdY00gq+C4B_}t4+HP`COLvyVaqpDkL-CJ(PCFF$6b9`2>x$X zMt>5k5C7U_l>5J2Myv?_)Md2%Rm$iiu`+4`Z$S1{PFe$0Ju>f8wG`F>sW-c-sbhXG zh1V;E{Vn(DJ*A@cUB8Z@G39w=$J8y>M*n-P+@gD}i`R7RT0=pPakiB<&W^9_eo*PL zVQ3E{pGop8J*KlrlG!~zPSz@YoPMp6afuldsqORg$ZETyW1{K(u#=>MOy{EhFCwR6HV z?UB8oHu%yx9gQKG@0%-Kr}UhpyiN{bMy!k|{Z|gzcM+S0cTQAfSjVPK$k3JtnZL>h zEjov_TIZm5=^Xg%j9u^cdm=^C@7qkP-J#r=6E z>Gxy4A!OYe585%PHV$@2eFbk{ac8Cjhn_Hn(y6;$zh}ybr-7on#U;Tqt5&$ zcG}bE^p+mz|i{7HDI{*&s6c=a4+1oNkkho+vi43Cf8VfUtc z9i;sUCH=l%&Ylz2fGp4Mo18~o8E|u%QJ(cN|JlbJrPoE@j`7T&$yc9BX{?RZ73ICa zGpmb`FZvY)T@*q)Wd3vf@7RCr;*Zl({Sp5?AC-Tl-S6#;>K*ZsvjIki=~I=ZhP2-P zp>g_fb2F?JtKZc?8lv+UsvFqt(zv4<`By%wF7poHeYkJ`82es+)vm`kWjVVt!d?pY zM3<_cjjU@w3H4!omMgbhs6El<4g=D4?t7fnC2z#Z6?Oti= za`}A@zdEP$@A0dCd?#~@Bh(w!cg<-?4kQCf>W_c>QFUKD`(6BN547H#+ZpkzJb6E= z|H_~Cy(^52_OB~`eQUk7OnjX=)MAa`p7pb-bo*P|W1>Gv>&W5h~sTbhMNz5qb2<8yxPRD06wr^qo z(mi%;ue)H90e1yttqv*874(SKr(bhTyk#(dTWsD|YvR%MaLvE_eO9S7=V*yf;{@pu z$%gW!Jv2R44fMnBnM|;jQN?;iB?diqhUA~2jXQIQ@-g~~eh7Q$o>jeOZsEEhv-3|# z|5q^I+U?5K>l(GKKJGpjUS}#h-M7j?ck_rYZSk44@KWcF{@~?{KWK{4isnP}xY{H0 zoA^UFX$}8O1M*spNn=tN>2mFd*@;1H&Hm{YU>9Yfx!W~-e}ZqbKH=Vp)ZD$~__g*{ zS^aMJQtRG^_?Y=9dD47>;TN)eRcuZ!dhWsSCo;G4leCHZS+mi6W(WEI*N|n_Q|9XK z3Ew6%Cu8LJ1l&`X`R=crMQ3xA$3Oxw-DFLo}_Q4|J_26YX6qx_JbPJJoDjoZE&CaYu#Y`m_#tqkV7t z=I#gEi|r!mTZdyTFL$(ec0Xk79M21Z$@6kv0DRENcSAdpY%yCN-J5yA%+kB7UALZ3 z^Jz8r?R9PJwKxw=N^UoBqc_+3Q`YURn}c%PWRlKEA2wpv(6)QK=lI@(S%aT6CWScx zuKQ=v`O|hxbO%_O`9(m{Pw#}y%kfUvhV{Hy*cZ-gvu};*0&nvi85aeTi;g~?59HCZ zzSfVnhrR2$1-&-p!g19W`(_>YtDBE`nfk4YKy(cah3{DImF!mO zMxxNWYlWv2O~Cu_TH)iIewWZGKRp0o=%Sn2dtidn(Ys~69#p$reB1@y-SaT7-|-ro z@k6F<8f>nugqUy3n;aLkBThvH2?EEh`#kD+asDZ~F0Nl!iP~$!jXQi3)h3FzZ>#yD zjHTzy3v-v!Fyd{c!9=Gxd~y4@y^y@i(6cmLX1tY&yWOg-&|BWo)7{zzG12*8M_YUM z3cb4do)3mA?++Ht&&WCu-#vZ9cxUHnMeSUi*6ROXPu^+DXZrWkym`l7xX3S|>s`%n zJOA~DSuIfQul*&8?w8b5hr-LR{Uw4rK7?xy-G@Igoydgoe>j5QjbGu?Tk_uuJOX~) z;flWx9c6#KQNu@*M~VM2zAGZQ(lZe8|0#zf=F{oXUE}tb2>yVN10IE*`tgPQ+Wcu> zhy5jj=lKw>Jsv)P+h-Nr{|BGPJPN%R_@0X3<9wHsKl`)vbvL*DC4%qqA^aqMJpDG) zca@JsP=fuMNcb!GZj0b=BC|j1e{TeT z0=mLghTgyKy!QTo5BD*Q{aJo5i@1LYH-iIx`1*41-^RBrf=eDpBDnHqA-am*A-gt~cIlBe>#gVu0zxi{1fduskmJ6A@hQ ztE!x{OK)EUm-{Phrnf(v-VB3OkIVhg+X}eopN!ygue_n)K2Cbq#?spmahLz$2rhaD zBDmbEZY>Nxu@A=V1G9LYy_9P?s1N~k4A90*K*J<>fRE;<=&)5 z#QZG%oe^B_TbDRzm%l?1T<*u}i`~yhaJe_!UhLiy!R7t}ht}=S#-ChPz~$cmt^%&| zIT*p^ex35-IeUr%QX{zb21c>x!_nmY=(+#4de+>>_}yRVJl za__vW*nMXNm;33v3+{hUdJmU)ye#+;_>l;%J6sM#@L7ECjo?aO)k+`U=CAHO1>AoL z>di>SU--=m-r#64_e$x`3f=;)>aR9lxZZe_I7wv)Uje>~Z}|~^5BMg&Z*+Jw_-?*E zz0KeUBlyR`kAi#pzYKl~JdF{(&w)=x+`kC^3OM(3823K_SDWh7^T*(7JJm!f{5Qa} z;H)7U{5#-H;BRuc&XB8p_U=Cd*WNPkeg%WGVQ|*xA$U*x+Yg8u{GH5i}&(j<8UFL(a00bdC&xl{PJfj5Dxi5Gqg zcpJF79KwGAJQwl*9`Jr}HBoYp{`7`tv3$-B?#I7=jhF=PA9J|&^j`XgW-1mw6+Ghn z+xSw3mj9WAi%%AkY3=>@KjB}E;a`v8e;>o& z7-5mZ-yFji#_(T=;VWYJ2V(f<82(fYKN7?LdkjAp!>^j{b8GW|LkwRU!|#vb5619M zgR4Kd6|#CG@{8c=|AnTGCW0@;{QuV&{>>QvVhsOhaP<%S9R1n!#nm6wm_hN)1y}!X z*tx$G-2YS_%fZ$Ed(Qd)Fu3}A7aXp4a{N#Jp9EKbZ-jCd{byqC2V(e_WBAu%_;+LY z_rcZwlMWGmy?Lqrp2md2D-dM$?|gc123LR1yT2P;{Ws}I`M(ET{j(O*F8rh5>W}So z_;zshx4iovaP_aG59R+0;ObA+xbz$bSO3YUPj^qNzqH52_qX8cA5}a5=fTw<3LRdC zVp0D`Iz;r}2Cn|junS)YuKtaW@4eva&v<$*;Of6f2P^!?z|~*rbm1RSc={)vA5Vd+ zKjQI&;Oc+$IseastAF9k`>Wvor}F-5aP==T&VOO-W$VX}aaaGM(>$8Zz}Kv_`1( zT??-MgXd2OuJ#_b825VcYVaE8zY*O36u%~eo9zS`(|6VG@zR+W8LHd#NN2_du@j2T z%*Fd91HXo#8OLT#K6W*)Ul*Zo9vW=c+jVAA(t0t^ewuecjZaOlnn}avhdTN;>6ysZ zzK-rLoXUzsSB)MlO6k%YSH7W_W4x%l&VQ_^r6zFw=G>7Fs<0!_Hb9TeQ!o{-mP0Y z`{pmbZOLtgmqwS~R$qjX@9F1Gm)1w0MuleNNmAU3d=`aUSmbk2Ch{8V(nUq-T*O1K zh4>cLMbolqNha!6UxY1<(yWU<@Vc~aVdS0FrFC`DaCOl1r4#2%UG%xurFFMOo_1YY z7k!;|>EcY}Vb`ULi*mHME}EmoONy}DqN!fIG@9Ebly`v>OL#Chg7FY;1S`tXlIV-H zOP54npk2CTNfDLXim>`?IJ>8p&Qds;TWlRlOQevH79=RNGm&NX%=;her7kOXxHQUSN zr445LCFEER;tz&eHhF#O^qF+qon2ctxA!0$b_uvwb}OO_#3pVdB*h6f4+s}qxmSfH zb?(tsBGP(_h-x)aD^%{=M&}n$ac{7zxz=8uJdMaZ!Pwfg#TTXv4)IlKL&!Z3+S|^f z;53QF%voWVtXW;6L5xNmdvI2w7k}y3E(6&%HYj>xm+Y>v&2}V@aZ6TYNgwOCmwJs` zTCa{t&btCzeylbP^IeEFE2vr~#l`uxP6e;;W4Ufdk8&t@yVEU~Lr5iOvEr;0S#D6! zOMIIA#cii^T|~faJ0RCZmWFEFlJ#xkirZSM#cSJmD_+1+dYG`8K+l$#jfd;KFc_QE@&y8RgJGociVBC?1#atj@mt3Re!>GMEF-( zI}rRDa~||(tB%=zx8@)Yf-Ah{Vy^#F=2YcQxGBN^P9I+I&+OcI)p5pe^zW;_PTv}M zz0xBbsI@J{uknZAc0oGI{eq0!jsfLw%DHRqq?E~=bAn8|tSYtcoq~T(`W-y#U@d8_ z`UYbf!LN`H!K0*4ko?uovhFQ{xN9v-`Rf-XJp+Q|bEn{3=K7rdK4(8H$mH5VLBbt! zP~&uke@>9_qk@d{P6EZJ3xX#YD=^+wye)!%LA-+Bgs+0%BAnn!#wLs##kVX_{u>4V zlDQqA;@Kn^!dF4!%L(29e+5a`R>40ce}Xp>kFy^TB>YZ??-nHdkl;;>bDaBLXTMLd znmIP0_^R>i^~l8AycLzDY%LFG@7IQBUEBvVJqM-5Q^ zwT34Db%OY>7hHtA$^F}m56gk%vqq3b&pM#OYwb+wIVJnQ4uZ3Se?vWBPNV7t{0SbV z90k8aISLZ4Uyyi*1)-}oG|?G#@Th~w1WDI%!QJpl@E52bK*f_}u0-*Kg78agYogQO zV4LjmH!MheBZBxpA^7K%CvzvlwdSU98A0(ukof8a=R()HuX1n`P;~WvtHKWpLhqCy z`5O})C!IjiJ?CHrbzR}iJFcXsML6O61qpxD;mgnk;)~Yu6khMHDqTATN!M;c(lzAV z_c?gL!4p8mQ_e)H@~!t+70)t3;^}mFzu;-gi#Z|1S1m|+YmHFx<^+jX@1-i zcT?rQ)4?GJj{y~Lx&lbNp&;?r3o2fRA8_u^Is20irqFd&-yHP;`@m z&`k+Kw_FgqY3JSq6y0G#=pF%z?lIxe4VXI=taMOo!=gJP2;IYi&^;mu-RGS9IiTpa z(WZ!AAJF9A!DE8Nm!ypm)S9yBRtZA4#^JRNW(0|+PVheDUl4!GoPAc1_&b4$cSw+U zwe~E!Q^JYo73W?_8>Vz=?OAj}LFiWtewg?L3AY9)dRqnYzthXR1J`HWCg)n9KO}T6F}wfq#*I05+vRi1c`Udxu12g`ex`5 zPp2U93;M8- z?*xkO2|?&i0Y&$MaOg6BXy8f*wMRkeUn>aR7D4E?2|{<1a~}bU?gc^UrWaefAy9Oi z9LzbWy$yyhg3#?36ki0PyVJQJ2a4{>+bq2%py&-aIO5=0LE_b(2+=+1;3)@RaBxhJ z_)ZHF-;^NnrI*@xngpSf1Bx&G!in#QgC`u+-U`LDQV@Ep1fka`I2U~+sB#A?{YM3% zdrA z65n1y=$~--S%)XzW$haUiBEez6yJa#@$D2OzTJYvH{{&+Id}@F_`+WV5??(~d|N4; z`1UyagAN~cP(1iu1b96T#{96ktsopKU9N%`Dq z)0Gk=-Q|L$J1t1ME1Y}iV6~v~=kPi~{MS4CRSs_ygr931-X!>5_zG11M+HgWDWLc} zC7k?*cUf5Pp!NcZZ#hBY?Gq%vt%9U)yK_GT6x}I7=w1+nZspyUUY{WNsDs)=WaLB; zx@QHUdrlC#=bifn!N=g2!-JLJkHa^?os^g0FT*E6(%Ar1I(7?^jsrmD@33(4ch3?OqrT?rqo;emmLNNEj#_&= z6GRa#n9m}bCSFRP|&hO)z6e&=CCuN0%-K!lcXx#>rj!}yQ-tDa??%s4 z&ihlDMB}Y`AMK3`BjEihf6;tw`VTfwS79$6_Q~7SHk=TpjX&aZvDx<2P3F_>$jCmblXq!Uv4rV$H0c1vE<*2_@jF@{gWU4 zuE9ju6^xL+PZ<~c&-)YfJeEu4J=E(oZ)EWO6^!x$YVsPTcdC{2mEquip5Co>i^Aw{ z!Q#x~+cNbF7S@O1f=nh8`M;#D4s2olq9rCkOW7yxTy<9>;VCJekSl;Z_8v{E3d4)N%e%~Z{FI(o$ zcFK>=hU?sMhI@AOj%*F*JN0(3&UosatIlKldp&fnek1W@UAc!6%=e(wSeKeQ$C3N~U?Q4O->dLDC3>pS7{P>Wq6OXWBD_)w|8Q2gsbS zB~08ecWa+H2QLONO_(f3JW@I6jIqielK#eCY{k)V58bU#U3?(vBfpQD?{@x1~O>Roh!a*_`kb&aaYCYGu&%7JXt$R zdHpx;C`k{G>rKIB-HG^S+Ap9e;PR&ip9sBF+Z^! zZ9*2M(D2I;;hb5cU#aWN&{hPMhm)RASl))v|CP>3}2TU zcUrn6l|_c2Eg3o%%e(Z5-iDk>kHr0Q&ysnAx*r~>PG>P*k4U%Hix-Xepj&yrn|!5- zw}SZLTUiPG38-&+pXw&n!+!1$=5B^k_!QNVba{8B@Kcf0j`xb~JN}u!=@vUBbLkFLZ@K<+a(Jp+N_qLusAsGq> zr|7 zZ%cKDNjYViYT<4q__@l3S?R*4KB&!5I3GrQ*BzZL=!zs}jB-1Q8O0pL3}NW@n=^fF zz^pT!qxKCV$$4n%7;PpzO|;lLCizaedgkL-Td|zGN+fI1HsVUkuo9m6Hp1N3)L3XM zLdqeB{QCIScNvJpU*qE^ZePb0{~IaKGDkZt`G7BBmbwIOwI409!qefTJSf=BZ~%ikKeB=@tXajU?s61OVcxKrlos?n!t1E0!Q zAg}3`r}9^khbs6|J|=r)9(Ud8BY95ZPqMGN>1D5^aq#;}SGvW%-|ExGeWm6d=4A+h z_S}Y;6y`i-c@}dFqxx_Nlf_8(PLfaGFEX;9{-$a71IkZt{;I4~N*gj3QqJYrt31KS z=*yY@q1urO{Md3G9*^sA+qYJKaQM0s$~+aQ%!dd&e4Xlp`c5fybEB){t0Lv~rkIR! z7ta~#a9>U}&TrhG?zK8j{`xTum}Qs{qdtS_Bh#k-r0rV882z(gFpoapRYl(42oEZe zZOX{xUvgcOE3|20gcn1B(u$0@et(=76%k(ewoP|9t#!O;itwV@$-Xad@nRYN)Tj1+ zDYb*9KTUd6$KzrCoG|C$f%IS_W+jIDYxtu6s@i$lQN4X-^q=~ts@JODs%v`lp=J1) zeB017`CRThrp)`u<0kI0Q$A~vlOTN}-wA$|33Jb6)d=#@2oGD3p?-AMF#H-qZ{W8s z_jS{bo4QV3GA_R@!QhmC$Ij zIxtFKiT7D0Q;8w*?1lVF>C9p2%6leD;9F@9UDfhTzOxbDW#JF{E$7Ow)8$)oU75A~ zQvFsNn1oj<%eTeqLYg$zz>hE(oT!DT8T{4tBMXFCM%ZlQV7?)1`|9G^O6uCV$Dg0t z2d~;Nsu#LXIp_M9UdNlV&srUS12P|QZ&?L#W$3RY$7oxit8#t=ZdV6io~j=mWXy4h z?F?VW2!0;3dn!xXr1urK*U_2Afr)y_SMYgs+vkzp&!b!T9##MGS0-i!|IfH+loS6y zn0w}EQ;19V9aW8eI$x=~oLlzf(~Kd+t8mPY*}}0sdFjxK(LGj&>OQ^}^&R$*R@>k3 zxi)d)prQtO&XJH)yPhZ3L zbs2N+Iu&bwRi}^9eyi;|>e}#kxU~3wC2hi_`jzSv1@Lk>LPPv*g09+|U~G8uO)aL~ znWzm5?N0TWm4O;yEhdAh!>H`VPrdEO7-DWM^-cYZx02>~KZALXOZpk{bV~QAP4Vxw zM*Aq{&2*PPjjv}4>+@KjM)qm*Q<(*M_0wi^r(9{v@PgT)9g9B~z^|4^i`tAY(Pub_ zd>!;Ug1q@SyuMQU4w1g-T#WiazfM^7x3{{mKAh*j((rl0slCzI*7vi#KTrP|{G6m- z=xo*z%sx!CpP@5p8k?(aIgA;`?8OXVav169HJDYHpR~VwU0hD#?a$KR{X(oR#{0XG z{iA-Pw%coJ_LN38UfZKfep9#E9zMO1zsRl4?&2;u7R8}EbKGX>i2ZBqn=PV0(>B;> znpq!U`?EhO1@9yA6uGgLdqek(?k)>6y0NprhyCom&FeR{c5Q5*(a%P<;u=pg#NE+L zyv=MZpTVuQ)11I+Z|>OKy3s6UT$=XYj*VU1h1I^X(|Bq&%P2F@a{e~6V_n2v%U@6H zL(RF4t?k^ablEr!p_%wOeJEmvuv@wct}}%duWUhF8ZW%IiEn+dwWG6jU8mTsIM(;J z<~sDPdzE_HdpRm)FLg5aEWt*$OdB_Zx^NL!-^00fb2n7Ti3j^J)7@M;C$pv3xYv5( z_7<#5Y5Fu2#bb{Ia5GfcZa2;M>U%?H>qbk}rQ11vWZsrvD!OdT-W3%|x0PCxARk}E zDnd9c%8ux~|GrhL?9E)c?hf6v73NxdIRxS9_5hfVM&vRurQ#s7rV#^>J_d^|R zeVfGLP3;{UH|a*Muxs6x4Pv@W=X81c;uM)n@?b=bM0EF1UmUl^!)RRAPvK6qncZ{^ z+U8bw{o4%5%XRdvHz|J5f03L^(o+yuG)-Hl6Wt=(9MSAU8F5s=it`L{Armu17SC6a z;JCD`@6L6!w~3wW9ySZBcduA+dsuV#`|k_a=mIu#*&BxYW36H4fd8If(bKT?4P#dtn>7@K4zQw((-A$+2)RnJ=3@iKNZ1MuQWEdKkHxp z3H!7D111kVE`Dg-XMeK;wqlueH;*g5l@b4Za&96>f&1! zahLyjtyls$qB|V5f1Y zv%1M`r3J5$`vpbsf|0E;BO54#ox#zt2HUJuHIa(4~wFw4dJ68Ep_>KJU3FvM7e-i8Y|APNx*qa>xXZe3TpufQX^Vmk`{}24H=Xv|| z>TJ7KXrKS@LKmP}V>a>s5V{!n{|tIB^o`CRC>x!HQ~f-WblRMCr2w{k%MF{6Q4=jL z%hI13G-NWwC8KYI&X%~r(Q;F@(^*g6h`uL5e>_1y1T9&5#*+6`!e3`O>HDIT$^UB! zf1TCz>%jk9!hfmiGG)|&Rrs6Bb=#(QHMG7zMJInl!e8eO>HY0<;fE9cpM%!-#E1V| z{_FeU>2E;md!ah3`1P&Q_n_X%`-S*v?=@zZ|5A9>eh)hSo1xV{A8_=Cpw<4WjTHZb z(B7!Lw?eCZy}*C@?}1kP>GOXWTJ7P4^ZyaF+B=`VUqP!q8+ZQiBCTq#Vi(^Bpw%7? zIsYzbwKtyL0j>6>lQL8MBhYF;eEQ8`%bx;bcXu-?vd4<}vqLy-!<>_`LI+l~=*JvC zVa}s4M^>0KDa^4I_EZjgs)jk6W4Q^$SrHOqLU3|}{@Zge?9mz38lHL3(t3MvjzUY-c@Hg|c~CiHq2;#ltcw7EOw=>?<`P*TEB`2*e6C`A>+Vsz{0h@|d z#s3D=SrYD2db!E0(7S3b>q;JW{$#$dpT?T+lbpnw&rzAentv*S9rSkpUuLrAM{wDB ztShorPh(w??KhvrnlGX}O*P*ucrWIAmM5_0dtHA1s*(0S+i%Bm*@tQ0MQ`O>A!I^w z5Ufet??4URhG9qV6~a6scQZ(Ub4qE5I&7X#dll?-w7dn4SZ+C*D8cB4~nl{2w#VgPUN`!Nq0Sc4)Nz5 zYD_BrPKN~{;noXd(&gw4!lmRJR5_d%B5ys?=U(sJ8-(vemZM`K z>1z}sM|=7ezFBw+`2&@XSB0b_U1w2aXYpqo)(bl+N8xgK932ahKMYFFtPnX_`hG%< zsZG2Nn}wa!Q(-Ih%F%7YmAo&Y%ICC@@MndTyT;a%b3sV>i^4YQA@82}dW7(4Of9~m z5WWH7`$?Dl;cHlG`5Hl!E+KqokN+LiGv~jGzNh##h8ACk5WY^~YU+dYKPDtzjh)4J zLI~eUVLSa>`mBW|s8PdKw@ANN7=zmIzA!kIn%xbGEx59x94qe9#d z2pcI6M~?}q53`{1+f;AUsj^Qly|D~0rts;%ykaT0- z$uF;Lls6Rh^Jf0gR`I$rDzW29iq(yq$s_+|ih(TA;+1(XR{SAfgFKw^@#dfvhR=pE zk{6CyJs+=x;alPO8vlT2?1kedKFPV;q2$UOWTJxVR5s#~Eno>=^d47H0Lwf9ibsa( zTh4>%voQ7Ok29W6=<^`2RmeL}0nq$J4`G$Q3|3_vBs*$ujH0jejq%3ITXx%uI5cmx zzohL}?KzQo&nv z_0wtYRpawG$9%~g`I);OdmT2$B7Uweht41C^gN~|6X^P92GP|oer__#{lw_+cOWYb zPhI{1dNOOL(1|#MuJ!V|{IK*2r_!->Qx6zjhefRAvtDoRx2)yA(SJa{qF#DGyV1W# zj_z!v?3Oe{pD(qbBN~RGS5W4aZjHH<8adLzl#Yz@?DYW_xx8r&ohE6H=Qj5P{?B2# zS8PuAy3JrON}nN8e(b&%^st|wMb}^!T?5^DD4C)D4f>ID{$6Sy=4HZ65N6^EVRTRT zp%JSep}i64;2ND==?5#lx~ErV;ma|Ke^OPJ?38W+y)F<+rVK0efQGd_;3LUIL;-aokE3S1* ztzTm_YU*5b%A&$4Oq7$}?+|fwhah1(NTbr`^CW!}>H4(tJX>R{Z=$eqLSO$h`Q?t> zOQ#WZ3ahf(iEYO=V`&Z|m025UQ@VVtwZG zK^E`rPkk9mCUt#D_A;`3Jm?+I<&jyB9sCaMh1-vnQ9Du4`zn3XgQYs^lAiHW(rC-> zBz8iff*$mU;a_*}UiOKglkA>J zDk`GO>*E+P?FwmJa>40ZHRK1U{PRgux1(6PkNZg5edfOQRQ#!_4DU#WxYIBeO3GI^Wxjw7vYQI=StEUtwX<2dUeuyRU0Z^ zwN1V)Rr+k+Uny~4@7zw>rB%*8y!Nh-YOO%JTw~Z?Y#UbRK-XgRQU5h?9(x447dwdU z!FFM@lwFQ@PjQ)VU+&+{ehJlUm9gqI{f|8tUA`OKcjter=O@XN*SVM6Vxpew8ldSaxs0Nz!u%vIhB6HQdgUEwAuZ_UGBpsbENt1|C(<)=2M39EJ? zN1O1{TJ8;f8@8s>p2z6P`g-V}rEk;Kwy7vmH_$Bma6nz75iQ6+2n}Jy1H;9;?k% zI{o|N)91e#ij!_V0!+pOLS|OB1(%$c|2QfD^C7s@dljxMv&afx0#D2=@#&~E->C5m;rIR~;-^*vddFEyNE@cYv zRnq$^^(btgBkDsKuP-C@Y4qL9P*0T(wa0X*mt@vZmj~^4wTW+Tx`%Ir+Ht;}slj2| z+^%W9b?Df_Q+&Fl_6(UOEt#ID*?Ul&zCe2{nNguI^$Y5Gs;6s;HtvtcY2#Er4U|Fc zn%$F1SE}bO^IcCxk48gGZ zeO=QJIuKQtmELn-_D3koJ<#KPXlE(dqoCIKwC>l2ZN_G?CwaIpVUJ?Rum`aB&^9#x z^3o->&pE8-7LU??=$z3ZY!Tas-GJ@Hs%=p_JxLpK0{aqn96O4wb!lv%5BVF4*6rv+NgdAUhCROVA+EBFcNER-p{Vk0MAwa%%IXUipOEK`y;fN( z*7?>_$>SPJem}Y8(d`5A5*;DR*uZ>B7^EW2^b%`TkFzL8;c4VNi%p0~@VPj@+8Hr0|}iM#B%IX1P# z-V$2P*mTf6AW`PZGcQ_Xhsr*IJ1+DdT@Spyl6`uJ+d&i8Z!7#+kqK^e6ap#FNCgiT|?! z-N*m9{E!w!TcOnkTeB$I&YyJPuk@z*2w7v}(^`Y4Ro2Z3{?5Q(>DL^)HL2(?`I8U$ zhoIGew`P$xeVaSOJgu_p2>ka$9}Z}ZtED4i&7$bb{Lz}1rw{QbTYf&a{KtayD1G4_ zm@c3J>21lsVirbUb%fWGItCqM8Oue|gZe($hHY^4X|RCx{6FV^5nGQH{{>KG;OPaV z{Q$Jrd#aAVCd#!wL4PShA5G9Fp!I&$fzq3y(^xi&@3jQ2JN>+o|5fE@ zZ_^hi=w%6dZG!HC*8AFtEXDs=!e2U2dSAPo|34=DC!qDdo&pvAbi)6a3HnlkUR-Vq zZ2I2`t@lyygybz#+Nca#Cl$Rm!T*s2{mBHabz5&#Ue6@xkp%r5wB8@pSH+j;5LNC$ z3OYoIj#{A3WK@u>PLh<7Rz&)6cbnTOAS<^JS@k5N$YgYsLiHxA*kqNNtYVWDXce1+ zt9-cJr=k+Ha%D(WUjei7_E70)<;sv^`aO_x>++CViGom~4{EZKaGR&+Qz@!sa9eU) zxW5Ut`puD3PO+}OyZSIn`s{It%9pHEYx`7R>7nwqx1Bim?cEP=Eb7{*t=p23yZ*Bg zcclwM!uwl%vL4>{*k+>=LwAX|)Jfmow_~7p+v8hp)GB~L3!^%P!KEXWa?uv6P=Uxw zm80w5Ce!W;1KPdOR$%n9meva@S+Q%A;bwWCL^}-Kfg*4== zgddKKKDY9rajxX4Ev&)rbo7%B2OSOx$(M9oq+4-lex=fNOh~>bge<@uckU+~O6SGo*Wqa) z{I3d`Ae(gbSt0ACvqI#)=1{saqAv&ucTt#S4%g8U-#h8((WwD-FNV^q`z@63 zF(LUrBqV>c&OffTd`3rxc#Mt=Xmn(VuN8mgYn2c>FC^XVj_we~#0RRr?G$z}Um^T3 z&tFJK|CI30=&Ml2m9AJwebc>(;*$!Y0}S=RW9g$oUToZ>Im|+((@IsPH|sgU(EUWX`;Rr=)g7OXE5{zgL#`o0!8czMfi=OEC) zypc{v%dKskCMxsBIvuK`n6ggCRXnMt+=w}=aj({AS-*;yhu7IOZ=(v-pk(arCwxyZ`Ze8pV{@_ zuh;B)_FQ_`%ja_D9H0BA_mg+!JAL)OnJ6>N*;P6}V}EIc^%c#}vrcT*GHT%&lv_q; zR@${%t^d|UA3M{JJD-pxq2FIE`Qo{*1b?sAHbL+`~BOIZW?8i5>#y zF`4%#v+4raj zWbDixMppiVFP}JZ$Nfd5VlQ2aq6fg5M`(kvi?OxX6n5~t|CYl0lFCDCt*MChHQsTh z|J6M8NA)gm)-umXzvV=aT?e9NGI=!mM$|{bleSTwfptGj8AO9h|EPJ77m^pPN!Jxv zlP*@=(^{jS7%dG_cG=8O>B$W3!-UqYIRj{7XlfPf*Uf`NoaH!FY6aUs>GH(UP^p9U z)0*7=8LcfVy^6!f=W)d?W7F@tgLvURR(OdzJ478uuR_lPosd&BbjPv2tkm#no<({c zl*QF4^NAZNX`Lu0ZHoI??uR@B*6^dJejgo?YoufIRpO`DgKpZlX6aT&a#J}1d~eSA z)5SM?bq5?RJZApe@cbg#ZIYDc$uQ%fVc7py1w4Q$+Ka~#(36Y*R z@0p>ahx#7n{&ahVaf5~OAwRWqOOfT!Tg(Kby@1)A#N%FK zbEU!Z+=`aA>et#F!*h!~Zj1UhGU?^#iFzO3vNbA4tht!#<^Y$wf0IjMFMEgT<*!S< zEUUS0l}k!Frm6Zi+je`bQ*a%sy>~Wnn0NCkDK205Yq=|T`&#;nxA@Mx&elwM*|yQ2 z?L?WZ=J1opbggyw-JSQYS>4%v?_GD@f9Lw{^{dx(-q~F#P|ar9Q&g(mdbe4AGME7Xzds7!xtu*_qkynAx3WW?I0Q zSR*FHNO%BEOfc;OuNt3xAR1qM@PU{sg6pZCK}D?+ z$jz$hEh63U@!66FJI7Ef1@)|IdWGV6sf1unFOF6-9J5w79MvkQy6#}yhwA+)E^&5s zhl3~la$3$VzSS+_dzV)fY+Um@(AOtKZ_nPIVDm=X-aUBqkR(ai!k|giMT>~2bG0u| z_xY@gR#Pk88`^U_J9BJa8kwGJ8JeE^dtu=&)kfym61B;hOY=S+9hpxP-5@$umzB@j zN%^3i=w!Xs?_X$NNrB%A@a)W``FoS!{7R#<^*;>IHOyNQ)Afs(d#iZA z!Sj?UoG*>khl#fOb5~{>DSEZOm*~UH{;7sMba_?|=S#}fhOAs_&}g`B?1Ar-nVw6B zHZooCV^bJsJL23NnrcXy>AD{aKC<}uR%D-sFVWQo&y8a(hgruq%jt<;tK-btE@B^R z*hgJVH6}4ui@^HB^+h`NKLWiR>KXrxeP-U5kbet#CpFLFF43$%zYz?!2J{{F`7~$< zv>PNqd_2f#9IO-#UB_r6j;$f( zY{%Ux`g47`yy#K#1ImE1S9CdsWvH&PQ@jC}ZXj12#K%x!JK6lc-eXS`A?61Wz=g;*R=6KW+2_)KtE}whQ z(!@D;G=hk~9sPYV{0#bR6SQFbY%E@+VV;7&KVDOq#4>SS;U>puj}{RqE~erpV) z+iWRX(d=_4MJuTkN=CsqAmU_*nPotqCh%7YJOexmVq5mV4IVX?{RXOmxQ4PmjRU`q z{yA{QkH>xhY~PWl~aFk9wT_ir}- z%kBY#rLVgnr?Oj-BlzuSpCCHI90j!u-mxvH^{JIa*ML(Ge?omGJh7i#~gNCXR=+W^~`r-9Ok=--eHa+{1J0p{9iKPL-aLs z_}yfVJMqU5bNyh8i-lR#ebeC3e0hI|ckTtXS`@y;B3eGmqO0=+zyq(K^xVj)dN z0^^jnvMp>vAeI9TgqSjpY3ruG2}x+{rcNu{G<6%&`nEK26FVJAOdtxkCAV(tck7n> z{q1wk%$}pcPMWr_pVv3Awf0(j?SE^pz4qU8&YWe5bXU&}RaZxge+!qymb@pnbYbk; zXf$Sm?7z|I()V1`H}-Do=PQR?rF%CN1q=?P zhit}8$sv;K8%TF-97u0YObhEyriOYh5Vkonc-Mu3w)7444kk9I`jT(VVV7q^Z+~}U zLtoOSQLL_>j#Tfq&50D1-Z)?fZb+pDI}C?SRkh$wCA&*x-#ggRH_&xgFdM~5q@fq@*ATUSjI+Dk`9fX=H7eVPkLKP%`aPhLYQmbg5=>L(<8_P(D#ZBJ$><*weEy ze1mF2^k74x>#lrTn~=?kdp02dbka>2%}FQwyOZfWyGefQrjlg1H}-8A?3uVs1SW^^hd0wci`+J9a z6MelO_hi)9o9rK=88=ZpqqOZvtGC~i;cZ)z>3iBx{{Br$Z-o)=ov7Bp-ECXa8xwBx zx#akUEgLr`)6?lj-z;)Va&Ra;aF0cCvneEaBRMROuU3{O$n)Qs=p9;N3apT|$-ZP_ zFxlQip}GsD^NMkEdSJ85d!s3q7`z+{!cac#$!)7QCpH;z_(@u%w!0Il)%~c@)ExiR?t^X%l;~agkV5bBNgEM#2ddxe z3z2?rG^5a8e8MI=nAdS!T~RIa>9PzX~dOYGk|v> z?RS%oZbR+Z?2u-%I=bB+-+^&;Huc@Kvegu%J&~pr>3>68(#b_Fx8Bq?EpV+dvu*>o z(PH#dm#t$UIoKiX>6O}bbmh&MYShZ0)aELoSB%^HHBec!O?|8T2b1Zco3_$R*Cf(+ zCDS*pYbXCWVqKXY*pezD4x|FKyL!_7Uf$9~22UqI+Qewl-!Ujd8wlCZwod} z3s#;(_oRwi2TRd0kQ(Y8=pS^`C_<7Nt~(NggS~@Znww15_jJRZX!Tww$QT+^(h{+x zo^FoQ0=pUdnBsY-MWY+>*z9o{!EaMu=3VAE3WrAQk4@9IhP7bYxs_4E{B=)ONu za<+DLZ0+jl?I5#({((W}m8QC0k4&e!T#7uVy7COttvkAg(tS)kXe>lmOuaizIRZ4I z7|Mp^rrv(z^C@N?Whgx;Y)2~HJ3#ziq;qTKr1SG%@Evyf_1Yz$#WDfPVD7Fo&$Mz6e(=N8UhLl zCAvPgr59P+tc6g&l%+#eOgqF~CFM)tDYeFuLW;hods>iZR!8Wd^$VQR|6)pEg5tMk zf!iN6@9ymn%F3TmZAo?ei=9nfNh~Y<5?%&GGb|R;N++?T$*oDhak>Vyq8vgA^2Ifp z@2w3>1aD4m?%JFxunSM!6Hph;)wKO|d9$kL%BH8993WS~F5p*5>t!l8k} z@E%~>(r+`G`DcD6P$;0X>+ap0>>o6yJ6})HgYp!uXz`xs?oNJeOL9xnVSfhRWG&2%gn_VVo442)Vi|(cF~kryh;gv9^}_~9pd`H~nMhkH z`~2wv&H6hAyDk`J2c(l1%-;=~mc2&~=I)Y9W^M;rd9#_2*obYiE0?ErFv#{J6pO#R zNVslPCYnVO*Jy;T8S2$WNTCTmW>PO1>=H}xo3y6WO>@bRzfMqxU9R-t$HeLxj=`RU znfRG@a*gl>0*y7c!b-<5RF8F~zoD>olUXp3?ajvg<6#}J(FMI8w$(!giK$S4LIHO$ zO&UnIX-esadR)C;tau`w*o;X@dx_?8FZDdWF&M$5Kn?{CH-|j#l^~A?i;@p8N!uxz zq+16P-Kz^dR_K}p_Hdhs zX-(Y2q+#nOZ+T~vZtm^tvvDm9{rH#>#d6b$GxHE4qUZOL^RTta%>!GLLRKVFi4DDd znAW6viV?&#>T)*o`n$cj1;nfdsnI}p@5XyfVgm!|ZY5(RA@%m+nB9=nfb5e;5ok^J zZ!!gq4=~qQu6dmmdL#2ulbC4v1e4u)dP_QSx5w{Sn`Fp6Uso4JY2yjkYpR#0nkB7U zY2RxYNfe!wRd&-gE6+l@K5E44BL=o@+2F~9i~^JuJ-vP1KDVoH+Uy|@TG6MgO1@vk z?%kH`lRWR#ARTC|mkEv$JG{Wtb)k*c=3YYN}f#(tr(xT_NB z?z=H>W)}lKYU}MLZr!w{)iw58;sbs6Y+^D1X|0xKg3=csxv7t39dm8y%hMXiwya?K zvSlcFXCj@tZA+rNeW2}QTgW94Z!lIX6P{F1m6`01H=GkZ6{tg-^RcX|7j z0kSub^mF#hs`;(9BD@XRKqPk#=f^SAMy+=``~{Dh^?7mFP4F3g0ni^4T|GW^GtIco zN4#njb9h8Xb}O2nm`A1HtNVv;#jveezHW7E%Rqn9-M(Q%NBYhl(?)mS$ioJUu-+nU zTM;(6wFvDkMz2V5*I@PF%^I-Xy|qGtrV-upSmZ)+rW04_T*e}6%Xy0z!6MrQbF;Pr0~>>7Vh+(mEiC*($R9^ev4+(pf(#lqAjd;9fqrrL}i zZbP~unml-9oiH$5Cj0K_P2O$uxc=1~5N-34b>rS?_R}nqb9M0IN%1w5Y1q=3ckLwF zS*6bE^)h-l$CwMc77T3o=+%J$y4TS3km;1Xktz}783H>*JBYz;bGJ0pxKd0B^IPi| z;3-;jUx3FuE;HLGb|%=HqFvx%nAw3YP7~3U+CL7)lpXY~peO4*3x|-T(oO%-%24~q zevq+$%uC!tO`~oZ>g_8cdi#k*G`G0LTM?*kDIV=F>5zECK&jCDLbjNNMTAPY*(_;G z#Pdl~vH{HM=EOGklS>M*8~e&AWj66kbFhMD2qiD3+@(1-7A#Q*I?N=%FM!ul)V;&C zRMP@Xswuap22!uO+P$`w???H2U5lg9g|Qf+`M=jR(Y3C*cHuSty{=!msrBYiDCGFR zki&Hp9{~=%)gTp31~fWV&P=B55x z*!>eBr)~V7&Y!P)$N8(r8%*5zfEhY{jf4VJW+NuGk$Et;ap{Oc5eO)YbItm zYsbqYdvZrUe>ivK)42O^>BG5OiBsM@I~R(KkmhZZP9(E86v^CQ1-~lPBGXwPSl{ZerNlR%)qc=_{&3Vq+ z$+90mG|DBfskyj0xG3)DaPPpq9mgfHsinBpxVPczaENiL7Iy{i&A8b(#hHbR;68$D z!@UVtjk_547Mve%CjJ??3S2qvN}PDE!Ciz?dLd_Ml8bs@tBmiMkX$9xFVP0bW^(=u zdnV33^z}31`N#9;t1gY6oO}i76os`OrS+9$sUAG}k~Lc7GH!M_*&`^5j3@V`vB z@+0r(Le0)!$p0e2wM(K(cxpE;DPpl^g}Pvl*tdN}l@tJM!ikK+H}WchF;chSO6 zWGms{lbidF%=o-N%Z%56 zN5HEhnNZbOCNyt*2DyA>a&BK{ydM5bJ7-K>nwmK=b8L5HM&#be-1oWR^FBzK72aGv zacR6_qJr>p!WCD2?Go@xL1-ao{rC&#&wp3tE+2JF*`49x+@GU|4bU#8{-Idggz9T} zVk?Y%{*dq{Pe&t>L%Er$d$TpbiqwPI8J+iL%kh_YK9CK8SK<%hpW)m&e(L=Bul+W0 zAAcq@{`py?JytytqW&rediAw05;pHRvZ=|8Zy)=+AABtGcRx_rw+Z_Vg*{8yWs+O9 zk((}m&WybG|X2vUHVfs?pL>X=1#4?YEVwtas2S4_vZSphd#dGMzNfbJQU35aj zS=mM>bbq$o8O=#oDzSgTu*%m7i@Z))wG~!Vl;7UdnGp4NoC)QL4RMBKr=8ozu^m+* zY_j~9;O}$}=R!_rHgf5}c&02fF8;Wk*22A~E1k``j?>t_^Z=*wsu+92%2&3KZhUss_2n0Cz5m-_TV{ghr0Wf-9hp;`BO?K7MWQGRF6 z-qUk#KnE^q%jd6p&LRDfGdDZ;x_Q}X_5I_QI*|#DXLCq@?$UYLOUEu(eP_*S0&kj^ zJs-P#0^5wOotr)9L?*G(bZ4wg4{f`vjQ%7)W5ShX*SY@xeg6D)Wv2b(vMUF#xVU+u(P>7f8W3zz%)^_eZ!t#C;xj2)7@n zF?J4a6sK_#Ju@_o%h%!Baiae|?k3!OaUa4_hN5xytKb@oAIH&GrVijVo*u-#ANLD5 zykg7nWX>Y?#oH zuVOdpgqlYtoMuI2u9qw&V)*#ymRuTX5>#K)AjXZL)bkBH{kJfHRf zXbx%K2~?jHy&ZoKolx_ZPvJH(nNa}fW8 z$AeACr-MzXsv^Hi%DIa9@T!Q${|}8brwM)EioXm0Ul9MfH?>W^i2sC1%N@^c8U0V_ z(xYc^(w*mU!?iniHtutr`IkD*dG9w|JG`@Tq?qQE;B!jw4Lc>$b4sM=@%ecQQW}%5 zP1|YZ+vJsTr$+@8u z!aO(?*Elm~RE91JRh3;lbp^3vlQ*-Y;arv1@r;;pO>c-0*q}S9ncDfnVv@TDVEy!WG_R;RFXJ)fTSsWfrdZJXPcU-1d8l1(N%7 z7k1beGQU_EkK9eum%N}1PuQ8^FrJy8bmTH(FdjMbpCP{RJ58wjM_n!zz&{Nx{do;V z7XRnLr7!hB;eP;>e)#xz!KDvA{tw`4e;8QP<&=r3XxY~EOhu;j|M0;WWO?Vf$ z|5N#XF@Qf3z`q#4p9fd_j}lk;eIH!yUGCxk4BiSJ_3+D(OCNZ~!>01y_6S zLncaZ1GxWF`L=_rJ)40F|5PB{T;BKgul<7wry=1qbUV64kQmB8TJuvqdX?YEHixM{ z)g?r8QsO@8_5Y2hw%ij2bMal$xX`unf5Q!Q>!!ISwf|y|h83wo(X~CR%-%y|d0rH+ z@a&s?y)=eSYZ1N^J+A+G`h_49Y>gqJ$2_PpL3ob`W#fg*mJ80O4;p?C#)0)q;1^^9 zKPipJOzzk&pXZ<``$t8e6 z-^TnTkTnaI$HDr$KiRID{Fvg}K80v3K|D?~PQNp6!B0dDSBftiDgPB7ju^~u6=`Yw z@qgme53v}2pKqHCqV-dn`bnqc7t~LD1FqNnRhS%WKaFrHL*&nC_*jeOe|~zLg%pj1 zjV#1g=egXpgo@uPwo^;QD20~{-i=c|$im=$9YCF>4B|(vh&oDxds3!5#(x!BP3$x5&+KJS z;*p&8q@CD~oc7DiI@{1zOsHNp&Imj^;LXf>fOrn+JPhn3|8Q*oX~)^??l-X4Lwi?+ zuG}$E&%Ti2hGHu&tB>7BYu|xGZR)`jiggeJrrK9vxrX4 zlv3`VS#>ls$yp@(xo)|9=s+)HjZYhxc&5yqnelu$`PFugn4t$@CO^P5)6c{et!>y!Mc6RZs25{2F@^zWi(A`*K6zHO@XG zSDTOhz$qhZ^koBS`C*E?k1!us9;4uu7>;w;3iTQN!p+P-F&H7>DqtD#73%v6`zhMT zj;a6Bm&#(CDa6?$^!1Z|6Z46w)W-iH;MY+Z0`hpvVI|l zX@RpXPYF2+AGUCXA3-_XU&yRkeGF}N=72=;OheT<^aAcfM){uZ-J{l ztAUc&(}D1BfU7-Uq$~=58C>nx?BV|eeil6D;eoZjd)Lrg>@R3t5p(#n&}DKjAeVTx zfOj?7fArC;ZLL+Cc_^{;GcS2A|0zjbg$q2&X&y2yMSHzRO!H58>PgW}eG3&-W} z-GqT$eq-xR9r=6JTvYd##%iL%bGYu4vv!d76WldfQH(*zJOuOluSQ`_ieA)XbZXF( zdImMk2kP128y2LqKPt!o_oN_;vtxox$h3!5&jm5v6{%;?(_Wm?sb-#0&tk7ZkaX4y zlFpDI;Uj`k()Gemdf}R%C?74Fl#k{t%18Tr%BN9~e3l8$VGS-gm(_#dJl4#D4eXP7 z^lgGyut(tG2RtZS8fJ0z1n{jGr=!5ScQGFlodJH#gJ*y$e-nL6fzLB*&@a@#+r(T<<2eeSvN`B#j zrk{POUTU3QPuct*#Wp{xShP-mg*}N;bO6y}g)Y2K*B*=g6R&>3b^3+)WXBX|ks|RE zUxVv4e^ow(zt@A}*KY{EQtSCugwfO~!^EFS_v`_J=5NBfw_?qG*hNd0EM8<{`~>Uy zgvma?p0B1P>p6QhT6 zPiEZpwZmGF`mui9IcgGKY&QWh(5C0|5 z-o$-Lt!=80ek=DT+$Fe6ab^t^i%+0CRToEDOTb?qeJsb_-HCeUssGG;TXzhvR36Nk z!|;URp?6L?4)+J0Jrhb}`%&`DXdUcKIkA0aEnl_pfzzSPu8E7;t3b7@DwMW!EWgHO zE>Dx*!5!5*XK`oiPvwWdO#Iv{stYxf-*u|T&YY9^M1Bo7!a7EGS9fZy)l6BUJEw)c z$$1(1zMMn5Cod)MOQP~~SJ%nRLU*bh>TxMN3g=wAjyt7O%UB0or1Z$o$l6i6xq12V zt74fDdn#3&vrpk4KMTx;Too**qg3P6_Mw#4RuAWvX+MR#6xGPei6p)fnvt1wWxhZ6 zJDuMdpUM3Wt#4}P9L|+RAIj2h#lLZ@VI^yR_N^F*4A4hI=x)pQ$^0^{f|lkJa4OL_WH^+6aHsFn3o+ z_vB(3H(q^|HD|=VgX_yuP&!bfwHM+3dUZx;Z`Sv#-WLt;%zguXSmw!|OQh!are^wn z(1RQ^`i*) z)3q+^aZDUTSDb2#k9!$Y=UC69kK<0~!>ps#rgvz4UbPRIu)d#kXzxhufm}5Hja)^H zJ)kI#x@u3tiMuj!;v=+~zqhrYKEmEs>_Ozd&*)(V={2xslx!5%5F4hv?w(Mk$Ac-H z##0H8*7oPTHKXyf&evXrbWu9~68DeSQ*PZkmMJY~U9CL^L|e7qlXH*qhW3BV8e8k= zL395s1+VDHfjhf4U;aYU6luYp=v(*A{`gM6YKhl_;lY{Ji6~&i!OaF z{c>LKqtQ>ByW0i5zjJa0Ws2qXexK3%rR3}D{Y>e7r>plfJ6*k(KF%MNu4cwR6RtA* zlc74l4?JwjFPYZI?qw_C1L*$EU#X1lINB6HlzVE?%j2K^z!ljB$|gOO?mOtT(Oc5h zUSkWijM^F=%EB7|P_Ak$Gs_vvhNJWe#ajlwnRxNxJ-Jn#dvdL#d)O=8n4N(>w~x8$ zMK91VswlVgMd_G)J?J=hPCi3lsBJ!!>-P4sLiC^d$e~;+c05npgN|w*soy2d%(WA4l}J;1qrDJcAJs2Yl(!aL z?TJetZ^vdk?D@F*D1EI(Uv7}VBX)}&gi54aQ1OIydN4^YG z>`%MA?%p8JGfe%gGW%wU`u!|vN@m;{o7N67@i$5dMDeg_A8?-*v0#o#tuKie&}fEw!QnE2=fB&4Treb>$eZ>Sjnlop^H}GM8-qr z*_}*SZLBjc-7%kkAzfzf624M*@AuAjqW8}ZS7pKx;`#I07;$4(T*;`YFQ6mLF}RaF zJX`hlb)Myf`JEYKF1Os9%Vm*qiuo65XfCJuTUnfXVh43bV(QfC&)*&>Ie(i;9F05q zaUd0+U`fV2Xx$`BC1AT5SETnk-(f2K-SS8akeoob#NH3bpKf8o(aypW-9B|Tl1Lm>{aeq zH^w-b#WtclPIgc3=6}IPpa$KywaEW3^Dc!-C+uMtj5Z>)9q>PX7!4aZgSal9O~FCp~dGGvlY459f6Dp|Mu;z;JBe>9S$f z@r}=@O#P$i2X)NXkMhl>UM37bOZh4@FJ^2|*%%Kf?}M{Laq5X4l^cAgIs56P9D2SZ zOq${5eWx9VXO2kQi5_>yg4jv+>7`T7!DUgNjf%NrkmjQBnYpU+RaqoA_x|t>Gw0#n z>C{V}90asKjToGeFAM7aJhFJ+lZE7vm%;1wlSknZJS7X2If?pQhS=YKnc3pKVBnnZJ@YW93u>;Yv@o;CZj2?X>6Z zxK8jmPBvNk9tCQC89tgBAHMN$ZunVO=i3>Zs^heEiaL#|P5vq;{a0JwNL#KqXSP3? zE||7NE=BDgi%)2-bt`q&dS@o}Gkmet#y&b3t?itHuWAn2tiJE+gvy~ZNEfoKwW^zT0`2~4iOn$Z4!5W;NovX%G;$$1EiF+e_%UNqL zANyABM%)UV($zc%169}OmdWVpUnAo(@?WpAppQl`NkjZR!#36G<>}XP6?hA2E4-EY zpVm0kr7lXE>RX}6Um99Ck_neZGMBfEF&`!@6m4ZKxR!q79DGgf?aAc#$U|u@V{ZAo z_*Y@$L(y9dFLV7}D_9>dOC8FcXeJKj50U0NXMfI#Xf4b0ip@Nyh+EFu`bM5-tjQpg zVdTKPmo?81WAN#D#we~HSBo>Upf6}YpgfuxUl-Y*t92f9=L57WlYy#r&HHm2yF#&% z35{LrSR;K(dPh$b%?)!zHu)guJ%UPuBVM>jdhvlKwI(itZQx+Falf#tOiOCjy#VZsS)o=JH+G0;B8~3ML`FQD%iP(G$39L~J^I`V&MnGpIJUt&SExB?hGz>k57l!v zr&&v0MBV*zOcJjdeO<;qld_A~Prl1>{t2;Io(dqgq zJzdA%h^vn~(8m#@j}K92vo0JyH2XW$rOD{#NbVER8_`YK7V(CWkMhv7LfXgIPkJf+ zy9g)UlpdOOdMY#Cu;Os8;W^iihKJEbXW!`|bTK4d)SA81wWI7E?{auAFI}aYEKLqu2Nczcs+kv?SJEb~(pE{+av!j{Gg`-_Y|7wwQ z4K9L{9jL^W;~bpyvJAbvVYFZqS1n@B70-m|4;4JCQnl*no(b95{1}gp(r@Y-+;SP+ z<5`rv?tL47^RR4lc2fGUcv`DBlb_1?bkob@Wf!+GemcAU!1ITx=ZltZA14jvSw&pM zk*$NL?kS7s_u*Md%m_BzR#Phr;Djot=Af-5Iw|4YSzGK~A-! z4^CVh`mC*{u` z0kK8&|0?ZQgg>}^Vs^*C_^+*XdDO;wK36hUJjFM09q;a5Adc48<{5eVkIE)qtsl8h zX#9GQfo%I3Xi*waKk0Cp(OLRA?V-6zMC*!X+D!M!e7&T8W^tsjvC@73GCZbmu<9 z1aKqJEcWwy-pje?aJf(az{E38~J1+ht0lgMRcP%BdCZc zvX@=$?rnX3Zf4wX8|~R@E+kte8DD5`%b}mDuVJ62?X{N2v=61dnYQr?+F$8NuS8SZ z>HenHQKEBpHT9xbUw{AWqGk?3sqgXl;oNa#Ap25eM_#Ai2jCBP$_{wN z>iD!*M<1wfYt8$L`Zo85b;fyCeH$H)`F*>SJcg~lo$~s~>(pQQO`AWDy7Omq50-T< z^MIi4y+~X7W%uXL7a=#zpU2!VW51pU_uD{o5uG>A z8+$poF7nx2BWpC3t%14nT*mL2luv7|`C~kPjV!btHD&Y0-3r1Luh#iQ@fs`s*}$Ck z6FKhGVyj3WUFTgWQ`$F`eC>JcW6;lfcIq>9c-f6o^V#EL1>660_CL<{Yrn6g?MH6x zD;qmrWaF{Z;rBI9)Z98Se&j}1FV%;9n_gs>n=^XHNWKq@pnD_ey;&>L&tZF6Xu;a(k=j#!gyxxPe(i5y{;kB zWG-&@vMT9YT8pVnv;%f`PyVdew_Of&otc(J3O1QCi|8KMvdZ)HJi44|9ITxVs2ixjtOXk70I%0*Hw({;jtF3lh zVLwe za|Eq%e4Vt%QQ1I$?5|-@DvK;?NnbiDTgezRb&fGnKb?cUx!Ki4vo}iJJJ}oU^!7$& zEAo4z!-~(|=%{qPZE`X5_hrGo(Ki?~weHY7)GxP_iBGVGsR|uk#aQ?uvv*!jTb`jm zFvgkw8XC(?BBxpOx3I>U^0B%3@eJLq8-v%_GjG1?@0)54@x&Z=Ot9w=O2gP1_6T;n zan1OwGm~NQ(7S3Czy*>&46aYon7uYnsVvuI}du}=mTbNXnkx~?#q-(ef1(odtJAU z^S-;fGGwmvk|Fwt>Z>~_VcxmMyL+m-rAyQcnNNNmo^>967=PUJ%N8`_m#oFBvdKTQ z)0OEy#bf>J|1>AnI)a@QGd^zvN;hREwH}^oC}h^Lm%QyU3Q^{zE$nrq2k`q zWxQ)}_Bzp>L)cH<^I1E2E#+#6e$M#sAgmF;-jm34230-m0cyWbbHeiI_n@zx?0~K@ zTxsau4E@-Q<)+=}n_OMSR=YAa>nZH4^Z<38s<-y_48OPjVaz<}VDD#=mezHzVn@nZ z+d0E~OdqiAPX%c=Xs(0(!6xe-(v%-p`{HB7RXjhA`i=713tv5BhU&(gyN-J{Q!4 zKcMw;w^s<2M{~9#R{ok76qVr(?1=P9=ea6_#sc)COno!#+^%PSv5T7L-#%U;+rj$2 zGS2>s#tYpMi9a%1{m4GYRr^XmRZj7jd;HpqdekcS2PnJd&i|3}EB^`PcNV?%@7SEm zqSu{Tk9qrqDP%b;+v(kxZuZB6*Kb#iBeJWKgRv`-IQN;cQ{1o7T@lGeHdgm1@;vk{ z=}I|toh6uf&}J%LGdjXM%r3NUH1elxN>5{T1MMh3X9LCSCwMe>KjpQ9#%Q&{6YxJ_ z>CjKRXQr~M9c61YkC6S+T)4;C^FxKPhU46@VAp*6rgfLbW68^>`Oue(WF^0J&YuTo zyz*<$OY@a=UfF-zeM-rR_Xm%YN4P$Acy>r*RqVbB9QQOcmq*ayxR=+5JXx8uvd+x- zi_EKEWc<*)r3HNnbLSwGQaRmo{;L^}pZ+Q5)4tyLGSL3=Jw^Ir?Js-zION$&Ub?F( zJ6<09j^UIaAjdr?HrEhA`LW*TP$ijh3BRP1(dFUgfEKxw7B2(FcJK z=2kfmlBX+2?pf?w<+yx4tp(cB*#2Bk;&85+uyE(bZ1gDUXZGjnNB8Ge4ZHkWhwIL` ze_qkRII^^pJ+z~o8)f$7Vx#We@nsI@gp@~R(cSR|^wr0Mu!elKugxCSLBBlOFO7G) z^;Q}o?t(LaHuql~?n!Dc%QN3~y8rexx~h3aP@cMDpm!oGzV5Dvnlt0>9DzD{a${~^ z_Y{2FNrO3T(YogQ(0fYIk3o+_CHwtmk6LY}Hq_ii=PlKd{W+CI?W{DFzt#bI=EeWj z;(wJfa36i3s+niV2pGb3;+k;UBOQIl9RtrQm} zg_r6B*TZk@K-9GZ`8J8|%jvvd=a(AybeA#W;oQN&-rmlo=KK}Xs`t{OY-azf_8(l?MS1T2 zm;V0zk94N9lQz@OKO@lDr1q&ar}57tk2W999i=R0{e=vQ)>RN&IM+~3Ut5SnHx?$ z;a1K3r8?$ZK-ERJxCiW5kI5SUYQ7BFYrerA&-l!mMZ{@94`nJRW~jTU5R~R*I(Q<@t({`xT045!SJR@1_SxDf3FLJdr1E`REg` z=?TQ=dkp@!9u~D+IIL^S27S{sz+it*BdRjqnC5dTybnlzJ#a|<-H$QdX}%NL=6-<4 zyaCbu>QMBGlz1<|hg70hF#Z(6`G6M1@X|4K?|Wh%>AI-CZ6e`UMfH3u->r&z?-Xdg zb;bKTmfzCSv6AO$%?k$F7A$bvD42#H(|hZgo~PAwv`RYBl{B$R=IzH*1do}|WZbhM zX+E8P;dpv1S#@0NesZ+kd=|>nm+5rriY=2B?xWZ)za=Z5Zc?|)>j!iVZFAMsS>83Y zCD9k92-dgmqgNn({%>N@AG=PXP3oq3%!(6Upq?PLC5a)y0ph1 z2umji`5FtN{BQTZ3dS1i7jn3R;Qla@WlqRpU(z|}jT3qb*6`=Ye%>H2Zt(T+`26ww z8rkJvZ{Z7J7mi9A{@Z{j!JqPQ<+oEt+Wg%3yDhvAx^T@m{QS1DLFfKl{t*jTdM{YG z%KxH;E4+b4l>2kz&$n=uQ}}M6pI>>U$L`6)eix_GTNeoLwD5-r7p}FgpWZnuT;+Ss z!XNYSc8kB24Jh~LmN#zU%74VdmELX(SNL%YSNI7FSNPM+jNG4_{__^D@Kaoxvcq4s zaE0qVb$<9aeXoHtoEL!kVBRO9{L48&a(}MAdG8^E6mtHGzb#&<-Y)lD{EZf__~!!g zpBK^mLeAd+H5YY%Gn`X+Iz3G3{Sbd`UcYBJe+%AV;Y#YPm7eOiJ>N+}&fkN_E&f-* z8!cQ>pS1WDzm`d-`*Y>nWZ??$VR7b%{|lZ}AiV=txcJZ3dhEz64DYgh|D54m1n$rC zRNqU%Pgv=(sCCLMewDY9O;Pvfw#QN?!#=L?RTi%NpR{m=KV{(xf7QYjo`0b%Z5mOxW5_BRp28QuJS!$ z@hkq$cX{l{b20qK0{jQ8aPc?)e1ZR3_|IAV?*%Wc?cDyEviKGMl!dE2=PX>|kIpZo zukfQ5uJDGdio;_TZo(H7hc{Wc$=|}2{y7U*c%01@_vf~Er-dtg)uKZ9P1N@U=>fOW}{Ocf#`v@d zo`=2kMHBw(0sOfD{!#$<@9X&S|1}W)=DcpY>CX?~?+M^70sNK#z9E2b4d8m`tp79h z3*es(;9m{ke;UBY1Ni?5;FbBdbnEx70KOVr^O<%ErT0Hcw={q8@w)^32f?4B+5B+5 z|3>o@AOA*x|Ahelg8&|4uBG|KGB5u(f%`wnrvY5^i)Q>P-=aYHt>Btpyyk^}7+mv- z1`pp1e%8WwfJZK-4|w5v-;V!NeqRLFe4`pYG4IO?gnv7Lp9$dq7{Dv(5+Z2`o#p)R z^KTQ*eBvy)(r>i7jPk!RfPW}}4}fbv;@9_=!8LyvqurI>BLV*34B*cN@b3lizYX9s ztS+nay(NI_z4e-ZNUxRuvOu`rucP@#H|?%)eQU-4DZNhw@Lvz$&j)Z_gw*^*a~7rd z_kr*#%cLm%x!{^_G<*Du0^#uhzA1p~UCf$~q)1Eo?FZNVW0i+LE`H_{etUcwT=NTG zzn)dN_fvVY0sJ4pHJ^xj@_RFV$^VHz2Cn(UN&L!xc_3VC0nI0#^y=3GuK9y6pI-#m ze4)k*|0KBP2N^HFN5TD{^81|t{;dF>4d6cx;N|p1%^%K@mdg8PaLo^1^xFRlaQ~NbW1n%^S3}W3(Z`S82QSq2-S5EvdfVF1?e^-M(|v+mbdLciyK!7W59L z6AKnO=0n{cTRO>Gx074_Xf8{W<9%V*i_c5a9SUOJ7?u{w&cS-Xzw#!mzwYzH9Yoss1cfklRYkx5~Zp)WFV7rB|6xQk5OMJD}4Zmgxwincr3SFBpFaLH0<+8YG(1aB)( zJC^=i^wd^r4*%QZ=4F7c#NCezxNYLTJum;lJ$>XL_|<{nyXn2myasdL@Lhf#9p-~A z9lhPXTb=)qmmV6u^xFO>diS3qOy9yR2-pbD`f7tpZ8UPjmcF|RY?hK59pn4k$!@3k z?TMb4JeB7=#v2DrD^LRTzB`%Dzp2oW*~t!)^Q|1{2UeD*vHLo_9^v&mKfM4|bt!t2 zqT2kz-%PMSK0r1rlS4P9(*x;(5WLq}x_w-E!qU<^NU84$h(b-%?S`NX9xL0m6u>Cp z3S&-OfUSBaE_BQdbXevVfD5P{=B)r)V8R7%eTl)Jr zO+c&CTkR~j^yiB~nz!j&)NNF z3Ajz>)jDv*BKw@o4^2hQr1mH%ZeGA5Bl{GwTzOhdHzLR7@zqMkWa|0vZ!5$2kSK6XJqBM#c^yc)yW;gj8w`|;q>Pj}g>TD#i0~6M( zue~V5YksSv`m8brg$k=K?a6Jc{dj({Es~BgR!bSTCi)7c!dhs^H>E%&%Y{`wX!{e!lm9urMOE%jL0s#N5=g=x`Nx1|uT+oFR7HSx>4CB=Ns zHwk@-A$=OjbO`sHvm-Sy$obPiKhw6&9XgA0Iy#c+biWzuRt%)>@lz(-;^QUFcbDSo zcXBo$_zCwt*!8xBA; z*+Ud0{pSTgO`^<~>-RDz7To9VY1Kc%S%&b>P#(ektnGnHPw&}PdNnMD>kp8w;AaUJ zJjk9m@a@2J!aoNe>rmyJ5>&o|p);;KH6 zu+9>EoHeE3=SlY>;IGjhg1_!Kt-$cT=!ftpC^t~)?*uA+^Nk_sW8iQ9f_s*u@aMho zSAi;LE$bSUvr!N|+b&3X%{PXCI^$8iF`&|2#-57etrsL-pCIuL2*UrQ;Fl=BhwBVT z@y`GizrGqr{AGf~Zxtl|I>9efenHZCLhviJr{GtSzu+^ z&zfCuKJCliit=d}B%f|U@<|E)F6&Ogr^ruGaWUd(&v1)E4;a0%%OUPJ%8)J?Bd zko49IlHQOYi{O2NpJER~kaFvrl=WXHUqSFr!9Sp0g7DR|w^RRztf2+RNJsD)_l!#A z8U|OrMg&JGH!yrH`3PP|`-=W7asjHIuLx4E^2>mft5J}AjtEkYGaf$wa`5AnLy-KB z3zC1N21x!o<5K?hK;=6mI_d8dB>f|Tr2o7i>7Np$ehssM%C}FD@*nfy2@js~pw8%&?>V6IeMOLbUj>G5Bp<;Q z*dO-7!Y#;O@Fwg6P~}-CNO^h$DbI-DpOK&7pQCqzl;fP>3#9AedS|)ljUHSIR5_Lb zm4CPBq^~nP(T{rc7d-l_9{n|su6Lh{f0f{;(J#Th-0>6Khdv2DLVALXGsgt?)6Rm} zy{sU1PiKD0?<`Q|s9}%Iq$@~0Q-avbZGulxUqR}zQ}C~_BZA2LxCeDcsPtX{D!r3} z$oWOVZ=)~3aGd-FZzI3A6Q6oC36funAad;yB%f1)Uq^179SUD1h`tXCzDPX<(W@5) z(JP%XD*sbJ<=^yk&`G~tko3C+Nq<-nJvt!xUF0N4`ePo{S)|fA2~;{xlyK6C3X)Dt zkaSuFNoQD)_$NL1njq~`GY3e!Gziiz^95;_W-kn0K+=y3l763{^udFb?*>1B z+y#FCzaaVb36kFt4?ZtQI5N%?jX?2riVokfAbg{O)ccqq@_SzJEaea+pPB_OYyg^cfJ!GW zI_V4v($7W(_fj4~^!Eut^!I5&`q^FVIpRUyc#;`>C9U6cA)47Jo;0D zl=pc-%6m%io46S6Q`m7q+Oyk(x`VCx!BN4dk+0x6#>0icAHy$5d0Pc3Z@VDnT`zb9 z`3U}R^ic5ck&hthj|r0BD;{3G$fY-XP-p5Ye=AUW5f>aKePDPC`XRWLathv!UI=bO zF9h$QzX^Vv_615FPYY7-6N1$Hj3D)nE(U&%dI(aUrv!f$`{&_0TUR+EK;^#*sPuXS zNpH6x>170o|2**RU#0&G2c7{c{#l^npA)1$uK>fpf*leZcK)s3@o*OWCw$N2HOlD! z%0189fEVGKJ^aZw#>zLDOYlwzn)oVlm_dVwf%?UkxX}MAUj68%hX0NDV(=+W8BRZ? zSM7SuU%z}y!Nf;1o8L0{YW+Yc@+y3#2bHdV?bnw6?nj(3%9b)r{CN&Ox=#M**JBnG zzYYrAp1@Yf?Y(>pF_u1mU5YIi-@=R95`_3cx@Nb9q z+FQ8m&s}?)-U|Ip3Hq(jPnMwbJ?*No3(%ju0R2D-`t_tUQi9GMrK(g3I`8|cT3>?B z9jB^QCFs{cZz@6O4pmjO1U&}5x&-|y=&!zcy4n7m!PjJL1*u&s-*<|F6glm^bOGKOVB?6y|M&74*iwc)8)1jdbR}p z2IwbB(3e1essw#L^dlwc^PrEGpw~g)UV=UgdQS;@CG_?Z^z)e2<`VROgg(Cn{eMBP zEkQp8y}Shdd(h9-OqbhVK!2$O{ZF7jUxGdc{a6Y5??TU%pnnni?h^E0gTAc<{ZZ)M zCFpyh$4k%|maCSPpx+C_szLsd-)`T%sN1fA(=)mgqH9JFsAhW=s+dOP&vCFt*m zezXLA1yhAb7wehPM^5Yc=6#lbx8)zP{M#-6kmc{Q{N0vcWmnqm7OmCtw^;sVmcPmJ z&$s*ymcQQe*I52)%U^E!U(@reUR__Y{AVpcGcEHDx0fv1Ny~r2@*lVS=Gj;;?PC`G zNy~r4@;_?%_gVhkmVdH(CDqmcPOB*IWJ? z%U^Bz%Pqg&)tr~T%q0- znsItAq83+<(?0x5INb+3hRfh~-!;dCxggL82DZsm)(RW}=H~pfxYTT<##!lgM&+%#86S)5l zKMtYXBTaMM$Ww<@8k%>mS0F;_9qdY^yKhb>HYeSKI=<)2H#S$Bqwt%y^2FhqMEb5| zT4d<)ErUHP(*s*l7S+%PQUNl&I)HBL{dm%NlIdG-V%b3&Jo{*h(4I(ha>t?Q(3W&^ zQHvWqEqtxHL*kaLZD=6PxvSx%itbrrJi*EIP;yOzTLjzuJX*PW;05SBcg+Cj*LUBi!1MC=`L}v)OosK6mwIbj@g4$>0FDszF>!VRUvF;vcE)tZWieF(sa#JdWg{ujwjTCI8yI5 z1*QoGtuE!sKxGS33uUuHOwmlaf<)7QR_Lyw6{5!+w|H?ZvRyt`td!dd4|F_JCo33@ zN_6#be`Y99Ia3B?W^R#T)c+;E1)}guo;IdRW*Wk%-&=CF$;3IAze=AH} z))3yW!np|_Tbg2@G}CJTQY zJZ|B?3EpYpUjk2A_-}&`TlnvTk6QRM;28`5WALLE{w?q^3;#>-7cBg*!B1KE-+;er z;W=>KKXHE*&X4fu{)vzO7*C6Z{}Xtph5rlqu!V<_)jkW?vyD$$xSnl1ZsF{AI4@ba zo*mSD(EU|7?6+8ZjOZ`8=8k?i`#Mgih3nb6Aq!_;$vlhf^Xu8UN3C!@TXxjK^=#R3 z3)iz{n#=m}^=z5$*Z8=eEz`W$$GgDiTeu%0sAs>_UkkrHqao>8FZ-uwyYy_Ce&^V< z)ZP1E^l;I%mw8_RKM=r=2Jq(s_+JI^vjM#D+^L)2Tl2c(;#UXo6#=}U`!4^3f$+xy z_#XxEmjn2@0A7{X6*v9*0De^fUmn2Q0(egV-yXpC1n}Po;04`w%ky#|d@6vy7Qlng zZq?^?%}sA{0ACrvwZ`&)(vMvM{5Jyla{>It0AA2_H~$JtWtDzy0M}a3|0(>o0KO@J z4+rqi1n@5e@TUX#Hv{-z2kP29z9VNGclo4AWj z+{GsDViR|m^V&X0_ahI65OHAA) zChigwcgZ!9Gc#MwPnUOh^RAFVXK*OpwK;Wx=Rz(tpM)MqF$Ygl)!KAm1-{aj+9ZR&29BCveD;JV&O$BtN3oDu=0 z_8L?mo7ELTaQ6ajaraZ){fz?ZvU`E<=14x!-&!czTFHl+U6DLy_GR*zsR&wBdVhxi z6ufBP$KMnp=z@Dm^$bDvH!)}SV56JxL9NvU z+dZhYneY)0KI*|^9z5Z}Qy$dXO8hm<>jd@g071PYKv3Vj6CCp3ZVw*u;L{#F>A|xe zEN5P&c$yCiHhHksgWVp~{7&Iovj}RfBB*(s;7cBS#e>?f7G2NO3oi3uy9fI`sQqq* zYpo%8%!4O9c*=vXdC=U|hfiw<@wa$zy$7|%f9uVx-GO2D^5+ZU^lWpOwLz00cNmrm za^Yc_AeT6r1-V1gB6taV?}FTkXcc6F5*Orxh3?9SFJtX5csX(xWaFSya5m=yf^X(* zL6A*|KEYbnvVw1=eFRzDY!iGN=MaJ@->@K?5+j1#yWA=GbF9e(qpWoW=OBNg34Xk|yui$(`@SUvX1=+-SQm~P=o8Y^Vui%xOg$VvUYkWaAH^v07qCEu{aP}d1 zHRmRRG1kh0YM*iZWl4$%IBDcWD~W3<0un)VkQr2PelXn(;i zw7=k1+F$T)+Fy`E>XU-^(EfrSr~L(gk@gqdPWub~674Ve%e24Xuh6~=2JhKCl-K|q zO1rSf_wmT>f+0N=w!l1vzF-5B(*KORW#=fH|HHhPA6?QBx!GW}1AVa*+aek!*byHp zJMC^+12)C}iB~_mnBm7Pn%{-^=wc>)x>lY~w$1-3U!_TxFi`yZ^t{O`;>dtbA_r!>p*T+}H7f*@4w7M#i_lH_EkSBdTWC2Osx zbo9IW+G}(HEdP6>J7Y_mVoP1-H@-6#{W+6G(Vek&zO&)KGh6SRr`~m~5x!l-dslTo ztUQ*;(u*cnEabb?&hgx*!{MyneN3GXmUB-b((Jyc^-T2PTnN6%;%CRt#O^iU<7;(> z&9_RXcvq`rvEw#o*SPagwk&$@_?hT%?$K~G`;PNhk7JI^yJr}F-0#}* zo$6)rLpjVE-|N12VkhtIt{j_{8~MEMiL4(V{`BG8@K>mBXJ&HyeTQ?~(}#1I)~aW| z)jIL!vDS(5?5x}(XZ>XLj~^O+n0MXp#L;!9FauM2aJzAz#O=a;0;li?aSz~j;6`xw zDNKt=ACohM`I*8LO<|U%Fi}$}9J)P) z8JohSO<~@qFm+QO#r5KPaF|BPeCk@rT6z5-)qRAwjbf0?$6DZ>?AkI>~~H3WG3~^3#D<9m&R(7##++Y zR3eRMXY1ROj2e^l*E+>3_u`SxPJL7ElI&esMvuwq`Jb5meYHJh2|4k-^w~PS+c}iI z*jmm zybHSSw+L6ilKhrpwDcXZ4%`mhZrm=M-ZS6L`?HVot(c>e^qbMlc!qE8>6?doC$w`k z!+WG3J*{t?9f8hhXufF?0e=F#Y&bK%FQe~n?8!ZqI%M7}uJ4JcPlc|W{ymDfc<<)k zPxwyfP_B6%eF9k>z`v9`LCt)-Za4n2SmxeZ{G<5G`HpYBN3Xq{cZuie$8!<(?SrDDf(4ZtSgd|(WxcTGolce?a?W^C+oC&Rth z%>9>#_%2N7H+F@UM#xz=S%%;6@*a56x-1w1NSIsRzpp6l=-uwPlhxXKQ+PzKRsW|AzYvBFqHGC&zKIOPL#rx46$`;{U z?#_sLuey;Jx5z*yFFp-+~NV@t5OYm*V@@_*H(rw|p7$Q`)vnMZXNWNw&eT2GXddO&fvrYIoXL z^5xqAQ?i`;JwjjBGaCnSSK!`>yR4Zx__KU>gg&nR+%SP|jgr6r-I1e=gBk3v|J{+e zr<0w2|9xQE``F(lxpM!TF#z3rgl~IiF7HIIZl|rgDW4Ok{E@ZU^^~&*JQT@X9!kA$ zLVYeYoSE!|en;fE=}+ok>T5HRMLB)1Wq2gl9Ov8fxNckzE)}Q00h@sHfiaxqR*r5c zp3w>Fk@r&{-(O9?X_`fyEna;ePTv;ydDOpZ$TyP0h7G&+OKn!p`~CGjAP2vAq!XR^ z8_&a-@~zSg`Z3J6C`R3O*7xcfXiL9u`%v_XsN2>)&4)F#YdiI< z;5)EyM!srywR3&skonGfZDhoJQ$6Y+SH7t}BZeH|k!_UDhxi72xDNS8>34j4XqngF z`e+~X4Ip^<=15N8^%YIu$xuAe9{CsdTWdd7fAJ=pz8=j&kF*ZeHy51F%=pl9=0(^O zy~|(U`qMW_{BKnJ0>jFB!iwJSkG{C$!Sru2l=Cet+06?2uAc_u_O4Zt&*Yk&&zQFM z=@fyZqRexhGh*n8kRHt0o^X)KfQ|WJT`gTikTs`u1$omcmbCz9dkK2%k zpD$%UILchL0=ob00LAscJ-SU{l*5F1>3$tKc9)=^h8~T62D^aV(VdnOJbwg_`7UiB z&EJEry(|A$PP;G-Wn!Ck1@{;F-Ludxt->Xe~9}7+}CkW<9;9a zHQevvp2Gbu?sss%jXQ?>D()+|FXN8lzJ&WC?tkE(#QhfT3%K9JJ%RfT+^^$)4R-|h zIPUYf$8Z_kVcf6c4&fffeGYdJ_gUNl9P^B+&)^=x?ZfTGy&rcA?l#;*xKH8!E6%Z* ze@->wG{3$9*NyAKEyu0It-*EtU-I4uKCbGz_dTPL>|sz~h(%)*(Hw{j3UOd;3>e~+ zG00$ufx#BUahzymOIQM7DYi_EA8lkTz@fMi;82IcWqRYLX>Zy(Dea|sv=zZ^X)bNt z#%*XylNrgXiGy{WmbSE)SMK+>{~R41%YR6kzNX!uIkV2%f7kwd)?Rz>wRt|q^HCn! zz@d-uz+)f!FwZiccwXDUSMV@LF?lZn#h)+A4Ktqb?aAG%_EA;cXJU5$jGv|$uDd{I z$8e1qx|>wrb7(Vn9Qt^?J#jRyCXCY1y&B&B@3AjA`|rf;b>Hr-xqZgJxu3+vPycCL z>HL2K|C(3U6l@|A$NYT}{1!+5ukijU`jGhTpXJG&Z~5;G<7DPJ zJ6F}%nj#<3UCTv%m$}cT!DE{a5!(ou~e8?on&2GI7cNgt@!8t@_14cTRD} zLEi()rIxWyb(PMRXQ^I>2_JGlobJ-ncd?eS)Z8;)vg4`0L)L#YJzQD3Z=5*BbO+2= zKXA=xBk3vLMWy>bgZ-nU++DPgamJ@BKMl^$Lg$COiXQatMtH*b^(bYeJHt*bAcF+< zQ#Q}vu$b>%tBD^TqpETd@0j5pnp9A*_mwh!1;PDwY3|t~zl~}KI^!TeGYSf8{mtZl zv|7fn>uLW#$#V|R93IBbLl^R>&t1VYi)U`0HcOsr=RH+NXUXOr&fPnW8OBZ@XA|W& zJNFs$y?R;gz{(NeLGAsl`QW~BwO7qWg8cpC&^V?$cJhSNdl23~{^#I64r3SGZ|0Kv z_IN*kjGrNg*91l8gyI0X_XfY*yLd=ia^?;qFQP5Rz= zx7jhbU&C!S?L%|P2B6w<4R!Jo_4KE}*}Ksd4^%xZ;JYI}obe;o?8=GvGx$~>(k(SB zZdrcK;;WamGY*+82VP^6Q5H3g-4)TrEs>tG&MpL(eRsE`OUdeQ(^V?0Eyc8Ib#+aK zGpkMmer?t&8bje$e{XnKPe-`Ccs0S_A6ngB;RnL}<~b|h&z&GrGiNvJI?JQ!osveB zdVgOZngus>*_&aGri*RB<}uUKQlOTO=M z(I@%6#}$6rsgpQ-NAQ|Qp@;9Wk=>KWUP9 zZP4o+Uj?R&WP8&0bbAl)o^&?l_)r3ehm4G}0iPOFc(f*~y^7!DUG-hz5stttGV=d_ zBFxs)JEFW=Tzfgak^dVLcz*)FKYtX<#Rny?OFSiRX!g{_)qG+A4<6YJa|9tPh-Bq{}#B~W1B1Q7s1v3T3q}R z`m4S9^pbk*-xc*uOaGz-EaxD z)210GWvb%FDK1t+WAx2*N@s1(Csn^%-P6)e*fEfF>+I?u=x(3h?aq#kcO1)!%ddJi zcJO`Wp0jBqcDfaRB$|yC={oc`Iwh89&7~0g)}ygDDvHTsUTX{KgbJDC1$&gn&gi>u zsxwOEC?+MLC0B7eBBe`rtt)@uT$G0m=D?8CV>+b?%5_phWkkVL6`_%}d{1F8;$hL> zDLueFQt7+)4zFf5t{&J0b#-alWRKL2S_QA1$Ft2kX2&_WPNO3;B4P5{JN3&}p0nQ* z1SMe81@_yXt_^}cvVSjY+(6;tFSSSHWrx2?KW>6Kui)0iN2I`6 zQ1D{bU>zJ3T)^79;3bSbf|s(kE_fO72`;o}NSl~w>z;!qn17>R^8Kv!3nzSrF;U@l zPF3MULBcN(B>W;l!i!fpYZ3VaHhzFT0J4YfVg?A^s|BIETM)Vj1fhGoAaw6?P9-( z1c|RKNPPPR7n8n&8R|m#TnAen6mO$+i@?UKNJo(LrT@|F%@I74y%~Z(LB0jw0Ud&~ zu|JJ?uV&2W8z6e06@KU15BSoIli5ChJf)u;+_cUO7w^-c(OiS~@Q6N|fGMYVd?U2E zpN?7hbT67We|{J7-&3`qFWl)Y2k%YM8c4<#?F3t7t`ZEq*Kqj#;FoBMdn>F)d=jei??iR93p zhIsm-X(nOgb~#ru?+j~=vT^{8DZI8HfrBlD6R=WUcl zfw(fP3D&y2*5=PM;k5==8!N{sFXXj5{|Dn4%1iR3drUnB!3EIv>Imy=)SuSZ4phir zKWh42f=#?KU#YTah0j-^yzzG$2J#f(X7ZeHqsNI2H+QEi3?q&yALU=|<$%lod&z%4Y4%HY z`O(}jb5b*^L|K>%1eg_FdyK;a$b5Ud)@vFx{ka3mTJ5fh3Ro%#6Cs|Vi4k(M zAiTz~AUwiuLHN<91>r}Z6@(w%C&*y>vfx?p&w_-LY)dc%p2ea{Gq4e+tSEcZ8x|zK zvLNwEZlU=A@6$+1j2K&5j)_M}rwpH(^yf~3(ZTCX-bv_W#(qYY}bvhp{gL@+0_OgX;yYETpi2R~WB;svPQEmRG{wBw3 zM)f|mk)=)TQ25T6Z=?i1<{Qx8wc)m-zW~SUdq?ff|2OD&>QAb+c)#=X3i@_)j(hhx zRR4?{@9%sp)&EZ9Z!Ufm#`h=1H(h^X`ah*VeGdF&`co&7FTt-jo<6~Nt?dU_XBEv1 zCCBVftpp5l_r}L}(Y&b}=%fC0Nf^${=jm(F|D_8SgyF^Weg8Z0{`uNdO=?kplFrqI zu|0fw?crly5$)k)PLT=Nr{?AuHRWy=+)uD4>Whph=Ov)?V1 zTf#o&o2y;m`_2F#zGhVG*y%4leDIxD_EkSOpZQGi;c9xg{BUY`+qQuHt*iKa_&G(H zIj#1v=G+`a`{&q$Hy#$*AIDw-?K2fmU(bHF+%)qn?SDKaWdGhY^A+uL)qIEgWs1L& z{jcm_<^31xPOYS7l*djbjF~?SmvLi%Cux<+q!XxYSk@tYj&wuqZNPm7`D7marP}c4 z$6w7+rp#9qZbq^Ei!H;@8}4A=9eeur*u9=}iKu;WUr|y<2toB_fA)7T;%d8_f)Xa>;aa$-Zf7S!>8(kaHuZG-&a@5^TCJ)ER(=75MIYSWZ^C!xaucxP7p3Zi867S<5HES~_|EK0R{8!Z$g!qfl zzPkTZ@NV7;(FZPN+)FWB?pklP#=1}Hkg?%gRH(*S_k}TB;dKVs8dKsP;X7St(vK{_ z&vQrvaJswVC;jR>KQrP7WS`?fyl;&1pgHud4i}L7x&;351b$xv|7-&P9|_#IF=GYEaUU} z7lku#HuHDp%?E@tZ+=~nc{9}z=nkV6LFU8T1!&xEF!2czpY}BvdIUv}py&}4J+u$Sr+%sURst2@cG*MM z(}Kh!eY1+EB1k;12old5g2a=dU736V70+Ct;#n{5P1VOeY`Ey015oYD`i-u#|~%H}$3YGQfNnY z#dot01oZic(Jn2UNryW>DS1PG4Gi-@8s{A*k=nd zn)hgpY$5#1LdU=4;7biJ=GPTi6QO)LV>o!!86|&S*q8TzZg~VPCT7GRXn2`4DYN&f z5Lx)zv=-CJ@YU~Rmh$L(rFpwIIbJ^C5uosE6Zl6HxY@sAACPe-vb^uzIKyi*s=Vnk0^}qEAltp*mODe@v-T9;3qRS>AQFxe!cPZ3ED1i zU7E0{@TxIekMgUwrFWlKUX7m9ZoN3;X{L$pO%F03J+Joil>iD{ELGvrO?%VHV6D5BR?&x!snm;`;Q*ww;R|3{~)5to0 z7deb%1S#fC{)}L-r#QNpac|%<&fuM|b=RRv4QD?%cQNZ1@gEd9lUZb5h#W*~|DWYE zz6`%QA5!3+kyiKq>%_6hyd&{QQ;ivj#tZUj0k_G$CWk-dwJ}I_IhJ z&!huGN6OQ|+PBJ!@z$(;hn&&Ogb&aries$jb0$4#e5P({UXkHGu5*ODFL`QwH*qHO zrn90dqla*pTaf<-G6~K^4VJgT13cbD8ah{O=nVoOfx%R#)ZMOPL z%gfaw;ooR}YJ51@@m2lcJ#hyFZvC*%Vp02wTEq^^w+UWIE#LPd?r|4{Sf{*Gl?uU$esrLU&zpE z!<_M}vy_}udwlf*o4*dyuN|Ca+@x!wgnhhhzfYa}^qUtvbtYwW=HC#XQ(#%J&OEPVt$D8uac7%tCJJ*m8Oc3KwYx`J1!-dpNIN;G8=3**0k7(f*5;*cjvMMD|`L=j}Y) zjIM?Sv=@y(qA_2jyg9@4Gqfqurm<%>W!jdW%%|F2Gv%neWm=&-107}BnQybCXX-cJ z7em5pJn`eA;%GH}sxlTIWA3FMUay%?`rA{fI8w-l1TSF$!7LOvL&ay(n-?vEz%mA&mJYx^ZC(Om&1tIUG(|es3zIjx={S5Jq;HGv{8?LFSeBXXiU-iGA zYrlV+3C|h%QGL_oX4?t+90tprQ)B#am8h=MkEAK0LG$(A?Y2~&ze*Lz8EbzR_K%n#2&+_~^kLL86-_I)W zMZjHW9TvD}Ht;nXF3f=0Gobwgdc;TSEQcQLInY`_gL^VSJ(6v_>>kNK^z0!YU*h>9 z_5DTaRBcE5?kIo8V!KaKdlpYdhTNZ;?3e1lKSlpl8LOR$x2bjYqPUkP{K9uKF5WWs zZrX$&d!$nY{3~I??`8P)ahbEV^n2k(H$cg@qvPoYV4SE*_U_{lJ<&TfFr{dGnmH-< z@HuubrN$~Rf0vAVX>eb37L{*?`HsVnjm7;9FsBvIePy`LeSEgDmUu##TL`#rojyEdY4=%QitF%<2$QR{rm$g|>Yrj0h|j$XghIwkQ& zZN#?~t=nb#AE^8VV~oPLIll59zL%;$@mk`$REM>^&*nW>B450>P`4TAXi3!lGt}!Y zSFdw{?=CnQDD@YKgw0JR(Y--Vs5)thzw6cy7<@(7z}0=deH&Uk20G0AD$n?lG)KjI zMcCPYcQ~g%TsyE?V8C3v6wcWka#|LPEc4TiSA;s>dfg3+uU*ovTUFX`y?VtB=FDr- zPJY*PbcXT}+T*<8oJ}?kV>f3LZdmc#Z2sx_^6Sp#cJ{CXX=6{{dMpOQHCX&$-d#1Wo_5pu%z|6#VQxk z`h$jV|L_kP{+1sy{H-RutF3{%`@39~-PW~1)o4qhGo&Ex*=LvEPxN#Sbcb^~!)|kp zmENY*xD9S;3vcV_>FvTpUuch3h2~ID$k8ER*s%uF8Fp>hfC~q%H{0+Vy12S)y{g75 z5~m%DxMM`1I-z|g+PF>h19Lhr^mX2kvUL=#D<(_OoPJZ6)7VF+&5w@PoEZ;3GH2sQ zLmY`oWzjOHbFTlr$I;Wy8L27DIX`Zjq1+Io>>z{r{+s5-{iTDrtK>3M2Mx&{C4-wZ zsX%hABaU~Hq=~JIh7YlRGC?yh%Phiw#+=zZo6BQAV@!riP5BnQoCX@CRO^UPst^JlN)h)!P5vsY{gH`j95n?%e} zY{^_LHpp^Q1HY<0QWofrej4gr4+Zygk^!^6=Vg(iXh(*-1{3!gWe1y$@2^M@_5KbVCJ37By5}eQe0zvG*D5#G#{am=Y%YYB)W`_?V zztH*K7X+E`y(GxQy&|{}S%e^ye(gihIqW9nB04uM8HwVP{6uh{;QNt>@W~M_S&QI^ zgOb4r&kHiqZ58|gb7Dc5gl7b=MDF2m@hE2%NFUg^n0*?+^tt$9>=SHuutgBJxq_?< z<(>TkL7s&UUnGcoL6FZ}tFvF~;4+&?BI}t+Xad5Awjjyex?S-GZlaZp7K^T)FJ`2%b)P3g##eXaB5&BZ6meUf$s^2*NbHC`fti zbN2fMVIE#`_{)MY6!qj;?W!P1yDAFOt~Lu^4V{9t1D#h_JCN>swFBwAS39T((hj7< zUhSZkGEzIx`fgJzJc`4Y2~y9RdkXG!P&}9FvkX*y?gonPFF5!`2cHqtei%W@Wke8W zX0O9v5IhS`le$rUS_H|@LP7E)-6pyVV_1;{4xjmz}WtX{&2~NBwe+1ev(S9MFlhFC~hn#FQkF2`> zE$-iLGqO4K@v;6#-DRcIPx3m}2aHTuvbq2{p=5fJ^+}ejv(+9K44wS99+_XBJ=sHs z%pmyZd=R{=z&HS1DZ-`-1oz!p8l$p?Mi2JfS>x}qX(PG2Wuo%v^a|SqxL@;dY~%>ebG7#dk>iFWwq9n4pvqf*7$vRY>i;}+41LCuU5W4 zCcH3t*1FlrF6EahHhyQDIF?tX!#?+A)|S9i!;*Dkt%$O;%^(<#hQZ7f9%}DIs|$6@5qIppp7;JGvKHx6Kh$jVml3mz8 zXx4SL7Gv51XLVq6jQ$JRaSkNX{jGd`AARON??HjSe|_s{!%cnF-B;Q0a+A)3dX)=d z(U&Sc#>VK31$sfpYgs>$EdPl5Hu;bq4~;!qLos?h`X_0zefDTQ*rr~fPklC`hkTt2 z?V@|3yXQoC<-3{9&9#dw8$@Pm=(67F1)+Pe< zbZSkG^-%oVw&2S(AFx)T{?9npV)Ad-yx^+FyuEaSYAx(_%H<7LF8@fmsBBc<_uzhy z8({9kr}?1=LxJ zI`V5>HG`_R;qi3A)!PZ$qv}U>;mb{R)C_&j>yC#q&R+GRI+mY* z&^vkh9*}ZU+@?QBCwVOmM&_R=BkA5%{bh3aAz%JZoK_mY(OvrC8?SC}`*D+OTb|11 zQoPn%mu)jmh#7mYy)1U~NLOhKaHlMcp%((>W=+cQr@~>sBL9y7X}j{t>lOW>bL;9pAMf0V%gJb{mckMJDe+a=lNKPKEyb$vqC zO1~w67ZUg_34C1w|5O5hG=V>n!2LSDPybomchesBVIg||G~xem6ZpS^t9^t(`Jd&! z(LTPnDr>%s@M=$LlM`N;pq= zuE}UbjEFJfP_kmhzy2!V$oZ`cdtC@GsGXXc(+T>6XuX^&o88d0_AXN}Dh``QUk^gu z4bmLxg~yX}OP{Z!d^!>6QT9$ese&<8{-KT@a|yCGDu@!hyC2n@?VrE}SvzaP>-z#( z^!IHXP^&rWiexm!h>pbr=$l-li11`vkZ&+Zu&2q4X+>SM&yYvwow@~Ks5T2SFb@h! z-Xh3irP}&ge6V)`8$$H%KaJHpNBk2@O-{I z^ob@0$|k}01m--M(l_!{(qAci((e^yGO<|@!NyKOCJ|2y5`P2ZfWmpbE^~zwZlNG_ z7X;5C9tZWEQ9cHN%EwNiKT_5PTxC)lWr7+Ym+_U1_TK=BuKcjAmLsXB%Hp3 z3ReIsob-C0EkVx@CU?`#oAWMY0qTc6QUXbgv{Q9=bV8dq6tgk!1C4V%t$S7U8U+JLy%X|)h@$bF-=vm4G zZT$da-VV_;$H>T!Oj5?RD@R|lPUheH6Qmd-(@K29BmlE6fq^L(f|_#jWg^e}$;5-P zfIhy9STc->xWW_3xaMDe@kz_L`c+vm8Q0sO^2pWi`>y0cM+)%fCFah|TeRmjHE8E5 zFEiKDy-c-v+=874YYV!Qp)H#4)do)1u#I~$n3pW|^Gd=a!>PVL_$OvQ`4aGy{4R5k z2z&lUgY^BcaM#tSWDb&n%*M{|rEKMWuioy- zTfsaD*&6fFps;h4`O2&~O`7ja!HFwJTq)wxyk);B62=YY-OcCNd3StXIa{(a$|aH| z9A|Es$?r5YBfiYmhu<*wz05+#NjjK?yh-`ERq!h#%$2+@3$vHBh^(b#fluwvGKntQ=>M59z|l6?C>^vK(da>DRmH z_vP1+e>f^1rlF0xb1Mk9jeB?Yv?Gtb-<0hoQ_A+SDP_yv**e12>CPIJtIBr)^{aAK zn!3-;&_)@1+ElLJ#DB9Z#~VV%5XwXVQH6Dj`uKcCVD&tg-G3qA}OHYt9jOkI$dIi=gJCCjQ8h%8D83otWxA z^~0yVOL3Fti?AeS!MG5tO5ht3_@@*2uP5-m3H-0XmHz^d=2OY}=**~W?0oc{3H+i2 zzBqw@FoE9+uJY7=H>LN}&V4p?oI&{o$p$=S&Sozln6eQSKcH?Gp+5wVGe7RBeZ?`nBV1|o&eUWjDvNv0ds2|CYq{m{BAVS7A z!3OwchYt%fFspx^#o#OXULyjjxj^ZA&>lwd!IC*>9wAwS=09H)WFFB#yO4XcAntPo zaaVs-eBvb=;m^%Hh4}W%9siQ0$p5Q?_}6|f*_-(X;mrJlaN+}N_&B_Ee)|8P^=r+S zybXUPHL!&PTtSRQtkZ$rZYO%U+4fcd;uR_FC)B1domT`|h;Hf!}O1c6w(BqL+VYj3K5`Yo$7im+!xyJF>a!PI(OP z8>h++nY9ae{N$QO(ErFN%sztfv?4TBCF)rb;m$_c(I|@t}3^mMM5Z&*KM_`$x(949Y#S z8!V18-^|V}?xH+y8M}%1d|vM>#;)Q$6YPr0Zgy^$(Mzbf1L6+K#Lqb=;Y}|5>~P0d zgW>Y?LEiABe?b5F7Po~})1~s4!f=&j>~;=@8ym@r2l;zi~W2%=x1d=VHs8UoGBNnZa48 z1@Ob7FQgnAra23BDrKQ{E?*uVsw{LLHaZNymZuC%o_+hsZ>N21A4fl*vG?cXyspE% zXlC6?VYIg9?M)m-yWZyQUUu!^w1TbsA2U`v8k^LXe-K_P}>D5ld1Gsi`)IK(Sn=5T==&(Z`=|A>s-w?vrr|8N5TLINL2;D4FGs|oyn zgNwE|9DQk^H%kAU1pZSAye)x$EP-!G;K_U3b|u_DpTK`Tfk$g0x_T+PE6K8n(e`)v z>18;tuoqWK%pLK-o;i&y9EYjs0{1R<-0W|*XP_MOn{afuP8oWpxezKDzvtAC%WaFz z^}CTb^>p^!rPyy-FWO>xNf07e-GpW{8>dHkU>=}bGLLZ+mA!Rp>axb<($8C24pJPG z`=f9#-LBIao$u7Wbg`>Ho(02F0ygr&d_wkw ze^!w2FA5UABFM+Jo)4yUzRebd!D|uZ!`v?j&;5cRU)`4kVMZ&0@Z3iP;o)BwlhBitw}eJ}GNlV%cZvJwKle8|UQ4RmwAsHw(L3X7z@j=U88`ao(v^*oi@ve* zfO_}%HN2~BdptmFfgpr6@->^*F+y&*qicixcIcot=VAty+{G0QHyDQ{E8CDM6gO?` zzIH?3rv53Gef`yK;f|xbY=?K9(w{6ZxBq zABFLKy1@H%efkpY<9+%!z)z-6A0qN4`1QuqCm3%n74SVgqS@E)bbWf5fUEH1jgRl5 z1^LUvn2FY)SZRth(Oa$bRv-Pv9F8~U#PeC*(}#)rwDwt#e! z9yr}E739;E8s)GF!$$vv_rE#{SLv3ZYZ7bOpAog^( z@+`H9sLY(->Ef?BH8+O;G<9jh`1YyxqxMM?p0<4|t$%s*%?GuI)waWJl?B1RahI-X z59)_LKIP$f?OpN3+j~u-O=%CYPp9P4QGeH&0L^LBti|S7D@@`u>2I=26*RwIF_!-R zr-xzF4nf-?^2i?U;LzzjZ_+ld47QG58H|i69>pnHOsdd2I*UFS6ox86P||u{#k>C_ zVQ3Fk;gq2X_wSvaU%xf;dh)2bzTT1ZRmv%Q-<$l@l*mKTx|#LVgx`Kwc7z(s6wqnM z+Fp^xr5ShK6d4 zhYmI4ySGci_}DN1H9uyIkuNvV{)5OW7{g;G6=<1aWn{zZG4GNgTVvf1c$D#2?nh#{ z!uLl+rA)oa{UIK$Gs^!xF?adb+{zm3uKidZm%G+4JZ{p9;d0lx*0{UoQXcnjg5vAs zf6~+$9TmdG-$}>9wLr~x-sA9_fu$JEYhpaqQmEaYtC76_%+}vkDSAA124t!2f(#1 z)bHFi53a=UFDpF6`Se}@*FM%3=l^AJ?Khk2aJ$csEsJjPac$7tp`}N&6Va?k8ZpS4 z-c4QY8@aUlLPQN6y&b(h9UCvaByf867x)(x4tUl33yzASzdvcUZUfqeOteXtD7~b^ z28lVQxjeh0x4*k%T9+-;+HM@^TEDi3eUH<`#d-eu=FX}4?M97Hl7^VO)$Vgl5A#kC z!MygPBk1qwJUWytkM=6z4x8h2Yj~o*lG*yihK_zSPUyU``lq1!pydS;V_HTXD$fm(53S-{z5jb3aWsLbCgf4ykI#q(m*tI0in$CzKupLeOdK<~u!t5+;T5zVi(URYas-*`}Aztafk zc7l(MomP3M0#E;~(}LC2nrh|wbpGB-jowGfU(%Xgx>EiUBmUTF`Q8fA;ctc9o@4Fk zd5ZE|0sKyo-#T7<R!*+cb}=dXOesyP9EQ#u=@_&E#ot3GbUSu?M9w5D2q z{=2N-{2hL@|1c;(R}uOukBrx$SGsnj{EKzaB3hgJ;kzn7R|!k#)*F0sycnbVw2@wh z`L=4Na(`uJ|F#O}I4kud_f=@Gzp6cA=|X2^6aL|Gbq@6_wT1gCwZSdbtAgNbweWpu z_`R8&lfwVE%v#p)x(e;-TN&;oy8%D-oSQs_JmCK;r;OltP`u==)zJ9o9_(UQ^>^?15%yWuLAT;m8sDdUm4@PG58Bt3z_-^EXU%h!=V_u} zd-3Zp67TAns4Qx3u8g4*@@v}5CR%Eq>m04wT7Dj# z#D*T`ieF<=a7g)8S=2mNe*VvJ)0&*hLSY#?jeE^=4~@#t)7a@;sM4sp`My!5Lz>^x zIaASJvv_D!dHECC&+lPZvvvEZFNfbHtaQXGJ!pI0moNT)_4C-PUMbh-eZ78)c;#R9 zSMzY?H+}tm8voE~+N0XLFZW->elPYjp4)C{P#u-Qb(Sv$olRRZYo`p3kP?MC(~_UKj@L0Y}#52PX|SGUKSHBlEPt23E;XPm`w8hcn)oJ9`Ek?wA~S)lCCEz0pdaVSQK->u=xCv3{Lng(mU&Hkh^O zT04+HowHaeX?L^?paNt|!aehSWJgcMnnB*Ojyv;pyk`R)` z&(Pitk1-u@BmOOJa`08`(u~#G|53}6 z;i>159(eR}e=n8W&->o-7w{*$Z(~=3T?)HroZVkxm&UFJyDvC9zHQ&D#V(EAE@#Ky z6!!S+XD`j(@$Js;YuIIqJK=Bkj&F8$CU1GWA3i94gLH2(GH+vFELYp`mnm8r>j`@z z|MmEl%<45)fBS)Zd7kFk&9jqdh-ZLj8IR7bOAb~)!ugKsQ{$(NJaI4>c^Nv;e=x!w z0VDN@DprpXXC~l##(o+jN1GMu3^!-?IS0NkmY2Fkt)uKIGV;V`_yG8rLk&DkhYp22 z%tMS!QTccxhyL}DIMLTp&)Im{>FF<^8^Pj-gm0e4AA84)TWK0McopNebQ-t6b#8gN z<@s(W(*HK@+Se-cB9F?epGUH!0uOl#ZoRmbtqSc+mM_0)dHdoOE3RA7X6#yTy5*{6 zC@8+=nroIUcm8g?sr{ZYT95*apX%aT}D~w%e z2o5d5;T2&ZmC85Xx_H@jt?f&0yyb?lXMH$lBRwo;kLxW2W(=62I9 zZBW&I!;%|rTK-{gZ_~W`rq(4=ZyTj>_0?B|E!W<7OW4-e*SpauVyfUedQ=<9otOE?jWoJd`eTa0{_swwr8 zHRt-#Q>AN7+~x=27c|CB8qQ2RMBjPI5=GOZD3Mekeqhqn8JQG)$eB7L<7@F~P#0Xv zdut4TKkut!c!78IcWdebnuw8Odi;7`$`;|j&U_O(WAuo=&C!P>72E{=bj*Jn?+uav zI$NPF9TH`3tafU;NHm3*F6Fhp4?aV?S#AKwEFr7P&2;KvTGZ< z5M-^PFSJ{0i5k%~n%AGvKAKQgY7~x6YACh3NsXVla#9l#m8LLpUF+}iY+}!VOJrlf z>Gz&v+<|7eM@OR#Y1C`CcWm6)!vX4ci9aQ#90+c+$KY@4-+;LEw%|5<_L@A4m(t#$ z0}j3+$lf8f71^skgsbhFbFsk2khTnD;VoDy2w$*Fka4Lfcq%hP!FtAIK^Ci43-X~U z37*cmYM|tDdj#KY@1YQWL^zGz(wEn6r{*#VBpKff4@OF`vV=Dj>>BcAs>mcKlH6lOk;jQlP3k${Unp;tO6|1xjG zq0hdWfBDg~l!r9?jU|8g;O`=j0DaV&=Xu)X+(brK>ctuFPcWXvFA`q~3!1DsQzQB` zE~uR1@zqm) zc{1_S;=jZTvM-*h`p{TyIG95Qcm}-SEY?kDk)Q1Ah3Bg|-7SGE=Krv#ANR3La6fko z-H(j$et7Ns;i1cl2J)SFV4$ilm}=!^g1#b z@vilxmm&SsaO-Gl_>>B1R%`Yk2P|7XY^gO5RhVZSO4U4ZFqPXn3O`FAvt{c8w2(Lltx{RnASVsD1!D-8XWoE5}S_*SOE$ zDPR4$3QgqDDT;UGq0#e9yf1QI`ctFa4K^C&o+pntlgFa+_;`?0nXIVtB^~2DZ%XA^ zo8MK3jHjkHzr9X$1jUEOrS~bb=b`cX@N$6- za?I?Z-paPVY}oSH?@)fhaCuDfv!Mb!GkIcPgzCn$4a)NEb;GCRo>zH5m%@2JS-rNUvO7J1* zx;3ReFlygA%P_;GTN{3c`uU9M7eRP0ZRYCH*9Z4jYdO=Rb1Wtv`jO72@Wn9uNAhmJ zMtu=Fp*59XV(C2h=PGbThtgmDZ-&l#+LY$XY1*#sKVL;x-@T)$kzqq;p828fR7_KD zL0B29F<;hlI>?pN)~!5-Z2pkxr>ZadsdUd}_6(1+ML1hiW_%bn{k6(HIqU(M?6+#u zDaxjnzQ`w;disNEj(YHQ6>HNE*1r804yqmL?y<|+ms3B&c@`IzyUH4kJ~--zP3kxL zz2Wx0mm3xr+uQj5nUjtG<>Zf{M)1g_f_L-Y8^ak(Vx}$#!J>~HU$^&y_fk>2fSP~A zjreWFH)&{DF*6;%t@(zG(hz@rtHJD_zI%7@$W3z)x!(`;M((>k0u=r~c@FSwhcx-$ z&$~Br|2v-A^yJ=x)A2{^HN1rU>&&wDQY%g2;vcnEyWQcDq!aFS>Y-mw1VrLf!+yh; z8?E)esTr<#$~j>jChl2}jv?a|9c^%$l&1G@G*U%g-F$WmC5hOK7O3gtN-E;-So`r! zJsYMf^tZ7cMYdC-G=01h{I2cW1b;uhdt5WqQ88Q1T3wVk9(PdE;M`yt8zzm+&NZ zjI0|T7OP;6!^xg8`+WosmtPt6VfjCizdU{v#`DgKF9i2S(aSx_JHLj*$?(o=86HlC zcRm8KC&N4MB)(w?67Nj)n{rW~S2_8-@)|VLmTni}&iL1hF3G!f^3a$Q$*3>qE-&lz z#JqF)9Fy1--kEQwcvZ-?Yh~hVYxt&R_+HlVZA=w-AGBw2>qF^=SzaCaBs?d4O%5F` zmX9Soyum{;IjZ8zXk8DUxdwf``j$$^ODdGk-65loV5$GM#>fAX~DV)1%bs>?y?3Mmp zSN>_LQFdlAlKH2lsWN`JK}0JVss6R*$L+`S)>} z^=9f<nvFz^YGU z5&jk>{1v>v(xkr`rB5**8LYk;`(Kfe4Xbs+mM0rwD=JsD#Pt2ktj-$Us@Wwwtw7wc1`A-(?8i}5Ev zDf*L%8#?5Nef*F2#^{h=xoho7WiLOp(Z`of<45iKbq3;>c%J2vkz7*d#>GoNXy9@O zmoEKa1&c564DodGwDPE5sQsuNsSmGa{7^euiH<7KkvqMwTCTBcp5n8#cSHWZ1I0)%Z~p84i!CFW|yYC0&-)0u@AnQZrK-nnXU z^c=!9FlVhPNT1oDxj!{s7&3P0!rn37D-DJF%=)9kW=J!h9`#CkN87zZ+Ny8St+ed7 z^U;IME32v72a)&ug=y!6=Ul~Of8I{oA{s)&t9{~x08JoU;h?d(F85Z%;et8%O_f_NH#GSH0{cjjfe8 zPqS@XvaT=Sw*j7`CVyXLHtXCfE9D0sL}yx33ahkgN|ZDHpTPf&aB@GB)?wFkPqhyt z8A%A=fNUa@9(3UdAC$}09fU>JAzdHYp`snvRt_WM;JyUeNp^UOwMGgQhvQt=ZcMW#4bBu53x`^(57^aT| z_l-;Mhssy{qtVq-T0Sa0hfSp&HM7E5qvBD-pQVfC>N@H+pl#`Uhd#o(l4xe^`w+C% z24~v4BWM%SrT1anGT8mJ@zNF0!>F>ndp3Mn@oY zkf(a`N}GotT{R|L_Ojy}Wq1OOi}fl4%K6Lq%enX8;9X^-y7lE%qP&8D{deMnkpsQP zy$WIeo8$H7yJ&e%`i&dk&KyHO{h9T-!M7uGJ~NXWtV!k191RAMSLPpXsG+{3XOgLA zqvBBdb-eF&eN+8ew5l!M3ytDYeV>)S``vEb5+5)M?&-V?8vg=3pl$d*uRR9ZvoNJi zs_hWJ+U4E2t1eV7zKm2CO8dXz=I!JzJ6~VPy4r=`?i#B;FwYQq!v4cUlkMx%_#s-fMYYc}jjo~IO{CL{+z4o+I-VyB$x%;^H z#nNtQ<6X2Xf1Y;bN%Si}ir3TcX-`7!GhINrX9^THW;>5~Y%^B7_7%q3m*O0Gm;GM* zb9?$GsD0`C&A5oLrDHvJB=+{M=~#Qm72%!SGmP>!vq9n$8~V7)*lC@6f7svC8Gay~ zvvO{D=SHj@#y}ff5W6_Jub+FX?^@g4^YO5geGzNBa9`Kk*>z{1xqEs&8~?ZxU#>Hv*&kot=+U?1424($?om#=-=4Ib<$i0-LD-UeVaChF)u%E zLSV-VQX-OZy!Ab(^w*e41*ql-Dv?bp2%~qsSUms-BD+*Dhj-y2gh&Rg@UKKf*?TCo zE^du=-xV1;_eMGT<+4Z?cF6~dd8#VX94e> zFLy8qD{oBwBHxZL-~aD~^xp*1$Y2V%I~ z=gyq!u6rb{vGEsTxZ-b(;Y%H!iPhHv4H(9-IthHyVXAL^24#9vmHor?_xOWlM8ia{2 zvP|N&LAP@Yfhl^>MxfsH2>%&ifk#bB_`^W850CHWU1h2wk^64|i#*=_dEQl~9{)?; zSH|!P@2h!K1PUKF)2)&Gt@CgIs5Ob#VgbaTs$RVjt~CvBgwIRhS0r%hUG+x(dlUGk z1n%{+DvbQ^NVxAz;J*g0@!$#kivIsM;hwxVRm$xW*^%{#wFa>uKJ||2%MwFFyYF^HKz#jhoV20p1X^E?p94q0d~R(%yq=WxI)wHNU>~eH+`OMM`c?>FDq7V_|VEtRMQ0qpMVo zciD}l&@XU0X4V9qaxIIzZL+1p^(_4q;+<>z?{@T=5;CRU&aEC)AQ3BVd3X#vAYSi@gyATx2e< zRG=+2vmPuO%*#~zjFpX8uRR+tpw-BxHlN$DVneA{k-P07^w8TWr5aoKCc~=XaGLtg4Q+vE!!)jV=`JJY#ET3%d z(`Ibcz1X`2msovLP1m?J{A(@0*|gO1nOfV=F}5~chum85dcM`bv+=Jnw+V^&pdjHM z5+qz%?!XrW@%IWa&A9xkgW?&4Yrn3beg6Atc|`^`?b;c|F7eH)>3wjlJiIH+%~!gV^RGjPInHcwD{5(LXY z(ep(?=-DR-J^H4K9(|-lkLEw}U+-YfL8DKA#hW5{)2)0r1v&J$QxGO}pCAnW>kfu> z7GET|igI_bTks?BQGzh5LxLZrJRH8;xxe7xK0zh|M;zV&|Df=ihl$P*cvd_0>+lv} zV~Kfd-^=$6FeW@Opth&I@k&yB07cz2dICb+;x67oUbZ%scs~ih_c{$S*=T^*Pxw#28+ZDmJnb;dEbPhGKEaLT)ne<&pomKZ-FjK3(y= z3NzoiD89>mB-qKHP|4K<`trZ{OoA&OnTsyD_$}?px$KfWngwM}yeFqul^EO4UJq4u`N2`0 zK}7bwwMA?3>|vEGKPZ$&S0nSTEq>#m&RGr>%V&I$CXK!cvqq(LLCI)ab2~n;rP(yJT-1@ z`FL>;#p0g%408D|uohQgeJz$wFrqV;JGftH$EeoE8b**;^GJ6K_vCY2>3$ z`6%(;U#|WsvToJ@$CNLh$3Mm{3WuLR#IO8#cljNO`vI39#jP?@yz>7)@uRdAm(uUx77c^v2YOq?s>sZh7nY z)0O9{za2iu8tYchcyHxy0;{WL0qL7HF~)>m>apP}_B}90nDQsx=79Y!v2tHen)l|* zRjm=Vgjz3pa{Lwcy`+lwn)Y9J^R`N!JM3yG-<6y@nH$5eegbgNhH8DU8M(AW~nafo#2`>YM`JgBv+R{FHo z;-rIQX7G{fsodM3vY*La4T@KH;Vm3~k~5KoS`pAdpkQckor?q9Rhbi71@oKzWiQQ||e?5Mn#jF!& z-F*+uv_-Z5rP!+uioj)rZyRJ?u(V^mG>qPoe(rr>?YMKq#@igSK9`%kLtf#PUKaXk zlU0v5IEabge7HX?%SHN1J+Epev zL!!W}+Hod7%jhUgVFydb+U6N%&AA51Cm$WE!{cEZ+R#<1unH3rMtdK$H^STHuwyS$ zR^i#-m(~6w+Pu*v>Y@DV(YT`f3e!dP_Z{EW`fF`K`z+Ch3-%kPyEb&z=E|SkIxEQC zPg^keX`IQq6W-g#sBhkf&h+=-X|1x}_4%6MQH>#o{Ad1nZk{F&MVrRyWd+;c+Sofp z+cal;a-sqJRLUjDOAo_}F`b)9xp&S$Wi@VTpUCNIlg_`+dud!-AmZ+>82-&ZOih7tSx4y`b7- z7z{Gzn=*dvV5*;QiyNmIyB};Dd1`zpFFjQHmOfNb`KD;=D+jlYujadYOY!;fw($9J zovBmX);`s5v5zGT^$oV)65kHBUt$+|+sPxdjEAXGupkEwBX-Zr>ipKxYu~kXG!w3% z+?Jd6=k9&1W=5{AQ(hQns%lp%hq;7TUC?%_Y8PrNIoie^?YE%)qkG}IL3lrH`#$=G z-8ZDMUjBdC?8z85dy;&4t9!i3Bh$hpwFP2ZhM;qID#*boeh{hS3NJsLlV7;mKltai zFqgJ&}9+Kwo=wPn>-Icxfb3`FZn$ ztOdWz2R6{&)1ucR1CiEZ_0828W^3%dEpqd?+$9U~_{IL!z!^q&U^(V4{{=dRHCA7d zcmr#!|J5;f6MqaBy}M($+?)J>0=;q%WB3Qao55S5!RJRZ1#7H60>xpCO}{(lF1JqR zFV@)jdt-yXx|{#p!|`|B}W?)x(Q8DrOCH6B@G={XQ{m;X?cOk*rP%`x1& z2x=`<{wIxH+vR&=)@G#ZHEy)_IMsg=ueEEl1X2-c?Xnvv@dlgMuyZJz@!zlg_Ch$IRwby5z z|G|X&V+s6!B=Fx);F=G3qx2-F^hWqUCUDO;$dBBcqP}DC^AouGruvJ@U-?^|aMxO< z`in|l?)QP~e4EEV2QFEo$Dc`r|2p^{+|_0jo`c$v5q++=I8o^`^OUah6Jv)N^cb3BMDqVw zyLov%hA#$}tWa%O{!8-cjMCo>UZfdo43qngg!^wK@Mpm_et7@;6Yi4BYW$G3;)8Js z9*W^j;KMO|A-H6e-v0`4-Em%W;qL&~c;nrNz~6}BzYMOz@a}&IUK_)|E_Y{?-@gRU z#N5A=aQ|Cy-GSrVOPaEq4bIQxXAXD>ve)5~>uP)}IQ$df8qe|$|1@|TxUbL8fp>#@ zdVd$ZH-=AHj*8Yi;tR6&p4iT=+d8myx>B5)l%tpjEyG@{ze#P(mj~S)cXe^ci3#7{ z`H7zOEPVE@WwTv-hha#%SP3<(N4wYz?T}-Qud`=k|D7G{H=CEwbnnkUR>)kr; zlqIh99d}AgwCBY9vRzcd{{Anw<~6lMMA^}coPKSS3~%i3THAA5&su*|m|K;#Y$`5<|0Xex?;oP0cT-y9R16 zDsDIWtysb5Vl?G3v9P#yU_d2K?vAOAdLuQZ@m0er z-E^v>su2o1`#!<;kd17b=v$xgajeN;!rP|xagVoc=(}^e7N_Jodl-_XMQ-CH;j&Mb zr|j6B+_%ABBN$a;XP4dE!`zGSVAF+`ziVRMY^88Mj+)oYezzd@Pdod$@RLpR_+|>S zNF@F+&BwAJc&?oX32HB#?3Xz>2y9vaZy|VzTi<5U<|W~mSw636A&J00HL)mBFL(uy z;QQ@5_u1Gl6b{ki^Avw8@GK@_OM#7StX<~pi^8vjPQe2Cl05>D0btXmhzryJP#5qMMCe-yf%{gAWQoKf+K7dv~M<+;x8VZQ^o=+T@}?)!m??YV2swy z~-ixLD$Ne>UN9=vN;yYzcvo}WZh3;Lz`%_ntKfeyU7k?Y%!5R6J`?U@#UYSeD zK%adz|MH`UrYG9^jU|7-gg?4uupIx6BFr1(47NX z2l&@Htbv5wjl>i3)S|~e!&A@Gz%!etiAS*5rg(kz@ zF-^FQiEyI-S;BFyEJ}}Iz|a~`uPYHwc^)EME*6gA?Wk}cN`%W1ZW-aUhU4@1{%OKp zmk1|Wu*&!XhLsFqGtaS366!qOiYlLjDe2Z%%GJvWUsE})BAxsySJlmaWZ4abRTzb( z-5nL~y@_zD&nE~M#=@PQ43{fc&sMlxiu7(a>4k*LA>~!vyI|U9k0DasU-v1Ii+cyS3`R1FS{A7F`M{9+gBcx4e z-O#S;%gx4W6g!FqxBW;+Jq5OC}!Ja?M0)%d4+yy`>(#c+!Vg&sj*(rn;GV`@X}eEyIUvx9mF{T)*#ddety- zgcHBKr8M#RY-wT!?lr6S9j?25_;B->N`Tke`DXYZP**)n*z zZp+BwOm^h3S+gOY6yef@QyjIVF;i)*nln*e)in{^e%?g5<@|}k?0JM=HxaBF#QzBX z2k|?2ct&>c@XT0TY2r$`c$Qp$1iEZ|mwj6AmaqV}|ma!T7jt%hSdWYj1qw?Ol|9Oo8LPQt^C&F-`jmhA()> zL`^%PuG&YwnKN z*M!<{bGBh(&XzML&f9Y9#JSmUBAuN%@i`t-&(N64(%*pD=E!AN7@) zl;ueFw+yX??3Zpln2pNybClz7LBqQ}2;IP>7n!*!4EJY4hO z{=>Bw?57X!Coek>ryBPkPB-p6JmZ3$hd*^iY2uvgTPD76{TkYC3*$=9#J#t-@T{5G z#<;n4OUJ~ySFFT6hrbU`)T}ydV(Y4v6Y1M$Pi(!tIC1ZmGw`>Z@#Iqzwe-BOtoI&HuNpdBw`wnA!O-Cu|ChaYfseAf z^Z%c@-ToP=khe|M3%K8b6b0i{$-5R50W)%(^0d3Mc;1f2`{2evuWFu-N;zl(zF{s zsP8?tg)*@9D#=&(Ow<7nn6ZMFBCWk;i(p>`-BS{vkIEzEy)Zl%-+N!oxQVKnvpHzdn>m#qyH}N9p7?R@9U5JwzugKmseO{t$n2B#@;iwcJ#}u+cy!71z1E4`!t;3rm^aeB^~T=pR##p$L^_^r*!rtqrnX-BFTeJ^ zbF6u14e!h^Fl~*@irm;M+iZ5^BfSqtntR7b;`F+Auz`u-9!A%RVXY+x?|eE5IY3cfr4Q{DCVUe@q6CoKKB-xRv9Z}P_u zA|5{Mi)$@K{s{NaeePf5*7Isjmd&60T>IN?T+emh&c>Dh=TjkE_s@Nv@Wu6fq86CUpPiw)F|B#~|Fovf)?)LgIk?u;H2>A_)%1zt zXYgD7gL}xtlY}}OnDOGv2sfb!apRchn&-dei+_Rm42aym|5f5?;uim(iL=SqQ9df~ zWkUI*&WcZBv&bMm)sgi!H60a~}S`PI^M5ZCzIc!<8!c)#R5 zuO_bXZS~?4iEBJ(c=5A{w-Rsg;>(CXLA;fGmH$fO_D}tBbRc5j8(gQwou4CoKVOi`lKg!DG2ds(vXupbh z$ph=*CJ$N-|07@7SF-qd87o}=X7;6BjEDPb4nO+vS#k5l+*ess^(XTBl~=Pm#8KLQ zz2_kx=&}3G{+S;r-3;7i*Q~s1|5y4RUF@&d%ImJ>+ZRi(KIJm!x@%YR(F$h?yr^%x zUZL<9c#rVtvF^SCrOTaVz7auq^zp3kife&CMm=eNy`aGjbo5l(jfj{1F^7e|bmzh+-vN)WF8=#GAV z+XLZA_UIjj`V-z@epZ$!!;8sj-2RW_;M*g>P&h^ z{UVvAxNR#xokkM<_X^njkRI;p-$|FAbj>AAC-?bTKQg$V^~3Sg;tj?t`xY|C z`uwaq@A4Dw8Vhjt70yYA70`0&C;C29=-n|Z3>&5NwR^qq% zo+-WtxCOWwNCBS*J_r0Aa1-!Zpar-QSPk3&dcbK^KM+De=A8=x3|9y!2NeA<@Om8`*x6pEJ z@AO62_7<8>={DkgyRK>rAVQ=N4H9fPy+X-G`(WKs7)3wY6PwCA?RvLfa z8s?G5GVgt$WkGMK<%r&yO`W|Dl2%XJ36WrLMN^>n)~0E_UyGd4Ti&vU`TP!iBFqJw z)-dPY(G!mBaOcCGAI8kFeDi#rMX2Um8Av|*K-d51o=ERLXMBs+pJ@F8_27^9@aboR zPrujJaF49=psynn@j+|;8sxXmGiVN|=L+Sow0SDdebe~q@p&`%KG7Ljkne$dL~8Ic z55!-AKT7w!>C8tQe0`gu-#H}Cy)ed+z=YQQ&LLGM+q*(j+_NfS_PU4T$C>)D-##CX zx#_k%h580XoO$jtIzxX4EIWxW-JXLwNcmc;P}{j{urS`6FLPeU+`FvwgOweCvHo|K zUrzaH>Yrw9M}4nz6am^@72WuHlreA`)d!rFOS$dP`J)4kLy~;TuGPD@f6dp)Yk#&79+;Z$)dI$H7#OYdo~KZDfuY07xotLt9*1$ieJ+xWWpF3_kk zzti>aG~4mMbw9paw|!ks-+|e%eQj>h>^WWa$<{8FN4?#8ATyBXwK~f+5#Ffa*{lKl zp)}RGUVO@XHg3akmUCmdO#X0Z+Z%^F-vHduiQmUrmM;|5w!QFj)@$2gw5?gbKH5_q zMOGy;`4gkVbtb9yMD7c%AgoTh=U)`px2yF$&O6STrpOdDqqhHL` zIP`ln=WH4?`B>6DgC*XmL`Idx?{dc@&G%?ie2=!dmAdX^-Hz`AG`1F%uf|8;1Cop? z=ePPm-%>*FJAvV;+@p+*6TQR8PTix4Ze)%2TFzc(^611!kaq&ObAsIKthi)5;giu? z$E+RI;PbQoaOC#vQNB3*`%JdwPrd2L=wA8zf&uQGHDS(#cvwuhCf=FnZhh7j@E_Jz z^jg0nYm+Ziw1?~bY~Q|p=Q6wc0q}V%ySGvQK%~9L+<~8fwphQ=n3%e={*PXX1he#C zwu&|^;jC3Aq`s4GLH9oyh}_?!KB@K9o3UFIoWwcfNv+VSE5n16a{c0m`|#;cx1Cc) z_v(&jwdW15J%N_{du)67Zqg3cU!T$4!gPPX_Q;pZdPKm`KpMVC(UxX++|?fFOXtbD z-ESOSkPpKTG$Im+eCI7ZKLsbU_Gq0k6KxOCm~rmx+q5gpccg@?Z#0Mwxc#i4G9+(x z)-RB7&v4zWKEV&KF&SPr4f;Z!B3G~V<_8C}RsV~6y%$@xEb#7Z)ziRl0R9O$k1~_M zCjp3}pY1xE_}RcL;4I)wU?wmFm=65EV5<(N9Z}$L02`{G?FwCV4*{U_ZfLpBj)fn) ze*%q&3f7EEpPV@pEIK? z)bec4wcectTBp-@F+Lt-KEt?N0dW6b_c4IxHTqtN?ljif@I3(E%I?-3$l`$?!UfpMa zp8!t-KL&mTXgxt|1$<|&`zc^MpnCy06Wo0<<;(+ghx+$`CxL$go&dfJd9gV4Z!U{8*m%29=H`)2k30_Ex^q{ z3iv#5D&_tiq0Vnkb~sbbS?3$LFI(du=B%{S@%PXy&nKRQaD*xb)<8UA)XY)GQQ5uw*%+KUuozlq8Y$A>ZHyCDA`lqH$T+@f~ZB;CP&UjB6C^{(OTihIHx#lM3W zK1v-bsl$iCopus!;~RLkf22<&H%+;@`zZH0%1w_7v$sWMm&(0Jc$8Z;Dn=XJa_1N7 zDN8o|O_X&BWyL5<_fywV)`|x7aZIwFI)8fIh(BGkE*NfHH)3*>^Xjx$I^2|-O;hgA zDff<1Vd|!`OXV)f2XZRc8Kr)7%e|;jPPtCgT|HIx>?50UM6Yz^4UB{K$=$4wvG@ae zEyTVm*#eh0bq))(+|~2SvBGD60Qj7bGx*nf_`mk!w{#8*w!GN$DERcd!C&g(U+Uri zvZ<8+Wi5M$g_>UMxyj(W^*PVOU+m%kd{GI1dDGru*(P@#o<4d3+4k}?JTEr6>+w%7 z`qd})#WM4bYdZeiA2n?|H#*^nbF(cTemwI6bouf>H+A&<$XmDE*3|KdeN!{@%3Dr2 z_s1>ZPZ@n~s39{g%ifAm?3TRNGSP|Vy-wC_f9&m7_(luwP0q|?pVPUox4d&MZ9O+M znfI8>hvMFQQTM&C&_Ay?xpVqV3-znc%==o?W#_)u#Cy~)SeKbr!yOQOBhuK?mGNVW z0chh}@9cYXE9bg{jNe^<7QHSgh(G?@=;@8@iR7Mr_G@W=tY^A&;T?V(9*S=)R`Z{Ayh0p(aU)vj}iU*SU&;5B{a}s?pgR%*`KR)37iM;=D z-}_nKKb`lF2Y2^?J{bq@ZeO2l0k;9%qrlakoag9g@!e?fR<-=7hkG^5*sKC?9(cn& zy!9U5Vc=cj!%Kp9Hh2}_xl@Z6&YGq(7j|Gn?c zSO2uHd$dQF{|0`_!+#0Hzv9bx7x@25zT3bLPD$vS6@~ADKN)%xe|!i0$v%2}8~mSu&)o;zN0L9hQTTiC zS9|$C0{&`W{`G;e#qWdvAoy1Q>@mEzDBl6@o(I+yhs3x~2su0l+3b zqChoJ1JnVP*)_!&P@h{<9PjL4uD+%i2e>c9?9mOO+cZDCLgeV(i4kILLN=~!R|H)j z>_cY;{u?_%J_YI~y{o!~l}Ez8FX+WTy7zeG2({NsbJ;g|Z?E?bvWa;;cY1m6vdUlF zlcde~63w@@7*BLYBs4CS<1V7EXyQ(uu@Bu>mh}sC;(O4yuKN6VN$by8yPrR!jC!c9 z3Y|vRr@1QDQB1_y2Sr~h-R_66{yqOYdUqta)zNibvK8zzr#X|izZFKC-R}vhU22o& zyrD!UfV~`%ef*00nZGj6mm%Mb`Xv8J*S9kB@Kjf@vE*X`HG)n0ro&xD<*^b@v)A9v z>eqwi0o^pG_!c;KR+S^u_+8WLHBBF1annjs~=(@>wNxv8PBCr;?2~fVD!G2v#xCl7d zx(W78cOxJh`jglPH~A;t+YLMmj0N89x{2nX z-vC|!)bCn9LHwJ!>8phI0BPV>VBlOdM4HCytAP9xtiQZmRfhiiBj29#{B25SkJvM^ zab`ATMsknVD4;C((M-tUZZM#XxdZZaLE#MF^B8^}`}|GG3i5f~%V!n)Jr9SLbr+Pw zI!A%$yC$WLo_%%SzA2ZUp6VKpy)7Qvf(-t5?|tT?rXH8@KJ(sM`P9Zc_ZJs~^Sp-x zZyB6c@{3T0WU|W9+}UAW#ow+S9&QR;`Db)T7UA-7&yucrv(lN1n)Fww z18tAkcJMtflRmj2U3`gj&8>ycT-2n$LEXTOXl|`^=AtJ3CGr6`LK!BVIjBirO**&{ z&8>wG-v>%eH~nlImV2k!QGRd zD~_ejBfY-(rI$W~u{@IW!@TrgcL$RX&a1v-M;M!e6$#YsYVy zc^~c987i~Rh8~swSnF(c=uoFoI-Yg5W>2plWSwmZc?1}P5Mv;_s>T~XeJ@M*`)SQB zn(V*kRt@f-(dimL#>l*i!_*=$ogy^X$GH{7fBH*I~|mudD9C zv}>0@KlxDVFV}krKB0v%wO=-pyGAHqw)|SQ&eiDy)H^o#TA`^o-w(adt+q3idK*7_ z!mXS3bIUFaG*e&dta^@5|I%IC!v1=lZ+FSQQ6D()&nfsfoY;%llK8o>Wm?gJY2Z#^ zGa$XGv@m`ubZ4#jz}#7wqkax{A9pZ@--8dRi7pS~1B%wmr{nruR(d{{&v`zVKl*(- z_<-c2$@zRV_;`&E=xPtYw;%rAVPSkmoj#ut_L0FiA!FF($H!+>hR-PF^BG~&82p7^ z{x2@_`GD{l_4$DCv0ziY{4<_gAJDV%0Y!a2pjv!D-X06b^X2T256JV$Z1;RX>#R>^ z$`PIq=-a)a=*|6nK;Oo9^_u59`c@O=-~&3|?>mwYNWP;1?|seZJ9PT7h=#d_#NZ<)1%d$xL(*_X2WXpuXAt2V~JKd_1rHCvp%O zb8^)JbN?ZBQ}-BfgWzIcYz5E61Id}pRTtSl54d*pFywtc(1=eoI&4%Kb9wp+pW6Ax2ON)W#r9j6 ze}I0Br`qsOx$DF4L|GTXhkZZo5+CBjuT@`ZzB>{59m?VdhSyEm)(;#T;0K;CdRUNi zkl>9B$ExthT0iiD0zUajh2zS}O_a5bvTmWQGRnek>MJXX&GBB#tM--mX|KF8WXX8S z%TONnP`4}6T)z-HJ*UuA(WC~|Oe|~zM zYx2IZfWp!@>P??5eOovsnv$J?it9d?u#OP>t@|7RyUFbD8cNzx_*O#D=FENj+T3rZ zCi9bNOW0XgJj@%b+PX|3L3>W&Ju^n0-*J5G1?XpPej@ntIavH%(Xqt_@Q(+-!t+s` zNd9`aKDH5hNake|)H`eX-l-fuws->XU=ws7?bQjpsjZH8t1Nivy-jw|? zb<)^kFgBZZEXd=x8F`$_LXJO#4Jmpb$9ONn=ktgE#rJH%pQyPBYj5A;x9EQ&{E`6Y zkJtt&@~sR&d-!FHKEc-jFGs{HCxL%C{+m0%yAprSy@a2}&+{1JRrq-xAiSFJ%Y@B5 z-$=NU=U*pW#d~WAv(m@x&yhZU!qdlEEAG?BDOcwiecb$)^>G*)S3R52$+9ODuZA9s z9fAGOr zHy1Jg%v@7+W9OPV^40uD?;!8`-p8JZjG?ZQ$*SvaFP|{^^pG}D^DgE-&+&c@X|*?< zX>>yy?^SS*as_q%G0&hmvk&zm>NyXX4J3e%0Fwaa{eAM*cfYkSZyoRJo5iu{W>Y84 z!SN~=YPiE%`!wpghar%?C8s-eB`*T;=W*>Q+))VPe>+0`75LKKW*3MkY3*NLtvW3GL4hWe=v?pzlA5ZT;=y};f=+Q+;fUzT~k$!mXz=l@CjbvM4` z?Q-PV7d;%-Q=d^^sJ!v`uUHR`Fn=`fyK~tK`Cjbi;x|dBJR`$D=e;9+A{nlI8M5Kl zknfG)NT*!y!?Djl%kyh_uJYo@BIciYWcQSb_<@y|#k&@~%e^{W>Z@Npc z7qXeLq>t%aWO!sTxY}P9jGbj@RxHD zX_41eCv;8#2UQrRs|%L&&`szvv!4)oc=q9*kD7Uncp~iW6%#!fS&8ippVg*_&ph1S zkL5JG`>7l!W-ORUIyDqw>)%blS56X^`pW@b{ z(@dRX>;nU;qOC<+R=u;fYZm)|ROfPZ&)f95eB67G#p};&EgrcfQ&>${zBp58B@8Ar zg*T3EExyF>z|hvNX}zsoqbFtxW5G*}Yc0M)I(D>?!Sel|F{ZU^`bDi>TN*oxH*Ie% zJ~yeg`1?~^i*Ez(0K0f+_qd(K9I%Ic-vagmj{N9=z0XB^>_%3h6Y6)ePQZRU;P4#f za36mduy^t6UTMBHQJlQ2wKx^rj{zSC5_?*UGs2~Dn~ETw6_x@>C4y`Q3&dEbl7Cv` zf{&Z^dUVlrBiB?H5Y0EnH70ibK=kX*Bj4Tk3bYqlwlu}_UF?nKH`R$K-!J|_{v_sJ ztaBtORDTuFb%wGsjEUy#q9M&E`}tg;0p&N?zU1n-_D#<#j8b`xD(`&l(TmI{&&niw zVWD-k>o4tBwlrsi$?v{8 zP;c$$Jk+|2*Tla;WVg-3hW_?oAM|SvdfNQ4SHjST_98z{xgquxc6x0S&GZ`!WS2V@ z`+uv#j=lQ78v9LhPI_+m)EQmn&|97QHJ(`mU2Q())XW|8DI*XM-5H1$>D@b=*T54UTIuU+_Ox^&iCZIXNmFrF`<7i_ya2Wi(6jMEd@ z68!}lT|bw2M|Pp{bJ0#C_Ya|Mva#%#Nq2~k2%n_ScgT03v+;x@885VtIa|+6Xujc- zkW;O53$;$7-K>qtr>C*{3T?2w6J;#TZ{)y#|Bn4*woQ!D|LJYfm|Sy!wmdzcExQ<( zUC_0mHE2%sX84D(=vyB>$aoxsFVymp_)v3xJ1%t9e!R5Iv~tTuW`dvua{`6u0W>RzX0ez11Z zJ|i=h{DpQVXy>K0Q?lE(VKDxBh<0+{Leb)62WjI9?DZALl*aO1$wIY{aYk-c+VNbg z@vEBAbuH-*^N7D=p3n?j16&RG_Ytokem#I~b^_~(rL=mYqzt3vjJ?iceU?04*to& z6hL#Q$-sw!4*{nE4Zx|uDZnJa;%k0*A`k=Y+U*DUJs!~9^myPnpdL6DI0hI8`0;f{ zE()Nd4rw1T@^C+VhqNJpbgOjKo)G(02zLeC5It%*A`^SmhAf{Frvx?VP*uK(bx=LTOr)NR^yJp2SX4B<+&a?k(Bz0|*E%PzPTkG3##@WhV`G2JM z%VN^~?Zt=xtAx|nzi3*~!=u#sQTkYIkbY4+r0caFW$JEp%%Rs^{c3d!G)&!RbS3-h zKHt=xdTvDjt+8#W^0h(rm2B1CtT6SrdjAGr8#1=#sbT)<>8J`trERWD$ zr`kZ4xk4lU*|<9%#vaSI7pK!6yVpr}jQO4T{u@8}E&f8=KE~(&GZ3A>)I~;_$S-mCBD%(Rq{Q-o%mK{ zyI33z&4YG)Jo+=X=KIwSPsdA^8hZx4E_oms;Le>(GQjeYZO;_iBO9f!u0CF}ZQ`B6 z7ip916pQ!hfc7-=t-EH{o$Nf+*eH@?@XjI4ZM-%#%T7tkW?4``@6wFTeQR&}y~n?X z%X}OijZbDbIIbU8x)Gi-dKOmbW4MXqput2Gb@iC+Do0Y zgUhf#`S?6zX^6UKe0ATVx+i^ghlYa9K6y;L4s||B)_wB0WNUbJ_w=`H4O{omQ1=?n zt(M2|u}c2J)6e!N-mQNEI}4lK^-bw_6}}4jsO6(d1yZ?GU`=jO zBq6_{?vOBl#=h~DsWE;}<$8V*mFu5Bqm&}D5mbj$=?m=*n@D+4_EoIez9tup&C6|| zZjyDXTOgJhX?=AYeB&8_@z&En>)(&M`ub>KT{U(pzfyJe`cHLJ|GE8G>cf<;ey>os zSG>AOm&~#Ac7Jrm!7M#+9TY`+3NPL4bwK{v`*SOjrz}?A^&0C`jg9Y=$fp~N&hov zq#p&`(20KupX!F9Eo-;0y&8|-Q||A*HaFAeD0fqecG8QuyY>*;EI(tAJ&nwB*c-B{ zaGXNw73Qpx^t#R~MW1noMQ1x>(gt@yzQ*8QUofHC;KNOWn_lFMv3-dQ?&Amjw&U46 z2tUNhUwgP@+agbE!;xS0yak_x2od^xBWksV(!`uYOSbgFJhcP|db| z@W%h&2mAbeU~RBIADPDwhr$c39u180XuyPwtn2HGxKtDAy6 zPS6IUqEgb2xQ=9NYJC&-OL@5vg;q z(Y;dzTa!B9^%w8gsAgSJeS8LeT%D3WSy;fI#eRVq=velT4P}qw(0QlgmzvO*A9f;k zJnK>WuYs65?vd#M$Jh^V2At-?2f@YflOHR;WMi_+*w?IgRyp|kquxH2bg~OS7kX?9 z`;FBDRvrmnLlA z>bd&WhULVuLGVX*6i4>T=5_t2+H==P+Axz=Do5+^dSCCIz_SRU>~YznA>v9G57iUj z*W<>ICSC989MYpGYyG_qL>Wujb=p^Dd>paTe5P+LuuK7T0fYbV-BYsd$Y&`Z$IxF zIpjez-$u9cfHnlvYKQ0FNKrnrPyOhy*T$u({m)E2NPmRm8lU<3akND?KyYR*Bz)Nc zV~|t!+;V#M=waG(BAQmat?Xld7HOny2~T#Y?UE&u9d*z~CHz+fFGkbIkCaO*!tu)w zYX{Yf7um;Co#-fPo~3d0%l8rVgJk74^@X>W>T&f2?SDUHqZwOIHmZ%1jSFd;z6CGY z7-Rg@Hnmk_CmGp~7ieG9CvRedjIEWCkE?O~jigP3$@;%$Z0_L^9zmqmYPi zG0Lpn#U7H}Tdpjd3eD>K4tu}&eU24~pWBPy!v|9djW}_54?Z}P{O&_8*CYERm+d(X z2YEA}XIHSlNBG*$6{^MlX5Y!UDaQZAJ|TE0#r_lapoH66S;K2BI?(ZinfQF#Drax0mG`VqeZg(>@>0cE&0PO(&=`G+Pf%h$kCz z@N5=7rcE`8_F^p6UaW_YCuZ7<@y_;Qq^;fD^Ha||)zF9Dk<787c;q|q@s?;uQL;wk zaWA&*7{);R$c`rb65$4?qqu?ol+JjBc#8P?LHc(Y>9?44U)_0UK51d+{^Gq}9`}%k z=Das}>6^Xujif{SefIMf6qEbM{@f@#3eg>-JQ*XMQ3iyu1;W-A(0<28RKe^X6-V*kdN&ePg? zKb@nwr_KOLclYryW2JFWn$7`PJ56z=8=FURHhzzxIhq|g(HX7zZLRdE=B9P%);;uB zjdPo^@z~?k{f^gLN6<(A6Z$kv-K{>IYW$j|e)?1gV|n||9JE7_$79M?mz3Cw;Q z&nD1*8^2Ak-*_Su%y_bgTIW=>9_7cEOxAdccb<0I&9^f2+dqzq_l+aAYc;lhMRa@q zo6z~2jMFY}oN5LcCno{@;v?v@c@AQ8THmvo$9q0p=@fr`^}C-Bm;79Mea_IU)~>W4 za?_j0p2XmO+G_lwqA$q}%6h}vJ$@gwvBTjv@t*bs1R8z3cL-y|8g3uYv4*=}8~U9k zq76N%OF!?9KOgsvr{T|L*B;XNX&eU|SM42e?~GblU_8;`*zV{C z?Au6n>>lLkh(eLy(ihlCkyz%QVvV!DOLrV7U+FXTdyMyLu;D}Trd&<*9`-<_av&R= zf2F_ckdY^8TxgTk7x<}l-<0_~68e!G+_VFG3*9b#zM;@jlrER<4m<69|BUlwj75~+ z*8Y@kH}!zljeSI20u$EkCl?*`p0!VmO_^~0Zmx_gozXG((BVff_~l~K%Ef;*bXKl1 zptC=At39Q6rJtpnb)OQt9Uu4Xr;sVz1KG?DX!+$pd~b0ZwuSaX*C1c(PL&_dc_tJK z=5#(-c0nL|p1JGIaTc4q3$!;}`|NdoLVL}j6SL00hLCukbrF#+%I;w^E+Qbts`^Uk!Ur?U>#`T8y%57_U(LGR^>{a=uNKAE!tF)&)ko!VcXxcq@v#->Yv8ghg4ktF` zLebW)P;@)(*BPcH@2u@&4m@Qj=a#}*>O|hGz0?jR9NOHLb2^zXLMPf+7f*`DHWuq> zPXjuR`Z3SAzc`+-ns6ea>R6@vHhTIv!g<=5?7F#yKedop2B9~yJ^u| zaEuWxO4WWsss!?#w3;|`3f@7s6uv}U`>D4fe>$> zubg6#sU`Z;?>GGXIzTU2ejPTTP3BA}{3;)E7(Q5G@`ZQVF9^@P@YT~dia%>((R6Y2 z>DS~Vv30ozPJ#Ax7A?L87Mv&9S6i9Zp05iFLwx+Hy-1cnTe0DP^XvYy!j>Jv78=N( z3!yp94a7%7;3IwSZ%J-r@f_-xzAymFKFk zD8A-4Wiaf?rstWVLxyapSO|IV-P4bKIL3 z31`~7be32;RO2VT6K!Pf5NiLm_;e_|2A@7QG?DqT(s~C-*+FNe>G?O0XXY16!a&$O+vGifiQ3sv@5!O zkUoFV+TPy%ntl2oI_@%v&s1TwS}zi$I_$4P7K@cVXRH?US^ zG5L{65Q+>nlr&@%ciutc>pbvv9+fr+Js|SpW z#^~1r(HGa-SRWzyBI0^usVBpk*&1_(T8lv z81$ok2$HS({R+QjBZgw`+%ZPF_Q=C4$eFo?8f2{O$CIh^iadK(;YXb#tIT2hAP1|c zYc(<^fP4w&7|Sf_jrc&&lh{q&0d#B-S~`NfB-d8pe}YWfg5%cZR%Gv_tR+U42XYso zhi~o@@5ml=Vm~+bSl{`yNo#Z1!CU*~hrDDBWh?tPXtQ7Ml=`HKdPK9>n2qwS)D`eK zMC1#pac*^Os(6yR;TIznltC;WH-ld$>B4Itj@}Jk?4|q59DrvU#KHv z=C^l3lQ!g5L|@n(h(5Jv7=8E$hVmUrwxc`yo;gX)6I{F~-wUNz(5o*&cYZ&j?3O@d z$zGA|5=v1Ye2BBso{f4CeXs$2B7gTn+ADvz390i!`33vddhrW-zHaGv+efqbE&gIi z*bh)sIK%MCg^-hc4oGY8@RHc*lJ~-g-$n)!$eKhZWaOdY z;|oUyI!WuygkFkq2W0kkb6<$wkzY>tZkRJG&5TWkG4lLz8lM`*LU_u{hDx_*eQlc4 zSkm{hZ(M)G;)27SP|)ZoC$^sZb8cg*G~dj9=0sgzWtG|#ySb<~=v*u9H9CLm>+XFd z)+ZXGU;iE&4-$UeqjkI9`5Z5~f2q%pW!#M&z?j>0j#-So=tsUbW2+|60n~RtTQy~E z)xmvl>R^Rn#ahz|~F+%Jaf?kpF?AeU3feYsqhA}>&_z_-BR$C)_@cr@7<-ZG0_^3#j&B%hs50RvT5pz zzTd1ru}>mm{LBvX62^tEyCIj>F)p`q#uXW?F=A|x^STGw{Hc#)^z}ktKPTVserAp) z{rk7>=lkgAKfhM$XW3cbrQdBIz2E&Ud+Sj8`(^rD_N@NY-{a`-9Alq@hpp_!t}wnV z<3~0$?d`8V1Yee9wOxbMnw8oueqK%6gX}rRm%>R;{wjAZdoISGF%llP+s}IO~)L!z3r@QC)WY=-@ z^=igyb&(j%IGuDd-jJ5bu>ls15)qN9lSbI0vI`DNrd>i31)~VCJ z`K#`S*LS?m668oHo->MM#)7lSTcY|%}sWbVz_rud)CjZZP_^bW+=5DavJ#WD~ z_CEPW5B~}ef5oEGzK`YpyTS0k;XiwMInV9gV3+D{u(c5g7Yrr+IQ=QNe>20Qy;cY_VMSN>zZyTLwsfV;tD zFX>)+-Dw!6-Qp9@Om)44J_~8x7#cZtd?tTvbtb-c@_RQ4Fu zmiI;{l=tc`(jT`x(feA{+r2+(dcu6qV=Vn+>E}4U2lo))eCPiB-iP=;T$pdGhxopG z(EGl+(GMP-j9{D|fd8WO*WVEiqa9kauA(2-5)LK(2ErlWX^p#r=eHA<@m%;Wo49vQ z-JD8&)Y{qpxux!*%HVUzKriAS?HhhC{0v?9o$F|)|7?5J9{oPhnxLOwzPP8qY@}ud zmtWF7VIRMI+M`c}Z=vh2qy2VYlFKj8_3SqE?B2b{c~e9G%N4>em-oXLzwnKE@cA}@ z`JTdg9{vR${$fAA;g{!nR{8j4x`%(ZhyTe%rTX;amxRkNvv_X#vU3y`cUz|j%%P-!0C;9kgqWGn9z+HNk?p=D!6WsTxpZGK8Dq+=JgwzSv|T*2uju2Cwvu$9jBP_Ir*4pXp8@DV6-t-07c&xTOcf!VN8X? zomUa1Y5z}sy4BpluQg|_P3iCWINy8UURsyhlV`5am`=2Feew!sd~^Lq*LFVGe#YvA z<~s8WXVEv+DV@9G4#Y$zAbwSyG^@w4#S>ETA2avAppeiV zHqp$QKs2*a-z#9Qzh>4r_nrWI7lQN#O_-v7JYBxMPH+D$^9}jTw9c+OuVm|gN^&lq z?9yH?{6W;EwBNOgdHPWBl+Q}zBTN>K_i$LNf#2NwO?NTA;uWp&=({AUt&$Ai!MH0Sp_ipTPMFTdyTJ7(y^*A9FTKkM4}=1}VR5uRz@Q4ih`{8m~6A$Di? z9&h}=i{WcZt^3fhfSKjXbZP)4;JP1E%O<^iDn*cOlu5Og? z|NOlC{i*m5;kgBa@*HajTg7Lzd5XCQ4g50NF@!c8m#1uGCw)`Q4z zz&$|tp+japQh6Y!;BVdWI!}9QpmW{fI!}9Qwl?$r3g7z=V*5#Ut6eHjyg9@xPy1~$ zo$|HGXS;X@{@E9t&dd(ZCcW&Rr|WmWH6!@n%o*7CrFl;oc}vcoOS%5{o`pvguZ(TP zPqESXB;@l9HRCg6ob4Wm2jRC2Htd7gteJRwSG|KAh~fkGXkjYpIs%f1qFPzFDDxBFaCtFxvR1~mz>nG8Qq&Mi?2yP z-TA`isgynZD4nScbZuX{E;sL^)R8rCjq~vDk=}WGS9#-Yxt~7PnXkxZ0?ZpCl5>G_ z)@P_=96ZraJbr(%LFH#N`5DwFPCM=+Z^_Lv+N`}Mh>Y&3;HjRw#8+Ae%&|U}yPtb3 z?k~>a_e6d>>CBhQ(wWCZ<4MvQv+cztlygO_y|^seUR;rGFV4!a7Sq{YT-fZEKM{Fq zd14}b5~pk%x1r=kWt{yeG09_in0)-aq_I$)9p}niAbML)ba~Ge$LAh&)Ry+*&sYn( zfN|9~?DZ#^C;2D2r@8h7c<*r^?>*}A-X_a?jei~Q&5E}d=KzNHn#Fq;yi49YzmFF* zPdYPK;=OQ)`+wk#O&;&P{VsWL7rfW*dw(b6JdpP$c;$)rvT60Rc<;g;fi%3Aw!C+@ z;T0p3@EINo?_Fbfy7ZpQdw2KeJ!ml0iCqE>S(@F+cxM^!o$y!|UaDrC(YJlP_XO$n zo$zC`tDkGq@E%YJYy*D|yob-r=;v%q?QwZ;XS060yf+7W7VmwjGLU=J&wJ??HqYXj z)0ry-_>SwCUyBEab^S~J=G?rGxIC!w9)2YBn!Pz!k*(?)c~2%EtpblV)}wxs%Wogv znQwM}^IAic{ddyj6_hEb>#kUoyPBIKM3C^6wMb`-?019nbMDyxh$1 z27V9qczPA_o2XMN+g@BBYcIBv--a~&ooO$wP7cn`3F=|_*oM@*kR%U%^RN#6w1nSN z`7J)Lh`BtzkbLK-Tp6M^X${ZtKC~y^-U&}DJpo@oItX7s3}1f`zMl0|$;M4|A-mGZ zxdZVveQ4-6X?5x#d#{*pNWREFX!kap$nXAZ-~;wH4A4E2#nL_BGPs`4Yb(=B{aJU($NW5 zo-H@;WeRtbp1_FEpYer4U$UF+9V(g|$MNUrjtJwQO~~H#)>saKrnFvX_k2rN*mmg* zl-4v9AGoGract<&H}bhKXEOMPo~eg@u0E<_yyMLIA9kDKoJc!%XG^xT(eaJgJC;w9 z1N5Ke6Ki`8W;=WLcMja+p!Moz+T&#J>`L%Ekj;#g{Ve%5o;K=y*DQXko;vq3hu@;T z7{BYY?mh@}t~7}Cg!8^$L%7N?j1JA7eEzjib^yo28`(i$O ztOk2*8MG+b-2g2NYrgOGsyH;B5`W!Y3__nSom;tm@VU@r@|X&|Uvr_ZUzY4K&1F9F zt9@@S^JMC>W8U3dXfp4A!1sO{nKaNI`;k|k?6D2v4`Ywb-ND{6=0JBFogf|M&I<=Q z%gox#2IOk^Q7PA;%-wP{w{*PZ`#J!ergoNvh9U+ffbVGCIsD3QbV$})c; z|2gD8Kgt{@jr__Ww~}soG31!|TV=Xuk%i0v-l$ z7BXRmClgec2>vI@gwAIDz927|FsrfT+erE6SD6f)CVGr(1ww4YyglIAVQhsTf)UlwmS=J0cnZ*!J85oN5R?3>c~ zKQh?Q$wQY9`WBF6#6t3k^Ba9vke^0nXudR`Jm-*SGUeuJ<%-5nbsi`;Ivus8z4$N4 zjU~v9se{Okn~)o)!e={uw#Byh(Y82J_AT=l(Wcq=>-|RUoAdA*gZKL`lx?0((LlS_ zvxc?au3>SWq3>?vMxUMDY;A}G?}gI(lD$*UU4uHmK=x0Ti3a6Q#4bJo9PNv$c6|Gy z(#bCEiyD%mJjOE|e|nGIk0?5n&eq;4|C-Q{82SM^P~NkZcP80YI{-&>DXlw+P8WJ- zR_$7o(v-IiMJM)b!+MAPY$g!U+UK~;{z_W?XOvf z_z>-w^Hj;_Fry3mA%Wd`kh#>t#{01$yuH(muWPrp?RQ?Yn(rlvci0~rsm2$evqwV> zEtq>4*)L`H%(5rizc1D~Qu}-&`i}jbj6;LQ)tt$^7kT1+zt6e1|DFNn_GT}#`>iSO zUe$$#q$%&-zO!Xo=d`q|GMpG^H;|D!TRqdm?JFaP9S9FP&3AVNIM)&48)9dG6D<2& zAy~|X^nNJDeHF1_PHPrUE)xo8@x}9w&MJs^f@L=qfMY-$Bb?#$JLrtUhoLjA({J+8+6K{D+IKHaX285X!JHFX zGvjqIe}uPZ)zDe9=zBlXp=&a=9)%;}O zxu0{$Q|tSp?OEibbz|vb{SG^~`_5JS^2u!~>U^4L=pr-L2cw})MeTtV4VgVA2c@CA zigOI^-2CjnNJDoOCF4ayE^Qu|hTciI{sGMmqB&?L>&>}h_%zb;@j*MOc4UQTBS1g$ zXGlJ2ylhzN(}jg6vGwSug8H=ISxTl{{uRfYW2~Zd)}fX``^p`5AOWVm7}a}_TB&R5!(9}ePPd2?4h5u$D-fa zU-;E=O7}(?-n4$TgZOE5XQbUjqx&y5Aj?D}zhInNz2Cd}9YFSDYwfoW-AQff(q8mH z3jZ54DcvktUJVWU?~GD?^lY#@h|IZD_N&x+CLheW{Sl&{k||GC9YTLx?end8gIUiK1b3(|iu+FleGeVuW z=R)z@yVgw7+NJyj*yQnz=1hzF8UMZ6kAjRfYc^)D4DBzAx&DBUQBT|V3d%#~%@ za%Ii8=E_p*bJ|aH3OJQfcTON2t?$-wPENn0$S|!DxOY4-U!eRLap~rI!gA?0<}KyS zTU7QvL%BcGtGnbq_QS{;)~hu3@(m5)d!$-NQ{LLoP~|IEb(YK!uAb|C@q}&5kBt1G zZ+OmLYO`)*+p`OLxx!)n|7H9%p1u&CeXjN@&!@nf;nCR`#zcG9gr_pFq5Eu5`<~u; z9GqpI46?NNQD{*%rs#1e^sl*&+0%yKUbNVEH)6BskTbGLuT6(QgO!Yjo!^x4TYH&Z zdUNltT|zrgp`F!gC;oTMb<~C>;y?P>@}26=ernVAvf~w(t&rrm@Xd2Cw0YTij@mYr zHg4HovO&{%BsB6FkX1V2}Lev%u`bDh`eFzOy*5J#fLY&lZB;E}aEF zi+zT6Z)p0-(Zgz>L(xWvGtBZW2g_Ot!G~OY*?J!ZKj7JL=|^9jofB?rD9@OvslIo+kJ zb@VmO^eOxh;(OX!?-GybZV357m+*T$^e09D4O{LvG_wFm{#E&sd zWBm$ac!h5aPoiA>THO<==Pw99NE}~x_Xmi-K$y(lUu;Wc^0z15bD5!dYu9|zLeaHd zIt!>fR>td&l`Q9@8Q(^p1)^(m(mR^RYF(+KrM;)J<=LKaGii;CFXJ7}l*U(hc6=ps zw71aCffa^HTf&%YylpzZmTrx)#unJOYrvR)obetHe~f3$?Y>&(MMeh6MsQM|3`)bF z{xNQ}W4!-aeVuVDi;F)OkWSYJ1EEb@n@I# zQ+vm(tdkA30$Ha0aH4hj2CI_vUjlwfxpJ*K?e?Xf`}f0H-mtcWY{>egdq!CG;w)dS z?xW0keHruh;pz0B`gS7yXZQWp=i!+~%J9#(n|(Y(pK6Ty_RVSS(zAoz`)RnRU;E~u z-73>Y*B3m5-)3II*?weCMC%D=-xPSzv%UpWE7|kpOQpSilfl{kEcSV9W0&?%1!A%d zJR5+1NJZ)UEH)SY6^(gxN583lR{qQGQrxZ~1UM^aXe{dLTN}6grfghc1N1mhU)X(z z^DK&w6728PwBz;VyFHkotUD}uJZMn`n5UB7}96*%MR?bh4h)@ z>$5(7h0fG3lErGXXiRbG&AZ)UU|!*@e@hrPi& z(RcF;iP-cmr*BWR&OK+=OpbSKKJ}E$9sWJh>{)Z*!MWUz#S%A zwg1y}V}sMH;!; zJNGmsxEh)5>|_wwyz-+Xr>^Ihq4(Wbdep_%b)^vTrp0KIgOx&Lg9Yf|I7pl}wy z|NNpm=VDGclIlFOGk^~D=2DvL{?W|8NpBu`&kTrzbW@y^d6#Uut+<!7M zYVK~5ZNG!xvQOdpKp?(uM2K6IoteX#dI!}$%E3Q?9wE=zPhaQ#h|WR=VrzJhwW9bLMSO1E6Fs^LKu6P| zE6HuqR4cNs)hFv@CmLCoMAo%=_A$WaB zw)oGwrdvi2s{-H3M&$5*veAFmHH~b1#V6||j|SdxzQQlNkadsxWS#cI14dsH8UGN zK|3scBiGvQ8$jRBP(Ld>B{L;EX+s3N$H-1YzsOA5ABn|WnOVl2P{BAdlRgMK+h4DM zE-4S*Q+!7;9Nhsu?kI);&Ls6~zx47ym^8<^$tU|nr;>X!pw%rNttL1to;bFomo<+y zwAu`QDEqX@8n}z>g12rNOuQdAiBJzka^kj}Of@f^YS|Waq&9(QfzSFB&~8 z4!&%Q6AbQWw03OlikrcUHdXZ6yVNh|?5o4P)B)f6TwI>$?{o2=$Cb~;t`j2E`o2Rh zo>=v-(i4^^78Ka)^322VM9D9aDcIke9&>r(Q`E^}UToHD&*RPn#(p(?qBW}Kn>&iE zGjv~ZhwJ~J=ixqY=%aKehtAXVJJT8S?2PF1@XUFIG1Sd}21oacI*smq|0p8Y)=0a) z=~yG{Z=L9xX4c#i*d6eZXgmfD%jOWi;x>GPHe3Ed=C{e`=eG;km(pDwy_4}6UZ9Qe z&v1P|E>h#%qIIXjK-&X_7>R+eeQ}ZKw5~ubWo(Z?Hv76{%1GX+$cmqyDvGB9*{6zS zKrs3geDxH2I-X)L?^CQrJ;lC~r@TAkN_{08c&q8ZlHXu5cDnnAugK%GnGj8uMCpXp z=!DhKi18s{|NgZ)LG*brogg~x^C7g19wz!cm`=FfkKZ(U*mL7b{56VxTo$9Mbb-_;4T0)y*>254J4Vd6AbC)6)>bwb^>??NX;r4!CG z_NreeXpQ=>(Fv#eXj(cUJ%FYUq!VP*SbZ>5bnMyCVcF0zS09AX2j-44=r{zO2I9~z z;QF#kHn8*n>x$?G?#CNM51a{oZt&<+_sNBCKe6X+^ugPnKA4Iw2&81&x%Y+`|JEbY z33nEwTbZXZSBs(x(k-4ous*L^`MlikCk5iuN7Th{9`*1@t-&tv)`73rIt~8dO#YRv zd>71H$4@UBGA3p47Uk#iTz=?99^Uh9zv@8%nf3nkBb8$o8oUehXBs?o%L4aX7s~U; z&>HhtgF6J9D~&uKPn)d1;2iUQHqMiN`h=c!Moa$l2?qDGg%2r=a$oV*j-H|R4!kFa zjCs!BU4SjBJZ~r%eDJ>7*3na8@mh3Op6fF=J~?l_UOu_EUl6@7z;<`Af#%E4`tonL z&B7nBSaOIbnS%fMZPZWS)J&YwQPf$j$#Xl3lAmkn zzsCq~roXigoFaUHP~ZBHzxF2HlO53l-q#4TZQt%)&HV$b@!v-O_}kuDEx$c?R?FUt zzRLX^KW_PbuhN2F&P<=h#MQs%thFn}``trsbxB;hWL_agyM>d1PwkvV?~R9^e_h@zN^Ir#;;9lf9_o6C$DRq zL-E^k_`eIm*z_X4t8U2z*@D2nr9;2N)(8i)Vc)rX2hn3^AtxH}MFxKB>arl=E9kRV zpna>)w0Ek{Zk+Aejf=1wn_PcRbSrY=krBv?k-dQ_&zf(dxU}N!fv;r`d`vRK-a&rz zsMH9_jQRNsX`ALG*Q<@$On!5uqbHoLg1?t=r=>Gyp}|{_pJ(u{FI?y0-5x=STEifiGT=ly! zKh5CXSooxech!WBo*_2Bt-&!*7`#Q^{*#u1>|3?t(h0~ko8KeBF=>OhIPco0pDoPv z@GhK!%(3}B85(ni!JC&q*_3;o?$0#&eR2vq*5)@Q#CLmKAE)d}`&<4ovvy1vN^nmj zVIBI_?s=*r?~l{JlGU7Vu6-xUeQER~-vQ1eKWg71{vrA+0L^`u_$$OupZjc!76yH_90D{3>A` zWy#j6r4Hhw8t}EB6+F9_PaFuR#>VLuGHm*?q z3q6zHg8KL4i`@fsW_U05+$r3#@;9b?-FGz@-G6~T^3(lPgSS83x6)UBy012P`_p|3 zee0)t-5aEF9Z2`hjD?@>cN)C?>Hadt&QJIHo|EXn-FH=@`z4H-pYB%~y#48ZE@SMc z`#A=0f4ZLqO}rPncYJie7rOi~{cGtyNBmU!(bD~M#80NbEZt{`e~^B$bgzAiC(wRN z_Zi~H(oReFY2ssPkEQ!M>MXiHiZVs_NAj-del&TC?nhCU=zb)15Zw<4U$lHUd5G>0 zBX2|Z?C-}%kiX^UF5Tm+FN4n_O7qk9PTuj${3iyXZP|d8*nk_b0XKLy;C;w-C&OB5 zq`fElq-XOj8sUCJ7hgbS!qLIQ^}*iGdlltA939yBYSbfsOlZ;mu4U6k9i&}yS9L_7^%u- z^54@K<%Z>|*i#s-b;i79XnSscyTMyos02^4^)dP_Xl3C9XUtA`R`%TY4Blr8?_m2ANoUQwpbGF{u+Swc9of_|*&wB4< z2tU4c|8lN0@9gb;3md4;dq;X-dynrRob<^4<;>PQk979B-!i_y`%c~s24DSE|H!ZU zZ1!|Z#QUD}!u)cR@9M%@h2Ygb+0j#JZTq&NW3HeMem~cZ9$xfG<{=(ldh5`G=;KAw zSLox~u4ck&^wxdPwRcr|Hoy3`)w9dwTX5K0EL~*nx0>kKVp(J?vSn`mW9ZcJv9ZM= zk&F3G^y2(<;**IVRy&sX{QTL(XAvJ>tLF>ypCrDJ_^1hbetv!d@hgan7HcO6XGwlB zX*ZE3S{pk>cuVq^l9nb-v{XOE#rrgA50WNY`9PbCcO7X@kS1Caj{-tDCQp0uft2wEalJ zMU=gga0zvy&D|GK-}!`%v}GpYC6u?Ga2a*DiSRP&)=W6jvq$QlbLBF_SGz4Rw%@oW z8{4}+J!Nn2Iq-7RguT79Cv^5+S-ZFQ?Ap%WDmrr&TH z+lw=$AMsDzZ0b^)pQ+!}Ulr72v3#$r!%Q83qrNisG5cs$W*v18Ih$V(d;8(b7+a-l zPyMlGtk~B9|LQxfI=?c@p5I6@mrJ{2GbFx6-|UUBZ_}*RX|ED{+PXMr-(~kE>3#%}O8?Pk(=ds)A*YgSi*7nD-o<9v>Ji3`D zbThZ;W`f$ij6B}{nP{_ASFOGL&ZPPJhqix(G@S|2IB3kwSS7u=FZHfuUTMe3hWJ(c z`fMoAb$@{RSo7v>%+1YwIhpJ_k-px8{IuVt9-m_F4?PGk#yj_J7$_x3? z9rDWA!|#OmTl*=ddB0!f_Zi;rf9JREp!hCr(;n+STBKZ+X~y#aZ4-~J<9*%T_BGxY zecYnBC!=S@C8OQ_D*Gx*cem;Ov$Fwfdf5=!Z~knEO=SL<)0;nwXValK^EX(iJcKV? z!N7NI9yWx2%-?}R{8i>}u&}JGEF2Dp2y`sSmgK!~2mvoT;jp9NJ^i`m|5fjo%156{ zx5`%^0?t3{;^}kFo_X&4i_iYVw6kVjJf9kt(vs88=E+%er_C@ZJUsBTlU6Rhs`=vU zR$bGKed5ELH*4D5nKLe)H-FlEH+%oHzQj_#pO`l9oQvm7yKv@QRi>1loHl=!sb0S{ z)vte@&-|p99sjVvBj@iJprA*Z~&GB6|%362O? z2Sx=(hiU>x25JL!fib~jEZczS{`nKa&TseGbcG?u|5S00X+5M6TyvQJ1@NO@ywOm3 zz!^_mzh5B?@*I8PG+2fruJ@<<;-`D@xQ9QRa0Snoc<}{0u86595Lk!$XsTc4;e zp5}q#e*A}h&sCqteeo}O@ka@5{_{~}?w^}~qc8q24-|ie(Bj8&_`82z|NG*P^I$6R zB%$zsNVtJ`vlmzYzU{;RIq}k8xf#!Qe9vFxq2k*JZTSyl;kbWp`A_)b-8@kIIYNuS zdZ>r)_4j&ToFqr_D?I$+#P<@Ph>*7Lzcs4=`;BbYa{mHO4E#D4ByJ+X;%_2upX=_4 zY8!Rj_HFS!pT={=B|r53Cy2jATtlGvCB%PEyqeJF|IU#%L%02v7#Z$gz*z~N;xkAP z{;kC45TE14?_d58Zm;bN5vjMN`IP3h8B`2z?v^R+Yijma=PxTW?o971X=c zc3oDbrggh!R|W5b0rMb#H6}R5PuH;CUGHXp|M|Fg?y>xl?!#_**m-pIKmU2(dFSKI znKN_F%$&mkpGIGN#)a4U8@;_)e>~vdL0^0}&`-UiSidpge~-TS5$e28Pgz|-|Lsen zDCMauzm`B=g}mx6(ip^d6mFf(&*^~QkG}X(+7ut(w39z$HJD&rnJ9H1={aduIZ<^tZ3_3O0Q^0xo%Kb+NoL;F3r86w50E zF8O@GmEMy9mwa!1arpfKmwY=NUF%%>0xo$AFZ4ord%z{H!O$-c>Ab4Y=f|1Frm^54hx0`e&TY-%P-D*h7ckIxEiwT=M3hDwekeT=JxD zTE^M%D*`V0LcmS>0xtQ!CKH%{HvEBrOWycUvAiYVl3xh8?3b-A=u18waLH!_E_tmQ z8{=I111|Z&fGhlwfJ@%D&IIP4E5CqCzTx3wd0)UK-}p$eJR5K$Zz-1N0xo&yqs8*k zfJ)jd$7Y(*S<^!a_P7Hj90Mb)gEvo zf4o@U8F0yK+lu9>fJ=TR;7ad>fJ?r6eIa}o>7DY_rT0)Em;RAd8((tWq(7!jXYf}Zwk2NHND01#(+yc*;g#z6L87P-d`-Q3b^DK1FrNXHW&0I zpU4#WCeHUhPu=<66Ue2%VT)I=<=qo-$>#=&pzA@mEj}8^frvff{{YbIA zJ>ZhpJX>KQETo2VC-V&lSrn zpD%F9H;xy$;?D+L^12Td%j*L!dE!@#^^73CV zaLEq^T=tIyT=LqF74#)<3b^Ez6UFlCfJ?rYmlD>MM4PFv2R(K5buN%gKlh?nu;+U$ z;F2GnES8@Mxa2!NQ7qpRaLLDZ70Y)9+{iy!EZ-Gy$t!mk%j*Iz`T2mWyvklF=u1BJ z=>nI0f50W*IaMs54!Gn;K3gn57jVgIf2&wtA8^T6>?xKv1zhr)-!7J~2)Kzq;F?=^ z)T?toN8lF&{!8%F0e=pDA>hjYxxk+6_wDrx_WbV%xa0@EP%J+haLIdqr&zut;3oV` zvHV=XCC_}RSUwSO$;ZB2ET0RwE9URcf|PpG5($y?~3tEjBkzcUy1P#$M~mW z-0$_RL@T{ti^=~g#=jfmC1na}ox;B(#vh6Cju;<_@fTwJw`2UPaE-5b5Z6uAkUx*f z|5uDxEp>?ll)eVI#@kICD|~xQz9q-o<#lR72+PsZdkaE-V5Gx9%#*D$_T9hLq( zT;px^dBl&z!XJlgygl#ayr76QzCPmk_uv{&d;Z_x8b2R$@)D}>j(ZFIEpUyGPdj-6 zuJQ0m$A1{E@$VS*R_VDDuJP`)liv;3_*PAr&+d2p5xB;$2ONJIuJP(o$NS(K zpL)IxuJNd@QQ7-7_<6X`?qwK6zcXk86#jm=#*55VG2z$6lFS`xW;GNV^I7lxOa-L7q0Qy z9LJK6z%?E_?f6IG8h`ooy9ciE)(&Uycj4a2-hmkZ4{(jY=4gjx|7cA9J-EhSnlmN& z(zjrr@z#E4{}#B$SM4tRop6n(P7{~(>){$dU3B{E;2JOWIsPPkPao&p@%O_u9=hnl zkH9tl(LG4^J}7+}gE=RE5w7t}#>roSYy7g)$@juFUTJpe`x0E^lYK5fzYo`V#Gmg! zf@}PdaPq%^YrNs((;{(=FFgORaPL&UODiZV#uwXNd{uDoB(II}`{5dI9C7;ZfopuB zeSwtU4RDPo4iHwnNBSQsly4TU@xnnT-wrd)_W<@+tTcgoL6xccvN94md_gR8%;b;shRZ}r-?eMrL9U-$KCbxi&^ zT>W)le>TF^Klj&HA6)(M31@!Tl~ia*F?>aP_axIsQ5L^c3ac`0v8i zfA;(2 zqEG+Smwy#p{n05W|1r4wpQ$pNpC5;-zj?vQAB1}+`#&4w?}w}ZseYEq<3n)uH_NWG z{L}DVU#Gsg^FJF4|3@*-#KgQ)d`oV~Q_~-~Eykm*y&c_|{`5d@Wp`BD74;8ybY=Q` z2hu(E{b~nqQ@3>GqG!8?cv1X|BV9x3j@)1e2R%`3Ph{S~c5E6-r=x6F|3JZ{aZVR(?eU+R%uh7_2z>NZyV_DAR$Bj zqr`;yk!(*_F5S`H#j9(Zimps%usd4W%5vvy7caJzPLi||lH=12n=*r4Ir$l(^<8Cs zhx6XUHaVNNuIwKk>RP$l<;s}u=pE|nF(qYW^@?g$H2BQ>)7>uL!7&NTWS;5j-W(|p z%BZ#25cLm`)m(?wwVwA!J-mh{H=!pxuq$Z4Ps=?fX(sWg4t3ukI9hf&k3I>PL-CK>9!g3W-x$hahr-L~U1G#=` zk4?TyYyUuhE|#Ayw!Y`{*VX-tBmG>RMMXfR9~|0bLxuuk%i03i+C8X@52T0syD3H@ zXW~PyW6MY`J=(zqwK=+?#>jxtQK|Ly_x5#Uhx!L8pKU?O75gi<_QVWwaZ-mN& zBzvj9y;d&ux0g$y?dllrqhaddI#Ziq3+9T+?jA~`d8uJj&Q}b1<){mlEE{Bx`ZBa= zbfyaCTj1j4=WB%8Oe2Sw)U=1 z=QdgBcWkSpLTpG1ND92yTqo=MKah4(r`7L5wW*a=TjY%9xwD?@*ckHM zr6AAaNy!V0>Clof-O41QN6m#~icIt|d+#V*Xew6So(62xm&ki*47T<@Hj>F*BHA*N zLDbHLGE4)c((zYsc5pa{v_lt>m#ybwUQB1$`LFNe9=V8(Vdwwkpw9Fn3PWD-Sl2L@ zY44L^5;?TC3Z-&_vP3{n&e&f z9#zwn9n{%%K7!WtK(EPan=bALWigOGG&nL~jL9!=Fx`{)ZyxG;*6I6#!wj+K%f?bJ z(>8UckeK4g`>q|#(2p{{{?I65l;o-+Tf2{HW?aFpr{=6#($Qh2uyu^|_m~UD_^uy$ z#*~{mecZRQ+z+~Qs|)4$%t&T)M=!afHkniu1ta#p{!EXL%_Mz@`-zf8)$#r+1%IrZ z_K&8yH*W2HTDR3aQ)n-FGTqgaCo)warv5!VNF*lFm)zoPd+rO^D4J&Qk<7MiU;Cgr z8;gg`xAUaYY1>pUuI}zsWL1}j37``|UN1RTX3go#w<~K02euAow(69vPiJXWpUI>H zzel=8hKKvR1|G_csN7ra&C(yN?;q$j?MqA7P!HYo^b;fLAzcj=;d=VZ1HBxNwDu3k z{7BniW?S#zfUX%DK>0k$IX0;3>&dzdr+?UlcyOp&;WE)_CeW-iL7}iuoar=o~H2IyM}txIVOM>`faX%WqKj` zzL4{Dy~4}X4cF<&2f}hu=ZV~G8ua})y4RXRYH!gDsWvj+t9fTh)CVqKQ4;MH2WK4a zcm8wY=q(6;vLrg={41BjSC&Lg!n^rWfH1}L1mP;4BY?NA#y+_09#&b)AN~D8^bZNq zKP*Il0hInpQ2LdOAEn2SA@aGGPOaMPf|&C8!~=Y{p8w;UvVjgauQLc%o&?=6X%h4+zu zP$yo>zvd_b70wtAYoSjzM2L*h(cJOZjdEI2H`75{%mK7>C-`h}!-RQPVv zFC_oFg`|60NV@k4N$)`+`9CZq{|mw<@&zg%TG6k3)Pglkj%)#!KSaH8d{TTZ=}jUh z-gY7JZ5I;XPNB}1Q0GZVd^1Ago4U=$GY2Z3i=gZ@-wqPKT}b#IhZ!MuH0M$2+YTz+ zKKT>wqL6Tv@37%&9M%eTen4}6K!xj+KjoJdlE1y23zg&U9|tMt#yZOX5uRy+@}K(& zkn`7k7f5`4Lh?HyB;F|@>D?cJ z3zjB1KjOrDM!1gi!aJ0jhdD1o(pfKjg!DSDIg+JqJXaEbl>7;QnsO7OHx8;EO^IXo zsIavpI_*$%B1?JBT*tj3%As6HIV6N_ zls{<7A5^#v^2gq!kaCHIZUQvPG0{AWPf(Hu$nw}SG|f%30gWBpfv^4|!`Uvna*p8)0G2+Ch` zA?3ddl>b3c{+a_R|7OtG2j#E1kMcj`{A(Jmzvev3e-9}ABhFuQ9p&E#%6|_iJDTGt z{}xdGW1##sw^9DJp!_$0@;~YPPdoo)ll9*RN`DrV{z>Ow`yg`aZM~3syIn|qO+92$ za~u_}2~@aI`4f-kHp>5^^RHiP{WYgi{xhKT=beADnR-XP)SO1i>p;m{K-oJW`6kNM z$qzaCc_;5#hn$xUn$xK88BpOTL4_}S7$p1(;rl5MPFtm|dMVm~d*HQXqp!DlO=}!pN9tqLkD@0#&AEiGFO8=z%mA+Psox-i;TS&VwE#y4U3pu~% zgu1>T1F>5!#BPHSd6STKLUSk;&lsq9#=+8;dG8`Q@tqf9H}NwzT&)nh^+N163bCuX zm9oW_$bLeIezg$&T2T6Rp!7TCkN!a+ z`bUK5F9^}sTukYo1EpX8gw?No5~RGg3%Sql5R$)XA?0#Lh`ozK?3JwtvDYU=z893; zX;5}&!P3w2Ei>by8C?{xNr z#M>Yw-X@{yg^+SQBP8DQpyIs%D&ABV{^WB?i2WHM_K!L&f5!4UA>mtv#IsRIJUv3< z8SS?6JwoD3_E=sID!v9#@wI@;XRE_Dhhw19v0q3(<*1N&&IpO;ypVXx(;)qnDk1%p zdeGPh&3TkRcA7SU>L&}avr~wjNg;Oj3bC_Kh@HA#cRoPb$$+v`)dymyPN?z~s(gjm zX%}LrQ;3~OQ0dtP%Fbc=V`sb{#Lg}ucJ>OfGb6;#0U>tgh1k&?X4xqRWv2m@oqa;W z9}p7$kdW}2(=7dHv(;Y#N`JeMcJr{1^Ls(ad92KU*r^d>r&fra4MOCa11)=#pyJ;J zmd^2BR&wl?Z2_^D6rx`*#9p%yd#ys*17&9;C_6jkPxvE3!k-gT->L^d>@+$Y6=H9P z5PK6s>}f8w>>U7Q?~MGhr#aN}ZwKW+2Fm}Cka&&?iKi?J63>buixZ&9C#Z1yj@R33tI^(^fd+(Tzf$Crk**-;|L2?G=*0 zeL~`ycc{7BN?#IGJR3m8Q#T3{Pn!_^QK8C9sPYnG@0^p@Y;$%%V+WL-T|(^a6JqC} z5IaYN*jW%_M{~fHj&q>G*L?tg!tW5Gze|Yzln{N*377s1DE-s&M_&sE6<>6jOC{hk)0e-2bS&Vx!v z+4D9Xji5<~Q0WjV9YWG^#^Lr4TKSYv=@Sy~86okW7ZPvnxRq;;yyEKw72kyX$?qW{ z>0S^L{+y8T7leeb{18aGtA(UnbLnMg1t>c`^2g2@A>l6y319ZBAmJ0B^s7MWH_9LV zX(9Uih3Fp;s+>US9|omg^)Hwn2;vJNMO*c+P!u{R;a-Yy~briEXio`JG^1eD$6$MMJRE+KaJ3bA`wi2i~Q zyK^st*qs+*_lOX?7lr6Ie*&B)A42rCCPMM-1QpLg`4dn1E|7Stg@kJmqTedS{zf78 zdxY2@6_O6Ep^&|CQ18;b(;C9|fhq07^gkIjcV>RQ`m@pTlzwqu;Xr35V4}?A3y@R|m>okNk=M zf)IPqB6uyP_Ls-G} zFMKQE|Ah@#`+1Q1S}&x&whO7R+l8cWr;z+k3Q5;tA^rW0dqMOvpwg2Cm7eXO+O1j1 zmEL~|Vt<7Y`x}G`C)D^!NIVCG#B$(h1hQwVt=C$`v-;C zKPkk1)0aWc!!A(q>;@Ij45)atL4xAReg&MP{Dfbl+=M(o+yg4yUQppK$RGW_uUh#S zDET;O=lyVS>Yd2e!_2Xo`v7UuH(r+gdZedLY*g}&XZ8*Nk}}YZ&?2(A^t5w z{HL7%jPsv${#u))aySAizYD@|QNAmOw{6LFJp<;3EcW>$UZbvLHdroN$&|~kXyr4* z!_ms2K}#$u)T)(C`D5#zEqdp_lI?U>GA&`K{~6vI4@cMPehfuY6J6&5)PomEqjzQQ z;77o>@N05>!+GXR*O<-GOnB*)^Sgte?3MD9OMTO#|1X)`JNZffYI-Sj6lMuOIoaFe zjlg~S8aS5sYJPHu4@S}3VtS&F@Ds|e-0^Qk(V#sv|0UC}jUQ>t8c+T`@on>p$y1{v zaw9*V2l2Waslz&OPPXKPJ`dt!*qfsK-pVnr_y6*-&o%8nYzW4t6 zWZ+iao4R*Rs$ms-EG1W^QmNqoef4PGxB9*YtKM1hE9+VxE-CSrl(xEjeiTjahfHKk zRTsz+d#+SOe828Qy}m8L{$}il_L}%@0gsXsr}nUSn)dA0KHxw4#@#oTCFc#-@lN)2 zOYzO#O20Qa`^0Krwde}_2bK|6dD{!-8wl4uVE2_P(>{TzJ4{&Z)mO$IZqk!2j}d;_ zn^S4@ejY2?i!T*?n@;=o>06ZAZ?=|8v%GWcc+|w+(Zq9|vm3ED9i_EwDg4}XUp-x& z9XH=fla9#)@?~5Kbz|dZzrN7_NAVYLh{o-=9MHW9KkYHs;`~Zd#C0QSzHREnhSWIU zvK{C91P4xaCdN%e&XdZtB=Irx&1fAf{q5*gw~Zf{Tr%(Pu>o0~ zD?9J!(U++|-`e+HWtruiPyf$1-WcQ8h<&pk{#|3oOTSG%=EhD{L}PzlnHu98++%#- zbL><#zZ!nY)ExYI`1A1R;eTNAJVo9}>ucqy=Z@<;jH+*{H!3SrC$yh&>N88D)c8_; z3-LPitFNHTHD9qJH9?u1?@caKm?~4QY&bXAUhhq(Fn`q)${Z5X}K4JVdx9Puss zYWC^Z-i(!egEi4+zr$M9Ie98M^WrT_W~R7oo;p#Tg|~hD7Iv6B(aye-)txVM{Pc-r z_7kAK$NI$0_hFa8S*Q~JK#9M?hh0^j?ZWBKKrG<8qwA$U;56c;^`zFuKi=7{qJ&aT3s6dGspUd zy7HrM#56{QJnMT-oR4G4#0#g`>-M#Mt~sv+FK`VWz60OWcvbS?t_e@+U1LFBbK@?~b129m97F|9tWed)&h@x^4r@_Le8tJs55@>F1uR5BZO4 zXGhzovZbZ|)0^Mh@$Eja!4lSkSw}UZuU2CEs5#zt`GJ5-KDCs8#+8`9 za+#;m^=6O06#;*OLsX&$9@HoZ-L;Ni+s^Cm<2RKPnCY;aO< zZzhl{{grfBtaIfTaLJnk?lpzlD?;*u%O})$Y43(&d7PIOf^t+El!OGO^z74thU(Pz z7=H<#{Q4-4x?>aOFzB8>8>N z!SL18cZPl@ecB7sJB9C#@qZrUpN#P@!VmGw5LWrsv7Gpg#Ci;_>t_-!`TuZo=_o$! zt>~TjPsDh0jBD>QU2nP<%H9aay1tY@@sGyzr{LAdS2+2XWAgt5*Y(%#-^V1bba=?_*O~ioYMbrjQ<>5*QeJXjLDym@lV66xIT3cSAO=z|T)y}ZB z!bJOR&!p|bTDO=-HbQSV@jW-RtwSsGx>yot*VX1{xrgf<3yTrIzZH*K^;fiv@v2K8 zUHXb<(=*RLzqm16G?({Xd{sxVoQcI3IZEEGZW_LHS)W;F=i*j4P4zEI!{XEY7fr3P zWx6SgE%B3evsT&H0Md1t^#{g~^m~T-SvJwJWsn^Eb*cVD_OZgnuWK~rw3xtHDx6`~ zwRUi7e4c!UeU-Z;?QS7NtbAOhi(An`3$3*D72B*G@9=Rv+dt4V_^c0OYLz;K9j>ov zmJ+G(U0nUF{m}Z;%wR8TcC#5H*R|3>rQV$Op@L4KRK0nB26@cb)!i3mbGEQHr?+)< zn}tDFUb^aZHut&2s5aa6LRVT6>(&K@kvT7C#;lz6NpwkaDYPZ;*DU)5yiSMZIK$a= zcmJmT{F!r-p0vqdacHyfGk?wtErYMuJ_WvzoDpTxR2SMbwWG_qIn)S$(%v^}?za7a znv{7Z%(LVunnGT~gUr1`2DSTz_1sH@_u4+_tqhnC!(kxR`IO>m;F=}b%Hfb%%v9+e$4S5j!!z= zEqsvYwT^3#hnk1%UL!SY?Y(#T!`S7%Q^QSpgG22ZC4LB84r(vtn#Z^oaj&cS8TO+P zKF)o`@hMR0+XF6ZBR^p253{F)!x@MBgxox}rl<5)`ocnwFjQ1~P4wE@;VNne(G zSIv6TDdZ-DlKf{G-wB&3cj3>mZ-=mzatBM3q!U#5 zX;9%0N=|(^Cq&<@0b0jN=AKxyk@SGe8O*7Vt8fWW;i@I?;Jgc!E^s;NR9{zmEui#T zg``in)g^cG?@hmh;KhXALafvq3K}LB&Aay!|Df+9+DNx|zDvMqDtaF=dNccmP`~s% zooZ|HSPtIdI913vt(OX&bmijjBczwHBJjVK+ugB1_9Uko8kAkRYBD!y56yq+=tnhStWkKh@L}|*Qh6sGx%hjF za?%&(*Xs!>*1Vflp;A99fff9ez68JcdyCn(F<$Y7f!y1>`@U88Bm;M~_ZF+_>v@+U zclGxc2^(Mjy+s8Vj^0V^37!K*oqFE((yIxceez8Gn4S?{?U_)Sd*-BX!|1q@XGD7b zXP*7>3{c_A5`3qI=ha@*ac0mf)R)o@MQ(oaAn4;@>~2uWS^~uhReh zJc|jhAz9P)JuPF#`PyTd#_FNdzKgtPF>aRs8ap&NE>Qh^G{$v3c_(?VC!qK*#rO*` z{&I|eI>z_KxEWUrvZ{Vd*JwXI=U@vUh9q?79v#R%j`*<$H$2+fJUEbktZQg9%f9nH zj{mpgh^UtQ)bOIHMMxvoBcu_?33)%MHminfenR+myB}T+1*vm*D~-(zxJ(b&-t0Z+ z|MUenQ7-n5TlK^{-%Q2tDcZA4`Bjsr8Yn#-$L}d;@C%)B<$g?e8PdwY2Se1`*bOpFUyOw(rD4eMhzB`YFGh!b{rr{RH~=_Dhm|`(7PwQAK6)PxNl)#LcUDKgsvN>0VSMn_l_r_Q-xSGr{|!D&7TE zb1$flcppSNo?PI4(VX5Z@ji+BLrt5#H&na(!ji-b<~^rx`}J-pMZ3S(6=WZUJyCJ} z*>lOiJof6c*|QT5Tz@uk*OIfZF1v7cV%ha)|KP6Kvk&qez*j3S=-a8UN!ROn9WReQ z@RzT@ioVxNU`x8+#8v`Z`srh4x2bP@udr)bZc%bC$d5(|C7RTS?_-iJ;(b;nxFJL$EKy-Gl!p2{A*Tn0k z%jRESvTWk@l8X7)ql$^wWk=x^PWo?FcPZ&t8kKI7e$stsMKYh}#o|<1{8PKH`un1- zVkOaS92|7@O|6dPhXXEokH4UuoM~9j+3?l*M#F}$3Aoo3E_R=;bqb18_i5knmABfO zwK{N4oZ(8|iEqv`tN+U}{!)zVzO1-b@Kb!#l9Qi0$G-yVId_xeDjVh3^FM`aeC)%2 z7k(Jt0?OXsfyzH^hT## z^TDe=4$Q|qteEqxzle<%vEi*nw7-~+7Sm0Jrc@^M0rm(vY5Roq0rm^&1E`E|r9nLe zE~~P8n=YsCP)oTAJ00$EIPXx;`z22~{6XnU)RP|XbkCHF_a*e4z7PL$eq`seeF;5N z37vH1;(dwB>8b1$Mkpt}Yw1h;DSFq^m(a71Yw1gr)908YA?inP$}ZcNI7oq&`Ankc z5AVKj&Ao4?FF{}9n#YN)_9PYcB^KyIEV#bIIr22gOweEOh;zMSxR9W)3m~ZgJ zv5S2Bn5Rr9G}rAM{fjq(<0F)@T$=0h|KAJkzPhGB@-@%0E8V-!qoTH-M{9X!iZjpb zz3GVPBaxl5eJME7vrU(9`lf;bJ=81oGHgEYoeJ@L*qIhWoSX0LIK zsXj{RJdNKME~l3wu)+xCq<1a%g-@V&E%yaA@Yix*IEcM#8Dn1HeiY7kP}=40UZWY# z1$Wgk<~`Rw#+>HaE3W9ipfSVu`}?QXzH*NXoIhjMYq9n;>9lois6DNBT%h*taek6{ zdA$969+~=6Uj8YLy;Jyq$B*VCFaM4gf|8$g=)+$hBw6x1;Z>lQKN6DbE@1G%A3A(};02>3{P;EJK*a)N~V>zP@=rl9dGEuv!L z%7udbX1ji{RY>b2>C0(i=F#DY3nd+oxk!kz%IXU0F);ybF$F;`Q;?yC$=g8a6HgY! z7>Wt7wlCeiIq+N0ZoDIx#I?834O~XStSsSAs-z(w=KPu6!!L34Y=}uN+2M$g_cm&+px9>Q@(fU92v<%6hZa z_4U`h-t0)M-}P2f*vNX6#@p=teKQ{CovEJbS7|)n8N9dEIvd8;C9LJCNolRe`V%Fo zwKuU==a%w>*3&$3qNHi6gy)<(bXuA10RlMT%cda}AVrngG7}lSt z%KpYFs{cn0GBz)b-g}JeW7!SKsbgAa=GRt5JoCT7#J~Q;QZuH1g*e(yP_%zuj!f}$ zsZ~gSJYm;1u$ID%+pFAoT(YG#ZtYl1rnOI67eSxXtW%(9D$1~1-o*Q6-YHxcOV4Tg zr?rHUO{0UJ!k)*U<+8^8+a0{;A+c?+rQjLzcP4n&p)%E)FVcC;uU$}{E?cf{of7Ry zMP-8bBr4O}wD##HvtI1>cQzk?G5HW>`s9hKwwF#3r+$5eEG;vWg|9}8h@S0KChU9woB!W9wWQOf^q4j} zA88~FrO{KAS5)E4#Lodx-jvURyE5^d6(U&Fy|D{!n2hc){~3+rn43vOv7{f&WK`h|XTiIH#MBw1(e75csTfJUq_ zjlvfkH9c^emk>IwAxJt8r9oq!u#H!H+~ni}@uyj zeukX<0)ob1PP+!YZ6zq_kKQ=W|F7+{yD2oABCd1Y#(hyU`wW?D;MvhT~05BuEMNVAe{76oZcyYlE2%b^yN0Aw^(1U z1sS5OQR3g9L&EFar;k%t)b|>rPHgajK(8m{6z5$f37W%`N2R8XQ2G-5;(fV8G)MnE zAF5#Q?lt$Vd2@ZaHTPNltIyNWe)71YXJ|{`+H|~#_-UM;6D z6Ge9I>9x%D;2c~s*F*i9ce8F8{K$6V(OP}=FIa1Q+V?fe>GRycz1nkOIsH4$Gn41YxFUo7p-i=_SCZzAogXYsVxEs}Qi8RPl6jyzPl zeEd^;?woXW&_YS{4#(R;t>aw@Hqc&LR}v*T(7o6?D?b|WB!bfcSNN%X18l?Z4Y=ez zv{2UN0~)&6bMIA1l(zHy)Tern(X{{6j&F?dY>fMBPTtagIVPWu@h`)b-ziY>{ROD} z%{l&GK<{Mlx*!YUx5Aa*gB%z40nHo6ET7xrdq_oZ8VjGbjOZEiP|vPiZ?mfQ?c<{T zL#>zj2b=t&?~=JBJUleGh3`_OGwg$0etT*VAb}%9jfQ<|s4u(bRud-|VQ6R_vs(%GLqNRX=Zaea2<<-Fo2ipA{1B zppbBy3!`wVuhL%trGF9BGrJt;Nqt2<>lfD=9AS$3DgRbbywl;E?i>CC&BxVqC-2ms zk&E{SwZ3Hve|0g)?q&Ofdjeai8C_w#KX^I4lnW!2lip(ey!(+M${Hp9-Aux-rJpxX pJ|6XfK;=bF$mzTz$B)Y1X?87LRzmD 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ΧkJ;x;A^ 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%0AjQGS?@^MBBp{Bgy-LvMLohS?Bt@!{pUV z7$OvHYxvIm-DjuU@$B-A=i^y--AePBM|1A}y_kPKlk(}$W>0_G^^9rUvocWko4aA= zyXzV8JCSb-&3eXE)}@p159j4d(|H~nb=Nh<^6tL_B${G>U$eKDz+o?847_MZ-}w;9 zyBIQ2>vqFVY~@7JhdT~U2}HuO}Jl0I2d#Gl1_=qz+B`^Sc{M{(G~Gw@4I?91;k`l%MZ zT?LH=9AiJc8E~45A0j{eKKb$TOR@%Q>}%FLs~vp(QEwkhI$6Nag&weOJHQa0u_% zAowFYOQU*a^Sb_1or!NCZn%jnm!oxfrB}L>`4%CRJuZ7R#Jl3fL-o8L>~Y^eK)llF z9MYpGYyG_qL>Wujb=p^Dd>paze5P+LutDSbhwllp^rwEQNoqV77g53VQF%TSguc{| z((6&Xqm?LP%fh_XC+t0f{hdgM`jtAwExc`8_n2yvQcf6Y+ORyYG{vSV~p`r+tgN#on&M` zUZ8zZpS+0;GPYJmKCZ^`H;Oh5ChPx{yj-G{vJ zW7BZ~PC)BHbF0SHz`vTGSM$B5L4JyhiVZx=&&M3Cj(xV+!A|=v+&?28qs+P&*h7+g z%avu*p;_Grci@hvIaVNk?kN2OKA0+KL}xnHuji28{mA8dWS``+J*VNIuNU#{YWDXC zU;DX2b=cqRJ2`%u@jtOo2p&qY|Aaj#;r2Gx@Y+gFbWcfb4-8`uG50wHj>|l#dysaI z-)&^4^of<*VfrJ?{wUS$HTj0nS(8lrd^o!qs~j|)pw7^2Jv1SnoRWiQv+yx(s!ep1 zVyTW&J$yVV(@~0db(A9Q9p;{&deYQDA4(&cV?*)C-@(WCMmtNAH5!l4VcU*l4788z z1B9O^+~#zaw$Y!`8ISOu;(hBN{kxL*TTHyK?xa~nT-bS_^f@n&`^ZCc-W$C5onHKQ z;-URM`}tl5*8O9DZj>E`=#J5zjFHZ$0K(V;VQUL$zheXP5Z&?N)s{n@F$=UdQhURE?

L&=C^gyqnewJMYryyziOS^jE%=0r|x&W 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libbrcmjpeg.a b/units/armv6-ultibo/lib/vc4/libbrcmjpeg.a new file mode 100644 index 0000000000000000000000000000000000000000..aaac24f30dd78e6f891f11741a6276519df477ec GIT binary patch literal 14832 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 Jqk5cq{|D27t>gdz literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libcontainers.a b/units/armv6-ultibo/lib/vc4/libcontainers.a new file mode 100644 index 0000000000000000000000000000000000000000..ad5603d0b7fd72e4890e0e0b5f4e0c17b8d87e27 GIT binary patch literal 515118 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�(k2SR|V~*3& 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

2)RCZ^)_;iVUnffx_5 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 z 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

P)`GUeI56{NYA$16c*i&ATpMYOALdAZ{7Klu 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 U_W5=4w&mAXHdy0p9-+Sf0J@pUa{vGU literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libilclient.a b/units/armv6-ultibo/lib/vc4/libilclient.a new file mode 100644 index 0000000000000000000000000000000000000000..e5075fcd47d11fa15160e7a4314be70ae578073d GIT binary patch literal 24036 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libkhrn_client.a b/units/armv6-ultibo/lib/vc4/libkhrn_client.a new file mode 100644 index 0000000000000000000000000000000000000000..4b4e43dc7ca515dce2c0f41a5f4d45b1a8339023 GIT binary patch literal 12994 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libmmal.a b/units/armv6-ultibo/lib/vc4/libmmal.a new file mode 100644 index 0000000000000000000000000000000000000000..090a8d122c60f53efb28c85d1ce7965034c460f0 GIT binary patch literal 9106 zcmd5?Z){uFb-z!fY(~=@+Ll+@W3ty&ZsksT>S9cUeK1)m} zk|Qa{-U3Xn4L2~XS&3zA4V;L;@?k*pp#=hL80PhUJ1%f)Aow;WOHQ=nJteOl`a^!BK# zCPmI)RSov^SrsN*gb4ltbwKp|);R4iW^jHEUp2=RecxSy#CKZk6^jN{FWVXf9gbp7vmrdnV zW;&Xfo6SZqWOB1HtL0iDE17z8g=C7ZMYoHB@wgocJBm^(H$4^27C!q*Lq? zzafM-T-hZ=OTV^k^owP~rQIqCajVp(U9EVK+tj^=A|mA{w~i)`ufo4F0S6*&vL-u}Z6T_RlmEwqy;q25Zdtfa%uu_46yvZ8&b z0=~u7^yZpNEtc)Jyz}?hgRn#2nx48^@_1i+sEA_O))3Q_vS*4DpKN70H^7i|CM z*4Dq2{3wDG*W51n#aiq5t#`y1S45%b!&g z^-6_fP9S+{-;M*KL&-mRARURMu7&jmO2`t$XIL8}0Ldj(pu{18oEKfo=}`efh(I ze<=HaAAx^dyuD6+QkQrW`R4lOmHX?Pn7fR_+u>!yw|c759KKchvh4E`#wT3G*tKwu zH=$hxez?S)HKDDdZ{t-2=Elq3W#eVY-74fOch+3mowc3l%MSEOtSlJplW%pQvWYqF z^)47~>VnbQzhK-`-!Fe1^)Mz?56V31l3a&w@WGWOLsOTHpM4E`#mZfyNyRv>n6?-j z#`PiSTZoY}aewHL1>x%Zu+4SN{Y9vY=*x3eAtHN;@4+_LEXJ$cGm18gv0yL;_q?m+A=nv$9S^X_yJ+?ud=TSGTeQi(Gd|8(eh53OR;RhPv&cc@E?E|? zc0Gl$LVek9j1&9G{<+})3+M~S4ZCxTXAktiD_+EQ&+Ol+G` z#IQ}hBlQ%uN!nOKeXsY9InJ=b{<5yK-bY(ouluZeY&U^A?Z2|lPh{T$=qLN}&)B={ z_Wu!fTE!is6Mg7}jW%sj_MuJV*euF^aEw|p4(v-S=AFkH6AySd%i)_Fya4YU8@r7k zvW=BH#(NlF+VFYrO1)OtZ7-Sg*;86DI>1X?;8l#ZJ;&{sFM7?G{{>=h+kV}$eaW)j z>agu`*cJ}kZinp~(v}&YzeZfH19vuI@*sbP4VsAu!7B1Sud!+X>vcox(eT3>)^W5ej?|R4|AzaEXn=AF58E>pkm$MgpGD}!SGpo0QZPa z@LWG$@S1nYNWr#@-^!8^l4}F;125;<%7W1ap0TuJ*nxGYVcxn0#!Ou_G_)aLs|$9x zc4@<&qilzB?E}Q(f$WzM^Pm&R+)q?w#T&vJdakPAJllga40oFi?0*|Okhf5;1M{d; zVC{EF8WZeq8#Vv2IpEkc&;I@n6L26<~c2JCQ;Xm*tyY$N5-vqoAcb< zmsak$VH5jTwHfCS`#|66Gxr(~`pSEXTfAWi*c1Y1nf5@QKentBec)b@h3!-r^S6JY z!gHlr#d<~D>^+M^ksjk zSVdrEZ0xdukw{NuWT1z44NOO2XWqqZo)q#rJa)D_;FOOw=!akw{?zONh8l3ti9>M2 zi2>{Mf$Q{PubWHE_JMuCeWHe;Und8ylPA$%XZ>U_P>0R?*0w$1y8g%TFyQnTFxG(U z{Ebab=bUoDI(^_eeb}q>AGpqc=-0`C>*VLooIC66-?_8r&Nwl|=bRYgIy?~StBtRU zxQ+}&M(kKi92uy?k&%%Br+f+q>hMTC9vBML<{RxzMe60*fl#Og<+vXR%CplAc%%VG z8t_1%o6j`c^&9X=1CG?=$VlL*9UrzoGSGk{^|(vi1?LWE z5H!ejz_|hv0*QeJL4%NYL*5PA1KNY~Zj^U}_JH=-jmc;J?MGtkL0L3DK--VXzx-Jl z#-yG4$7R_B_8_^&2pFFrez@+AfpUHifnq-uqoCNw#RTY1(DR@ii%C#CuZS5?j&A`J zcPB9qYNz3`)2D_{;R#{v8)K)xIVQ%>3=R&DkBeklh|F9;#8WSdcp(RTF_ubN&*5gD z`N~1QXgHXERy~;SJeYj;VDgYkp?WaerJAo6^6J64E;XP0V_iL%6yjItX7Nq|l}vff zf>o+o5!4gvOEbxoZZ@H(V^b--84w~imq=znFD4T@X?|`hn~WFca=H+6=@-+Pm(sFb zzCEF*UFwC*TrM65AM^+FQl?HN3pu>!Kv@!UzD-GxXPoG>s$YU!O~eW@Qw7e-@_cMI zo6@(d#%E&bw4P!}U}!39Gk7cWqKXhsr=?k0SH1``6=(G1^i09z5y>w5?~vVo7Oz24 zYAm1C;{_GXB{Nh$QuCH&(t8wHbvPzj7?5q5?|brUdTy2#J2P2~5G+JA(=R6T$xK@9 z?s@v@K<~Fj$d9&TdTc5wln$`XN5zgE9_2BmrD>15P1&b>!PTzpR}LsX<;kX}xVbhY zXOUZcvgH)JYOB^Pb;(t`t>MDz#dDb>De@gaxK^Twy)~YUN4_WEnl_V1;9ZTZV`JKz zGy#51dmlP5a_$$=@~bYSUkZQn5MbDuGjBAx=ncNu2#h_8TQV9n%_ z&v&W~(H}h92;9l6YwLkDw85GWyPX}sQ(S{SqEl&1&2QCzs=28CPh34`oKc0|4r~E2mUtr z_Z>J6etUd8f@|1ai@!&3U+Zw-Ip9kU{3pO~Iq((W_mIux5#I%K%ps@$A3OY||9?}P zV2W6v+@XIP_(KO~{Z)rP>n}crADI;KJy3bclh};+l0#1Y2_8x^)eKAI!l_32c4`*O z7MR2sE0BL5nEVVV@qN&Df$=U?;(r1y0e`{5KLvdRj61)SuYr0o{#<9Q?@TV7ruFUb z5I?sR%=UQNZYLMUw_d*%7^&ovr?6AMMYLF5o<#8;c%V8$KwExb%3iVLqrmIn-?s1z zz+A5>3*P|GOG4Jde+kU>!#PI#Kcd`9wExov{7D1eiMm`*Tq4px;I9KuTKH?ge+6vY zmls~hm}q|vayt=UZNT4az~67cKW@PP3e5HT2)5|YCk=8Je6bVT+Xu|`$rw=otH7M^ z{|*`P?*nuGCM+BV4q|>zS~w1DC)!H^bN;>yp7pOc$ekZ3L`O_?B!qu-P~%U4Ki&N4 z;m=Y2^ztXjpQriL$De2T6Oh^gv!bjNkh%e>9FUa*vQ9u&!b^PA>Naah`vGaETk_q~ zLU&Ne+e0*)EW~Go`Eg1Aqq!umbb7jw7t!d2xpX`l^*__w^NbS(gHF`j=S0Ci(fAcC zIvdNHfoPPVqC9P*bIC;VqN(%$>ucG?cqWhAY+BDHN_FCN5r^%d~8wqt`Oy~U_WH} zqD4Qo=p&2r?&HFXG(KawaEK&G+stPz7Y>;eF%F|5sBaYSB1unS4<{YNjR5-xX*((8 zK~l*3L0$XJz4r;~VbAkL&=1ma^G>sW0_^}FID>Xb&tjh=#U-NvO203W;)3-El=XPT z`EcR(fhY;fx8AM+q*}6P>2;$wEKYc%h+d0zk)jqX(#q-Qpn#YJ%qam=~pp+ zq`!-^p0o?`#2EX&g|mVbe*D0qyxY)^d!TH01yr_2dIarR_&rh$aljn$;blMXG_D@_ zO&o(BDaHw56-^=YTP|svg?XnXMi(W8OOggHdd#9j7RAs@Ib4(UyhVjSe|feLn*uH5 zOgdw8c-rw7@H{H~d>j@2seE4ea~Ts*NX}0tm+|AdGnTT&G#2pVD2ZogXR-AQKc1KT zu>$^wVQQ|R=h688GGS`q6g1yEunPNkzILB8ROKi+aHp}s#ZQI^EyD;}{B~V+h54^J< z6HlTaC}Te`^=tj$b1&_6BQyCP$6jJP0Ze<8|Di?cC(~QI@xH}mQB;dx?ydY&}wkJ7Ng-RCIv%`C(-G=S5~;?U;ZS2|U~_I0|fg F{|(sIus;9* literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libmmal_components.a b/units/armv6-ultibo/lib/vc4/libmmal_components.a new file mode 100644 index 0000000000000000000000000000000000000000..585430c4490d45a47e949dbc9c05d199b1fcd993 GIT binary patch literal 72162 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 c#63fksRuC0MM_&akeDPmzP52f6Iw|~0+b4L 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 I-gtWd353Y0mH+?% literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libmmal_omx.a b/units/armv6-ultibo/lib/vc4/libmmal_omx.a new file mode 100644 index 0000000000000000000000000000000000000000..156ca44706b7f1269781827460830132675bd73a GIT binary patch literal 60056 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libmmal_util.a b/units/armv6-ultibo/lib/vc4/libmmal_util.a new file mode 100644 index 0000000000000000000000000000000000000000..4f094e27aa206411a5e1c8e3ffc6b3c9b09e2469 GIT binary patch literal 76718 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

hcu+d*CZ^U+Zw)KbFN! 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libmmal_vc_client.a b/units/armv6-ultibo/lib/vc4/libmmal_vc_client.a new file mode 100644 index 0000000000000000000000000000000000000000..e04e61fa43770c408adfba770353f2d18675fe9e GIT binary patch literal 46216 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libopenmaxil.a b/units/armv6-ultibo/lib/vc4/libopenmaxil.a new file mode 100644 index 0000000000000000000000000000000000000000..b266caa1cbb05222ca46553337f6aefd7cd7cccb GIT binary patch literal 4668 zcmcgvU2I!t8GcV}XK7}N*R;S&TFyo%rO-IXsnd3&8?LhcOlnuJX;CE#w&R>6rnZk| zJE4;*NFg1n)Tl+YgGt?Tt`HZ!05PH66a@r=3nYpJQt$9jkJOeSWjAObgn6Ft{M0ex z=Za7M{C@BEzTf-*{hVhG=BoMmmj=i5jV&=@OzbxfBqk(Ps{%)K1Qxvb<#w!ZD@-vd{mrIlVCVN_p0*mU8uiRTe1}^H$Z2=i}D& zR~V1(7$gij9Q^M~CUrfzH|Yf-JNWg($B$^5hETXolM#80iERC-nvWzE7?CJKHY2M} zxH0NT%x*{To@j|&Yy6|r`IAVxjkVjOcUM~B^|$Z)bARh}29x@#lQhs{=vd#UUu%fI z;)INAjZ?ba)?&atIcj}Ft$%bHdUv7g=)+!bKt=;H)>ESoxo%I74KR88FVd?{Bz>(B z5xYq{!l|2%$mzD0THYdAdnlZ`ylqHi(1sjeZ$EhV!1nc}I}fhH)~nD%`@~prmch4- zIqHkXF10v+4tD!%siWEHJc?FUTCwa(>xr1%9FUb3=P6g&VA#!m-EO+Hw;j%@m>Kra zfLwM)va6AB)_y8%T;6sMvWlHf=PrC+L%)T-jD7*V=)p}fS*jogr&GvB>RKag+<-4r zZTLSJ_I0LjI9mEJa&)F0PA@xQ&_=p^7O~qE_&XpslsyCB`3rOpfQR#G=wke1(3OJ! z^n1Ygj?#k-G)Vn@S-YvF?WUycX2{dq4__m?-3%iRmDHUF@bys`GIw^yng<~-0(l~@ zA%5v019E6L;enqauSZ88M%SPxeG7WdwBwl9ARBpWYN)xhusKw*n|(`eT;+PY^%7+~ zv+A5R>~>hc;)rp@333lRHo*=R?^L?A8TD~54c^9;7U#oj-@Y$$t{q9)+GcsJiF)16 zTGULG#f-6D|JI!cUi}Y}F2<5`!SmP0=Yf-N0QRs3 zjzM-H6LvibyNkHDeMsJocM0^?8|JuHl|_ z^P5I~PldEKJ0xrN&|b)0KQ#IP)-&)PvKL;;r1oELLx`la!{o7;Q$CnUm18cBrkWDH`{fKR(d2hX&vmbJM$j{@vc;In3C?N7Z;4oh;`~BEda{@pCniv3aXxj?Lw& z)z`-sYG$>FYYB6;dL~z?6bpHEebmNgtGK?tYE{pV<*ic5Dv$a131!ymx%xs)fAK~A z3zH|OGE-+JCl60ei5#7rd_f;M`sx||v}F}*I<6!A(5Vyp;nK7@Gh@!^>8h1CYc;D{ z+pSN;lko(u-o!p*pYgmtQZfGbJQu;M!)WnrWi&-BpE9{d}?S#L!^%Ddh}|85WdqaOSxz*&!VPv0+rv;O|>;ePSy=Q+-D)srQnVZR!7V74OjQV<5%v-gLH($$?a+Qo( zt(Gm>IA65p<_hJxOs)pWb(ff%wlEA%dbPmf`M*(1(aN9inOZ2T$;Es|T>*1uJ+qjf zFJySan-H#C$Xn&v!W@HBb1m)q(ktm@VYeC`emr|yTyC!4)>$g%q zSA=<8D-g1}NkQ&HnZ<{c^85erMa5t!yXngezqb&K#~)mH7s@aWEc|46H(nfspAne{ z-0@j=4~0;x72u%(w}wMF$oO^-;bOQ*hy(k3fWxCAKP1Er_j|%I)F*10^0pE}-X20j zBuSV+O%sm0dn<%JQUOkVbq`)3gx-sU(6>YgeanQf;|GA$_iIAvyGMwJ#rvc~&bkM6 z?3v+x&=O+LO$;quDk8Qb&np#9O+R) ztkVI>$9sh^3rPJHz#WI&`-Jlnuf1NX=cWPcRTs|tBRnnQ*k*N!&*bVkiBH#R60ce= z;zF)U#FG+dmE!AN;&_F`bM<<)FpVvWhtvPqJ_SC63b&2h5JFjot$w4aY@bBuJ(fae zOXBgsoFFA?J^7F>dCtQT9@XB1EYADQmxq#2^FH4i_+ma2pwEYrQSy-<)yRkUf6#os z1DK&7C@IzMfiL5Y3CKtKQ4dls+kQB1xkL3&9`-akY^$hA{CyvMNORE0!}b)q?*s97 pHzVg9c+KY{^nD=d9^|oBp2T2B4~ig14$4<@jU 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 KHh66=-Twm-hbQ^~ literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_avi.a b/units/armv6-ultibo/lib/vc4/libreader_avi.a new file mode 100644 index 0000000000000000000000000000000000000000..9be4fd0b01dde9a68fbe3700a1545a92212641f6 GIT binary patch literal 60842 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_binary.a b/units/armv6-ultibo/lib/vc4/libreader_binary.a new file mode 100644 index 0000000000000000000000000000000000000000..dce2a11951a471150cd5cf9d2420c345a4b9f8d5 GIT binary patch literal 19786 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 O7OWMb(GY?%gZxjZAlT&q literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_flv.a b/units/armv6-ultibo/lib/vc4/libreader_flv.a new file mode 100644 index 0000000000000000000000000000000000000000..5ac8cce90a89e31b34f85aa4cd9d6aacb8715809 GIT binary patch literal 65538 zcmbrn3t&{$wKu-cIg^vytn`V zH@au9z4qQ~uh(Atan6w0OKMs-HeMZ_;fnlZF7PZ^G7a8^t~_}+$~%%-=h<(j_xQZS*|E#QvWC-MY3#`pZ!EaQQ0y}5lLdYge-&U!I)F4 zhE-Q!#NymP{Q2nUyQ=Vx2oZ?0h&Q96Ja0w`OP3OJYX7k1+@UkV(;f7XVgyb*urb7#fC%cx&JGE;~d`WO`>NdrB>#KE3m%)sVB6=R6O-e9a)KNLFcEgX7#IQ{LrN}k@aROl7*}8@)`_y{4RVY`PakNn84;eY!9>rVpa5?|+&NWvdV|RW zuLQ-w@nDPy43Q7!Ge<_} zAutwQnb{xI0LKC@G2kfj?;;=NBZZK03gmV|w^DY=U&Y9kLj2Nl5&S<#NBDRjqodJpfoF~fK1Tk`{!a9FEgg=j-ajl{ zq|t+NV8jYJEuQ^SPo#62bX=rUKJpr1Asz^_jfS>Dbjx-Y&mqv&eZ}E?Gb#rD66<<1 zN{J6BB5{|ZI(I1?n`I4S=2?Ju!e5-b28FXL$nl>gfAkU1r7WhcWIyy_n;)@_7}HZ@ z*23&f{_L8q{)Mh{dGJHnf;`!22S0369T>7nTHTVa))^Rbc@KqTn+hBBP436|ff2hW zFrt8VEaX)GdS7?B5bt~msR*eADG}*1q*SB~q%0)Np?6jyEkL>gsQ@Y8fNjv(rIVp2 zr!uUGvXO6k0zkatVfT?4)`4!-j0q_VN#0=awXdi^$Cm(!U8Bm93LKn^$T^|S0j*{j-C4_(DrY%Tq zo9mjl*EHAMvIU8DZ}V?+ZSptN)U@4F550?XrDHx24 z*Op*j1@1B8=Q_mVJEw^1yLEp#Of6nJf;kF*xoc_;=Bj{ii9lC`|HRXO?ql5T4xU?) z{^vxl1<;#t9Sr6K&}Sepa;oO1Ls~a*f&IZ4&;DV%3-dHLFy!$f&JOGk#v>h)G2A=i zfUiscbiqG8zm;R!fjg!AbVw1`LJw<{Xc5pf%t5=0JYfw%SwWjb@^aU6XYJ0V!wTk3 zjPnrYgZPFMyi*^VXZO$&*$2Au>_!~98*9(r;5qsk+JA(2X9v9npzQ>Y@lLE+LbtgJ zIY`grg>IdBh%;4;H^H~jC!6uugIJ0=B|NWS4XD5x5{QcePnTm}Tf`56>jtl6_p zo5(pIlxnO`&hB6d>`7atp`SIg=j{|1^4a7S_5sXXboK@lod<%aT_<3lvJuL6YW9ht zB;XX+{ev%D^C;pq*Q_2HLxtBne6?Zc9Oya9uhUx+*gu?oc>i#I_x|A|(9T7j3;C(p z$3P3V?%p3f?|Ny-1sg_tI4}1HX`hL%z|akl)9?M@E!qX~c1AARD`K*Qvmw7G)(mAs zzjMLcl7U0u{ZLT#^uEoxK^bxe=}TC90q1)GJ9{ziz);e_uHd=ZFAbf>xQYHfM^z`}XUQM}_`>103rgGyF<)!mq#+ z{Yp6;7@|K-oZbC4{Y$`KIFBa6zbx<->01MVA?at`y}@h`<|NwXAWuY|i+l-uBnfan zV3*h*JY9Vfd}FT%x=zvz1V)lD2X!B~9zJj&_!a2X)HQwSboEa$-kPB(*Xx5Du}hcZ zx(?_*0ozfZ`P94N6X$bZ7+R8hNZLIy0G~igJFNRc%D}E*QtmG3^zPv4++Pg2JYNrL zxs`**d_Nnsipn9I=e0p=Zr}$tZ{P_k^O3uR$ipM!Dx342;k($zKY1 zr(9y7N6L5}Ha}N$awzTaKFr5`!6c+aq!grNq+dd3rVp#o)h^H-HvDl9;~Um4`sK=Q ztoymx>pAxaCy+kY%p4ci_`pHPrtfV%1JEPlWE9R1r^NB0C0@ish36LF5xZkth||X0 zjj9ePvAF>SYf!Y}yDxC zHsX2C;r+wO{{0VN4t}H7n1|$r=bHP4n3q!B7qnsS-3LA=iRaH+{m^^$tHDX)sk1C6 zSHt(w#wsnpcnegoA3q8U|?v% z0OOl?~+@dd0PU%Nd&M{wdAwDD_B_bswoq7ywrnf72J^&wku-J2W`at1oxtDL& zu!pOA=qj{X>3IqJ82E40OCftt68{xu>;HmZ(l_;76JM8pxEK0id`f1#^5Q(03!kfo zpP_7lJ+WTvXBp^@^JBcMi{O{0Oq@F{Y>${oUd(+{J8<+BbN<{kIy#TMqu&tb<&fsN ze+c`-X!1@Uqn)JBqD;9?qW}1Dr(@i87s1~S-B*wY>?h3qparo=g}##!GgC0%(%?&w z6?!ZinvZqUDPEPa>C2cyOGIDLgZmBccb(2X!*ej#dAB35=2#eOuvfu;CR+2@h7mtT zt^=F{dfdBa5A+4OcU48w$obhX4xPL7#UaeK5v-MQ*#mcCA8_YX#zfM{c0CxSx^`>X zt~;a1k1D2(sGg039&so9{7(4$oxx?`M*)60#^BsaHs%%e6D8!G#E}1Ay076rMH{Qf zz83q7c*L zJlKzej>R=6XhC_Np_d=OJI=+N#Q?>J!kj`iO3 z_vOCyuzr^Aga3G;NArBj^DOl84KMDUmcyo;?+WbHcWVEz_1@>+;~u#TbtR}f4?fBP zuL1mbz!iXTH#qVk?goYDp`gVX7-{bwqfH#oeiNv3q2J>XmS=MKQ#;PW*gsBHT$(y3 z6X$P_rfSu+&qJ7J`=c!AYxd(=pZ8krkbi#ZPu{YN%8{Jh{lQldLllhL2%hD-+vy#C zle%|31e*Alq8{6ZA0wG5b^=&INfd4Q)Z)6qM0ko`Z2u1sU{sue#O@zIe?D z)+VfF&R2$UKYCP!9w{&PrHZFwnCl804l(pVP;(6qeKP}oi8TwcZ$=6B(~P~UfybIS zgmcgg4|quqke7;)Z3@o*;<^zf5YQ+?+b5&%Mk5dR1I7;1o|;!5pSJ8Hub_1ba_F+^ z=Qm4k`Cydy*dXjE_u7nsAL!Rwi zkeBmHRO6md>3X|a#a%JtWINFrRa}Q)r#2BWWv|qT4+0_q)&geGf&bJqkPuv60=Lh`#LEZ_f zLf`Y*M8#yqAJDJ{!>wLG4A>R)V=v4*LGB4{xq-z{R+Do}-LC;1}{qxp>EO z3i4HqBty4ff&D#$upwmQoqfsR-XLTg_6**O9CK*!4k^1bun%|oyQJLVwxzt4kku9l zjL>iX@;TNo`8kK{1|d54xbw_=U)=rH@E&;W=;-JPC}9BUX{6E7Ny7Qr=;%kEj*gy2 zYR7#n&*2U5Rq`AjN3eewsbM@on=Ob#TJG{;wYGO?Jz^rydWhGLVqN~xbj&;4_jFOt zDua&Ig}niM&5SLWn?tKn*9{*$=$wW96!w8G_>S|wL7qjDT+5_gEY#3|@IpoMp6!zsS9($qVBg?beLD zrzprY|C*mz+dQLh@ywl_IV-4n?i=J8V2J_e0?s#JoWrs2*5|V#D&wZ}nE~{s=H|{Ua5-!AdmpXWQ!%NtQ-9NlCYgX`nn;678GN>$kbQm&? z?1CL0L_oa%%Uy$y%m@rEotZbR4U`Q}fKD_|=io;|6wMKN!*NMCdwQCOr#N>FO~HM3 zR@^QbU#CsXdv6Kkq#s1zdl}qX->YcgZ^Er9f0;J1>^ZW#j0*m2kVD=tL(g2xFmK?0dY&r|NWV8@cDD1O$17b29@jE^ zzJ+-CxYO13xEb4cKbElL^!sQN^kTiq-SPLopxxWfPyYHB##Xe&SyM#+=MJo^h`F_h z?RV{H_{-ZnKK+Yz$4@0L$+bgT< z+?-tKoczOg&3(HFc!%deMi2J`7?ZRS7jPH#(9}fi0g|vEa3N1d?i72csI$AAQ5YMv z&&abi?_`+7uHZin|L47*%XL4-o-$&0Jrt#24{Uec8}%vHpHJ~j=u3(hxo<`#<{p|VZI6D8H=LK|d}Mo;i4XOu#xn>!FJYhLOL3>TAu!bH`rxfext3vT zZtY+UpEGhUVvmM+6{ThIe6wM&+2D<|nz7g67>xU*!}iVoH>08%A3cbV9>&LOq3bTh z#|p-@IIJ^Mj~P1DAVXC3a!G^zV{kq>foD~W&D0h3LA^-1a=pXJx%;OcLEjiZ&M}aQ z?UJ2e3&}~IF~*Qf+!b6(KAp|OuECn&ECo2s_qf>3p$a_PtBC0=vtu4K^ZBSJAI~bv zM|das>gS_Za;-V}*(lB{6(hg=OpjTb5j*Fc=e)q12+AIG32+v$K>MKJjP*tGR_JnUokizxNwef4RWsBFf#Dj=r@uvZvtW#_U<=~ z@R_~hdKv8zj|Kz1`v&mbeIRD|o5%KHj}z#MQ91`F;m#X%ao>Ca_hx?Hao;d9NyH2b zZ(!)D&qkv)fxAS|vEWW|cS>NW6SmuTymRRDZR+qNbM_5A0=?V(yN4#ZlwlQp`r-dJ z%!A;k)LF$yi=k`!skv5BKfjj#roXSi=fi3><~90b?UidQpA*v;*_Jw_zuM&UwKa@u z(R1M2w6E$4Xe!Elj*i%%VNHn>IGaww^Gxa=&w@rYJU^Z$pBIUDaE^Zm_lEC8BgG)$ z9e{V%doZVQ=EL6mok|17^D^x1bUfSU8!*OxXNdu09mBnW-bMio9>M1x(4rq>4`w_E z<~sy!{??n?HnwK+**Nz|fU~$y;?uy%c!+)J8X?3jirBjrls>_p>KXl6tGHc=0XQ-1 zJF(ju#AOZJ=gt!1$2f?Fe_A%Ls%x*wuW7FlqIOGbO?y+zX4Y?Qs;z6O1sbS2ly7OO zZEr;0Sl86h*e*nUYt5!QqpoI4ZPQrW=jRInDe+4Q#{WVz;UVk}X`lTmmB?Jao^NsR4SJPOxO!q>VqU@R6G)^hz^z4Cdm z8)dOte$Jv|zj1;PHo|{IvOkTl>B4F`gM5PJF7OzYat?6x5%dBX8wQ?u1N`GBKmvnf zlZe_7BzPsf!J1e>un$99lbZ>qfG=y>PJ*YgyjeZn1TF9uYtA=i14wOM@?C&23T3ys zKf@RfFNPM5{{zt!#}fFW>ez)_4b3qJ{%3Kl1F0y-3Sg{`vk=zi;JZ9_$Gzw}!Qp_4 zq8$^#+C<0a5HH3NL@$TqZ74I=u^lZZId*`i)8PVUvg4a*ImO|@SaFUVs4Cv!28F2( z#14_**a69>IUdDWiH^NscDk_afU#|bm8iB9LOxr`e1dNf>z&E(DJZ)ENPViNWECrb za(qq?acsp1im;pjGqyEsYWWd(w5=zl7|VPrqV;K@V~+xCZ)$Ij{T7_m0b~g0byuEds*$v~(MD=28f(nF$8Oam(VCa{-c`_4(g z&d&kco}vPT^AecH_Fbt~=M;|qJ;HY92juPhQc2DURQ+MXPUn|E!1e>e@y;8_&JPJE zIxi>uBf?3}KDIeR*yW5S|NluiSy;$~?Z+!nZSa58g=yr74Aa1cDS*uO^ViW~vfUOeK?CQX(AM@ALFky( zZxgm)3R^xwyJ!b^U1|I6Nw%$`nO-G-!ubroZLblwI6Fz>b;5S%U*Wd4(}ZK3e?UXq z9|$|09n{euNhaQT58Di00(`b}C!F0jM0la|6vsdN2HNBZ8>J;Ey>*tbr2>A>EW=63 znC+bkV4|y_lNj4y80B=|I7i5hJ_ABt&5-TdX40lOWyOsnEaU6W)L}Y?Eb8VuDm+oGc_I{DvNq zpwPu#2_KQ=X^M(08PSnqSS_67@#M`mU1=ttwP>4bo2@*LW(nUX7VCCVjDi#|YwEZ7s4qN8n%au=G#BwS5mYjxfexHj6>Df>|qFQOlWDibGU zk(|>4wNF@ZCosZEtxm|HQY}uZd%~5{X`Iin%~iz5IM2W-CR`&e=X?gbp0IQuTE;^J za%#2M(aLJ+l`tb&JO!~`ubcvY>Oml4Y&R%>K()?owR8`Wkk7eLBe}ICFml;8$bwzO zvy-h>c^rM>>uBAZln*8O^Y~8W;xrjNO{ZF?(>T-VA|jqHZfljAnVJlnth8-YUPVJ) znLCuHpi_7+hq_H61xrF3o&R>F95{P|La*ph-ohX;35)2xozhy)gvF%1TX%$nG6vx; z-4S%>*&_=n2_JA`+$p8-B>WZw*zQq&h(WV;)9jNqIl5`~OVccwR@(|sx=(o?&2mNb zjhIc{6IPPbNlh(cLh*mXX$+ICnudsMaV~{VO{nF9YXkic;u4mFPF;8BW*zn&sbQxBmc{x(b`+a)TMIzzpM-Pfy|F^GdpgmAn9w^JO~ z;#+mhfw?rt&FE!uJPV~pITnMe)xjGpo8v*qW_N6Y7A81OQ(um?AT!bN18^4O_z>E3 zIG)6JtV2WXB*#YJosJjaGLs$O0AEua-^O%|b2vaJ-k}1X>UbEtx`Z!X3Xc>{5nsuf z@{0N!GB8AKFC^DVJK$+n%N-aj>CfQMYUw7p336F24*`_3mCiI>da~6*^I9!WuqqFf zsa{#7&t{@f{eoFdjqBCi8&5Z?2U$(y(Fl4q&4-SoW(`fE*HE9+xoJlAbYP?Zn{6h} z+fNld18yd!6V&}|V#Wc$78xTaWP;IrWVTT6zQ=__` zamvZ?r`~Y8?C=~r%Nb_Z32k6!r}JmfzFN!BvC=sO1k^ghCC=^eNVS2yd7b(6{zk%; z&RBe_O(nprb$$THQ*R`Gz4LSELcNJ_HCVYHl%&oVf{*F)ORAW`1l7l-19EpO8!>oJ zrvsSUUuxFye4=-k5NGoAV>%6bo7J-3Y{@{Yw+y$?on|#-uN(q>9tSMXCcgwAcY8Kr zc@f%hq`U@962ZwiY5|XqGD@i{=;*@vcj~Z^1KXW_@L;uwu+u4ZTTHzrI{BukT0%I< z`FqS^broTkbO&`c;bdnr7H74Tx=L|!MwbO?%`IIDd1pcCh=~SR+uS=bF1WIrW7Ybr3^DA zs~I|8ie})YI367@+4jgtIr9%>L&wj$839|(QaKj5Yz0RyAHBz>QEf_nhzFY{d60f= z*XYPIxg}KX8keY@f0_=o7y2XxfE-&;wChQM>563 zn&j5HcA;eEffKND3dCJUISD4Hl9j)PSeX!}j%Z!HLRv0bm2EyC|IzBlWaWD#5TmAm zJZMsLUg6`7Wlj*`Ox-Ej<|)GfrQLL_be9fl zO1S2;aj|ZMe_&AECyT?3P#k82;xHqWNF&T#Nv2D5{LeuWFo&M`Jg1=!&-xeHSS|6h zBzFcZc{1QXpp)5#J1ezRGBr#3q*tX+&XSCmNk5;(jiy>I=g5~Ir9RtK;i8ACy}C4~ zUv0B*a)k<3ZbJal}^h%~?0Wan*J5_%=&A&~*y^^D@12v+R7?EKY6pR()?@ zx6Kcilx)$8cFQ90>6${TAJv)t3SgbtqdK$Fp^qwb;WIicUD|-9Pd}s3sdYCq z@Y1!Om4tOScwVxhGy4-AFO^}yQt1Z#RZb)WmIfG5IN@gT*si`HkL|N$DE_HDkIa(s z;+WjFUS7AkR;Yhb#B2yDl;u>S_EqpM1K#qnfVYxJJ>V7Qv8`Ow9tP4_5av-G{CJR* zgJ)4n-DIHBZULb7w5RVz&XL@(vzUQ+o1u8MzbW1frA+N<&QQvgED%^h!~I4&5s6hJ zDF@dh$Ysi)_Z#W@*}!H=w|!ZrMaAXm9qkcOJ&K#JMRu|6o}j8Ga4AQfCbrr=6mV(JR6%0qiG?@sMW(jJ*0a3!goM-@NnEcKX4?LW|GF_96J21qF$UnZrk z(7#S8hl))@6|JYb)X5a;*TB63+!ba;+G$|O*9h{nq_*S&YEpol@k7o zluV?_*CI;jridm_W73IvpP`aW)0>oopOU9U#0w`joT+mFxCyuclmJ+G1pu{2Eab__ z`U$`L)AR9tBP!EN0lWub(RBb8)#2+ZGI<)5K^6$(}BvJWU;7cM3)?Lm~(p2|g!Aa{R+mZo@Hq+8MxuaORp zszwso-A^K%E&E7>I73gBx*sJ19Z4jUMCjW|s5(F*U1vyyuKfs!5NEh`s6jMK4FKRXmei*J%tE8orvY3AVBv89wB#w7ThjRG z$hxN2a&50A?IVfvrU|(`RHnxuzaE{^5+!17dNT4}AksYmo*=LUz%;B6X)9%u^|_VE z^WFd41bzV^gTQkDmIBEC0f5D%wBT$M?bj#%kE$TLo zKq-E}5h%rP2~di&1SrM72vCYipf9Dki~yzJ^Hg05(lex3kPZ3Q!}8ht05Ed>7e)y& zW$AgW!%AnlRk8)<=waKLSu8zIc38!NM2sjm0rPkqNy8xB(jWHB#<;dPyedQn;sE#w z%mVOL0;vGL2Vh|-0P83G?oYoS-@gVjtpR|tF0Bn2{i8$XE7R_kc}d#WWbRFW6geMD zqng`PtXsZb4vBdO47 z1gOw?1gKCRE~P?ww3G^MBtW;=2VgO2hPwvO{!en8!|Eaz8qziT*@Ld}0s*?l2m$VV z6r2(lv%T&fPolT!9^0V%GHHQwOHUu|QDNyh0NooB4WR7+M>?YRb0kVM3*@9kSp?`J zD+y4d>j_Yzn+ed-A0R*%d6EDnItgGgX_^wz6>GukS&s9pI&n4{a-2W02VL<)0vtyI z97h5i$BNUQ97kd}j>K@BnW$P!n(3TWnJ8f+yAtw9muv?>mn_F*S@&SHNT@Z{^kNG+w3M%CZ;DQRc1M^DN5~%yk+s*#3m_a=DjZukm;{%CbDk zd_|6w0yQkZ8(-=TS`D)Au`CbKK6$Z&e;`9Fe-f;y)f%@b%TUge$4|Yi_3Z0dj<-6^ z`Ug4Bye}pTkX1T8;OCHrXYP`L*qY*s>P%!jnA2DI5hXX zDI9Bu)^3jV7U|H@CSf_0V=X4Yu_T6L)e^(8B!**249D7zs>P%!$NDBp2zlpVwTAgv zg)s=d1aS@f0T1JyJx638gvfqWKQF7x@JItSmY#DvIRmLUdL7j-vUw@W1@K*il0IeS zCM*;>momgD9+7<-{LnEI;aOwOIj%7slZ~sP3pOtJcN&*qZ6+J7|5Ia=jb=3FG`o+D zt>wLzie8Jg=k(5h*yoCD?jT6%*?)tQ`wcXXoM{&qMz|dG<3H*5J!|J;{>ww}pY;14 z>GXs8-HdeE;jp_I1D399z;coqu$&MhVfQg-eFo2xbgyEqWZorbtk&-A&yrWL zv*jGbuIWlfk@FaTCEa?icH+zMR1FHa7kyJdM&-`|EM{%mB%rzGeM#mk(=L;FN!omw zd(*Cwd1ZPraw~QaawC!i-)bc7zp4+BHdmV>RLa$+k-z{jcM{-g^B91|Y_G32edukj zHoEEbZOE;hCT=@w8HTwE_2gm>Xg$w%aF=3i2e3E5b^x1D&Z(2|TV7}U1zga%B{|Ni z3dOUOmkPYA$UXs*Y!wefd|@m18Kafif?M1W4dFV3d8E#g*FpTpo(yN2rQcUc2XZOA z*`Fz$#wG8WX39Ha1D2P>I=n*O66^5F4s=p4Ri=Vw?*Hqng0p0(PnKL>HtPsND(=5| zNk2r3CDJO|S2IoRbHTz);`W%(F%=em;PIyqb$qS@(nrDN^u>N#pj*sn;MVdT2E)ktQ8=SGTG%y_eVL)TF`R&%N$cL zccDD%Ca%+Zc~&zOV8HS@)1Tzr{xY|#>fIK35yV4ZC(GxwUtEs4!jokTPC$!^lqX9K zJ7WE$d<1PN4yOfI4&y$FXLeQvNapWa{5+81p?x;V5GfDsB$NIK&IdXun);KjJK0pj%m%_vw1M1vIndoqfD~!lL!;>By4iHOqTD^bLSn z-q(>OCxThVhCogdv)tFQN=^>5e6S;nu|l0HpWRRpeLG^7v0?ZfCN9seXQ_iii{Fit z$J@ZkuhhQ*x(jSBW_9`~N_%ENEfb*xsoiM+(&ymo7|`h%0H!1Qtmb+z7OlW{Nuq{} z!E{tsqBI|sB`blsJ{6c6V9J0=-vr?60Q4KaPLS$E8`ZBohGzLR>|!DeqaN&#*F>+O zgS!uH4Z~V`PH?q1F8Db84x=)k{h9R#HD#aXvysk#C#YBeq)tzt&>V6to_a5s`8+E@6)rsu$ z2JW3OTs%bK*q@K#7WlDDljQ~b04ztPZnbv!*$HamE6RG9TWVq>H9=%(I!eoJrCRr( z{e@F9hm_A@o}h_PeaaIg#p`?Cc3fdr$a{P_EqRguZIa{7$rw3wmRHYxa9u3eLakFi zHko>sl+22di6mn$lhRY@6Kv z^v_;tRNMe6WA@&P@%^Zw&bg9qM^kYnw?IyWNc{F6kF+h-85p<|xPM~c)OG+@^UkCZ z!0iOq19*af7rOM0a>wEOxp(_ibrU%SYXjge+%X5s7U`1Kn?&IW1oVF z6S=0PD3^0oy7v>PTuh{)yV0Gxdk>(kp*OAPyFd~07e1i&*KDTlk{RhmtgetH2}Da zOs@g36F}){h<^|?AMqd_-3+X}VtoTxKZzfY0$xh>E3{rrT*xDIsXju}i+O{j!+WG| z(s^-}NoSCBh#N;I8BM>CP6{dylg`h3Kt~UFERUm+{{=MMPE>FvLc4r$wfHppF4}2I z%e$!ar2f)}CYOIFm&A=5Vc*yY8m=!)*Uvs_3=joVaFF@9t^|s@F77>An$c~skD9M!rz^sCWZ5os)l6_hXg4FJ65{9!l+ zeMRTtP7>H_5a{dB?>|8x`y=%00fCbd{p`6oJi*TxJN^+-Blif>MfH1E(m0Klq~U~y z$DA27+^@n%_=Il^y9F*+>c{lN!X^qr+kzUoEwH;-+l|`W0Bj7^*2~(3tS#YB@@{91 ze9h!G3tuy-WleTINFKysUz2QAOZ_3Y`lse~flEB#5VN8=(EQXrYP)ji@UFenB$i=jjx; zzSy@hMSs`38XPlC_`dg2T&*xUa=fE9%wD9}b>8I=ktzC!m$$b}j%8ljgDLu0Sp~Kn zOx`r?Uzr?U??$)})1)LX4}VM(4twvn<5%lQ6Tat-n}V0~kfI+ipNN3B6jB>iG^_pmy^&0;gcE5 zcz3-pP61$_Eehi@P&EMuDG?o~Xt5I~vKK2SIzXZ@E@xsk*p9I%>}%FJQc#zKjfX~uYH%3|VF z<+ACzP}8Fz6sB;9W7+*nl2KRZnW6-%tS#EJlB+@MIK1HFJ$&WX+eOjbX3}pNO4yiqTT?a5*a34P4K2 zE17YVl_}QT#IG%#PJN_CiOe{@=AM>K0FfYF0>HTM-mSn>GSMpIp52O26ML4T-V-iG z1g*?5$w@J5Om@#%*5zTcgQXRQO{G0nj@2b0DinTMI$F_0g~J!Sm20M(4pnH_${<=o`PgVx zm@1*E)zlPuE!9=SCSJF=X8Mxpn`8C)gGe=oz%BJyfzxR-X1)BNqreX<_>u5072sQb*x?Kk{sB>DiBK(SnI%iG zj2Yj(7}sY|_9{iZ<6!Z$Tk{=Fy8VSGrWu_0jhM7xtt6-)N zyhe7w7yG=5WEVFlS#M6XCiSzVkH7vsfbp`c*Q7Gmj>L3!*7H3Sovs%>03Eq)2_TZ95Va#%v!F8z>*te=p4{3XhmnPZiO z?9H)CWY2PDI$xFHe3eJEt(I*on3=;@^b?8$c_^A02USJSdgkVc6(K5oA?8;|n%E*R z!S&BcAWkENxgAJIq7m)lfpj5-wM#*9F;YZ3zQeLIvK_hk+W2;4k3VaKs+sYf3H+P5 zCReOIBWuf<>9rwOVeJR9wt|^nyVmS$=W>h$%6pN$s)NklK(dJF+*$pEcw#{tX6N*Z z&a3+gB}-n)n57}1NB&d&gmU$Yd}J&23XmeytXG&E@OM4~NYIrztSU15&5;OyifT|6 zgw26ekrlGl3CML43I8CCuo4(VQc+;8%O3LZb3mO(VweEgN_}LL8Rjk|h{}vJ3DcdK z1!mXX8->s(84!Nu%}j5*CcN#KPnz*ca>&4ilU<}MqyXVT3Uis`5cv!em|?~jEfld1 zZRCfwXJu_UGrcxsSJv|79r!vky*A`ACxJSJB-tVG9ugJCT<;cA7+;T>hV@#*i*KQc zz}HEcqG{=mg0Ds@ok8(s5(|#X4Xb(o(+;@_i|=>_mJqU&6c$l z%=Frj+ERephs0H&5BXyT%={?{XZD{!&TedDs+%v8@W;?$_Q^-_Vx-vpEE2mje^0_$ z{meV1sO$G4dsGJxBjXz*Y|Z?ngfsh@>%6ZwdEkKju^vLQKy9*Y>FH-)f&^PLV@I?w z`-clbdLHbhAp|r2!VG$6_8yWR-U;z_gfN4!+n}Uc#!Rmb1sK-yH+h%`%vh_5p2Hm` z*Q`G$>noTU^+!VWXMyDF6l9cnttgapKwy-i`vIB{`JIIhBUUx`5@~tx* z+G-Fb3~o&pO&o1&d`y%oc9isvNzDH8snvR+G7uZ1w_tKw#RGV&CpiQ?~;xozU(D?gr_)K5e< zl0$5_;~}?+CTa;%td8F9vg*x=GE$S9Wf)rTJ&{< zwdf03+H8S;``WArXbw77yLPNLd2liEN_K5HA3QH*`tE zczZ2ny%xe80g7;jx6wxpg?lxhHYsV`)z4l&L z8ql>!R-O4poq)TM3>FC5g- zd7^e?fq)YU`*LO+nH@}KWgC;Y1yoWbMNdET5+rN|*@wS70cb`YPQvhB)Ch57nyDJo zj3mGT&8e$vDYV6W7M;(@p+bv`i3%Ub#94*zBj)%fK5WxU)Nv#mBJoynsnyEDt4MaS zE!!$FW^X%`rQ33?>BI=cE(d67>VdT$e%V~zAbhZ z35>*p2@(s}r%4URe`mi*Ll#UTvS4R4tcbZq!=`VbyD1Rq6)+t`cd>yg57d@5K)*{JW%rqJ$7+nOX`VOy&d7$&ZjUaVtE*_#6S^-SJ4i z4rT$Xa5u9Z)?g8jMCV2pkl>mpXF*#oV%L}rPof_mxSA&c!juxx;pv^^ejk!qN%)9a zNni=+nw5l~M3OxTxFD)oNtk+&mDGU~kL}D#!qkbZq(1n@ge(xS;~~G0~8=<49&DVX9eH3gdGQ!fH}JeTQP=O}U{b@_GgdATzS6iLD*|1lp0X@-ll` zf@_$aMUqVjq|J~`nDI3$LAB+%&S zC$LQ~sQm=?AfY|qhoXW2QsPrcpv~+wlI%)gP%kL`1gI9Y7sjU(3h6>ZKW4N!ViWa1 z8v!JH`WRKFR>Oi9rTz#B-I>KhI_P|0Cjk!#*jeaPGn4vFI%61<+!)4WsvX)%lD)gJ z5_e<&Yt~SkjZ%eP>S3=GJ~R*V(XSfGJQEY%D9ieSP9AcQ%zDC0WI1xdH|gL6&Ms+4 z0GVYYS;Wm^RzD%V?}WkI5DZKX4}d$}-dXq^Bau6>VKyX}TwiXFqb7Cj`?66c=8MB`t0pHg_z?kbN zLRuja_JlXG-yVn#kl8*7dYL_~W0{cvw-Ux@toya>{+O)2_AoNN;kDrn$t8|&dpfM} zWHu*9A;cRf@GUIZhnd0Yz(qK{SWLEHNS7Qvq_ia{_DNJ3GZIuqTe2`d)hM?k!6%uq z$z=FspJE@Kk(qq;j8?H|?(BY|4=1AQDjT@7slsVh(vM2T+Io8 zNI?o|fRX!eNFhY~O#FHQDTLtrTuGA38j~=olpw)s?622WnYDb|%YN};xqx%{Y}vVj zSq_paTIE{OjGk=5oP5A6%t$|c={JQisp+g#l9dvJ0&~Blu!fmVtny;SOa(+t2fidX z2Pp!%7YJ%5Or3mf>oytg+VJD8TeGc~va|;&T5LNZtUAtA3}54VETT0_hxOJc$G5JA zIE_de9K=eX8434YGH(YQc4b5d!!tvCLh)8E7ZRh$3i)*&@TV-Ju}kkD@%*hnAI-jp zWXBUnK6z|MGC%yWI$snVMB*d3b4YydhW(VVAjKfXBbgt*E;zo9kL38%JN~o45nOJ%;oY($it}{H-vb(;P=SfpiM#RU|%rcmrt= z=?oH|Sj6D=-~5=58u&!Oj{8^h(~0sPq`gS{kou4gAO(;fL*niJNhI^bAEoj>`&FdV zNP|dcka%Z%4vAO6=aG1?n~1wg^TX@ar;t|S=89K`=7&ECJ&tq|=@imwq&JXw&lwZe zj(wVu%$vsB0CytoL3#|y{P5R*Pa~P{j6AQI zAM<3wV+ntRWPbXv13rNC7!tS0{KfrgB=ck927&uD4A0Fzcf01k-Q2F5yB%|LZqhLi z2W-dvui1`~gp0s&m%g1E-~QZmeJ7NR1)964|Ec|Y@KlY&!v`1sCD^WTbJ&RFN0M71 zjI{*G{P5=rdyw`b^&xS~aS$nh#H|P0a^GQoxFLKM=`_+AB=ge_nQlYkCc%`C+g|g- zw-kAvNJL6P;*z-@iLxI-dX~v$wuY~T;g178f%Gbp`QaPZA0eGbvSS=Z;C!T&NQ}M= zqI(b;86v4O^TU^?KSKHxNubVx6oX`b;sNt*XAe>~5??0IMKV7rfXCPI&F1w;jbZH= z*v;{s7(X5^7oX>Hw}v8Ao9wYg?GcG*<6=iSF@oheSt4KJ@YDb5QaW&4_1e2sO@e(2rZNbA%$Z}qj- z)zsFtx;MgrqOHBQwyqv^SmS(vYPK}D``Wkr>)0M^7wT(T8;p7s@GtSBfQ4mj43u%& zU$S9KQ*(QI)8?z`B4f2ae{0iL{ILME!ti1Erj`p(^`H>q)L*mlrn>f~9XbLdg!kQC zTenT`4xV6qz<4*It-ZBrGnoa9RTtu6)9|8DN*ekts&+?IQC#M{tkhLPwP?ls+I2^R zr$kFFnpU%5-i>=+@A9OrO3!H0w(ZvbdHe3o+P0#FTB5yO+ghYebZa*jX$iZv%|(sr z7DYR7TTvHCp4IA`WV!b?H;V6TZqxzhaPMpN#VGyfZEm)F34i)!SA*7C1k^#<_>8t& zi{G80J$L)VtLL%bFLxH9;g6Mi9nL`E=gLtO{%fb2tf2IaVs~kiAJ$?XE-o%<(ELUH z{apeY6TUOicwAt4f;LAnw*o4D_HxV6k8tyKSJgWn3` z%iY>ninKZSc58Er$b{SO0=~?xt>3N9CC!WvQGTj};A?_ZpXy-$S4DkchNq#pp|Mzd zO07?rSClnxe)>G>ZcF{b)GSX%Nq@hVv0GbLq{Tn1O>(bF&B)NMFY=akc`{S+UxxiY z$fm8{tz{K;X{+kB`9;NA!-xG^bdmO!C@Q_&U3&TaC(<*DyBf&LM90wvZBW!} z%iP+p(D}z8_DkfgZY|%fEx~sYzgN2Fc``CHKmuPs6Yk>qmzQdd_{%<8>TXzY^}I~* zlb)eXD$@KPYR-DC2h4mVinQ3H+CO(btbJ8+Yk%8Wr0tK$-Lm}moo@j zKWZqkUtMCqLEGK&u(lhhIJfrRPPeuz5**!GpOqHk>ORF?{7tQ>37X!oEw zh->%CyvWFPO?Wb(|2t3->t>(tDfPwanW?L4(=#=PTf4=rO@QUx9%LTO7Uf){)^=2z zQs1C$D$=I8iL%yP?LO_u?e*HPRX1{XT5%(FEGeG=3YJT-KXpf=dTCsGv9=W?AI7xO zV(T}X-A~c-+GO`5d(tws+@d{fnW1fWKUSdKSg$>O`@`BRp!40^-DaLq?8%@p7od?R zQ+r7ThjV|YUA9}h7yACAc$fq;4f4>?9}<5VtBK5 zUC|ybxk!7UqbQ>;<8&H$JG9f?puMHkZ^{O*8S~RpGpL-bw9K@OG_Cz;dPcVPk~sR! zVz_h}T_;1kOZi>7w#~hesbBk+QlBMxd~Ihvauw=sY6ilkE#r6fEg_QX0x|9oIaga z0&o83cDHty)h+YAR!q5-9_{@0BJC1)ak2J()b6yBv^{CX&tzma>$6={wlEyi73qP=ac*S-$y+g7)yB(0(0b?qnuk)r)@oBCzO$fr~{qwYJm zyQzW))ZH2O*{^4$7el?C*HLlucK0)=IHJnn{K@SyINzbxYcqE@HflBXd%EniPcy>* z^mgj_dHiyaFy(w+rOd|+cnp7Bb(f&x+dJJKqt$B&()KOs#l@FrdQKw}7iBkeHKuve z8z6ny7c}szsNePfy(DALjcFOMeR{E{IK6>u6K0kCZpa8PWIj_0Duu;eKx&+iT3QHV zLv2NNS7Sy7XyJcPDKJ=jI_jaz-GJWTNeTMoa`L`hXL=P%pyPWL1bRh#S2lW3VTX5i zy5W|E==3!OmSgpwch;l$fKs1PiqaX`_&z&z^4D9W?GGwN_SvgaOVF{QLA&vHT7p~q zjzZ@+a{Gtq3T1k<%O5W8qNm@}VPA`yyCs>=Y;4uFO|CZ|OV0F)^Gbbs#&cc8&!%}A z=X2Jt=2vr?r!d_kH3rAg-ixZ&-rZ3|yFVnY6O>j1jDLnefmfJYfv+jb)Krf2^^STj z%I}K$;;y<(`*jWSv#MB~g7#ZC`a)X`?w`0_@@=T|ZNc6rb79yHO4f)?HQRjh&mQ^O zuvrnC@OP7Z{CgAJMES6dZD?I>XPqKCQ-t!;5}!^aFF!w$_VU7#N{UxrxF)Z% z03_Qt`JvFrMg9woHmd$NV4V&v~UHqF*5u+89mzS3NN~TkAIC?}%(|YHQj6y82(c`nQfQ84(-pO?8{v@UKlr zh!bfanjx~jqB5_tingz7ZEb0Vgc}=cHgB$LZj&Ck#Sek&eE5q+8*lRYTiTlBU+BVL zr;vKs+EjN-n{VTm)>iN@{Poy`w`{Cy8)y5HywxkJ@>WR8NIGrp{HtDQPXBLhX%-u6 znwwiT5_3yy6RNiRTI%aBki<0Mn!@~oQV}_QxKa0Q#1umB2=R4mR+Sg}R+m=#mX}to z9_KxUrD2}quW6N&DuM(JHg3}7Rpq1KvXyzOR~MA{N=mQwEiW%9t14K%Y@Oizl}_Mq zt=rnvvZc+}-n7Y>u)1aIn_FtyrN@g6O;9bB;p0CI5izXk^&tc17nF!53Oe?u(qt5f z`~zqgrJ>Ip^1GrSa+F9(Dxg|lNx|~UQ26nM{uCRHivwPJQ(c>AZrR-6l3!muk4*kU zv(}eix_aE`1#1dcSJL@RH})A*t5KdEBU#17ru#rwdLya0NH=KlwcXU@kL*@aP#_}@ z{m*AaS4>gE&3&6{{C=F~1g;Mnw$wC8_t7I|;dL@VN$W*uHDnP6Ml+y%af=lNtIG>Q zliTEC^@@LkV#&Jl!eterzNK{&90~g1iV#7uqG}m}R)vth5m_at z4`xF7syr?RK3~J;EgOAXYkbX3ZR27`q;o7~2rn;Ov2xsGFby423nR3@2E-U7bmqt* zl#UqMS|dY;J`*ri7G?u~(dix@hbv$bE-YJp^_T)a24j6S40%pnt8Zg-OIw|&hb+xo zkn?W@>Z407z<=x77^fl>rN;-|M-81YP*hZTy`|-q2+Cks(!v6raML$9m(~S^VE3i$G`;yASRRvs$S5-tZC&QqxrnYt*I&v3<-}v%Yh*P~a z+)oh3HjA2?jqsqln?>E`jV-uuYKXM7x!6?VKB%^i^P{z?2F@b|4ei_X`K2$9y2E`z z5T`_|^41ovs#@i%Kwud+m~{1}Rm+z%;*>%GtMW=p#>pm^IO#Q9VRA5QuwHW0i2JCT z_ATQEj&Pg`jvYCqsckN9-jcj^q5;>Ykxe2&#WH z4Uwg0+&XAloT}iwf*MwNeM|Eyur}4TZs6W-d*t8|(QbU8Gxp>wE>LWQtz<}m%n+Ti zWGw#6or|#+a@SRhDJi!a#$>uM6q*JoFR$`m5SSzNB)2j8O68Zg%#@3JKrdqU1?L>O zLAdA%NM9Dl4i*u1U6$v~TUuCBSXszeF}Aen!R}(l)FmjyI={+WQh=ihPgmo7TaRGo zAG*bWVSAA;U_>WtMEK8y7B23-16eEU1Ll11`RxH`XJEhy^8Iv);F zwK&~H@Bl@G0%1gjDIOXuFR7|n8QINroi%wSh56Wdtf*Rroik<(4`A3jM0ycd33E|0 zw@jhah%}Lmd44RQT=*hp?6{kVh1rpem~3+1bL}u=glKDQX>FIMX~wd#eNTjtx)`hB z4Dvo8Z%tldN#0Ui8AP-)$H0!be4Q83>cUg2PAG4wzDJYm0GEJ^lEI2&Yza5k`0+rm z8HZS$VQ}b8!mTpCjay`!2Y8h?shjQ_f#kb5kU>$QUJK`7#)>pj_19 zjL0c7-VlCn6zP+4hlrzjJI;PBTX09fwO?){BP5O-;UZi0i(SA(P%sUo@4wcK%>%}3 zx%bhJP~3h*bTnAbpNEq2iQc^HwXYSmK6sBaGC>H4BK8{C%G^1Bbgdlq`GaHSZ`U+%g-uY6TT-KGt7cmi6Rz94-=Yt813jV@je zwBgU4yRzmlT9moqE3WiS@Xf1gYWy492)AyM-y0jRk~%@5-oNFlt@VCFyg*22bL?zu z+3x>u&jwd|X_lVwg!8J65G1`GhlYzA*H{k`nhPqqiM{X!Ana<7+bo{BBaEf{mvOna zs$f-V`8u&J{9GY7mHH}TSPSm2U#G|iwb;?OG~giD=HoU}dSt`^xZx>Z#;6`Lzj33W zpHMi<u;(?B~t{|^mgwAbHtbP@Q7d19wy2+8U^cBcwT)F$(c3{uP_c-tmU@cpA zr7MMjyt1XGxy^-pH5Y=mtH21_F0X#A-O}22`TujA$B)nOuk7K2f3xhi*cgYv+gzcK z2hh@3%U6}9vCi^XOQ??cYNX|{&OMepv^&+WDk2SKe!7tYNGr$cZi^MifA-?9^T#l# zH{0`HPU=R&5GJjnSXXs)taItaBKfV}8H-mBQ_zQ>|6AF;z}Zy&{~tedHN-T+HciKmPmiIP*N8wbov1oqeve_u6Z3v+*r3s+{R(U-&n7*4KdRkQ~z_l>uv>W%+|Jb{OjqQZ4IIQ$MupTvw}ie26-(`bNJWO zxq6A#Uc-OtXOqY#!S+;GOD+BF^`oCUMQn$)`9IpL6V~d^u-1`bZ3=|7%^#M0M_9Xj zO(L^{lJiB@NeWL6Zx`Msylr@^@Ybq3#AiLTWD8xgWqS{P`=>1LJJ2K3A#I^Xi%}B;z7|tC2eANdUlJzlu+O0o40Z_tU54Palm+ID;Q$q z!0fE-fW>CrBhu?X*w&Z2^&qZq&avB4;;yFu^{w(_EY_T0-V)^M*X!9IkGDID_4@Xg zpJ%U6f4={o46)&8xA!m1wW~b6=I!vWYwx@g+~Sqj>)l&|d>`2z|Lb4v9kbZ~8dt0h z=6@Y4zR&9QzdjYWvDp8*Q{2;H|LaMy9`Dke50oI^Fw4KSL}(6v_xa8oKxJ+ zKziC@|9j7R=9^-%wzt3h42u)|q2=pyq+vj;?elF;gD2#QOCH~Rt6z(~?CsIz@h!1f_Y;YYoF&BibNl)cIeEGhq6u*VmJplNByb4{*fL5F z$@Of9XpDBi5~A_g0ZWLluxtNTDH|&su!Q(>$2N{RUhnfSj0G0|8YnCu8r+Kd{|1Xw{!L%4s*on2T^P_ zU)j{0*8l70msdsgTLp6d-C!@TS0MgYfm=I(y{sCyvI74binT)z!$;^yY^)7F)BiZR zj)!?`*9gZZF3}3N*XrCj$f_+9r zKWL{MNGl&@?a$4=3ZHoE(UO?aZXpZy3>xkUT@ z6P;wIZ%A8zt+e)atwEG9gvFc`zpjv1=%6( zG?JY%+J1LRJ4NAuv{M)kOZ)CRCS&Z>3{&+sEasUe8`&uz#M!8Ga8+&&Zb6-K8(ojn zR&2d#iWBYeON-az0lbP));HzXk&W$C3R&Aecdf75PTA6)|4Y)^)#)GF4l&YVo$evs zsUzl2@=wc0>|5U+qsy1JUZ$z%U#GAr-Di(o_e`{nk?Y^Y|jZg3E9vzJ(ibGk%1h;$Hj` zkKhUX9)H5icn$x?y!QE^{%LAkskv-rebh9ziZx5T9Du`d3{J*bsJU)cekrcRb@(3c zK+S)v^5^g>+7CFFUI5EtMU2CmSQne1CW2MHJunSN;v}4dnzmNuvv56b!@YPKf5c1p z8)|M_)e{`*8G*Jtz@-<);#eBvF%cibWbA=yI1(q}99)E1xE}RApnhFIopP!;G|V#! zb!w^7@5egW1d}lZ2jVE4iaPC7_2|;bat&@qU3ysQ2k|6c#Ju)Fr2HaS2CHBlY>Mr1 zI=+aR_%?om`|un539ni#9Kc?eLxB}n7ZMYYY;#s`QzIWA+ zl2{27uo1Sw?wE!dI0fh8Qe2Ji<3T)+*D=(-_tlRmjK&HWkBQhEJEBez*7`$Grvxk3 zDZx^w1j|p*UBb-bn1TZ_11IAP_$KP2=xRqZcgh`j z98cj7coBcaKQYLDFKPWeSO5!QF)W4Uuo70qT38nwU{iby+hJ!+!M->cN8=QH9v9(* z_WMr#ZiKC|EB429d>ZGWuJx<+H6fae!f33AnjlU2n&VCO#6dU;=i(B46F1_=_yr!t zvv>t>;vKfrL+$OxLwE`=;-8que%GpeAuNTJuogDJ$FL_3$62@#SKvC_io5U-p2VN= z4-Aj;`c(`oVoglKme>gg;#ADU4fql6#UuDV{*96LLs8qM7;1Vu#Z|C2Ho{ie2S?&G zoQsQbC2qh^FdL8J8N7^|ZcY8jW4n9gU3d@PkF~Kew!v;V0H4H(I169G6}S$!;x0Ud zC-G;zhPukA`dJuburelKL(~N|RK5%L!x19MR3AV$YI36eAe0&vG<9qlC?!)8w1OAG-X07^L0E=NctcrE9DR#q=xJ=q_ z(RXEK@4~cF6N@SR2g+R~)_hxPH&R-;Lc|q`t4Ld~0XD}J)D#6;Z!GE>wTfTHrP9{l zfFDY0?+9KcJ&*lgto7W5m&{_sWiU=!Jq?MQ5_co+MLZ5C%2>Mw6!|X_YbG?cvszkx zJMkFl-x2>t{3r3h?Eh|+FE4HVO2qZCD-Iz)11I7V%)-sm>ibYyKX;M-1+n&LtDWzq zl?$?eV1w$?uN6NFOGx+*8EQlCNnmR9_b98>N-gehJn8Ir%@}1=4RwD;H$@AylrAw0dH( z8tL_=m1|7gk^I5<4E|eMxh0r|Z{r!fhPu3u%IC$>(%SEU<8eN2!rju=JAlXW43@C{ zB+A$1iLwUjx{a#8Eq0Lhxcic?=_^z|11I7PoQJRA>(bWWD6QVj#JkBqfG6=R`In`Y z*99QuJ<{rVKwA4Xu^u+T*4PPq;XrBYXGp7WBEFB>AEfl7((2cKA$b9R!#iw$kkTK* z=Gac!`U7x~wDxq#N0pz7IxeJmA-;xhqNYtz{s*{ST0Q%v)qjZi4EY!FItImf>xWBQ zFG|{abuf|iR?^ye9DCvuI0DDw6r7Foq}87(t^O?HP2_)syYNdqhTr4Qcnxnzt2eB) z*T4MI>Mw$Aak8|}lR3moh~JR*xZWaupZG)KUBq7ye@%RX_($T4#D5UqB+ggHtN%`E z?H4C5MO=}%3UNJbMtVo=N_s!yfy86+Ieb+H`+Uo#ZI=zw9^Y2{6tnRNp2VNC)<-hacj3ELPUbZ;YD6PUYv| z2Y6Q6_P&mx<-9lwqpOT3tP8S&e=h4hbz_u*-2 z^`DcrJ+4cuKd8KCxU}?I#EH_%HzYlo^sd+k2jd87>yMMR-Xi=AFJh7Vy!?1++piI} z#;({O)A2d{8qeYtw5u+<`YK^ftdGsH1NOvWI38!>3Va*4;FtJ~w8wdY_`0<1`4@4- z{a#!^+T$!rd=K#hm_+&`#BGQ>5ck5tI2xx)Yk!8c?f$Z~_LmaBL;mNupY)T`%AFdkiMPxF!6WzBVHswzx7r1M@j2X zjI>)h;sj~=&9NO0#u@lJevDt?Pk0j}9`Ne>7Z#V+ZbfNjsu0&FZY-_+6ig?56!9G5 z`NVJHhotWy{+jp%@ePc!w$*MCY3)?TM%W$GF+~9?t!F_Bz>H;?Xm#h#2t7T z&tpV&uY5r)A+7yVSRN~4Rjh$^FcBZYN3jjI$F7)y{V)xOVmgk&2{;vJ;0yR~d<9>{ zEL?@_a3gL;pDo&Mp?C-0iS~2R<=fZ3GaeJL9yY*s_&BCuZybRmaXdbQ({UEg$Ay@M ztMDD%h+AkC2{ndI_4h`NVN*O5pTViP02kq#_!e$McRbqe ze@Xlmy5rJzU*l=q5A#u8WxW3d`Oi0*i`)zO@|6?VYRH~I%ePmbjP!; zzFEXC;6i)_U&l9b9lne1c(>KFgLpT7fk*H-o=0~a+}68B{3nLk2aC2_9=sC^VF@gS zRj@kNL3do->S;pU96Muo?1KX^Lq^*B2i@^DFKM$Npha?5cgu0?ko-SRgRe~A0= zAbx`<@d{qU@Gx(Cd(hCrm!h5kI#$sKpk4;e5Z`Jnc zjNP#>K7qsWDbzLcwB9o~7u|RPOJ70!2Cl<*aVu`eUHCa3!msf={2txKW38P_#BRKS z#W#pU^LYJ>z`L;omcjBEi`CGLOR)Ot5;w#q*b%#6FYJqha2Srk2{;?)q8ry>?JXu= zjc?;7+=6bLgO%S$d>D`61-y*E<6jsW!S=x@EQ}?v6qd(|SQTqvU969-Fc~|e8&_fd z9z;A0$KgbrjXYSGxo$j zn2s4Z0X40=-bZusMO=)p;oGIhn284K8$U!J$6Mm z4#fIDgm?sw#_>1{-MA1dzmWJ9T!ZWIJ^TPa$NhK&-S`o!Pt)6LJD$Ve@h=RsALPo< zi&0n@qcH~WLpN^3)~iNb6CXyM45fPAxDm4jaTn}?X*dLRjascY2A@MWZp6|viL-DE zZbMDQuk|$@ztoic@)%yis~D2s%g=*%V+pK?u~--DV>^5t`=O@$SGyxoQ~oQSiF446 zU$OLM#H(;EeuSUk=eQqF;aU6{f5D&vUb|svrxdz=xN$PpZYkn>u^QIICg{e`SozMx z-Ekl$7;e9rv|c_eiDj@V*1(4`37cU{ z?20Ma57Tfoj>joD9iPYfxENogWg+JoYcoReHA8NN9FcOPkF|2^P zj;YGWV*(~(Lwpq7I3p|Hp12dbaYvTkhj<_k#S9#alW-c&#<}=1F2ObE#w}Sp?t--D zG1AZCPk0@5et;fd!6?rn7>DuL3X|~(9E_uJJWj`1xC~#%t+*Xe;3*6)==CQY-NiPo zpK-+Pu@k!SOO`)?_!*pvOK=%}hI{b{9>?GC4=jF{*PoJD4&AsV^@}(j8{i|@8N1_f zd(4&ogLoXj!(Z?>{2PM{d5<$M7Qn(-6f2+`4`uDe z6T5Ly7S|(gfX%Qaw#QD`9|z(XbmOM1zB$D6Fbh}VX8aKMU^bq?AMrB&iZ{@WtFrd) z)Ho)y5SGAFcpp~6hp-+t#%7p`x)i1A&A_qf#$Q?bG~(Gf7hl5_s7p7ho{hK{-MB1E z*X3!He+*CIS^OD)K{sB@%7+#4*2|ANA4v6-!h5kI#-ba?W##G&c+3}2$$nZT!(JlnAQ6!@owCYhwwOlhq_Ru`g0zy;57_q zoL4^l7Z%4dSRSikO>BlOu^m2+{V)xO<5TFyrCI-`6F-mhF%z@!Eqn*J<9~23?!#~K zG@eJD|E2A69dBSLS<-I}XO-_zX_P**F(< z$x_vyiErZu)cI}7-+}w^AfCiCcm=Ov{-WOcy5x}RDUIc@Cf3HL*aDNWBX-ALI1Hae zH!jcGnL<1p=b{_0XZg#BSK(URf;x{+{rwF0;t@QKXYfb-4gbIpjk~jY@?aFY@qU&b zLtGXgz^Ygm>ti!)iJh<;4#wd)6=&cJ_-}j#U&S|Y4Q{~qP?wc-uLsT z33UlD<(5)n@8Adc5gx=N_${8sE9k~;T73~3XKCig zLU=b;z{>a#*29+A276&&d=f|D(>NLD;R0NVt8oi%!+m%VPvbfK9sj~m#%D%gK`esN zsPl8R9qz{m&_B*JiMT1Yz+~)*-LV%Az(F_`pT=o86X)WKxB}n6+s3C_e|4!p^?MI~ ziC^J4Jde7#smfo&aE%wWI3M0Nj@8o3l3oFINjjCUgAMQz?1nvY6pq6c_y)d*AK)(h z9NjoqYwrZ{dAx)-QRjZU$AOV}50=I_jK?~t%M5D$NAOW>iyg2#_QKo7(c1cM9IZK# z{OLFg=c5}}Yvo=gUXHr-p!%^EH{xd8jbEUy)2s5Q@mKsEBVxS#{8$`IVoj`#O|Utp zVm};;={OdjMmx;m3$AG6o}~55zP8{dA|Z*N-{$6#5kfR!-; z>tG@_#3tArTVXPG#4gwm({Komz>zoxC*UNUhBI*iF2bdliCMS`H{llChC47D58z=u zhTr08yo6WrI^IAZ$MfCXNVeVG`SWIe(xb327R6|+fR!;0<1rB%ViRnRtuProVi)Xz zsW=2j;7HUQNqU`4z}({}W|BS!=ivfegju)>*W!BIhC6U4?!jz4fQRuIp2PEa39sUH zyn#M@OnO{y?kiLCfGBq7^P5G9{o^kx5Ld=HjK>75gSp3Hv?4tjJ7O2?hiNzjN8kjU zgwt>)&cS)O6f-dkSK%hyg4@tPj$i2IXsV-@G4%%8|Y(vLn!Jp(Axg_ zu_#7k43@+!=UGfxF|+r43@a9B7F;P!yUL2_uyeXhTr08JcsA;I^IAZ<3QYe6V|?)Z^G1kM0%czqMLuhV*mJ; z%B06hJC>q(i{x@EqxIJ6IH|>j^}SV%-xHP|M;y=hnfso%{8q$c$e%#$zGp3eEwTIl zwAg)rTK(>O(PAH;zZIm#m5GyyI}*<%_J6Oq?*%LG|6XvPJ`^buC=|HooKUG+5h^jlI(g56HX=$^Mkp#3ZBvta|i zMB+_v`Fs;>``W+oZhd=c+N^^%=API-I@}UnnmeGjv{bU2%KyL0=`|PFKh+oNuf+1y zt`@yU1N)b-&Z}SjvzNImr}i4yO{-hi-4avAz6ZE3{PjI*_f<|WD=leOu8nus{Z%>T zcSDzGe{>Gk_Uit~E2F5B-2(fUX#LZ?RO+A7{o8MV-4A$pz6tGZ{HMQD0eO1Q1(us{ z4a|wLL>7PENQ(p8jmx(E^D$n#`7O`i?hL!{U&rqH%8d@3|MFJeRLcvjZ|NoPb3%{9 z-r70!Ew=lC^|i4267@u|`14+}IIzA=R$rVwQK~P>ZvOtQwfp{c?5^**33gtleO~z& zf1W;j0_!_xKgLy$>buKs{`$7qeXSE`H!b~a13YW{@%)SObo&(j3v})p^oN?-7A56+VvkvKy>sVz=g*om$K&zpr0BmM&zw9f|LP>A zlmYi@d-EJ$XCUlv_J{qxP{7|D2>H5$fi9(TM~b%!e-3BQw-Qz-T|{b5Q%-l|ExAca zxu#N9W>2)%v%FrUM*d!%2aV^<^NmV@XA+VNh}NFw`{N3@f~Ai}uCkX-rd> zs|oP+pPYC;ci_z8>_4fRT|-JWoE)W8k~;C=kUIP%+@2wqsvS^=`%gNQnlMGF4;}fh z4ypXzLpD`Ea3%5@hj$FdsZ|5#&Yz!PbJd-+2m5E)ZtuS;rT?BmwX1(1N%ard^7{vj zzW#yF&Y%CYT3s`EDa)nYJ*d>9Lxx-8Yib5BL41;@e?Zl28&WC#C*x68m+}0|P`np1 zQZ^0R{CEG6@hSP6PpOo9hg`v}LkZrkLuc;!{%MzL82H`!^N+Dz3|r;nke}f*)!Bbq zc&u{JqByl8g~^z`(fRO+E2)|aGeP8zCzEN!vy*!_cNc7Fdf(-PFO z0lQK&5>i@DXuZ5&hRq%tVp&(p6OpoS!d4#d?}o}%-N_^HPlCS~{@3BZ68<^xzY4!X zdFXL6YuEj-g;_V_5}}(BrH=u9l(&DZ5$qqE;Jtqw8kod<2Fga4V;Po>j&n$ymXY5- zHf#0o;+XDO-S2+3sNY~a9F*VJKQb2PLf@u=&#to%+WWQ*IPxDEIE22R(sW?pfV7GBh}MI4Q~CW@8TtKls5kA4 z@K~klPwqQ^J}D!3|DaR!roNVK>1Vvw4?1V`KY_07A3LGC+jyohO7{c(V>7%@#Lao_ zwfF?+?|^+1q02X*`%JXqvrCP^jni#|HqTuH-+=xbQ<8OC*aq8y%>&9~+A?YNR`kP{ zbU!Nf_QNhSj`^rN@?@mIjw$_PGd;&J25L_l`CD{*dSQ#?{H-SvFh4@)&u_OW z_emT2D;cubt{2ar|4^x$PGTHQu;S1c0|yYlC2#MLU9B9r75S$rwS9f&Ud*$V1GxwX z#s3$`Z)@Hg(Ty^xlM%e(5-d$g@t*#HWVCT1=GT06_n;H$oO911&DH-f#yi^3zhqF) zGuSjCko?kR*puaHwhE%ZsA&kY%Ux3ah=9oGs zK>iQrZ63US!RA3@;pRcM1oNYmb-Un1XO@aNzm@MoYpjJcDtXXyB(*HLdRZ2HSV ztVl0=@*f;B@>2)XV4pru?V$3$fqMG~j`?3V*8=Frxn{@MuynMe{j`}S^B82>)r|u- zwama^Phxr6#RnGa9-@ z=E-Wz6O6N~MvODgllav#PgZXoh*!%85>onS#i#U7qKz%Nvtf$^jeCc-gBhORp>J*& zObYfx|JswbzwF$Faq!{2NSg#=!TxY7{D$|wLAJ;0;|D%F|L5R$_6{W<*m;6|J)5>j zft|b$583*QFs2{m8io4JzD|N|&|ljVknZw4Jd_Oka6MF>`}J5byqI_19}X=?U7Q={ zcrfP$#@~mAT6xlm@=W7gsE~X~lp*uyW5mUwP8-&!h3ZSE?7 zp(NM|c?LLE*`}M&mVMtIZp%@OA#+R)uWPg!*VlT?^ShAF^|b*0JK^X0x)}c3q#Wkx zKvq8MHP_dP=+kNLy+c??^jKgxb41t^73LVohze7e47ADUyFW5V7>B-!y z%)UT6*AeEi^f>C-I|RM3Cha`IbAZl|H9o`pyEupFhPnrKqzvnNF*(~HhcZ|mYf4gm zRQ?696XXp&1bfWGTC`g7+9!SKk7p%KA?;nP!IW+3b_!|r1r>$$H6^p^%j;){+ru68 zwM93y2D(E25JDmUnlqoAKkx5o?Cike_Kcy_hJZhWbDiQgV-;L5AA5>?^ex(gIWu6Z zG3~uDWsB}-!`p}TY0IFVkNGu&*k2^MJiCYDv>giv6Vz@!7HNxMAI{wc*?*!81zE7= zfZ@G+aA68%^qDd+mQ}E3&_y}3{;BzJ`EX@$HE_$}R>QTy1>x4i^}%g}+Xc59?oqfsaL>T)hkF6; zFx*kNV{q@ooq{_9_bHqMHcWv_hs%V^g3E);hpT~G4!0Vv4K56KJKPqyN8$S6_Q4&1 zI|z3K?l{~>aA)B@g-bvqGvKDd<-z5{mBB5CTMgF+7ld06w+(JL+#b07a4*0ehC2%P z4%`X2({N|t&cQh_@KWH?;XH8D;PT+|;mY9Z;hNz(;MT+S!EJ-v1@|c2GjIps4#6FR zI|X+ZPGL~E;8Ni-;ki!*EC8-hn#> zcNR{?!7gyAa2~iUxcP9!aAk1yaI4`u;KFdX!)<}v1-A$88Ms4mZ^69-cLMGlTtYl# z!ezi^!R5g%glniTopp6~VF_v$e}(oJcJu~%5I5O7yP0W49sZu4_9jnlchedj?(Xdh zhc>8Ue^*lg5ykC2P2FH=ZT$41Qm2Pwg3U@;kK^! zCe|NrBa8i^HS7E^91hbY+0mv|B^`mLaHw0Cf!OTQ?hf6zv|+Q=@3;!>M0wblJ=kS6 zps2eu(7XY*>g@brxUJTKzgLhU`_c0UTBr**&QT4QGkhE4~xs?zQA z6m$kc?M?nJRpf8`wc$Fr0}ZN`xVpCPb>ZGFJ$}(=?Hw3d72VmT z?WhNR-KfV6`pF|kWuJLufYzXme&nkSpygmC`ko_#CiF}}>pD7AnLpHQwbQZ*nJspv z-rZgP4v!?(t!wXUg{)G4PuL@asW8yk-H5mfU>m zje(Fy+YRA57y{j{LDe-TeY4`^zg!* z>!rC=J;o9Hr4H4wKAO0ro4Fy^-_hYmOKQ5;K?5rU+qP{8w{@cV7^Iv`rJ+EeC%l0} zOcnQHK;hs}uxwI{35~oRtf#=!{GWS?N&VVNmrqo^wuJ-q;M ztTc&!^?^{R8@9tFYiHesq4qGRYgM2%5DJEAQb3o?bUXy^LO;Hz4dJv zfYxG)a6wnQUd)!r8dJBSE8Ir^?HT&Kh%64{ofMoP^Da>;2f;H2{>Wjw0;e1Mam;;X zcR24sio+4tj^)?(6BqoKl{3MJzcp1U+ocfVxcnv^lW;qP*==!aaEW94nga8H`2LUHz;vFC0Z-R|y)3|AWhClIjs+OQ^&_8J#Zp^)gNXXuVy+M5H zB6|OYGSX}4{W^4r&*Zve+rSLoP4r$3J>uu@ruX0&co#lPZwpk6YdisOvcZ-+bIzd- z*Mq29xfUaz;hGIY*<8!VLRHtqWa#1g#D+qyG{nTa2GMG#s|3OmT)R;;(e-o0C%L*H zIN8+;tz53(qSPo?FDy3N6-3T4u13gAaU~beIlPjlUhm~_|Qq0e|_t3vh8@@gd8CZYqJ6<5*wC}V5J|Wu_3hH^*bb?mVZOvIX7~vnOKHWDbCGK z^iay0zy{^KmlZ1a5#)5 zOwxt@^B~i83!0)_@4-NZ>jNa(T>Z#sSGLP2^w~?0CviX2o96uboAA56w8efJK)J`F zdz{bF?{L$i&TrD6;JyO+o!_G0<+juG2k1|6zso$|ra#p^n(BOq{&e@BVP@y^^k=x| zq7vr|^n2V1)c?EmXDS<&aK2cGWYPcS%U}YR8$&_4j_VsrW6a2-P9Jj!;SZG7_=NVp`yIkXt^+}+6Q`~$tp{Rxx*NWTNq(Qz;G zCH@R`lsSL#Ci8A&H@!psl>7Vm>--h{4tEM=yhne6`%30HPQT0TVV>X6pW=Q20-V36 zm{j)>3~lF$bj0VmufYI!4$yzKdk*7IzlS{Y)hM=>UOif`P@|^6|3@o~K}yA(A66kI zu?jYEIsfA-G~OH=XE-*L*%yB?b<}nOijyGDV=T79!cTO^1LhiJKlzf%;tF(NomZ{4-(mr9+ zCTqzFX?h|}(E(RlfYnUZft2)MxJNms899)Xp5DyBbRF=dclCBE=M3W-q)bceg&CbQ zwbEX*1z9?fm$r(1oMUj6n4k7f26A;^A#@*un#NII=PZN%OTP)F(w)`DRCGexN9>8E z#_fPg`yp*yt7SUO3hHzqA#FPv?ObMTLN-_0WC~ku>Ylcf247)pLrSVjdxt~X=#KKnmO+^!^ zX}rS@8S#z>w4W>4I5xz2lkpQa>N-TYoHrZ4Lb9ptYCSwuS}x~;Uu)|~+lcy{jXIE^ z#<7sI+2}`^ah>elHO9Yd@qfeL@%rS1-kdv(y@l|wyN@H>7?S=~pjx;-m@*PGcs!vFJgL-c?22hDB&Bf8%r+X_U?cb=-CUYR9 z{h5o~W^*8zgJ+8lOiQauLCRL$3UAs@h;eQ=o zC1lH2i3RBCU5RDXG^M>;CEmbOl5|;R2&Qnj{}qZSHa`M?g8QfJrp|A}?{dG1rX;Ta zE&M6&1B~DF3H+(<^H4YO-Z8Ltx_b+BO5E{0R`v|{t4K}UNgHAw1h9%X7biwJz}q4uknAy`grM*#9{4EOZ~H{HNzZPQLpN{7rn8XVfzHH!1UL z975YLJlGHMj_1*?c*ky}#5*`5#<8264;tx69rq4TIA1p2L!LzX%aRIqpiVcZLQ?VF z5kn*`-UYuyE0I+3I;u=?FM<+D)l|skUWDqCYT1|+eUeOCrYEqQeVw$T7kNCoVM(jl zuuR?fq}68QX{@C77m>%S4V~2aEBN!Yp_9IN7XJC#&`G_cq2WSp=%fwV@aL;>Ux6yl zAwB*sGdEIh+jr0c*HcUY%slW=0|Tkd;h}o5{aM!URd?UQ!EYCz#3XJ{0`KN@16nDYWN=Vlz1v zv577;Aw7A#HDd*e-{z3X2Al~temGnz1X##yn;rzj0E1fmy zq7$N<@&RHKe~JN;>dGsH<@GdiU3~+*O7BHn^VmU-6kO!H7Vrd-kb*lU%5|+iS-A1D zvvOU>EGg>p2@n?VpcorPx~~5W5tqNO^;o65bt(Q{jv~m$6dx+` z&8|lhBTtK5CizCwM-g=PW!^(1_{h;VFh^_U*_{1@ll~dNL~E4;3?ZBj!42;Xy2Gg3zq} zh$}Nyjq61<@XkJfI7~=&JF8HOz*x%O<|fF8i3n(O85tiaD}BW=~DxCd2qUlO`RY_Y=;hNgif3 zz1ula|G}lo9OI_9d7=W$PucnX*o!UAJt z8mvNY5>%nEzU)d=6LXMiyO|m78xgJN`OU)ly z&mr1u=6Bi5E3`&0a>`$!6?#!ONH_i<3tXv3>q{K1=6duphvp<+{u{4olf-lU9(tRa zPmDteqmMa^N~~CBMSZNuT;lE;UMcSKqQDhe&Rr~QO5e<~vS{4H9N5|%#HcWq=|#hM z98#~*^J$r0E9PlUm+QoNyy7udXe-Y9E-fnlS20kGmAb4N^(I7q15&hc?P>v)Gw#s> z&LF9Sy6<@p3xv5O-J`2{6V1O?S9Pz>iAO%vLfzHd^}w+`n1AhVF46btJ@?;{d|d!H zk&XSvF(|d@i-<73XRw0nIi0+^qY?LzQ9T}m`yk@7vD)V&gPQ&ZLdy`E`!+mtf6YIq z@Mrpe;?JvyFZcu=+k+K_JdJFFC=W^*=MSVp(pp4Sqsn~774#v5jMMJ}n-QDEpCCCI zIq^4eIvTT(?|KS4hNOH1@PyibTaq?W5+f~1b15n7#Kom>%$`EhYD%#g`4|{eZ${iB zl)}h@HiW2854fNDB)~AS`s5*BQ6K(1h~;Z;Ixz{xI{PlAm@)%Q$ zr&-H$h?|VFR6ZjMzK4+g!9yG8{(#Ez7gDQ=b-Kx{;(99EkEFLKW~%WYma^AS3?sF& z6r;7RLUh)Vi;JT5Jm{Cx6y-JMViTkL!B0_))Yj7)Y4drJH&!Fv37oO~=`{f+G)j#X zX#dpjB5p0jO#M1M1Mn2@g(sg`rXPlH92Sx3KY^!!o_FEd4$s^Hc&2}ZKfggp4-@`w z%TZ?>J#MMD2tz%eaS`?OI9ZD5thX+zVj)+LcaT&=Nhe*@a5{!P*O#di;dz>#vG5$F zCjp-Sf+wHZr{^IwJ%OEz&?Y=PG(8_NJ&2jXACPH~BE<3(!Ev(YA#&{~uEkYgCH%~Fh3)$(&T?dUluolm{w;^toXq>0xmfF@K zu213?n{mc$m32^}I9rhgnKIBUHnl@C&BBI8qWVM@n@ahUJ1bN(^3l8WU4nHD znc~)~wd^ zoRZY&$VEk!o|Q2&!+~^e+#ZH7bGJwHyZ93U)vr=BQYFX1*c|-rKyqYCj^B*Pfgcql zN1o*PG&TnxEn<#5HKPnU*wbUsOVGfmP&0VTtQ}F)bQCt8IsrrA01~*hzd;gunE;*f z0|lgUt2pC?WNC}d!XGnKDKBsJu){Qi)i`t>FspSu_>7*C#sW2?UXs3cK~gDiiHA{Y z##`{P_)kaVnWIY2Ngg%oZ4AagB7@#LJfs$%#Ytn-<>wF+hY5!}5!^SF?SY?ebaUBh zj6k~4_m)q^(55RphYq6~y`s#H?xGu$S;p-s-Iz&bpJ8K3m-JlOZK#?q>4maaP?j!b zUfI*I7+um=%2JSz&i&7_t*N*yfJ=Hq8E#|p=&{N6(U*;GNOK!0Sk-KoqNWAO*Cv-k z9ebuqPF{p`T#1VphKw77SX@sL%;lV-h=eInD{-u0ADx^`0S4ldMnPKn*!jtMm`lkH zg9WTK*EFPMK+q_|C?Ct*qbEU7E@H;$B(yyRA;yHuC=v9q_Ki@sZWCA#~D+{o4QSi(~Z0=(gs~TLo13k?eejZvk;A( zm;(b)Cl>T*Bj6_|OKZhvldKkDFPj&YawP)NR%~sPF%~mLRvcxyjZ5P5(;q1uPqnd! zvDCJq)28GYvtlz$jZ?G6GHIIjV9}nQCowbb-DIHSXK9nq+`b9F&!j(Ch#Xl~0`{2E zt%#`^zo%G@q4?b4<}m0TZV-dBhMUCT>}1q?Njw`chxN`HtLx1(qp=!OMO+Xi8_Y6K zWa)03A8iWLtk{5AHc)Coj&c2XGkAfqt{oOcEfz)v(dz4xOtZ(iVev%>u=jM}`paRY zTB9LtdGZR~+xf`|V9nK*MA5>i47#U_n1Q+%)9N@OF$0@yNhpPh6>X1)A4Cnz2peRT z<*4h&FC5=B+O#enb{LMpyyAiRt?+0lfmw*)-;A2Q@aTgvJ#dDqC5~xtJ#pNOB~HMx zSnXc=c$I<2!0}ffl&}iUP<4bU;l^PJbte#Ombno=eT4CM3mnuU%reVPz-wk)2A@85 z;O{eV$ViwO8&1G`%8VtV@^>;5Gjtt!0f>7y8Lcik`^+nS~)C#B`x%*7P>OJ3>9G~TRE)`=SZjD%F99Yk=B1% zGm3E3#48tf$9w7L&_S46{Jk8#$8}B1sQxor(a6xT6s2%#nu(GZQvl+0d?v^XZ|0#m zwmVv}k@7yTK?k7`%aJs0Jh}>pmf0sVNyWs23X zkrjSkB~}@9s#OGDD|b{^Goy3`GalDfFJs0LrXH5qz>H`XbZoE;3h%J+$QpVY!X4-m zG=^X!FzUmcu@ZTEG$-t6wmGSH?^T1|F2?t zHuS`ZxQL-*(*MV1UsO}vXu9y5069(UqT$Z)wRij40v&inzbB^+9jbc5&CP)p_%Ysm z@cHqUhA+G!7+^ZaE7JX;R!K(yk7*--!7wZnVGPiPjlJz1;q3MI;VOIzu>s zT&Qli6g0UYss$1vn&I`9HGy#Zt!4yjh-n_*`oVi75P|kVFN_5EF|f@9(;rn^Z@9f< zxXHS1JuBk$T43+98{_N;?^rUot0%4%V^BMhTXG$y1$` z_D}C@vEOGbv44E$riAN}_#b!Xv?Ax@26GN+3BOc1_T+bSvvcpRMBL*WpG5it#=Gar z%kA$OODc6^H^sO4=j7T)z5B``Z zV|Q*S&=K(W1U`5D#PH^W5yO+iXL?nPIyD7FHYRhZt%d4wm%g5xxtG5*;dQS4|Bg5Y!!TWEa4Zgs7)zaZ_?THmY zd(~D~`08t+pRb^}I5xSoyrLeqtf?(uR!~o4hC72;CSo&{K=~ClCBBBL8>*^rtWv#Q zJ?*Vsfo2b1Ac<*iNo{R)t*^SF-dA1ft1YRkZm2CPsZ(8n^=ASxHs>1=AEWLchDZwn=xT-e2*I-m?ZTlg6~5uB7A!E=ufppN|%sbu~NPQP^BF%2#3rj_8bt#ke|H^Dd^km>i2ss%lFjv!E@|-r6=| z{KKNPKJ;aEae39^|AWMe6}9C>b)UD`sFvy$*V@(FKzESShjHT*y_cwtR8f2>Vza8nFUbHZK3LIA(B2f22v7%K>`g z>O90>be2UgSas-+5*2kSiD{lW>&)>fE#dU5YpAKIuC2#n6_Y!n7(1|_w!XY>WD8JjHl0aF;&J|PS1^)bh81Uvt-mY6xNg%)i>0Z40jWEfBH-V z&)V7MIaXmY^qHGRb7u6Yp5De_dsDaQ#Urqt+Ar5wX+_Z-{t@Z8s1mOlC4+q z$PP8OjHM2BsVrDtUfEFTtHacc&1KrKu%Wb+bG90)R~A%M==G87BGz=Oh#j#%j2CM= z{kQn=Ca8XaJ*Mq3T~){WVym%~;WAxQQLsX_V&RF+5+ee0ik;t>$*d0Of6&VDUGRDjW`Fb@%cNjKe_neX$UwBwzi?>g2gGewfa;VS!21asKJ7D z!I@B>->j`HI_n}UkhyFPZzf~86yuO^%b9j}$h#XV-a-6LyYbr{xFXcx0 zqW!6c&vj8J)6dbs6f0|YX$dxbSnd9YHQdbKP!(C?ebpGq1sCqpt)7Zr%4ChuOGwN@ zI?KnA?(?DJxMalG2m(H55XeLlsih4S6}}>@JRGU9`(kV}_%LXUSW7>%f4B*YNk)G} zotmxFWlWZu+UmvF&(~p@=Go3y+E7&_i;i`#Ddv-ik?qg$NkBI9KJ15@v8Rs_k9J2E zqL>6rb7Uy3Xs9dWy@sx);D}jdjhAHw73IY^+b(XX#9mJJ>o{5JMJI^W@q#mjC7*MQ zi>);uRS!PL5dORioGNsac|EnPpuD1>5Laav)f)S)+7&g}@#yOfy^*|dD{d-ZP-t!< z^qTs)%PCH1{vdA1b+m{1;TG(@dwjUD4_ zz`rK8VX+H`UM7oR>5^I%=+U>ZE|{eFQpFm5dej@2psy*so@dD(Ml;Qat-=3PM`T@M zL(B_*Q)8;iJ;Msw7+o-ztd?`;RFy2pPR+cU!IW>PEQHFsKYDbBn0vmF*Q1sMYf$Km zqmh>-rZyZqr5Fn%w}DX?1vo1}Rcp`7?Hlj;sl`^ZSEMJ@kh< z_1~tp>-5bI1X_Z<*R5>{(#OlUY-YzEs+sxz|CVg^WLM8N9qtHT*Mx>-w_qa~+ohHv z<@|s(tE8S=tN-Py%`~mtO{grXtgc<5)>{|Lxc1iHU-5C{qW3K^QxI3hwMAT_E_xRz zvImU4RnFVx!?#t;I}Es;tNST(ajEy6F?CtZ<47}adHBjlTn-G61DruPWn|Rqi|QC* z*4|Z5wTqjvp$-!nBf6xj4mXVIVl$aW<5?Uht14?y26eMybN*k>lI2x;O^q#RRw2Wk zrnmYerXi78qpyG}3L7fT-MDJ+@ddj4xLq^iEMHHC`tMk>>loXYhmKP157UhPQ?)#A!C3-D0&lizFa={92 z4t;$~$Qrq^)tZV&&co)4#5*f`r)OS3nOh|)!P`YqS$MlMwvlq%&sz3*&c_?exN{l8 zjkK7ok$%DnbHq&!eYwR``3Mu?Y&>E&hp#8$^EEMYt${pzWf{4JdckQpq65duijsm_ z735}_cZoP9`Gf&Zcf6gZZ}+LiMMVod)3|ijcjKEq9&FP+SSCFsvP^pLbtc}K>kjoy z|9@Ut%{Rr)(r=DgKh*IDU5^ClKMhwn+Os9$Zs*qcd*Zg?s~X#F4;cCx zFUh8V`7Iosvc++?eJj)OD6l@PUxW)sr*DbBJ8rAv9{VR_~?8+S#Vtzai8g#t4kv}>9OMzL;X=Pl=IaQ z;ctxyzc?cN%82j}MudMnBK*OK@L7bHVz_)nIQB{@ za(>VBUo1h^nwTwtd2yA~-V^fYcy*zR+;WLr?M1GP^ba&DvsvX-6nXh)7XQrQpV`q1 zoZLgVPJi+{hQ9kJKSEiTKNnl6FIc|yJ?a?!%_f^)tsf~u@6<;|>T}zLzgMn#y68F z&+l3>d{~%{<%aUINW=#vyhV6K;uG+TI@3KQ@*g1agzXU$a?eV58h&7BzCIH9&Pq5H zKZ9rBQ67F5it)>Zw+mkoo)K~x;0p;ULXXfZEG8+3oQfxIgnP(rJW)d?p`8-{zJyZ~ z%yPw`9ZN$QiFYb$NGuKYBnJI*5=%oW`(rYmfFU8Hn4E&SB;j4;R6GGgA`_q6C3)CT z7-rE-5OUpQJm(cj`6Sm%lIJkeBg_<1B;#R1O|LLdIA6F>m@lNhELSG15Y`Cmh0BGj zgsX+k!Zsn>O?g3KSh!wzyRc8VMYv74L%2)0TllDOkFa0(jBuZDzwm(Y1>r&AA>m=+ z5#d|HqrzjtcZA1u68@T~Bh@KYf+R@%N?e`)6gp-Y$|OckaJGlU*trf`}tOXwBm3FiwJ3iE}iLLxJ^w&E?GKI?ju&PMbA=0p{LT*ZuM##2+k{=h zu<%x)9^WXpRl<5)Bm5-^>+y{6lM>eB7~!u=SdU+XUzD&Ow+R10!g{=AAh-Y4Yu8JPcR;kSgZ2u}^XW3EPCd!cD@R z!ac&T311YxAv`Aho$y1U0}B!LNfBNyoFSYiEEX;m-Yxu+aIbK`@UZZx@YljW2>&MJ zK9lv25>60K6Y||@rsoSQgxq&BzF8O)ep$#*9Wwo!!dHZE3EveC3P&ZF`Ns>V2R|#{4*9sR4>x4ex8sTQ4 z{&+FuJuczH!lT0D!c)RC!UXK$sYj~NBg_)c7ZwX^gsX&Y!mzMU$j{bM?z6)E!smsr z36BeZFFYmuPlDZ(t_Y$4x-X8A?JV&M{Djc}Q8 zm9SBGi*T**F5wR0Bf>mv1XxeLutK<8*enbRZx`+qJ|;XbOvbepYFCamiT!RUMS&G2{#B=l91CX z>0gxiwGw}i@NwZ0;d>x7$yJB9m&-y<f-4^AbM>7Z%hbm4sfCB|L+K+yaTOlX$0^uTwuOcD$MxkHgZ;^11@OI&L;X@?kJwihM zvl9Oe34dS0KOm9scftWlKO^aX7xJ2odL#?=cS0a{yo4u`2+x$TmxSD6;Z4GB;b!5t zg&znw-WxV@KfPfTzInHDZ*=n^};p6 z^(4wXB;iL$wEL?PzhAX7#?d7TM+sAf z>B7r}lZ4ZRS;9HOdBR1)LSebEQdlosF7yeTgtrL0guTKILYyJBU2wUgiS3CdPM?~S zgp-9?La%V1@LFM^uvAzhtQR&3TZLW1kZ^;L-=k)KZ4qu0J|cWv_>}Nj;d8=o3l9sA z2!A5{nebiVZ-fKFA>mo!IiccpKJ;=3`L$A>uhWDRh5U_&@zaIbLVnJa@kPQV!YU!Z zZ_0GPP~R6pxI@DH;3?BL3ibUEgttqWUqEI06GD9-1mS%W=2uXe{(T|8;m`0-h5CLR z!uoy(_(zGyKj+l>_*qlt|4hg?pcqaR>icX6>-%gVzkbT}8Nyk@xk7!v4C(rQ8CWgx zb;6axn}zy*3G%f|m~Z}4{_R435S8JbLVg#O;jakweG-HZN|;}*WPkod_zNNb4+Go3FIF;L-%kPc{S=UI4>MlhR{Bj66NQt7(}iAPo^YWsU#RcvKwh1Mn}uz{ZlS)875f1R*OSS#fBHJKg|@uegl;GON14|8sRG8YGH>kC|oDJO~_A)Qr-i?hlP&`pAtSR{HE|b!k2}w z3V$g4v5+4prTpIu_5C!2Ka}uah5s%5OlaeMF62uRjuwt1agCtwyCHp|#7_~<5b|F+ zF&{sGN;!o>e)*K)2H`5a-_`@*BbW5V}@zZL5HeJKA23G-X4l>c`jALL<}AJZU{g=2)53MUBpbynuf z7Ul`(3$GUz36}_~gbl(K!qviNA;0xX`Rjyt3O5Pw72Yr0BkULQ1Eegk?>mA=B>a|8 z--kr}I}$!2JS99UJSXIbJ}GaMFjbf?yTk|A7Usx~93aA(L&E56}ANg!ztqj((6mrxEXz=U9|9#wpky$7#VdiFOQjUO#0vQ zQJ-l2DDMd3ti#gJi->6b)M{L_AddQB3l`CDG5nNg)mx83e4f-gEO|wUh?X~hwNm{^ zq&%F0Bl1?lPkFQ9cszp}5!|C$2jwxnQ)tEi3HM<7GOUo9hoN@3=z5Pg!_FyYz4*x} zQZMf}P_A{f=ir$Et5Jxw((a4$Gw)a^+RX~&u=3r5aCE)FUg(Dk*!?Ke!IhvT^{(VWqu-aI`${X7gN5dANlhk;nTkEMv9tokHl1^S*U3 zjgI$YqVv7K-2Cq6$b2UypA}!R!h9Cc3ezq;K7fnXFCY5VAddRs)@ww+Gw{O-IN8O_3rG5ebd)TTBX_oi@ E19$+FrT_o{ literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_mkv.a b/units/armv6-ultibo/lib/vc4/libreader_mkv.a new file mode 100644 index 0000000000000000000000000000000000000000..f93a007e4386056c15e9c5d79945e87ac3b0c4c0 GIT binary patch literal 90934 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 R-)krOefQhU!_CI`e*p4_>(BrI literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_mpga.a b/units/armv6-ultibo/lib/vc4/libreader_mpga.a new file mode 100644 index 0000000000000000000000000000000000000000..c44e80eeeba0a9df41bc9bd92d1ebff32cf3071d GIT binary patch literal 36798 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 U7Y}udaS!Fb31bpd(U$lB0dVoH0RR91 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_ps.a b/units/armv6-ultibo/lib/vc4/libreader_ps.a new file mode 100644 index 0000000000000000000000000000000000000000..85c1982adc95a722d2f2ff77a80419a365edccd1 GIT binary patch literal 64144 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 Naiw{G<%05f{|(KI|6~9F literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_qsynth.a b/units/armv6-ultibo/lib/vc4/libreader_qsynth.a new file mode 100644 index 0000000000000000000000000000000000000000..229464cad16570cc652aac2e5171658b4f83d675 GIT binary patch literal 28042 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 NM(cSaiuGmd`#;+YMLYli literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_raw_video.a b/units/armv6-ultibo/lib/vc4/libreader_raw_video.a new file mode 100644 index 0000000000000000000000000000000000000000..8a0e94be0c6fc5c1618a01a32d6a5954d33a0bdc GIT binary patch literal 29478 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_rcv.a b/units/armv6-ultibo/lib/vc4/libreader_rcv.a new file mode 100644 index 0000000000000000000000000000000000000000..f32397e4548571733445a18401837072b8f3566e GIT binary patch literal 22094 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_rtp.a b/units/armv6-ultibo/lib/vc4/libreader_rtp.a new file mode 100644 index 0000000000000000000000000000000000000000..9077709fefcdd9d4ce579f89ff64962d0a80b6cf GIT binary patch literal 121498 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 E3v1Ep`v3p{ literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_rtsp.a b/units/armv6-ultibo/lib/vc4/libreader_rtsp.a new file mode 100644 index 0000000000000000000000000000000000000000..8469c83f46990c9b69a139aa8acd2f7dfb610f9e GIT binary patch literal 65066 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_rv9.a b/units/armv6-ultibo/lib/vc4/libreader_rv9.a new file mode 100644 index 0000000000000000000000000000000000000000..913f980a9c0e87aaaf10f1c5ad525c9898be4762 GIT binary patch literal 21810 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libreader_simple.a b/units/armv6-ultibo/lib/vc4/libreader_simple.a new file mode 100644 index 0000000000000000000000000000000000000000..13c7f30dba074749127c6363f7547a7299e7e856 GIT binary patch literal 30042 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

' + Title + '
'); + AddContent(AResponse,'
' + Title + '
'); AddContent(AResponse,'
' + GetCaption + '
'); + AddContent(AResponse,'
' + GetCaption + '
'); end else begin - AddContent(AResponse,'
' + GetCaption + '
'); + AddContent(AResponse,'
' + GetCaption + '
'); end; AddContent(AResponse,'
' + Sub.Caption + '
'); + AddContent(AResponse,'
' + Sub.Caption + '
'); end else begin - AddContent(AResponse,'
' + Sub.Caption + '
'); + AddContent(AResponse,'
' + Sub.Caption + '
'); end; AddContent(AResponse,'
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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libtvservice.a b/units/armv6-ultibo/lib/vc4/libtvservice.a new file mode 100644 index 0000000000000000000000000000000000000000..45423a67002526bb3824a568c423f8daf6bf8f11 GIT binary patch literal 25376 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libvchiq_arm.a b/units/armv6-ultibo/lib/vc4/libvchiq_arm.a new file mode 100644 index 0000000000000000000000000000000000000000..b72a355ba5e47897881b59b7e3868774e1562b92 GIT binary patch literal 21836 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 bF?$R6*$|fN4Y=G@=gYk?cvdq3oqqh^o<+;h literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libvchostif.a b/units/armv6-ultibo/lib/vc4/libvchostif.a new file mode 100644 index 0000000000000000000000000000000000000000..814bdc27a8dd0f97c66fd34b36dedee7b5801190 GIT binary patch literal 98230 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libvcilcs.a b/units/armv6-ultibo/lib/vc4/libvcilcs.a new file mode 100644 index 0000000000000000000000000000000000000000..c046626388cc57e57899d11e5bd18b393984b6a8 GIT binary patch literal 25202 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libvcos.a b/units/armv6-ultibo/lib/vc4/libvcos.a new file mode 100644 index 0000000000000000000000000000000000000000..ddba002dafaa797265bf91e75fde9e69ccdab040 GIT binary patch literal 220026 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libvcsm.a b/units/armv6-ultibo/lib/vc4/libvcsm.a new file mode 100644 index 0000000000000000000000000000000000000000..b4da5766a1ba1d8654b5f25d38ea0f4dee7fddd9 GIT binary patch literal 20080 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libvcsmem.a b/units/armv6-ultibo/lib/vc4/libvcsmem.a new file mode 100644 index 0000000000000000000000000000000000000000..fc8dad69f09a4e852f84bb202c50bf7ff1555708 GIT binary patch literal 9600 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libwriter_avi.a b/units/armv6-ultibo/lib/vc4/libwriter_avi.a new file mode 100644 index 0000000000000000000000000000000000000000..67eab95c49ea43a2cd3dd70b914e62682e32a86e GIT binary patch literal 75370 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libwriter_binary.a b/units/armv6-ultibo/lib/vc4/libwriter_binary.a new file mode 100644 index 0000000000000000000000000000000000000000..9b5e9e6800b2250a4202065b0d0cdd919ce77d15 GIT binary patch literal 18094 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

quV{c%Px5(S6x$_ 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 literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libwriter_mp4.a b/units/armv6-ultibo/lib/vc4/libwriter_mp4.a new file mode 100644 index 0000000000000000000000000000000000000000..238677f6a72fd596ea0d989a28c94350c23dba8c GIT binary patch literal 104486 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 F{|~z{7pedN literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libwriter_raw_video.a b/units/armv6-ultibo/lib/vc4/libwriter_raw_video.a new file mode 100644 index 0000000000000000000000000000000000000000..924ccb57ad6a62d5ac94c8373851d5c4e62f6cb5 GIT binary patch literal 22466 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

cVj9Z3HEb#gzT@(dT}f{ zYv-80WgT&r49$;OuWulpO4ky;Pb2Zqk)PU^=)0wMv<1E&&&rN+_XuGw8PT0OwU{YC zb$^xevw=LU$~?qA3t?hcm3d@X_xUAf{Lxr){!3%#?yI3S?1$|bt{uic=o{AkcApM% z=Lqvnl!PE*?qFe_>2{kPM$I zntVtdE9zcP^9^$4v@4xe>|3x;HB;p&!9J4mq!DxWTSmj+kkZSYO^1rBK-u~H;NG(u z|IMkhGnE&a>>=c0h(~V8h{8*zUMqduX@sNwq-(@WVFmZBF!exwM#Bz*LF(7;k;~lU zq&rW8)SACY&e-_|dtBc?$=->+g*AKe4ffx^{{zgb_pqw}z;{lax?AbgUTY%Yn^CVXWM8&>#N>tc+}IP6%+}~>xBo+nWb9Qp37>G-BZSAx zFsRP6XGeVYn!24#u@6uDBr8yxD-?sgb)$4AhuP<6pI&j$JuKw^xkaf$F`s&wyD$sI z`XS_0QtZ(Uu@~7_;GV}qu?1`e!=O-X4+`8pyKhYU%kod*_;5YWpEEf6`MU`l-s8Cw z#Z*|JEkM3PdCY$BSsJ=`)!L!fnctPjehto`ouz9VC~A)=BtDAA@ytJvr^u!R&wK_M zk(rW>`7Ys#FU9^l!^uEqk_}N_rYH}p!%6OD(s!*+fkV%d-W||34szGv{SV}S4%wGy zKEqz+Oxn2%>=pi7ZE)yclGwL=|i0V->u&(56X&jkPxSaE(fs^?Xm!?HTt7t~h1+8*V7mA%7bqwEXLj(4JGM^ zeLKRSG05vN`tM@&xfuOHjJ}b4_DcSJHb(z)jGh;x7sqIw1NKV(b;W3%1NKVx{W1DG zG5WO_{dSE0Cun{DEPg3}5J)iJo4RJ#BOmE`jQ7;-lgjyxYkGBqhgmCONu+d~a&6E0 zwU78^ojG~773Y}6Mf)JLxrxVBWFw?KFEhWnwX$lPYk20!;*Owa4GUg=jcDBy8#V`} zfVB=&*(6|c-^Y10cG5RhCx1S5QdaZ)>Js}tZpG`iZT4EH$n&W79omS&gqK)}ap?hI z%Uyo!*V5O0)px@4wr07@wvYa9C-UT8E8h?(_b%>O z+Eva_tz_9-R4UEZZ9sfp*N$wpby4rgwNWO7okAu_1xN37_=+>vT6&reqFcy1L!ZOF zLN;zrJNtL1SiTEF<`PNjXgXxRE1c!llL$xaNwPmI`~vGH!dn8fK9p`?eM9uEc0EY% zd})6`@oaIZGf(N;=#_+xtm6pr@2GILZ6B-ne-`~Y=CQ-zOx7>XgIY&ZdnkLgd%{mR zpZy;_o3N|YCYR@lWL?EPw(UmxZ1SEl95vnYRfA-mp~*(0h9Z8+K)h17qs1TPdrKBh zDQl!MXu0w8Q~CF4SvVy=+27+({8E1p-xmAV{EA1q9Zi^dW5~~4H1o}#0L3E}KXb5( pPDN$aE6*pS$dyzc|5O(F)aL#M#ZPUk^2w)_zxE7Q#G&`^KLPun0c-#O literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libbrcmjpeg.a b/units/armv7-ultibo/lib/vc4/libbrcmjpeg.a new file mode 100644 index 0000000000000000000000000000000000000000..54e39ea16c50e2e686338388fbf2f7d829759835 GIT binary patch literal 14920 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 NP}IY0RF6IH{{eJ7?)m@# literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libcontainers.a b/units/armv7-ultibo/lib/vc4/libcontainers.a new file mode 100644 index 0000000000000000000000000000000000000000..ff35d674f4892aa89b5e8b4286bf8f74fa3683b4 GIT binary patch literal 516690 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≀wTLKM*bMgY3@F!I|Cp2UO+{ASbBq{IFTRHm~Xf zkFZD{WSw3K4r+J<ezN z7X5vi+39BeDZiu3edhg){}~gYi{Sd9CE~HYcGlyNNat!ii{{>RuC-_Jyr6Sk=eq$R zbevJEBXR1OMvQiIMMKOOaiw&|EE<&&BVRWb~}l8XVFxG3CPKi)fiR1r1=cTf~IZYaG%r-?T~G;J4iP}=DxznC$eVN)Oa&Payb zNiJ5-%$Tm+x&6#oNzgbk%SDz((|oZ2X*QlMFl!-joQgMVA&<#WMd*UlwY7wPIPz8< zq)(0F+FJOchncLJV8&izMRDX{Fm0KLU2w4J=?9pcweYEfoa^Cq?NUOc^41Vc#!KN- z2N@T`!48j*52voV8UDAz)1K|d81`x>_HWzY}(A&ixHrXSgbNuGh^3Su> zdBeoh+k)9G8UE{AH^#kYYisT4HBHH2HD+#Dh&ms&p&_ngF|#tXWz1|MtR#HoE{2%6 zsx~*4=>FWfft;*)cLnl{p3)Gkwwi#&#w34;#$lUjGLS_mN&y*4V&mHQvI)Nr?nUNK6AMIO)le1KX%H?UWu*NvO;&j)U2$0 zXTaE8YHWI`rEGfuIhCJZ-WnJPlsjl3W^HR_8eP$L2w$;d3FOuubE~is#Z}8MgQu>m zu7Mkyw02+X+8@Taqa5;M0kb@{}b^^DB7F@krpomuiT82AT9#(^@e6y{`NNqN@^~yE2i%@h&o2c2A zS)J@}Y^}}V=xXLYs;1d<{z1%^%=5Gk8{gqHP(62yijBVO|6jIm%CxR)KwjpSo@P%M zUN(7o{DxNPD4H8{F;HM#BD@` z^EDA4ZSvgZJ6AmKRXAA?Nz^;m3?i6#7f-%33hLL=Af-QpWf>#J`7gXmA z_-_)L?^>AtS;1EYe=YcX!G9Mtbd!IA;2DDF3G%jy^6~{&3M$(X)J3Dv%60@V8+wHP z91%3WN>u52<3f6$(EP@ia_<#9Echr9d_NZ)6vW~aivJy<-zVbU{x1@4Ko_RtvoOpL zwRuFySGFYZ^WiaRWlI9SONEXQL2nScSLm%mUoG@*BHTX%9|yANcf{d^I;mpEgKQu{gIwdgk0`5L3*ChTtkBLmI@sbnxBV~KP=cP;T=Sz zzftg@#D7)jLqb0-_^P0?`G7orl}))H3Tk)~NIFpvU+*e8!Uv3{(2`4;?8hf(U-4F+DTt%G^;;C0@nw#KzNKZ)(ZLy-3zgm8X< z_w*`X=1<-1^7f>gb3+8H!^$_1d%--P?TFeQfXSM{W-6F{6nl!ivHr(pm5OQ4i5It?(T51lKT{3go+J z&0BeVHsYPyzG3wqpYPt+V=X7>$8^UEel+C3T2YC?7Y8xM-{ZxaU^?9xL0Ag(Oam|1YH|;5ANC;q8(ilJ`g-!W!!`nS?%S^3<>OA^1jdS_ zlduJG4$>ClGMdv)XC5bEqj9Y6$PnJ~pLnkS(II^Rx(${ecOF4{ZS_#*`rC)cRlYo! zR5|c%XXU^htb2Fm-rje{v&I|s3|R{!H6m$qgo@%~o^&&90=^BK4PWt305$CE!WMA?)}`B+2i zDa!Rx=KaupVDQAcjRQl|?;RXUI^r3e@%S}^9+8=-t)*Ojx@w226FDej%8{hO%YHX7 zG~@9b2R)OR_m9lHy{`=7+_}d&2)(_7CocQxz|h3sJu`IX<9nif7=wQ6LHuK|hp^hi zQ%xC<4_SGktkXS@_79$1|0v3jI$ZiRY(yR#V!gs@>;(I-Q}R{i^u9cpl0Wcm^sfh5 z$F$8z8KD=(ynC32@znP%@HkP9nw2caPMdzHH^_VD)Tsx5MLFRAC2$HV(j2>-`W`6g zc^a+#x;j7cdO}7DtfTcRPDreywG1J#<+`SU7prQmXPhIU0jaP?*DkO)oCz;0NUWgz zdI)x`<*0g9k7w3wa>s?6KU1vd#!?lQv zu6>m0`X>GpTz8YjwG8ZuF0KINcD;}Aajq?>v?Nyt(k8p6vRtk@gpYSEhCju1AHpZN z7UJLQ;#F{>>-YGdMXel z{|={f3BsH=!=EslH!6wr`txoTHu|OkH5bnT|Zb;^-5QMpO$&HPfM#o zxC?9ugONb0S|lhHrUGsss^3Y$lbw7`Kb~I~=;nDL$l{%0;sD{VY-we5_0QCp#%}T08#e zT#eJOM>*)Gy#kufwRTKHgP3iBWoCeZFMhQor%nq4z6s}xbJuKG1n`x4V!TO#8zu$v z@}DLJZZB%*Fco!enl4O@Sq0GgVOq=#z_bgP9t%JX^T>n48)O1I zH9n`qfAqjq4?$Ig*~-gvC3@t;$5-aWRdA3);K_yyBB9L;C79Az!xud=;bVHD8C`3| zk-Q2HA_=?U%-7iT?J*+=d!rHXsDmN<;gFKBm?wl*MaWm)N&-(6+fz%Xc>>O*Rp0Df zb+eOxrf_M0H2&l`=OF!siZLEv23jG&L#L!_`vzeVv@5st!<*IbK+4`fhCf+Ykt2oT^=LaGR};mj2D zWtkC#P&9(Rb!G&C8ki|8C0LTz;MkNLfA}C)*VYvS_-Y*9y8(xk_cE&Zv>EyWz|?Ua zwaQd^tfL-_O)r7DY8B7XLnkIkfA+_1|o^Ft&-n zf0L!b81H^H`}^3x(-J|w7X2@;YU6KVo7!INnqo%TBVhK1M#0(o70sdw2kERArtU^P` z;h!00)R!6)O0#q3(tIHsvV&L{XHw~8aOf-em(yG^Hz&{7;?K@GMq`I;rqf+Y&V!WW z3boYDEt`v#a#TdA%Y6wwSm4I>p3B(qp0TOa$nqPlDut1DfN8S%r?gPIg^V_T=r1bO zR=3Z6p2GL4(jE7zJ6u#tWu#%{%9rC453T~<&NE-7DK z5GpCei`OmT-q!Yr7JFqaFLCTP3*l8Y1vRy+#Au;+YgZ&*bV+$((Hg|Yr7<x3JTYb6)6=kW@%$5 z!KkH7%#)(QG{YE6ZeevCz;))ZG%mt2BM#%#YC8*q=IVQu-U+R94RY1k~Vk|?Pt zA7NoKMzT;zS&1szvSNrIgMkVxuc$2_GqR?-VA)DUtDZ;Bs1CMTkFz-$BZo1QH>R`$f$GNI@*|MTltIWbvpQhHfNVv19iHr5bahly~Sw(qGNqKG2Sf@GGQy43W)YkGM zoVV3Qs(*~A^pC6Wl5*P7go z!O~EXx!{o+nCvf&Wf&3rs^-23HfQ+c{bqTf(5&Ih;Lw)RgDG>^S-eBw}Sx2bVp=T9u%^OI)^?V-w^ zhG{sj1@PZ|pnJy00i z@jtQd4(`9z`xY}>uPt}pj*X-zjEJ9PF4c|DE;!n-@D|-VnEE1%0Fqt`M_wNs`J?yJ zpc&7ncYER37Z`sz&}wJWqvxl}NG3Dh3?_b{kQtPWm17JjqYPvuJ?Cs=uyc%G483OH zg;6Cj)qIRM122*IWR&0ddx-c`_9s9@DLT&n1dm!~OL#zViD04NO2KMDzE7mw^@0(> zZo#dB{ers$`ILd_?i9RR@SB2%1RoSUBKTv$rv-l@cubIwz$usaeZ=1io)rAE;D>?^ zG$Hxif+>P&g3|?kg69fm3FZo3AjpOBDNotI09OmG>|Q`$BlH&pm3<4s?-BaDf(EN0cd>$g?qziq9&~u1*ljawCk;H#m=n^7itr1$;u|S?$ z0|oMw9Sdl+1`6n_g>SE*TKfdycasL+HzZuGfdcx+63%bosNai1zeY36 zc}q(EM8RZ1uV9*>I`8nuF@)t%YvKSozB=$&8BZToIL9Z_i-hL+OS(qrokH&x`XAXI z#Qt0d)vOM@rjL7X{}2W=)-CH9r;2(igyz=H5gN^?j{7W+(B$PY7moZ^^y&E6ZdMw2 zHS(QdDP@Zb!f&@Lcmevc9Mlgl38MPt!*7@O6O7qmTY%*)AHjDngx_c>Yl|Cc4{`{7 z)`xiOu;g+4w(A#~Y4%y_$8Z*j_0a}rrGZy_0rJ>at;34D5&@Q@zmn|N}`!8p2G1ueef^iO6F!aawd5LpDP2@k+; z*N=Ob<|B;ydEu;j`4;@B{w{zz`Z0l-XAwZFyd&*F?t;8eVh?f%^7ebADyF2mH|fRPzIIt(7Qx0N%W_6@gCwp!Cc*^%JAyqC5b+7V?n0Tp+5BlZPoLxhK^ii*6Rm#N0r>;NY9r%Cy~j1xSenx!quSrY_6ZHb=PZO zfR5&==hV5hj;9xu*3C|igL4@kFlTrXUPIZU9$Ux|XX1STSxEvLksZTuL(2vXA+T(C z69Qn_@H+-N6RL4pH})aMDCjZM{wF59#`$0}*6vdB6aIkqHwvJuGx1XhG171;PROdG zcNanvy6H{Gr1*$V4P4HIuW{~~$XD_ScYlN4`;k$?*BPq0L-<3d)W-48pu*20(CvK(96-yis!nDc_k~ii}OaJNXuzdLz|%3Mgl zCpigK?YfA5Z}L%Uu$ca|WEyw7me4;nSttLe=%11N6wCK%`hA+W6yVlf#r4ejIW(!O zgkCK^Cxd5O$nF_epv*5c?ITYpoG5+X8=6EMx(oIUa5Zbw2J@0`? zJ{!H+)l09IoI-{Alw?R?*GTybB3fMkItzJD2zP0&LyB`kxLb2Qpcp5FH*2o%((6v< z)x`C^Rq%U~SFvsm)1NXST;HU*zR#(-H~HTY;(Cz$Q z`ANZ=YiRZKAb zHfmqw*bkw3>331|3Kg>`eGl8E#8H7Xi_>3XJ|PEB#r$-x%Hk?hY=!B&nNPWjDNdim zK2qVRMVe4LSA2F=E4Iq?HSF7~94u%}`Vz)$a!dl-nknqQt}7huvc>uoCsp{YqZ?F6 zpMtBR=DNz!1jg4KQ~G(X>~u^)CWDSCH&OFlj&8)^mFsvXd!DLWmc>@Lij=y&6H!=} zfz^B^ys3Ah#@SLR7P8i7>K~vi z)7C+Ek1InDAwFH5q-QI?mOhg;lc`ffXL>ipxz5qqxNc;_qKe=Uf*%4uCy9g96q%IPh!fH?dwX zQElT)=j&_NrHad){zumFItPc%%=9;?+hLHf${Cj7g?jy1?>P5M)8 zv-J*k{Fe0n6kVr?uJkozt5?L9^lJ8j2FEv{O@I0TV;UWgfY_bBpGAnMd)`G97R}A!gkB|Mrnw>$ySC70oOIQy zGj9e@YFC?s4KjnD^0@jO%*)KR&`L2?o5^!dbvHCV!^b;$;?3k~V0Fzl6?`fF-RvGa z;8FSUOxO+LOydglzQozLz@PF%Wae~h_ribHTI9$v2Up$K0po%#^gapZaf^5_WB5_H zr1=zTdL4lOdk~zQQH+02h6fVHXZ!(zQ!*x_WSBAWRI#2W^mVsto)AYWcXA^t!&AW#)050q zW&op$k+(Kmf?afddAn; z^D;Uh+sL>IIXg41LwG_)2hzDR-h_^c868OE&X@cSisJh$+C=hW`jHBB1m!S=duZs zPk=+8{XV>mrg>iGi%@I4^I~{YS-Y3Rlg2*;vSG(N>lu}W09LGuN>i6s1|j-$Ry6C{ zjOIC$CefS>D#5INGnx&Dgg>xi*cfIE+ac{~Gx|k@j(7eDguxQ%=TqBr_;IUVPDS;l zsHJnihZK6b^0F7{@OJLXJjy7fC*uzCfKCm-E!%-Ofd;DEUi4UTiOe9zmaY76;*J zMaUgEmC*R8f3&@0GsYHb-HRA}haZd4gXk4{ZkE0ZC0$$zmaD+>vdN<7X^UwM$5!}V zG?ljaZG^FY#=%AN5J_6_eZ*dm7=Ie{HmkA9j6_{7*^T1TB|X2S1t$kx(l3@g44_N; z&XOb)k#79jCD))&(*NjP>2g`_Dqi(uQ%t7ucpJa`<ZRVbWynJUlK-jjf@UX0D+&IhrhiHqhyk3=2KSO=f>=vF`&iFoH2C9OsX-$*i*(WxrQatqXyGcFfhg~yOw3Mw$6^p zb4*3=jTv7DV%ah#h!|`@n}f3F_yKX*DN`OoMl|&%9##H@2Z>aV;b2h*d3haS7;zmO%15|M zdDl_GVKbEQ12dGem^;%E`3Md+=k#x-3`a~w~k+{TB_l{ z{@0Z8nvMf;%<|*xC0jc`xh3;I)KYODQ*m*%7B#yaVTg*!lJ$Oxjq!2o%wf-ijiyz1 zm`1`qrXNPQ9lfR(0_wV(;YUj^ripKFc58>4-p4Ib$6Zi6!G)_|Od-&?`HsGf4R*q&1E}RR?Is;kd>1aI3I{37&MZa zU>BZaG?f}N{KjS2IJMO9HC^2tS(zPhc+s)rZ0brX!j;t}s|#RcSu>Wk-IzwNFu>eY z-`AvtJ3Fum6Lw%kmG)@i%?-WS{}lDe4K~Bwd5hu&(ulOWB4k-U7LKsfj9PeOrMKpe zy0$QL_&6KUQ3jdu#!F_`33qnkOG`X5ZsPK4TDYmLj_Sh7v!gR!Mbp~VZVKAo+1Q6& zI;9hadm<6+O&O|yHF0&(vfAoZC97F+ropJ%4OT-6@ZMZ)|sGn_395 zvkx1MHg$DkKU57-o4Z?CUrim*siCuTV=IWIt<5yc4TpQ%!(8*Mx!y8X$#vQKfX`n5& z>P+Eq&vJYMfR5VOGq(O>lv`LBF03doincoU5<^>`U43A|9D-@p70Sy^Qu+Z$$PqcJ2yAhV1W^42UA3_lyFp`1;xT)RS*P(IMWAR% zp@p04+S}{YAPS%D#2EG6ft5K+HsY+UuS2I*U$3ZjK>tBZ&cp2-LE{?8tZ3Gh`u-st zt_^i|G_xzJo@jL^TEO7Es_TkRZLeW=WL)FQD#J?)RuyUZ)Pk21w0ESg18+ZhGV#KR zu80d?6TY@O-I=tk!urlZb@bMrM)UIyUJtPBsM^;#t_+qI(V?ZVD5N#@M%voqwKdB+ z^0SL@%jvI_ANi3-oDQb!u|NLl>bWAUu9|TvEUoQ>ft+8XPd_k?n7&xarE^Ql<+Y(u zcp1LRSc(sV%z>~StMrbUaSh^e&ZuuP&ToUE+Dusl?|s(9?H-zWRN zENl)`(e5#}s=V%U2(en&_AyHpi5V%QrsM!PkSh#$l+#Op17Ty$%c* zL+iD!a6|7Ft;rf6F)`X2sq5whN}Wk@`B>$&K86b`fw74|UkC0t8mZxk?+C4;v)7at zt-*(4MOC$^2YkR(Teh^Qn)8{>&~sBS*Ru%Yg2%Z;xNSjRojJv@O3;9IYwpB?%yD{I z;;nWHTl1LuwvFc86cfJqBxX_AxbjgKFQ4Z8fu-6QTQYdeoXm?jzA0N-RKtswYO1(d zwKY+ZX=sPKR&7Sd$4C?>($qwz6!OhtxUr`*+=A&ETMM-kH)kLH^`cdNR=;`0-Ji8@AMrOMIAWD3~B0>&|# zqd-yk;_8x`B3yhqvx#FctBqeR$yXWZ@QSNRY8=Z*_jYa!xA7}ITm@{ilriM6BXBBZ z`_>Y74(k5P{wXT-#VxN4198nQT_1_m4KmL>-VYM@_>uHR+90#A*ra zB<9t`yr;^=Os6N@u%%8jr&8U$rgt{&ww zay^_6PWDfahW8_^1+K>YmQ3vc1Ty-i&7W%%tp;0T9(7VpeAFcIkk|vfVzsC)9KSc{juNPnK$FsLo69M%=xgCgL`=g z;h%wzKiY`ssJ%qk)E^?A2}=po*$f|?U=}e0=QME^t>l1bn@`f2{!P+IcaoTi`a(Y@ z&HilQM9Csz0AVl0b2>GaI3}Am`9%CQBHqKnOBd<7Yki1$i277&yCfH z{epW0zbtr{;4^}1T|Dr=B{c1Dnf_eE#9YBr!PSE5J2dch2u*V_rn^RvORSMrHtIn2 zJsI#V34c%UZ-PlqlRsT>g!TSXt7Nl7r^`X@k@&B>+F7Q!R z*Z%l9Gn2_Ab21DNLVy4hNHCHI14M|55?&f0N(ezwu|pu?p&^MRAZU9vn@Oi`TfrW|w*}u5q|poO-B&PIaHL?F;K_nB1Q!VMTh+|( z$F+-?BbYB(A~;iU9uaHdVxgOexD~oY=*xv(FZ8uS-$+Eh`z8KSp?@s&ej?=jLg?QL zeMsncgtl;7Mma-?(DwwPCkS0hgq#^d*Gl>Yf@=h?A%gF#f_D=8Th;?YKO*!KLO(0G zkBIVrLqz$9h5oD1HVnBa*H1)xSm*&l4;Q*XXqp9+pO&QLKTYVVLRSlYf#4#Ezewm7 zq1OCNr-wS5Kl#KcM3l8iF^*B#Sfp+NEZlQBy^?F(}m`}H~AL| z-6}Ni6Pf?>@1t(v>#j09yN-pmX4$I7rm}{{#jBU$CFIf;OTzVw7q4nuV<@};ax>QB zF?t!^ya}(N5|Wx$G&h=5lw+0Q3rH*ZqQF(!(pB{UN0y?8k7h z;+9L@$1+zrPPYXHZU@xSdtddEw8iGvRF5B7VxeR*ureH*p!#&{T9w|7U61z9!Ne_Vt8$IjjxJF8v$kE62x z*uC$V`?bx!XSck!@m+cwvY5{CzXi^lI&fYuCmYOKga->f7<~37%v5IXT z=&45$h<{YRj9KCzm0tv2d`X@USoo4W#}mFJ&kbnsgZ>`UJh!3$yi+()@zHqf^RYZ1 zG0S=X#+X3bBP0Upk1@Y5{YQv&eN>)C<;Q+h-qVC(;Vb$fcr)mT#FwrN^D{G`|4oQQ z5r2iav}iqp3ou5~D!6#-J!Fd?Mlfj4z<+;P2NInSS15K6p6SA;Rm-VKL6- z_@CzR0mARx41Lm_3sJj(^J~OsIL~4A$aMI*ouFeQ>^PT#Gs`JNIOJT5_&!c9{)e4R zN>zlXXE$HK^Tip)<}T=B@f$F50gMC_e$c< z8HdBw%(gu15EFV!O9*81 zA0pX_ejnd*^e;pN8&M@?a~x+g3d!6yrIOjMI+^p#B-8hf63nL7$z3|*vnGWNuT$9O z*}vDxT?h}L=Oz0@>cxXiU~fMWy_GW?jcA|9pgR1%?}BIGwP-^7WGZIYBPmyLolLIW zAE+d1mdoL!xvW8BkVdgu^!1UIZ9iy|(V%8;y%;AoFd-k0OUP*EQ zGT5`(y^I`_^b#9JjXze5rw!5YC$Wjr%#N6bWBcxKk5 z+~48e)ZtCIjrV=}C+SC_(2V$Q2(|wp)4j1F7~jC4(j2p~A{h_X!>}JA7Xu)X zf#lFn*q$&fu@7RndjmqmwW%WCBv{snl=~7ecq~|l6F4Z7E%+J3wE+wSj@)Dh#$;;- z0u=7W5J5}{PDmg;qk?t#uZ{@*<8B(Ma|ujMwwR9~Ml;m984`x^c<(MZTdaXTD8?L( zSm``g5&!?M+4t&(#xZT{+ESaVB+Q;aEnPVfPGb6JoO{P_Ytj2Ou>Qo)iz7X5)ve9o z#N0cfwYJVqHu+AZYEy2kS*|E;zKu9MDX(az%{W$hT$3?aaFssM9)ORE4?H_(lU=6# zeqRlvZ2Ldv;2Y&M$L2X^3|xF)Sq*1v#~NKHY;fbhWhedeZGL30qk+q@hBVr!z}VlU z%z0cBmLzU1NbI(ZW;%`E&$e9w1Os;!uPh=rD_X^B^fu^JMqkp= z@`JvyZAmGHGJ2WO83V23@}p>%IdT#klTzEh8@*W|xKbLAC5bW_5{3=(gJav0Y+zt7VWV-l^L^XDr0Lx;n3q)i!Z~-9y`93F8WeTs9jc63G1UI^^8Q_r6^e2 zgeURH?9qk}_#=$1##j>>)^zC)pA>1w+F8Iz^(cV#=)^i6Icz z`xraoq&0*EB^-Un4ZDtG5Tvsnv*+OWWtn!>DvSACiYg^pz9*$8OW=S?N{(+sNs7h5 z>1Bwd*T~~5s%z%5+Y|HeV~vE(j)9~C6WM!Nd*NcV1jgA*R<_cff-f?}B#P$mNg_-| z&D`O{{~uz=ozxDxDcKszgxj>*C#+>$L=xtSFesxrb_$uF-TWEjr!Ix(1K`nzwxcu@o^TRDg#Pt* zlc8RAlB`MM_$)s9tHB<@$-bmr<5HkGD6QQPKqWn~Vrn}@wZg@X5f!Dc7v}1r?m!Kp zp3k(MVzih0e7Quc#WMMkz;z*4uR!u(*f$;e5UGD2UNqk<^md`yXS5Z>L#g@=o8z7~ z2mI}c$ltDrNj8G`opF@Jj~ARGSS2_|P}v9~zp@boE|&NfLAD#^Un#g*@J7Kq1RoLH zE4WYaRl$RTe-KnQf{=?JZIt}5V2+@&8ASRBp^F6RLWug%p8)X`!Aik11Zj)O^jbmw zFhcqZg38tq^hH7|n?ulRgjTkPpy60V<=ZUy6~UVY>0^j;`7WOLZNY~Ge<-MY?;~CL z-Uq%b@gEAN^Mw@R`wI>iEEc5uG^S4zoFjOF;4;B01vd%aAb6AD*9CV7-Ys~a;DdsX z3O+8#-#S?SPXvD^NawkXe@zfS3MyK8S3vw9gnmy@*+e4#sL=d9ocV)-{RN8!#|l;m zP7^#^@I1i=LE9(th$v&Q&;>+H{HV~Cg0ltB5nM_{zI8X<4$Jn+|9)?2vV7W}6 zCTJ4=fk1TR=9HO#X1rr;yLtGVDD7%6)eEK&7$}1*lqm@s$St**JN{id941(24$eP=& zeDYUzbYVG!$>Q8@=sH;Z^>-T|{e5AJl52HbT@>B14ZiNTSk_CoK-%xZuq7$5v|oPp z{Q>x?H+lXD-}41vV!W|^F=@(geN9J~p_Tk-$JJpYKl;)w^!J|zTN-W4@_$Yab@A0~ z>9MT&-58pg7V3_#Sb)ZN2td>JhUF?79Qf<^BJ6{|e(KRzY-f&4!FLRhFCcQ*b`g6= zk7p6SF#!7=Uxe+T?Rh8{(;(A_bf%@b(`srCVtL6-tLfgE|$I#R>-e)huO6u%Gec#~R!oh7PJUr_ALkFS=!g%P*fP`UEJ^BfTNgp5^43jQK z@53-@B_n-l?}GB2n1!%0Ou7MVo_dIn8zy~(zJg&An-j9>A>3t{6C@AUUa?W4`HQwuN-|8M^@!!n#(=V&CFn|zL-)d7XCLJG zoFMZ%n-Jr7?m=nk&comjI4mi{p=ETY^9+g$I_KlR<5WUIma`gF4>_IS?Bm>on6Q(N zn7+<*v~fS@WrX`XE70)S&Z&?vz!`@g%yFWSKhUAocCK?T^nqa#A0Og|N!<67^%le# z!z6}{VG?ibjA7DTg)u{bFsu2$H13iIr7|soS0OgEf z5*?%)!=y!&zlc0Vp-RkIPPFt5A7}?$`pC@bgm@p*vB5!0LAqo)o&1 z@#{j6P}$2cX&K~M&fifn+j$cIJl9Nwa4 zI+1&O6%h+Kz!JF7PXHccvhm?p%y|2b@O{&T#HQu1u#t)Cf8(&T&Q|SC+%=G$Cgsit6K> zg!r)YJMi?iJS7mFQOU24i4M~qWVUj)xx<@0kL4*vb7#z9=VCEqjmY9*bK5m++5rK( z?ma|>c2MVY?j%#F9zATII}t&jmD3DC_ET&fyAOJ1APvdvr&wDncRi|TkG54JZRQ5i z5d^809fHS`@;GORL!-)g{VZ|{e(J&b;-k)nnNVuy`k5l@0IgLTpd?3%5V0Qov^dO%4&$s5+*H6Ql4C7vBp(dzqlJj24plhq?RS8^ zKrm>=S`j#- zo|`W|sYh)_+Sia~jXaY=-=UD*IJGWCh|{{fLtXeDMeFhomt?*!(YmN?{A$4oN|z&) z@>7sSs(t>*<~a;9vKR5+L}|ky7j2NF$$q41O}YP8d}hC~XX@KOF%c_F{Wi09S*r zA}#|1Gr9?Zu?S#9;TiFEP;)?y`xXM1BM{+hu&1CcJzb;KVeyCVx67>&>m?x(c@iXy z;Y?-U@)5wk$exI-QNF5ph=rNJ_zJ{COYraKESkLIri0=tIIac(+6a&1ZqEt^mLsqP zf%0|)Sfx>W@$Y$v9`!l`2M`!RdoA9-Q=PT=Pv6*3pKswf5NE5T8u}t1u^VykXxc6Z zKWEcPd@a+8$O+d|ajRr3#=E_M*3RkdtciD_Xr38wO*{-%o*8#f{1upaW?VOMFnW(? z#%&Ytg)TfZHcq?%d^|JHn|Lz#cm_vK%*B$&(^)q0WmK7`vuNTIxYY5?_)^9FQ1L!w zOSc%}DpDBgAM}QXgy^|AJP-@R|8pjjZa>^P$C^dry;s6465oYUMA`|1X7-OL%g#Ya z55Rk}@^lR&Nu5q_;6ubGvr5Sm7tH8N7)mCDBzc4$mdMWST*DIrNJfl-qz&QuF3ZUg zCIKs=y8=nF3ljC9utM<=4dqCVf(UU`P0!h^P*A7PcXlX2p6DVmf9Nt>n6Vxua$-qJ zFk&@|+lH!^OH!=Nv`k+NxiLfGCA-$1KX5_tJZ1G7HD;${wNvbI#v3+Ff$1H)JQKj2 zCm9dx6O4!TiM_2zE0QDlO$>DuaHv}~gh~~xBTQGp8bY-S))5xySVDu2#sBybK?oM2 zgi4&+LX;sbY_1We6DY3^Cvp%dFWIIP5!MMf@%_C@zy&&p|LQ2he=asqo!4lsPK`Q|DlSSOJHiULJ5XiH$y_9=a6Nel2Aj?^5Y8aN7V0iD*mg391cbfbR_`_|$*?V=tM*bkTN5VPl$ujeI@M$8efXX1&c}<2vuLmQ$_&wJiTH zvn)^LHXLu3|BqOo^941A+P~2F9Gb`4;M1?MosP?KCkwlF?N}UhGj4^BaKhY6oQ&fJ z77zVu_<6tTv2#Y3jcf8=c853X`(wRrWmkI}XVK^QS;b>to#0)(G!edV>6qw>Whc#! zmPEk^pX1&?T4iPB-k<$jS&etA9eB<=wrsZd@qe4;{kC1UtlB%PZ1&E%-pgj~^j>du{0o6^fBjk@9{XW9@yNl4scwH+J&+nVS-F`-bb zy+!#RugA{+Rmxi}To7w_<;wb=yAN8L+v%EoNqrOj38XgjrlzK4czP9lbAL!bz`7xzyEw)YQ}X34+Ho(F(M0fTnW!A%&Ym%? z4lXWXgLei@LZ@4aPEBr1V?P}GyxzrSbBEbNk;?vFcT|!wwOBD7tGrB2I*W~^v?Wh! z%#>BFo-?nP8{Y(571EUJ%QNQ8KYP0N-TFxun8&g2ObDDZZ5n2BZ2F9|XQFju@ZXBB zL9A$w$vjBX*7Ts;EYdalj~PAMSgbYfl3a$Rj!xp16lEaBwLiIUO}U@EtwFcEm}zot zoOc#n9Agpv3=YSWl;IFF%R$PWIJ%@y*ll2@mRLK-_kg5qP1cGRfW+ql;`6paCT=eW zqPl#xin8VYA7aiPU)1X1D)sX?8FvjXxv@w+ypG+aB02Rcc&v%I=?CM9JgIvVQ_O7a zn1>H$%uqAiZONXL$&B>4kutX{Bys36dz-JPVEOE3`C4S^4L3=Gjdt$&e_XR@F!fr+ zOm-RYpT3`rO=#Bjl#0|@`kO0p59LW*i5@t2&iv}>v8nuGNpfo@Sh$W&k712ZX3#S^ zg(1AD3>f}@yEjkL+H~+aQ>tf9k4>pPbN*Q~&hDj^Dg2ndbBR5RDP;b09?y?i8r345 zLcH0B8DH&|9CurU(cf&!IcEP+qF;Cc13Pa6aD7Tq?B}`2nwf|X1WdscgC}#njUeS_ zI^7X0U+>IID%;e6V>zXZ^pxE3X)SvXj%nND?QwPOpi1o7i*H1QyXn;py&e;cg1xtu zsNP9>7D%-LLf2jHc;ueFwPjWEBW0?`PT6;(o*Lt&ELjd0^(h;K&6n6?cbqLydT4Grr1HmBz=!5YaTupF{ft6*~Y7UQmL9nhL_nCoQgwle8dW5~D5#tM`E^xuYT?a(I(8&4Yi?|asAm4O9eIhFb>OXD4*@75Bx%jfN4j=f5apUKig6twpD?EXsqwYSu+GZsl<%Lx%e`zuYM2AnDD$=#F0W_j=LK_o80} zZN@kEC%xS({k>lF-+R%1%nNf+pMJe)wKZ5>iDWyI>$$F=K~fWb*tu#at>Eh03d-TS za=kun-nn(ts>;S4`_?P|u(-tamWkq0Jn1r89!XPQ{f~*&YoGG(o|NW#tckxVl&5z0 zl|{npO+`|EYNGDt3ea|WBlQoA#6_UJ7#{76N8$!zq5fJZ`0;{M1giu&Uzv|T$q+9TTrAik$a*vVNk zUcr5WuL>R%{DYtm^`)Fl!LXp(--UR#8`IVPE?|++WrF-skm+iF7qC)jwZ98Af7N2T z+TR6SAhg=w1-e0K+9i>%RZ#8k0?mG6yxQLdRKK7Bak)|PHw&u$U5HovyMW)8c(uO^ zwA$YVRQtPtuS&Yw-vwIj?*gj*T|l+J3#j&Y0oDF4pxWOBRQtPtYJV3{?e7Ar{arw{ zzYD1LcLCM@E}+`q1yuXHfNFmiQ0?yms{LI+wZ99f_ICl*{w|=}-v#^$#v|KB?e7Ar z{arw{zYD1LcLCM@E}+`q1yuXHfNFmiQ0?yms{LI+wZ99f_ICl*{w^SmlUSbG-vw0r zyMStc7f|i*0yYZYTETpu&Ub=fso;3QlLhI0jq+y*s{LM|=L&tU;Dv%q1Zfq_e9A{Y zaJA5v3tlO>N$@LzcMH13~V;V!liwCHws=axJB?5!EXrODR__I{elk)J|?(F@M*zk1z!++QSg_7bc9NM4hbF>d{4-MCB#m1MMMs6NO6Y2# z8-!ji^m?H;2>nm)+l0ID&*Q7ywL=rXFS=Zf|F`v5?lu6yQml^NdpfJp__rcuAWmH7 zmH7yUw^b-Kx>6l`(NFG!ygYC_sP-0q8XxUoKFwkDI};I%u9SpBs4u@!!ukT@^`-TW$wSso2gbROX%3UN0ud(6 zw5RddMwh7OFlmj5aF@HM9QT8WW4U}TW)`;dTAU^ig4P^NjtB#Cm^9wgy5${$JkBf1 zgQ{_Pn-Dg65VTq#k8NrWllFB)m@w161wP)_n8T!PLxj8B_fanOX1S<(yxhAHW*+u4 zkKJJ4HxbOiG@cI#8oob|O1+o#ap41~qu~VDl^FtPn*2WycI)>M^s7M}^~0l1T)&?p zjOw)l^nuRcbA~xgeff;yY6h$NByBF;n~(gi;bE0S-VsFPB7P)J>KDdI-Q4mDFk$#y zU=9-;Gk)yEi0c@8QuL&W(TOKV$3`M!qtU4A|AcaEA{|>%F#(Y{K7B9g_8F?Q_+HY% zXq_nbRdP?Hv;VAv+}|0nZa9cNj9qFEV5m#wG4SlswVfd%RXnmj#)~*B^NXsC}fCPUk*H@|!dxPwmxQg#C=v ztLAH3uk{^Wo>s`N#QsX?<*SVJSkY~&Tx>^toBCyOS|M&v^rfzd)t~y}%G}XSoeQEr z?g>C&?$h+4%*@_#$mfgP-orhaE>vi9;eJ7**=N{bA6MW!CEL+>Ozxv7=E{V|VWmPZe ziO;f0T1U-6EQ3hl1>JZDkjcLENA;NV zST`tt`s~Zh%8ve6AF%sQ=VPC7d>py)aeU6IquYcre&XSmAJFxG0&U2#Jnw|G?kSNO zO1=-{nfqf|9`#@uY>xoSVZ9GQPmW>qv);QKtvQHmPUZ&LJG)-?&VEt$&f4J{JAKiO zJ)X#oot5_0hogHp_LPS=_EbbRV&Ck>o>#axx3Z)A1t7=Oyot~yIs@*_rzh=BDT8C?dWy z_aU?bcIF09lxH3)=u4l-66+u#t>kk)K(Sw6nGK}9b?q-O}2{5efX2|a@7Tz~0J6uK47u?}A8!GCs6D&uabvWE7w$}2G{W@}HTUowJVBjSDDnwS+WQH;-AT&6`YEm_0M8>ecu_3ucpq}?z5f591?g< z78nKOMl@BC;a0c-V`Pi%zu*DNQ%$yzK`ZzLYH%S-^#yk!lRx%7#0P@)i19CC-8Q3f zC@Sz{{NpJyvwZtN^b7GzOaXt}pFjlpMC@;8&) zlo>@Bnmtd=DiDThFHruZ;84t3|IgvlAmnXBDVwd*FIfS9q3!@paF@YcLx98$1J{Wv6H08Pt5E zXBE5I6WdA$S;v6w9c1D@5xSu@C%8``dLGGU; zLM@3LCu-7oG#!L;vcjZY$W|X}e}K9SYJ%>LKi{rKdXAc;BURYS39)4gY!>6oNoNlf z+U(o_ieXi=e3UupJCG9cpJv|xBIkLIr_)u~%J~}`eX=6_Id4*0r9BVQ94kQJco7W; z@AseUxdZGu^%QWPCyI0{=T^4s`T7GeIm4;+1&S+>^C!0PLJybCf}EWY{^g2zIHwe&z`sHfdvfUW z%72j}p2^w9rT1bbZJ!lj-?K>7AcHi`QWc%9=@$$=&>DQi-|FFKWO8<)`TcDwY~^Hg zqP2TGD0HnA;BvyCk}(wi1yC6dZJ~!8@y}N?FOQSj-{fJ349 zb85Ju^BJGzl&=gmI|MqmE35T2G#R}cRDJp5139|hro{4VfkB=EDpI>!^=Z){8nBYu)rbl%CK0nQq{~+>O`45A~&i^I&J^4oHHvSl$OsO z)BgNlqTKX+-UtTr3!rBN_d4n#nbwS}O>mpd&x3{-u5zYqXH*mGG5vDrXa)H@lXK=h z2x}J}PBqu|KyW8o)tU1k;+^1d=;G9V4<&?yd=KiJ!*Fh}AIf*myBIu?U=~Vt7P7eu zg1gASh&)9>{s!o**ax0ykl#^sR=$mJd2k2Iy#y|Atcu`n%2{22|C53n7{6{B!j;wt z^=+ZxLeHtll7AD_wen9!&Fy^k>rVc+p`$mSzD|7kuc{VV$x)g=8Cs<07eYoLzYRPY z`H!N;nfcGDUgR%KPX2l{L{>hZbwc?gklH7oBQ%_kZ>gXc8!!&~<*!Du{qz45|FiRh z_&*^3Rix&O|%C7a3osGF6DPct>9N#(=xTpg7r!y7erC9EZ=Sf`?IBgj6gR3 zA(EY(<$IJ#g@|AytE6moy=D}WUo^>Vcb&|MsNH#F`Todc)rIk7b|Nx{5usApF*+mr zBzvDu9*x*6pL%u9+Sp^LZQ(%%t65!p4H!l>u|kTr3dw8V$%@*q;ok|$|HYjQj=BUR zz`m0WIcfn4x9{pgY|&p)Kl^T88;evU-NU>^{4%KhEfxC?2AvL`*hmRaKqG!2H_OKw z6<$bXo@UTy7mrdxo>oGXUO%Ru*64aNY*Nhy@>Z6={kz~V-iG4rO;nIa@hjAS6B`fj z!mVP?3Y~2h$P(^+w6CE=&(@|=ExRCw-6Ou|tmF-QC zC7k&77nskUU-Beoh8@!iH)w?yu>juFmhD4e3rem8uTprSTjA+oVQNfL*J_1P9S^EI zb_EXL8d#c8aHRhZ36{!9&lJj_i!1b)ULFsg+b z{EV?hYBc;@jfO1c0%JTcNp=_WJ%)mPnB4aEIux&!?V_?Aam7)VdXS~^Ij&fZ zFM%xQ0%;$jlq^UnSIytUn$bB%xf+gdP?w*QRCE7L&V3Ii%}HuNd+Z6EM%00a{k!W> z-o!5>Y6f^FZbx7p16vVz5`hYGo%}6O^tN;IcM%wdIdbyj2+U;QIRsWAaLP*voXX~p zplmg|9$7%yFC*$6FibM>r~MW&W&E7{9@PH~@L(i()}TukNu1DF?K`38v*3z;gusgo zP|B|n7)#p_IAl|U=`tnaa_TyPeYXK=Q4sc#-%^D%bjdSNVdCGB_Im^>n0R^^(Vne! zV{ZjF2cH_2)rny_#-2yDP^~vnx7Wc{LYeOrgLm>@5jDxgo$kRzqo|L-#Az891wR~W zPR3=G?FI`6;ACNA#q-d%?`hhuPzqo*=NM=}q`JfLStb17x;=h1V)SeETn?Ygt*8Xg z%$F)RK|7wA4^<9_c04m*tmJQ!JTre;`3=PI%=~U;1{CI*bzbF%$jvj9SGfqlv(K{1 z`%pU1KFyU;#PIA>TZuQI>SLUlZ%mnpmZk5afW?sYPrB!De}T+D&<+Oa-GM$O(i5K} zx*`Ki)#-Bo_+fzm`!OKsVIejc%XtN0PeGy9jG+OU3o2k?^Q*K|EEL0zEvQ8L; z%hmv!UN)#gcA7<@1LE0~Yls}l1{W4oVW5kIl-yA&&!D&>D$ii4gCd4VUS{RV&KEls%QU}~B17{WS^ak&zSCj5YmH9T01 z6S?t&OWc=7ko}XSM0vvL2a7q$xc0yr;d1Pu>ORpp_NdT~Jx(@`Jx-xV4=e!8K;iHN zqB2Yh(y0|Dox*Np1`~n1vaeDB}6wxpzd^(gMb`nk$%Vm0j4pQ(Jb&#NynU9b< zNbbgoJOo~EU5*Tx`kYFgOVFv5s}82_!3pIEI`v$Ygn#>R9>xjD9{@hmK?emyRUtLJ z#_@h03baJA%iimYX-u8tiEs&LEz#Ip#;97b~%nch1@!iJZ0WoQYmx&M%@MI&Rnrd;lj#!()Iw68#MDISCUf6BRI` znUgQT!>TfM+X1>>=b6T08I(=V-hz1vVmy(rlp&a~NCoE+_=#A=5-69tnyPpC)>v1S79@%u8!vhv>hyX0mwBiz+>0#7b zHtHKW`1#3*K+xny&}2l=n;{2Bo;f(2_uw?$VCrEiVOrnt8(qyX zGVznuXkLP%{?{c*Q!1Av|HOAHKjmvoNsdTT?HXIsvZ@ij$XjCa6XR!dIRZZo7sEpc zhD(g!W2CnbgjY2-Hp_P}-5qbj{B}{KdSxIzR^_Ws`u*|z|)(>VzXJ0YyEbkLn z%vv_4q<}Ig$AC!8dWy`(a zzG9a5MXSvFAn<3v4q*P$v7y|Eb%QPwnCu}hb< zx2#;O*cz>+OPf}=Ew^H;$}3XuPt%*uj@euqcNG%j#<}_?_&iwp`Q4-7ceABxOL%N) zQ~k0wD+Yfe%`L7$EZ_1>YAn68FNH6Y822V)W8<{>wex14GXuNcw0jcWFv>|uY~|ur zO^wY`d6&x)4(68C?N)4QYfBqEg~WZA#FjQguO%%l7q39uOOdZKz+D z+-8Xlk=$IUy-T3*w$)9&HYZM*Kb^bws-|F1ZZ*_CH+DwtjJfmiWwP@U4oFlX%UkgC zV^a0a{zq=$Oit0ooBg@*UC%LSzZyzw_asW{$`#GYSQ8INVwztZk*uk2T8+-b=TlcLYiwT9tJlo#`1llwwXABuXZk+L3rcdmrqWSK z?aVW)jJEdGm zR7YEwAZ@GKTP|JFCUYdUW0d6jt1eCIcU@Xy7PQv4W0C3Y7=_!g*)wrp9mdB_to5Yh zbTk?)zI)l_HU*0s)rRt-HtOM;=W*{Tdi1Mi!nze(x|(f;HGwrYIpOvQ%Vrcy0WXf| z6SEVHbx5kE8GY2~_@9c^ZE=iGl^AqJo2+PA+-Cf%aOYfX@jAF&(jzdbu%srR$MRAu z!-Y|Oxlh(kOrC}n4J(>gpd$6LrWL(C1!?t?9kFmV#1au(R=;v(y;|WBa!pmPfoR@k zpVT1eDVIBz*kXKYG||xsrz|mU%2QhX4{^Z~TY1doKz9L0lk!Cqi_NcYX(0w%Ux?m$xT%A$G3 zj45^VYiB6;0g0~@r{GWR3#PU0vY5IPNy=ds68Gxnb_(+;&j#|P*2Im!s_=1F5|nbB z3l$eKq^9&LqnA#2)Jv&3F6nUxGO}g2?b7~ zhN(qj8a(2_c}uLJzP%oDa4}jeo?Mpd-O{SV*EPcJNJ`f($s$wS{pf1)9zgqk(TXK* z>cnS?+LWEtKBl4^jVb-Y;8x{Q)OSrgu0iPB`n9|-j5SRtuh+MWrX`l3&zH5V>UFn!oXwP^@46D7B|g@FOsrYm2V9B^ zD^}5@*3f0Aa3d3IXlscr$89+}n~jn51h(Y!yNih}Yi!40Xyg)@tb(b>Kj94~R^QNT z80-3cZkI4}6DE#UFz#91q=v%6g(W4GW0=@7-eo2+Yc1#=2BK8*Qhk-cB^H<3i(^go zxai>4&~;~+LO=>fGD%#?lSHN*N}xwlJXxwobGPRiJQraKTPYmS$ZWyX#(*>aW*|bn zwc!$Q8Abt~cQAZn&1{>P&Y>RMEcG~)q?zecvzpMYjD89qhnv#2*pjvNpWPn~KOB#{ z6h0&B$B3k&&@sIn)X0bC;W1SChv4ld2VJarrLG=qaZv-bQzLFW|HU3_@M|dEIk|n- z@CPDu@TZxnA!mbkBRt4V59Kb*3^`MSOGC`VpU8QT2QO%Q`s0ws&zj6o!PMY% z*Z=<(er;ej;5zVe0-@M8^dmC@XxfQ1_ZpfuAUzFqNBqsTZJhx+@lHEk?L7=2P9N9> zWP%FSYr}X9{mxKc;z+a1?{xatM7(-*9bW88Oy=(`FHthH9qVTXKlQo}Z``Yoj`XTs zdkKbPzeC+ml}{r9eV9?ADX-dfV$xVXeou8BUMt61?xHEDr5CNNG$fAcU+k5BRWJIQ zUi4Q$o3Tm1GxzmMf3z33BUGD_(V!NQ;MJK$^$PKW5-{-pj*Q-oH zgQa}X;NLigqNyH7YpOz?Z7ZGwkAfo(S%)Pu5^&IrVhHocmelL6%5mqp}iCpw>aBm9dCNUt$ zB+?vPMEnk*z9X#SbHxu05PQ%pS~$QoL+wk43a~PUX_&;17n~wkB{)ZrKdUkSg@TI( zIo=uHE_kKjX2BZ-Zxy^t@Y{k<2|h3Qw%`YXK3mK0E0`xZR&avg6v49u8w6VgzbJUG z;P(Wd5`01MSAuT{{z>p-!A$fU>zgAuQZOnwNw7+AzF?c+dco@jZx!Tkjg;I9PV z5LA9ykUk3IfqdfxX9=DoxLB}R@G?Q=w*dM09X#fLO7K^LZwUTL@MA%2bky|~JX3JK z;9^1LX9aSSTFP2-sE!KIDZ zM=(!N`71&E1fi!1)(BoGc#$B#7DhQ61h)!upFiV!1oN;!kS-FuR&bl(HwAYKJ}UT> z;PZlq1hLUn$vYzW7r~DNJuv)ac>%$YV7B03!HD1}!4ko7g35mgUtMT&qZD3Wf!91oH$(2o?#J36={^608$EU$9<~ zyZ2bmrGi%pens#$!TSYkZ~-L$1%ej~UMl!i!P^CQ2|gtFgy2sEUlu$p$S?I$KCjV4 zm~JW@M8uk1B=k5UZYw7W%}scu&k(vs==nl(hX>PF5g})b;J*t#L_~Ry3(c?Gl75AV ze6I=JBlPcteqZRn3GK&&1M>|dBHu_N%9|p%NN^1ieCvh2QRuG|k?#(n@00Y01%D** zzYu&|@IygAOmZlfsm#2grBOZxMIuL!;->4${=gWz8Tj|yhto{aJ$M3h@7^mxHD1k{{#``9TNONFar;Uj4u(a6l^4-A1)zcY+Nq%6@p(D zyjF0l;5NbSf*pe261-3FyMo^nd|dEJ!RG|`3BDxws^D(~=}duoz9skv!S@9}5d2th z1MgqpbmwM4-dB@;Sny}OuK@j9L0qO4jpkDA#QS!(7n)f4y+YB7o+Nao(5*tZ3%yzB z>xKUO{+b$_%J`~SIbB-SQl{QA|3BrvN%_*n?X-GU0a)cY-PUvH5_R9j5n2XrLA>^$+wjD`>cQ*Mh3^YyWFDb`du8$Me*@+Hz92DAZUFV&(#qI+|w_ds4119F(OU7$^vN$-G<{wU31(sm-kUG8#}%XVYA zEZ>Kd^usurhyBcB>%?wI5hhG5@A%Y6`+pm%Rif+rw1VKEt3gI-FOhO6v@4mGRN;(nfT z)f6Q zrpp(GA0qh7@xVvVktt7h6-4&Jr&C84d6;g6x1x$$=x+$yxaM}#cM<&Abm4X;vkz#r z$zWe}OOFS>b>Pia`6cQL-#fWh$JIsA9oxLo8@FJm+%3@hcVYP6DX^aDp^qcxp+6pz z=Z}zI0485&Daxzq&W3NO1@OgV!H*Mt@L16sdIFIfdVE0Kf@TK7Hyos&AM&EB279gB z4`;)FknhOthYH}!Co2MfLKgfn!H*C5{sQ@4_y=O$3||e(Mn7lL-x7T@ ziR?^O4)n018+v>ak8CQQev3>xWz%O+E9%!5btNiaSFMPz+0v7@Xd`?n2|s){q3q0t z^*egf(Ds4#H+JG${5yEAdz0lBSkLyrmsM_BWnCvQ;EUd({4TM*d=c@PggB+^qAz!v zc4XWC;poxZ(Edio;R5Sb$~w$+3xMw0~asdF|s0@(b4A(BnlLM$q@r4Q*7{ zt$a~Mzt+RDsfS%T{h(>uMPLE1zMw%nS}k zYa!V>YVGL%27N`fZo)h|x4Ro*mWSKg!Rtrt==uBUsBc*NNaMI<-(w7Pmx%8w z=3$#y(H~)~SeXUZD?KL7#80|&M^FFOj_&oXm5P`3?mxMuD`3s<3ZQTA8mHRzCiVsV zlcCLD?6KEx#=h%$@Ly$Ro&tpI!3FTYrur*dm4-G-L%)N!qx)?&mzY-5jipw_+0m+= zg38;Wlk~Z@q0^339`smsU1^qetsSlD$%sxn*cN^Fje(Fqu|L||vToBl@5MZPIVl}_ zTsv_*+8ut_kU!IozMqsnab!mqu4T7H9=ILl-T+-LKp#UF^j8FPm;J2f4RkzJbc~>% z3(&_ufd01Culp^uJ?f8e-){I+!z;*+uAeKqswcv_M>rO1;TNv9|5&t#jk@nfdN%qy z9KGS76~UOo*l<9bdc$8`H`cDf4)TY?^w*}xJN9(3k2802%|U-!VT`q~UVEsg*VV@x zz~hT{bOoW0o9E9g8*-n6%onVA{eJ?T7rJ=OcwzrkA)a|z4-=n`GTM+9l{6F2vR5L0 z5@uB%PTr$))?8Mb5Gv-Yt_2?;T_i=bhcb`kn@P~Y=h2mJ9;`X2QtFTJFN#W zCo!j~qtC+HjJ6=p{`{YI9r)%mT}Set?@Et+73=n02kl7hK`Z(+#&2y`F#J-dwSIFa z=JEIK$oYu>&w~N$yskowr_G#Sp^om1DC9#XWwVXg9~rHBjad#J6KC2dP|14KsX0NP zdmQ(Wuh;F$jd(SP^+e{U6W(wT>r>aBk8$n5nug!$2Kzd0?)f3w7jwUx*GTfy|DnnA zLFD-^)_Fhb#Cje9eJFoNyx&+K)&aiYZrhJ|@{-T!XVQO+bdJMyEE_s5X4#-00ga1J zx3#{b>jcgPgwdBs+tzc6;yt&^+S1WA9ecW&HXA$z;`1-i+R^t3%#(%R+|lDjezk_e zUt>mOc_)4PnKe-PWo!ivU9Dc%i*&R-*2OoumayLULLTe$d-z6#{4T5^ztcVzpXs>^ z?UcKPZG4{c$9P!AD*K4Mrp{jn-+rXA9oS!7zfIb0Z0p|rv}I!t`-a!o`Kta@XTJ+xqSsn;@$R1cb*9)^z)8I<7`vs4?=(e;j?A zG0&CxCVjde6w)v#`9HX73Kx}A9nj{HuUg5%d|Di^I02vPIT$R zxU)!0d;bk(QBEh?g*y9MwcdF(n+|^1yy>8`=*tH=Hcfpx$6_78IQNGeF_)9q0qU&v z+Sr+9ox^LuwU3cE+Stjtt>>n~j^@06NU!QeLPdRjF{ke7paIN7rI#6@N!8D97rML7? z7-ef+;a?Q`nDTFdULWB8l5Ju7l-HcYDlT!q$ue*~hEBKi?2jgwi6va!JDKwEc&e^l zf#{~5U34AZb_ z3zkQv)!M4tDr{<6P1YqXD_6EfV2!i1aaE+fr6tlv6P?J?mQ@iXwKg@jH%6-J>S`h@ z8{69Imo-L;3L7w%EykS^Iir3>Q)2`2MPLRNnN-+zdSp558kMMsGWsUpn8MX%g{vcl zEKuj0*^G?=D;gr$CDPi`+}0S;Uwc88=EhSp3)>9ed~8l>ZCuihGUBXCn>CHA+VJ(~ zQy>(g<8o_z$-~#xRxeos&6loja?3U4H`lLhjI3xjN|#2OTTpG7?9VU+#sLZIo17-@L5x zln6Hfw4H_yXei}BUB>*j##NcwG&oJ9>2~K%z$J~?HO4+{iL6|`WO;-y0ny8ly8?3gAkDhbKS&jKB;lBX zCT(pmRn^%lJ3TulonmiU=?bXR&g1FkK;}`ZPN7&{u*Wa7W2(ZmR*hi{xYr%A^v=A zh4`b19r`PVm?zX1FN(aON`!qOek3I=bQsn3hdxHZ>7jEWJP`6AYer}{I5R{1;Wik$ z9RHmVf0WA#@u#6sh&~VdgeK!!84evm^YjhXqFwrhzJt{Mp@nFk>`*r(3<&YkoD*6N z`2$1a5tAFDJDWk4cPiE~|I8DR?D6@20bTlRgE;>-`yE6D8LkRUxeH8T{yH6)eic}( zFmD|LXZ{9ZUtfGM&k9s`AUY7(S`%rV*hT z3g5=~b^LxyrPa@KK6HU6#HlDE^a{dOh+mAcLmauD(2t>`H*^n5_JxMCA46l%EdJ1a z&@nyqM`{=P26!?;^TCrDDn^qAL;S7Q34IIgkri5w|Dn(ip>Lni4#bB;A3>MCp=IdA zexZnJ{5ANW9l8abG9Yvhj`w4>=>!hO>;d@a_tB-_fPaJJy?yNE?1OL=irN<)MrEw}XprjA6VSMU&`Ag%wY*QGnwbTUA#ZR#YM-51WTBdBFlLTs zgIeL+@GrBNVPBXopE65Whd{Uojh+>D;T!C^uw4r=Fzw&!O{(o89IP+ zt09=54XKazuf%+Yy= zM}?na>>VBsjX_)>gmJL)8P}mQ4N=m*=~2@BzJn+wcLN9VLR-n)AD6jM%U3cN+UzVX zQ!{FrUr?E}%$R6+3#USj*8d$!Vf1 z<;*@&F%IEJr|i)-TY1QE_KXe>y^_La+t#qLjO_1W%kkh%p}l<@Bn(%L)L%6cQ-*UT z1t%xTDWD^&$N?UzxR?z2f1%8soX?bk&Vi&?AZbL9wcE+yRz!}t7dbTfU63PrDLYNC zDX)Vior7c8WRBr`m0C=1z-e#42+NUH>s}96f|n3G{2C_RraPl|K8ug4sksOOk(UGnF3T^xLA%!<@_V!^0QOE>h}MB2D+lJPbBn@gmh9Zy=>ewf|_<{&wAo9D{u7#hW|J z9^*L~IYxIOZYVmXxB&?(*u=#&GHgd^)CL5uPz7rbe#2<~W&cDKyd7z58hbl$4s^jk zQ3XdKO?Ui%s)ElZeF|HApPDI6po^N>chBqTHb3$d1-;oQs%0GG;aceb6SQxDvANLjlDN2z(ELQJWEXQWZJZvzj{DV+-whb`-yV6@*dfH61LP4m!(W z|0^`MI@{MV!5V)SlON(_vWH_;pTMt`*$=T5Cmvz@Di7%suSY2o%!tQY!~Tr=+Lx#m zU^_Tkp{KoldzR_TOVpb20%G+bYE$cmeO{!2J=tz|pp@SuHPTFawOX(E^}C8zYPv?H zPXis{r~m9rZED#Bx=0QCwYDDjHARmg&R%ElM!}w~RVUN%(!NY_`y&6rtd}d|7Q~la zh5CJfxCms~*V$80a`YzF`5b}K_klVD*3mo2ia;rO%N_;Ai%{9q2%LyO0k2Q{(DV}^ zgF`}^-zttEL63+MHv9u1t61E#_J?2{O#`w?5Kzj&pm9gD-OmSqDI?1cfLaS`R5=>S411Ni z_;s}KLFiJj9ulb3B4kGiq7-${guPJ#uhV}(@;a4_rK*Y}IBFF%>WnL@ zR?Hke?Xb&F<#pO;rE}cnDsA7>7q1|eN_`1_PhT$8W%oUOSyZdqpVfdItcKfP><-8o zjK@{W*5M)L9O{3y)$Q7_OL-waMXffppydsZy`A^3dfhrjty@2aj>DgV9B}fg{14Kq zSe^~C5kxDKK|KyMW?KJPwQ1CR$wIZD#ipg6x9XGL2NeL z;8xG?kV{>#JQ%&jv^`cAEVV9#(SEzgcD09I=tpy17y!0JfNMh$W4Jb4fIunv)!IO} z+iGpN1%ZMBh~nCC4&-ocP?rl`VXK&)z4iK_w0jt&(r$@oGmGWr^brUtW`8Q}3fP-$ z!wx0ROe3qH0`a_dKBeQ;5;WJ-?wrQ!3mc%|83eenzakunEAB)b?{Nxl#y^VvYcH`6 zNPHN>JKn^Yg9R@mf#uP5j@5FP^ghx!<*Frml}k_h!=4Ug(vx0?t?{p6&f0IQE8-9=029;=*xS4To2afkf8b@u%KZ>amu;yF zi#-E;gA|`-lW~Y*^r#Dzb^5O{gU$`FucYtTI|RN>{VF|C00+`q!RAElIVX{v^h{SaoidUs-k zjlL3bZ-B9sk!3f4!rOhT?CS{3VBl^9)*(>BwrA!rbjI`f_wjf&n$MT?I9$revY&za z4)eT*!1D~eiNMLkQ2O@fGf(WZl7CRg=js|X*AC1x>3ncYglmvG^gt*T7Jt6GFNvLu?4*yLc!k3ka8%!QNJpy7CC z{ctj0qVWuFoJ^PAJTs?Go`&Y(89HzB+W?-yyC=^?qw@@2H~A(A;_2j1z78GEv(K{0 zmtqR??6YX{*U?KngI}5)gDO0Ow@rQtF+4NMCevFy&&;aHeBr_~vvzVe5_$G%o;(hT zJhT2Wc`?NE>{C1WyO^0gL+4Ds8YS_}oHY4%0M9;8rF6Ai0AI(a2fbLKFp#|=dNZb% zVxPpLf8Ye0UXfuEuDv3sYoEk{glFRn?b$eU6lxueyDC=xZXLJR;jFlKVU-p#UWfa* zojHfag)!8qK(TbI9MD>k>=zfI92ECA4vMplgW`mHWmQIwaR5C~Ie}0viXw(4yaEq%OHA@4jF+3bteO3}n=g`(Ml%1n zZjeVvKC}TDM{0k@+olep%isdz(wJ_K3teuHN0|gXlDk|OylVZiObiqVk*@xj?0XT<1uC8+qg3KmZ{3mbX18!0b{juV+>JBg0E#guo5j^ zE={S%+DX#likOh7IxcRBYT&L?*jNcP3S2Flw&gCCQ;Z|!Q;nx@?Ag%_ya=Dhb{gA% z>r`lWdffN38Usl^HaXedG6pn{3Y>6bN|=OGI|^o~PA3rfwj$YsFd~#AX1`T?lW*Ql zzC7XbTkm=Q>?z#AbRJk}RSEFC>@!8AS$I)0(#JBYaWV;@4i?ma6ABTQ<4i7>42y8W zScqU4=Ee(T%=L<)hOkQo>j=AbEa71tOW3P|HH3XC$oi^-k~ZT+Q3Q(6evKK@!sZ%b zI)U=`;6x4r<>>?j)Uh1@Z^Q|&&lK{s4&uK$w&4G*I8pg$09u_Il_VtJBqNnjgpSuu z!;re_S~Y~qc!J5vm<2eIlW?;N&L`ZeV+njWq~)1xb%@ct@g^bD12`dxz&9ih^&bn1MQ`fxn8hD@C}{dn(&Taq1z5q6ZUIs!ABB!&xAQVl`NjO)WUbUu}O z4m0Z1b4-aWhWTA8GU@JG@d{*X;KJod+*uyH%0zw2+8Kaw^voA0; zBI9;&&`0ww;4=~?K8F)#fQIz|Sg9jfi8U(u+ywxti2gL1daUvtRF#4eO}Tvg!)PPy z0|=nmo(FETd&jxlo2%XMN=gk4{FnmN){ObkL+$fSmOIvG*?EQB~*q_};T8$xN8QKmr6zb%1~YlF1|l2?{pcZvk@Srq(17 zZWKN3I~qS$V6-Cem6y%M6|H(dqp6?&tZKq+ z%|mEV&T0Z*;}Mh4f?E%Hbd{+D7ZYaV)&X>BP2wGu8OT?f)DVs-=MsX+K#kI*Ql+_s zz;r3EWE4FhW8G3=(hq(Y-GW1=Bc zu_5Tt_`v%FymUK`Kblx&yKzG@fh&bv106$eR-x4dhO!0|bH)Tijhi8H4h0$bk%#S$ z_!e%I7~z7{=;`qUUyu=(Wjxbv}7g6$2 z+~go~M9OhVfa(fA>5oEnW=`EXBa;6Jdc}`4bB!gQQ%C& zTxK{jV~6o)-(+WG|D27x5;uFJ8FdYxX*i}@S*Ney=5mxbasLkYaoiu^W>Yd1?T%lC zayKo+6ub#%snhBL4Xa_>pHfr&VKG~KBA@kobuUl0z;hA5;p-Ua9#n$| zU}$Ia+U45qN&t%$wH$m|RQ=w$&1((y)^mc5bu7;o_1=<*J>*H~v_*qIA?6X!ZFZ`~dq4=u(Q ze`&!y$A9m2bT4p5hN;?k=ZbI)@b_n((}$VyAen zQ@!089d?$6oq})~bPh+FE1!3Mgkv$D+BUba(m7&3n2AyWa`U-Qm1r`Ic4|I)S-7a3c`j?Ht^;9mO@@cWH6a z{+Xr4l{L<*mM`Q?y4QK`N*366Jz?jGZL3y0S8Oj*=XpH3Ev)eEtLFNK&wHME{k}D~ ziuue!k%64{?(yD>9M6pup@zcF53TUn(y_+r zd>vk>$1yy0h4oroI4B%Am;hb?%fi|MY~4bbyPh-47%o@K=xIb4+Z~cKVC<#FPn!7jr=27fNJ51<3vl?$ z!dW#lYHMjDFg{|yk}Ad<*sVr}PZD(jOy16zzp!T6Nf~C;Em>GI&tl20U7092mKhU* ze|>L;{B_~feEcM}Fg#EVygI<>&mklMge&z%4>YErC>*Vb3gsjY*jsbFP6UJt0r z`o|BK*^KP~o0@5pI8he$n>V=1NXiG+V>fKHlwoz8ZL(owy=(xX>1yV4l7F`=x^meJ?M z7-qeBqla4BJ1Id^WV)w_acyPtx~JXikBJEL=K3&~HP|AP)G=hpSc{E8FtN!hROj0y z$x0Lq)LAfNTHTz53t)$QCQMjQ$2l0Z2aSkagvV(|y;LEGtwc*pE*o=9Ov`68{qYD{e^Pa(Oq+(0wSM}H1#?jKI4frZ7L}P?^>Q+VsUP%(-a37c9-u`Sf!twb zwZzYxNve7F#OX7pE}CU=&`YidhN1iFy;9nMZBksL6;=AwN6qy15HSMd$Hnx>m>D-e z@u@LM3Y(#%F6G#mBqpN-bA<@5^J0?Nbgh$FosaT=@<$&1+@|L7QVqh@`pw;3uIPACt*QYx;Mn4OZrRx@$ zdR$DB0-EKMpAy5e(A>Qx)%)o&NeP-VcMnwVLt~Pd!IUx*o9NQ_dOhPWz%OqvYw2j46D(6hEj~}~-X3K}OI{7S#-xL@73P)cv5wP^B z59k%iInwem)t6U~#Z%@~PMKOcBbm!c#TkM%%c?NVuE8TcY1*Xb(42E8N7Uk{q@G6O z?sYih1mh0gq?WI3Ub~s^5xr)}93|1?l)FTA^2rTNIU&Qtm`@nj8;BXs_zYDuviNIV zQgTThjRH?{3{xUiGa^(?shNV(#;G?l-&0%A<5P~7dTy>Vhu!d%>2iIpMlZ=TU45)g zQlO~?cB)>FuHlaI-b>Fk19dFqtQmZPU4b*xcv47GU2uM?xw<1%zSYc{v0z5cluC;a z42&DrrcEmv*QXo;l;Fl^6;xkRzTz#wj8r`IMi0^(H=krs(}OMk)x114i?PC~zBIxzJoVk6gJUD^} z=jBwY|DG-dWjd-_lf<1wQ+qpWr?PK_r%kahRsRvEP~!1tTCNb9+Ba`!#;){h(yql` z_UrWdJnJ+2=BeX(@PA4vA~deVQxuy$;Y^!QG{s8K%$VY{{hmzk0B?>x&>rmM+C%K2 zcAkAYz6VPR32^&(tv{Sdgm4LvJCrn(a$OF7nRNY-h7jAr@@I9iE-GSK;DchcMDczb&9m`!Mng z)UPQNqV-|>(3h>&Xqxsy{s$0X+K7pN48If^{%7DQi>IG%eG{~4cl<^AMbMXNX8ccA zW%0O+{vq7EUGz`kj=Jcd!5#k<8S&o)?Q^Ba`r(Qvec4v0&}^4R-zu~>6aITRxY1W% z>DC8utZ~tQ1AWLvqX^XMO2g0Xbleqe=m6XuE_wjmAGzpUxF@;j)8WpIm$$Az_6L3G z_EHr{(D~pmckzz_J>5lfk!q!j<~b_OE}Cgqxag^%FL2SbLEq(~7l7spN`1u(R*^gx zitRaZrK#Q2qzB-(5$?Vm)K@ZpsyzHA=(-#(L~&i8{+uY&JGBs=6UFos{e@a4E=OtY zrm;Q3b@AM&3sD~CqMWrUG!~1;FNP=Df=>6#DdFEtp?{u2|2l=HflzZ%exhw@`8n~r z(sU?=PV{XZP8%}jqP+7{=+CFn+f!(c1?FP>11a>sfHvbh&$;?RO8C!H=x7T4w-nmU zeB*~$sn5@98f<23J%3IxA!dG*pZMC-%MUr~Xe<0HF=@#udq#@-L}>`uZ!qDtn>IFv z$HilD-igVlSb~B;b!yf)9-TFw|0eL?S^QVde`WkPF)22EN=np!6}LpiD^YPulpySv zAdeDN5>aj?tYjkHr7CWzid(AUmMWf76}ME$DJ`?6)h?-ron(!IGeOnFmpM(BMoNHNa#CduX zLS7|S9+94p=PUYP-U6(@1yb%L(hCuvScT^wu^KCvh&6cr;#r%A_2yja&3Idhby$&w z2`uG4O~l%<0z4k5R|65@v=l=;D0o=#O+n5xoWWQbMT8#5iI`l_0FpBV`6Uj;m`LPA z438Hl4=crpFm&!Co{sqgFb}KKnuySUHxaAnjuDamM}oO{9I<@15)r;nFysS`{BfNn z^Vd$K-hzjSh{x5;^yhrT8IILh#1YsoLd?f=mpBsnCys(X#4|DfAR>P>`{Wd0K298s zcLL%V)Hg5>3sv_C9w5#@{S#5X9}>^QyaKDk^03Ojkcj%?N-^fUnTUM16Ok{j>!Y5> zgr1E_6x$7LWzl~t5fjLEBGP$U!V3eMo=%*Dd;*;!F1M zBuL9Uq&Z(Eo-J4*I8(4vutspHAm<{C$N4MqBEc5HO9ZzHa&AJt-GX=}RPS1&0e33swkL3N96F5!@lTSFl6ypx|M_p9ppdsNo;kav}YUnlfU zLVrQ%dxbtI_>}nbdC&9@6Jg@xHSzzI;M;=l3w}TZ-#>&-$Mc@)_aQ>gNWqBU3_-5$ zS9%IwD|m~9-!1rn;5UiLU$@{N1=ZPt@b_c>!0;TwklEQ*bU3{O1u7zh3AoCHxV=mjvGu4v=LT?t_ zCjL8xR%Z`F&VKQKOi-OU2)&*o4L$HhUEvWT%H<8=>lA!j{NES)LqWTr)*A=f`24JFDIzO1A+quPZu0P1Ye=h;|0$qLa!x) zs|2r*@NGh0CwQOWi-JEBj0&1F0%@|Ca*G6MLYA~T8xZBYoiy+!!Mgf zd{po$!9#*C3;s&*FM|E>0>=F23YH0;OGJB^DmX`QzF?i;Qo(w`6@nKDt`}?-yj-wN zaHrr6f;S7^A$YgoeS!}P9u$0B@F~IP1ivHrUBMp;{zUK%!8ZlF1>X_;z2LtK{#EcF zg5E*8e0+kiVx!6{TX3l0>4GB#M+-&-%LFkEv^;ppMYmV=@hIwq^@3`$JX29W;$JQ_ znv4pcEp(;O4MH~wy;JDjLU#!LC7}-qeOTx>g^miH%lAB_pGSl~RYKPZ{prup+(6^` zpYqVmrj^TESL4gw3dG|XoQlLcbF9GKWC>}g1cO=;E1~!*2_vdF$bqZ&T|!oEvM^<{Duk}YH=ScBPgK8( zPd-dht&u|GbxvJ}U9#xGw0MohP5x8yMZm*2NJ?FlhoLck8U5I<$X6;MZ-9>`(#=Ia zhR+i;{#)?8JcpT(%jh=?v^&3L7g|;bykx~IgW4ZT{qgBa$pxtE8z=z2Lz~OUTL};2 zX4r2FV6+Q!9dntm&G0a8h7COn>Cz#W32OoE)~{}z?t9b^Q^vS{JK#2P;Iz($yatzt zao(Q7clQL#+KP8da~Zx{;NecU3F)#Nm@cL|@pSKln{ilwyar9i91+hDb1{tfK|#Z} zu&Vd-E%}=+`OS3*eEggH-5R>e}-Idgd!dBx+#jSso5 zQ=M-)VM4h+-ZIpXxot+}Oxre+n3sZhevrIX$ZK3G;^V&5iv%q^8jbhrz+NzX9;bOqCJa0ts z-|=Sf=U_Pv#Ie&?Ag_+?;{h9vC+%f`=WB@Wj76t~PX_JEIo`AlVDog6cgm$&41Za4 zd})j5=gZ)?Q^@A0E}jJPMUuAf3y=hJ_8>CoqYnk~dH7?#x8Pgw@wX#7jIpp;WQL&s zZEzr^i}BC9{0Tar1V>taEuHNUmlkP;vyaV&kzT}4r2&3-u>yaa% z;m+!ZMC=j2Lm+rYkf)AB->-wmJ~M<+UOBk!eWdy|set>HH?%2Z{4+_~)&2G%S9SsA z4ueN<3t0v>-=f)W~k@35VaUkVyp&oT{#yxSyEo6KL0l@=s*jv<~UmaWy zAA5@`nHsDAPO#g%Q~}fcfG($9j5$En*e?2_HrThaDfj<7$|JwAI91 zo<*H*qQIs&=P>x`T;4> zDT>250F}NJFt7yw>?*7O1j;(t$p9K;(a{ub4I<-Z@n{3r=qSBfnRJ_$#BWH(*l)X1Z-k_K6#W)b=KgP06feGm?GdHvjt23SpAXzkUgmgC0C=f-W)_tv)$s zNF_5M!GkL7VF)qD*i#&6EFum{;z6ExsVY}iB~%}$!Ii50I!ONy0AN3cz(F9{A`-i4 z2sg}(5b|*+ODKd72YWCO*sYQo=%Z(SDW(nKudeC%KN~kB5GrveOQ27cW+1S~Bs0(l z&u2;?u%Rb2(5C@67zj@c4rt8EUjhDYH4fm{(S$u}rt_&SVsPt_ z+w8-~nsk7%gJLigH*Q>4w0^_-l|@|QSUf&l7A`4XyM6_YQG9Y?$wDN0@w&zpYq-bn z6YJEwm`#`Cd89UYVgugF&711iw>CFpDGmziKWuZtB@X5tASv1C1RlPsj+_E}aOv3j zFmf=+>AO95!C)tA`=AAb7Qj`N>twFVfnk9hyk**UkM+WO{kVJAjC++ud}T=es^-Sk zo3M+tN2sjI-fXs+auWi#ePbi6-XhQ=$&|f9iB;7pyEc17{Ma@2pJWqoA}O=nyGI(j zJY*XQ_w}l6raf}4_P}u=O+8i|C6ea;8u!w46++J*0=PQ_g_PJy(St+Q6rs$yiKOH# zI8LIidy~K3RsrdqwmfGLnb7OC!9Jxea3JWXr_1jMWl`JrdRg6nl43|0Ea*{|dW{rT7Ks6elSoKx2P}0{95b($cEvQ)U?{7BbFh0RI{m04mzvxJ+PMzZ!BH2?^8WuPCmxzEs%+A zb|=xu7+vYL5hQB57>`!o#^{oHTB}{Adb8gD`2LxIYrd5Ox1s6wxoFPS+%zYxZn`jq zE=!>&rO=$9y5m=-(42m{!!JmoIk|L)H-q-#Hu|@u(3?}}%Y>f7kEZ{vds_627pba? zdt6x7i3>9@*Tp?A?u%>q-It@j$R>OoRVr>8KmNNe2PK48CD$5!ez{CsPJBm=_H+1S zxa;B?{-HusZ>}llI||*b57M)MroE7^2c7QUg*Sq32JOYo@GC%@_Cor0(3@T1{{q^y7l!vX1J7^7 znOQxjU}m9ld{8*aVr=D|SWcbH-g6x^2bGho$(Bi9kAYHKKIy4p&k0+PsJ)M|J=jk9 zM0YW$IYri^IutkFa<&hN>Rr!8exx>fD1L5cu7jI8ZQY zeJi>XzicpkoZu9}*@6oN*(S-?D7Z!tpXHVR6@pg_?iRdR@LoZF*QcCAg0BevOt4Gv z-vqsAqU6sM3NHL92DIK=w1H-y!%_!KVb(x>kh$SZMCe!5gNsK+1UkP8x&GUnJa% zF#7i;!arN+BEiXm^NF|{h~Qf#{+9^y&@;-pQILCV$p07-{A&Fw!hb0KZxTWCD=Wi) zE3{gl3V#P50~vn+5j5B3laFUYk}i~RweA%33<>8^kqloX;rxb7dcB0J^{1fQ#Q!G2 zdj%gB{1y@EtM#Tx_c!AIuK0f_v#- z;JZ%hEr&E7C%NLEFLZ&>WkQz=JzeP8LaY9S_)CRulJGS`Zx)(kHPhWG^lqW|3VoN* zUlRI&&`${cw9tozJ|gsMLcbyOTS6Zb`U9aq6k7E|=*us{)aT=VZ{G~-Aow+0{k*;$ zFLthC>SRBv|M&ikuJ+s_i}9IB8QfcOo69SXVL8iYMY(RH3c}5AqKv}yIOlN7<5vC>?| zxdt9?d3zy`aww0pK_l-nxEY7#$ZH286+))D7{+^tpy7KA%55-A5=OpuahsqJ9;AHs zn9Eenjqq^mw~r54@KHba@96h{Mm4nn)D-~(pSk8TqWQcwZG~a`FhPC9FaZr8k=@W- zO-v9T*#Klol?#!&x#czG=w}eT)n()rj~hQR|jT?r$u-xs=6{7Iviv%(;I>8hK}x>(9W(< z!%pOBXDkFga~mFr6@t!-?2P3D3ve?X*i=W}cE&KqWRlPL1>jdqztHWmv>@}pSB3e4 zdt(8(Lk(BQ7)JibQH~6+_>Q-m1H`-FB4`u9? za>WlJ-N~PLe?UuJ0>AI!x66*s<5$0M4CMlUmUl-tbp`KxHvIky{1WRq z0^LF#-IGFBBM+z(=obL`f;(a!l#K=dT+|tL4g`0k1%kK4?9ldTZfJ*UE36mRgH_QU zv#UB(T{G_Hbi|5JJUR& zhN$<@&RA}6r)n?35b83rD>g~m*L!Fy)QNfYS%bT+NC)m++)h0-OZ-i{`y0xK?T+n@ z;b%ghbk$Dix48S?Rrnn${6olf+B(n&?ub=bZC%vcYN_hVg}&+0j?Roj9atv(&13zn zgSb=iUijU3tirmsYf{U#(DzQ{mvU>n1IW9tWhc(Cuk8!~t(M)W$7^HW;2o+BSq-~l z-$$Kf7~R`;b~z0loo~X=vZ}k&kiIu^i`}fd`hXU(y-D`87P2h1fZ5|HEYp)Km zJXfM?c+L8iHiUS+Y5a1J^(*+f*YaG2NNJy`LI4(>T!g77ma@#iFzmS(!*kl$wG8lN zaQ!`&va~bcdN8F;+0FoOMmh-3Ge|UT*!Gw6H~lG5|}8^0$LvC<=#(zzFTNH4#R&JqYopTre0KK#@U z3E=}MCw~YWmj63Y&-TxP43GaG%!;4;bG&M$Oq%~0_@w)D@jt`=0Qi0WJ&fdEgh4#h z{|hM5$Dfb?0sp@vR+fJur1kax2%P==mqKRHKM+3s{n;q%0sdCFv;7w$D>;7d<{aq% z0i+G`-wFi>`_F(+uD=oPA(pbmk}>B5f<1GXdgZU_oCdu!s$OO-9|6rbtUix0z~ro! zFIj#rPq6$?K%R{^10ffj^POQuK;bbp=hyexjT$#{b9P}UBVWyX_q=VK=;6aEHY3Pt~C)8XSk7iwDm z3Y3=ZzZE(4_|Y*@ds9^HEdfg!tlY5n=20s@XJ0=5#i*+gRyF}LzQ+xYeSI0RQZQ$| zhq}pln@%h11_r-Fw-=4jdlvWt=Rnul89)6Rc~?=t*QlSB#nzbdI^EtZ?m)`;8Qs3D z@#J}f?m*U5^8AACVAdgO^J|L9$?~IBWJF(ue_7T<#_gp0tgJ_v{;}_XryRo~fKFA> zXIPosCizoCqkgGa#(NXt6WD?>31s}9mXES{_D05WHU~@B#UHeesxJOr>4+n`$@Irx zA#T6f8ULIKD##U~8J5iyf)7(C+h+X-e@a%5t*k2b=TW~Ijy(i^13J(c3Nq5|E)dzH zQQ{dsn=Q=Bo=7gg&2<6Z?2S}2QxU%Gm24aV6(x|(bx#?6ZB;zkM@a;2t`^J5{tl#M z^j9Id*;7emD>BEc9qm>{#xVO! zDBSFSVf+!wZDnI2ij|SC;(N1KQO}V|vM>89ti(}@2xPy=WX@DXFsB6uyfO;xcOfS? zr-{U9MTBzJx304?#@HVqq#&ENVKT-lr6W2Ag^DQ4=8DUVu>Azs%CoujDx+8tlc4+G zpl^Tbn^9uZo$mcT{s(CMBga?9{rOpM!^3yh=i#(e^YTql)jM$QddqkAHz3lyl2 zTncx2)~}GRfA)=VPs;i({TF^2?ux8eAk$yN+)U4!irV!r`U=vV4b`cxhpPKN`#iin zpGB+iT|iX=-0_y{8P1KFSv z)3_PZE@AHMUi*oHjiEJy3KXOM(v3f&I(nrgNwWP_D61Wi+HpW%LEdo&`b zUo-4|{{+M7O0&__43GXZ`Z6Dzl*(Xh$8GQ9DO({`Ae&Tyz;hVO!ER*=6G$=@`x2&7 zNs{HS$u_u#SK!}DL>SJw1sx;Sz` z%kj@{E})@sd(CSgMzaaLhKRiE+F=kg=5%=7hcIh&1g_a|g&5ehoPiba`Ubql(ywqH zV}mMO496fSR&)pybF>-3*620xu7VFs!(PtzIc6KYxFB=PW;iP0u);_1Zwrd#K7=!_ zZ(lyn885Mh^DEr-EX`bTg!z5@cKCcxv8tohhf_oP4gUZRRy5ij3*d}0xa~c3^7C>9 z0_=U9is%~N!%}HPfGXdcSfkrP72kqbK{(pTf7_S?AnyY?<{misz=q(<*aq&R;OX#a z0^0jB(a5#nyC|3j5tQIBaOnCosL)gj{K9sSIT&*ys$G4N?aJBg-LKo#K5Ef~(315l zFNIK&oN5j`SEWHwKLa_MJ){mY@1n^4Z$q6ihvDT#{~1fa!XJYg1q!9Y*)tp5a4v%G zfMev1aC{XGl(lo|A@H0r0zCE)m?5ryt%H}nk6UeZhJL^dO^39QYW%NItNRs6##fl5 zpMxwtg19tLLb+H~iAn@iTjP$yKkiopzZ!JpL6GUWn@KuH5l46AyH$VZlh$+hNC?+` zS`|Z{8szU$zG{ru&fB25M>(ys4Txv|h9WtrtFqZwhkWW>{D!%p-2~mEJDJo9kj2a> zzn4GF+;oq*3*;{NkJ$sqH{lq|fWikrML`ul3I``^h0nk-jt*|_xeyLqk;mCIMsbWu zgAUkK(*+OSnI+@HNQ8HvWoMlaC3!Mhz@lsXY;f|JPujBQbb-bD80QWxTT<<{gYT(p`zS(x4K0Ghp&c^I zgwD{@5~1cC`aC((Tpfh|8TY#5r1i>ZI7W;o7d^(!n6k7v!m!?3p-}$#)C1nn zO7>WfPsbAyUTEfdxH+N6cQ?Y9lyec`fc7OE#GSluxePvh^58^b?|z`Vn(==(ZXD!H zxIsCqZUpRA&N>3W2)IsqZUZTyaH)%_J&zkI5!RsGah4_FE!yKmqht(M7@$ zApMBH!;S0^jw@#^;kXh|NBE<1RvB5YBQKAE5phw{8xtkn0S{^jzFwj*^Z;%icuhR0 zII9Rp#G9xE#M5*ikDZXeC?TIe!KkYRk;##61uCZYv*Nin{*JXN6!&D&_K9iU)Ik=*iVEQ4=MDb8YGj0?)fsfkcG!qQfhQW1QDnl<&(Q62Y zlyeE;2yRNM*-saLlg9C*1U@r$09{PbbuQ^!;Qa_Unmqx!!nv5>RnA%hTUsPoqW)Emcgf`q-Pr7#M0K)Eg0A2i~ix@@-q9`Gb zwbi?y5gD!s!@)^WF79+|6Gqj%{d7;ljWVtPa4Qm=3DNPULD9{)l{6EcBszr9auvUt zqR5Qn-VH09Mh7yMsn9wyR^jI8mEf#1oYa<_3?`D*wk|ZB?s1U8oX=vMHL>}?K@-9S zf4TN1oa!CvP54J~zlED)CgR7h*>G3luEV_)cN6Y4xHC?jY{Rahod#d0^?9Vle($@bg$R z!TG5-=&abV@l))E`QNoe=M>9=|C5`5P)&{8{DV_5Hg3{;f8xspH`On{95xU(W5wV) zy_v@qw0Z5imD=-Edxfxzpb0kN_I*F7DJ*J?eRK7|v|#k#_6mwaq+q7L5_I z_35&B**VEpqtSK_&iOoItr|45rZ8gRB+>M_>BS0H32skcuy&62nyUiFR#iF`+rtZI zj4SqfoaL))efWtX|t}`m^b(|&OEP=Ba z?#0S|X1LT@6xN|jDQ67%7>1)_BXHJ*#}*eyymq8xH3W?fFHow4)5klj<~oCMW~sAc zuJhSdgNl&)fo*f=7eiNEDIPSE#jAx!AzqsZ( zt#kQz`l@VlEpYtXiO#0EPG41u&gQu|Ew&P#9_LbcuF5WA!9Bli`@)ia8o(Mk2*>M>z+0? zsx3o`TQAU0TClll!^U-uIPMdTdUMLzGc#)I>y}l`s9&^T-hzco79@^a;g5?+>FGUJ za;yuEDqXm!2FL2DLz%2ijq6&PSK?4Wh+n;NLu*U@+NR!O^SqE5ORMJ8U>g#S>TJc) zO_!|Qv=&D=)nB@{Y4aK$ZMKm+Y~)xF0|rUuz~GC zDF^nL^54*svW;uXqUk&>WcC!Chg6A8Y)k5A*3770gcF>WB{tn82BiA6>({DXYOX?2 zOPlpUoy*svA)p4<>5L}jDmkTE_g`uDJMqCe}QDsKAz}jcXg>-gNQW77LPB zT%5AaN4G$n`cjiPa0@$xaB@v^{kq1M7MzT2HN#3xYvXFw>RkMF7RS8}!Iw32X3efMnMz1#(syw(3cvOj04KSJWbhGb~rn?S)mJCe!Odo4OaV3RR0rikw^;b-KABsg*0G zQj~^CQIfN%YC9=htIoYa`oP(wz}iJqtL99rTU0Y6QHb?87I`f;Wv#E5u9Vz8Th}*l zXlzRA2(6o7N4#};%i0y2TQOTvM;YBl9;5zs^tNj)@lqBAHxI*8&|e8H(p+^ z7?aClArbev59fU0{+*7MRIDoQl~AfsaaIT!|hJq!0OcitOuPWE-fPUl*z>K=u#-@ zFm+cZTG;7&5&Fr`rPNA%g7YWQO+{)QMjfHA@4G|C5O+4JWUJpiibTzHqkkWqCUZq}=>~*wn zS=o4TN_;hbCdKci0Z&5%#QB9QvCseVmX&ItQ)9p04*4;$Pukr02+$`P>TSFnH`R{f zljX;C$Y8Ivnt0*CuHB6*ixaJruUknfPF+@q^JkIzeCbjuQ>WOEuB#~dgu%Yl84JvT zjQU_eq!cfodYKtwpkLWzX09G=(sWLJW*`sTQ)TNKB4$=jnT7d%a#`rYOFi)KfbYNS>%Hs+(D!ym^fCK0S|3iiT3Ht(q}y&dfQ}5@U+nNJB3c2G*@yw*oV2 zd1pw@rB*aPI_Wu?np$ya*IUr_+m$M~_+;0`$XUJ8b~(16CrdYNATdkg+$P@46Q}#> z4+++P_a@~4zAv4?g|%o~`v$V&dwTiViJ#a)bl{@99rw({8GKjuwGO}Z-5=>N@*Kp? zPid)V@i7fvUVOZ&08$n&ejn$jw3G4ki!HwvhRBSIUs3M@PVXDo>FmOpd0R7o#G?oK zBlnb21pK$|Erv3#i+hLrxoCcC8~_?W$H`@@aFcfvj&FKN;VdJ4>G+1?XHKj$Ru?`L zK|22@E}l>3zD~VY8H-n3mt&z2T^IK*yD#olW`2Tk&xDI!+^g)qoRrewd1I#w1IvJW zd&dJ!yCOZuC4kbJQs}jyO&cTs)|BuaDfGQ5^i!Zs8)W?NgEnoD^qVRC-6`~YpiP@3 z|35&RHc2|^bKMFnUu{#45Btf_jrg=b*}Lb_Q7HqzdXGzvqn^Eq_pBa|jKrBrJ%jk2 zAz7N56sCCL87E%~WFSorH+!bzquNFu1%{V5Tx|ain(8EA9u@#p3hpLimje4U@i38% z0mYby)ss1b5h5DSbiw093PnGmTz*Pt{CsrBykYokP8`mkK){0a7i`5IG~E7z>_eov z4a$SKh+=sVI7F_yR%x)Is_@!3M!qg3W>( z1^IIb`L7b>Pa>qR7i<^2LvWwq{elk*J|Xxm!M6o}C&(YTDVLiCi2Rv_$hB<5JV7py zA{`byTTuOg0{$dzUEze(_J!G{FDF8F=Hqk{h`_@-c&;4wk2vZve+ z1bOBkX$+tWGX#eUjuPa`Zt|TiI8(4j@It|h1TPWXE~xe^BmUh&KO{&qmy}DBip2K> z|15}4&C0)@;BY}Mi&FXs&JwH@Y!F;0c!l7#g8ZqD@$VCSRPZ^$BZ99BzAyN9K_4D> zjL#Lo#NmR)f|CSW1g{jlUhq!AuL`~(__E;Zf;?x9^07Hdp*rsd^k;+~EjV6qir{>~ zWr8aOFB4Sf-$2eyLfSinKbMGfh7+-B=}e(Zgg#5?3Zd0bDDZPH5c$=4 zHjw{0(!f=Mmk4eXR2!ub?{1;LMnrsdehvJ;E%bMZppOduy3oH7`YoYVv>|cL^`9ye~kD~6#sLDo+WgZ;36XAtronP2zggX_zuDAB>aBCuL?dPctr3g zf}KR<@3%t#O=vHsm(+8B;Auppe+CihjuHQHg6dox$eAvDwM5XLlkkfLTg3kgp|=Tr zli*$Aug=3k`Uk~dor?qdTcn|fIv)pm{8aeW`8c4XLcb$?#|71SIf&N>6AbD#kO(?o z=r9rT#|b@I=&3?i3SCV^ytRT?N%&2IUl9C~;A4W%3ce)x6Tx2+A@4n*KOjPnzY5JW zF-hZ9Pw`>Brz-!`#6MqfwD^|_&5cToH(hYP;36XOug>AY*vuU`q%RWuykM)~RzdD0 zBi}WGHwbc%0sZd~yj$=-!3PBo3O+7~VbJm*kEk-0uUeD=%OQs}{;4S==zO6Igm1Rc zl|ru(x>;y7pF{kuLf<9fY90r92ZTN-;U8yrf~F$=OKnf+^Bw+24sz^jvrJhpj88rv?vX-c+MzB!|J@gPd5y(Qem9?+)ws*R zW8%PRQQnhiE9Np`5qP-u`vCeKhX?h;qd%@+1>7bMoYs|SqdY6oTqbM*JdB%RO?cr@ z8@+_lgncfB?{ySZNO%Z_ZyDTf{ob0a+c@>3Kl97-V0$%j;I#e(c}MAx%Y-Z{-4Bp1(_y*++$P=Y;if#6Bd>oA;Z7-MhTo3c&37=|yIqU>g%6;v zJQx}{VhEs7mGAa${XT+zE%2j$LE)pmkKsmJVUW7sf;?1l{4!<1_e0aB7}$I+o(*xX zM46G_Rqa+TGF}A_zE=*$P5qcYb#u#GQ;Kpni6P85i^okU54o;W*|iu~KB25k@t@kR z#nM}m5SnqBf&wdKea5mv?bv&d^B1tc+zQ#8!keGTogw2F?- zvMDpWS69#M=05y1tGd%`Rrj|maBf3IhXegHZS1K(el6@!v_mHB9F&7rHUVgRp$+n_ z>tc9y&-4ZnhCT4w&H-iBcA}m#o5aS3H?ljH4j%544_J5VJ^!!|F#FK{*p%N|-P42n zV_00*T@l(J3mm#R8jM~Wvx7HBJ)xVU6^C}j%3+UTQV4b-pi9Ul^Ic;z0RB&)j;5m= zo@(O5JZ=!#kwqP%c?2JC7e z&z*szd%BL_{KBy}J3HTb^HAqI-st)+@1f={FYGip)`i(0z>a{Y;%LmNIvT69JKu3y z(z^1O(>B85ZjZGj+ivM_P+r*%%E@lI7NVDQzXO{DUZjKZBh&7*A7yQYElQQJM?3Si5Qf#nGMM#EjouRUFDl*t@f+X1@+i@M9J?umIK zNH+pKVK<@zyq2;@vK`I57WHt?K(wK3E3$pyBo$WMjlP!oG|CcnfcA@93lccQ*MQPfcf{Gxke4&0B?oV*rwX&l#Bz4Gkk#F2pJ5bj( z-36o@Snt)WFIE2qsDJw$UH^r`kNH<-A?n;l9@$s@tUKLCV$6G?b&tX~P{!WKYZ+@pKgc4%7MKVE7TY*fSnnvMDDgiXls!jT~_ENjHA0^ z=iv2kcFUeFyA9)5!`@g%dq=0I1MbKj$XjC+Yp=WU`f$DX5a(MVJF@kxT6uLD+>C3>JQynclXmB zxiyA-LEqZW2SDdqv?FtMR}lGD`H8HEQnv!w>!E&jWIM`!SL{b8PF&A&^};U=X|N6~ zlsRRkTaD2)^k2xwW>1VuG9Ko%!H!G&?XmQRHPLiySto23U0>F5d(2bP(Vd6-XL;d^ zBAzE`ACF%YJwE(U=ZC`%p$}qAeY`E^i*)oagN>c}&@-ai(tvJEC5F=NfqfQylg#X6 zEhhg6j7@lqpU?6~5!7~n8DW_nH$=-icE$YGd7aOKW;-;x1+Cj-IfrhK<)iMXM?q*8 zWY%`3+t$!PJ8TxA%yQdqj}>AZ@mNbcBZqdyhCoIk^2@f5ddocez~N4heLnNx=&_M~ z5O#A!hv&h=G-*es3}vcqoX?wa{MR*=F^J26uTGggMHioILfenN9^bb>WJrnRpT5V z{zKSivS6o4w+B4(GV>47eL?qp+0C?;onBxe7h5M()mU7 zA0Nvvg1Qg2b)_F#5ykl2iErU!)c63Mw_*%;pc{1xf#0+f>|f}{Sb29j{Mhz%yMqpB zcMZmmIt82AKRVI3(omirw869s`JBKUB@nz7I#+Y-%nTgbf&RjDnxjG3KnlS2Q4Y#@ zK4h`avHzvFcXVg8p**DDaU5{>J0JR;zg_xW+wLCy&hP4Xe)K!?r}jHOr~4pG>4I|O zvxwsp`w8os<-jrOSN}Zm-W$VS?qr)_+h871H}-MQ%l$vJU+%vXa*m_U*jCt1cCbt! z2e!JpRi6_%EK}ysLjPC!Qu8tEYzyOs9bBROC>!>i?q+{xIWXU*EdHzW{~+`(L%;kc z^fGPgv#6f})bTCW)zRagA9l6}u8!tM?}_a@eV8iaOshTGCwO0U0^@{sb%i3kx`G&| zGf=((jOBUo%Y~m0eqPWypo5?-(7xcVt^nve|8e5CoIC7CzbIs1MjkQe&J2by&LIDM z-iDypT}UG$;cWLg5>7j6Y|E5^IZ7Jp&$$_Tv&=E)NhTZ71GC?zW=$Vtii}O%H94GR#5$RCb>l&< zq{dV{f6!;txP3RmE!e&ah)pl{nT(dUs2yV4(`kBwEN}E1^qsljXW#eHo|Scer|0pG zVW$;uz<7Lh?Ec}HkI=87;}*MN`wrM7=zb9T1<=O5?YAI}J7b=pPc!PIB zj()E7d3;UO30@ubHC&_nR|~@MjAJ_wwA~qF9M~2+n{n8W_$&;e&KZY&DF^L{HqX@D z1m()-M|#6{$mAH0XAH)Vz~k*P*b7t7u^{rpaq>!)|BmkIhxVZDKpteXZ8^xZ56HI0 zwp9_~91s4|p5~!!`HbLP7xQwC$wQ|fx(8z(?A4*}XQ2(1qg{E>CJLb&^HG2{({5iK z{ZQI^VKmX!IgVoNirSF}@SOW$=R?qow(1}iJjhhaA?g1(I~ z%q`+}!`Oa2C=(}gEuOuw_ZETOFl#5q(VelWkm+ma=v)b%j_x?z8EQZuu$OgX6^4U} zT4o6K#5p48)A=2ApV!?F?n1OR&W9b;%^jI~9$f&xO!%Qab>8N2qU{-0)M>jbYPCPy zbsVx;C+Sv0v=C`?Y~onPG48}apabH(1|8Uk_zZB5Tf?CvzjZ&2`%AbxaNmWSb7il^ z_nDhn-|t~sC|Ag;uo|p3tHU~EMe(8>vMcNcyUp&f52161@TH*~997_HadB0EgP{c{ z4euGZ9cer+sqpJY5MK#3UY zw5hd)HoaFiA(G);kEQ4)!n&5#jYeLDI37hBUgh@Mw`AZO&bfFZIJjG=uw0&cu%sE= zab58B#%;%KK+Ey)t8u!q9rq3h*pB-mgm^yZAi&s;+W}VCj-!q`uNgjKow6U4L-(p+?kLB)_Sli+i^LVk-KfjeF1bv?hHitya`De+IAeR zTxDq6ahD(u8QON-y%?1;T(;wU+IF0W1>xtHc-uc1GCckzeUYetHrl1vKMA7J{9*W{ z`}tKm!@mpsKL7iS+i`C)IAJ^P#}FKN8EMS+Y1?tHA`PF| zjtepWVmodSWr*##JIN!qSOwjDQwGQ@VAstd6lr|QDkj$;I$*pBmQ+i`_;kjl@m)8%v7qIO^+5vK{vv zgys0P?YMr>*)O)^DA%8`9p`u1j`NG{xLmRr+j0D1V|S*u9rrmDL}rNx>04R*ko8Ql z9rpvIl_|F4n(1G0CV0xT(vfcF>`8D>%DSBX3;C0NMHaqNSearwjz6$uCfkmq>V9oI z?lH6qzqTDW1B|fe)&-ea)$n%2b{uHfbEDNHZ`M6%YL3{B+Y4o#f{_RfWL<^Ya7NP| z%o>Td>5Qd2#daJMaJ22X1CW;M)wbifio`3n;}$U$u^l%R8S;wlI6qpYS8T_zFucZg z90hrm?YO`i_?O$N^s;W_NILQRsvvzR4EvmOQOw>fwi>(Q*U-(EwGIF6DG~e+WO1dI zJ(X_$_6qkjx^uEPp4ijr&duUDW6z*FFAEDVEqf;2A(eM~7Tx(-^Pz)1hwcJp)6$+t zcVQNW6U(loJCgM|vP<|BDcjrgKvYnS+m^N(L)eImwUx2OU{%>0Xv(x|gYWSnYNdi!pZ_oK7{1&$$t@ zhOi4c)ykj)ROBoYzefSIyO~EqjkP?FNxgCAlT7nwSF5Hbhi@3LC8^N zwX`5*R%@sduMB7nRn1>J&!s-fY2_WK$ZVT6?F>Y5d`2mkZByv!N~M7|b+U3lKp*o? zd>2lKc6NuT_CAqLs7DKbXB46cy;aV6@z5&8Sc@=k6(d@?5292(Bbb`aRS-iSgesm9 zEbAe!BixhE5+AZ3&DfLAA|Eo14BD9qIi8Wq_uFWz;-rmSaW>I8N-=n#tagUf>YswM zklGV`tp9I&VF>L;>3fRjLH~69@(_BB`HWQ2N54i4Z-peQS}!ms{Z0c)oZ7!`sPH{Yp1Gu?Nn92E>ZQ$8F~~g$g^QPQmgpS zzGn^H!WQ*;RaUAnwNsU#cB&H8P7de7%h6doPg}8Zh4JM$?b%3SR_2vZkGCqZet0us zS+az3S3-T~Rn;|r0a}k6ud43O*@*M1Dm>NmU*-6qd;aU}uDa*{tMZ+IT6UDv%Ka(i zIJeW=`Ey+4?G$O9u{{Xi7Uyi}rju%+|1cWBbz0~E1Z&REa zd8VkbMLndaaPS?Xp3%x_4ZkZ51I&3;fEQnx?R|ei)Dd4sbF|Onsaqk5ZAnHe(Ni@0lugy3OcIK^HXP-x|c32j`*<+hwbY+$w>dAf_kA4_wEnf! z;6`|k<%v<(Qp-XPy7{0!!fo%{g;FlM2wsmMtf&=^cj(~D=GkB7vvDf2Y0 z5^AxAtdd0_NtLUb*gXI`t%Mg}_roo4*wsZ_06A!)Mc2SF9**!WaIhZsDfEWf)I7KN z!e3Ju2*02(7&!t=a}Fb&Qdm*6O3&cGG5j~4|0?)z9{(-IzcMbgv%KT+&k_knqDjG| zxK%W`OsTY(x>3nXshcRxOt4=maS^7Tx!F2vr0>Mg5%&HF6#-p3^0PzXvp+(e?8Omk zWiKhFUOz?LV(M0i@hL+60$Z(;p|kTNqZy-=%DVCgopZ-=uy|69BX6S|^*HimVgP(H zF?c*V5)t&^@l;{}d|LUcsgHK5Aw@Z@+%plwyNm;tlZ)Tx^sur_4J(s5Wm(2yW$0;8 z+j~Bp)>*BnZhHmw*@@cpqNUmUJm`M9TdrWYtVZT0&>*+nL^U?z9>G^HyJWP#vt;d29wX`Q_kMSW;Dy$Dm zK~bd)n|K%452FMa?hLbwz79GBmZAf2BzV6Gs`O?2D}D|C%D_;{15KgLBm7f-D$Y7^=s0vF#VKZ-8A!XB@s`rTxR=5)wgai(iaHr{L>wIKFIPkQ6OrL>}wupMp)YCgGZIz7CKmR2jCb_uGG?| zpNjK+6URa$N{*vSdjY&vX*bfr(r$xeY%X+DrClKomNp-wH7Ij+m2-B)53Es;_Ah=& zCEtVBZHR7_--T$05cnYje^-lzcdF$cK%gqipTIGmfu+f1$)$_BEE%Zc@C7G1jw;KG z;jPMYFC8q)19Y(Ez6u8~r9}WOQ+3=|er~jQ8{tYK=TqYun4-m8_)Gsmpwi+dc&Ru~ zF-{2HN{gR^Qd)57wbG)H4r;Lk4y6TWW4X{mJ)4dW%Y~pP;dK%2qOaiJ9dz*R>sz?b z=KJ6zaIZlU-Z@1hLH-{8h|alV8$#L;V*lh3${B%>ARd54xo}LPBMXkrbWov#aEvE= zgkQ_;W#@3y1VxlVp0ly29^@~{9CusWVniHY5jEg6t}@q2M4cmY8izf4$F4; z_o)jt-Nx|p3M%7617P5RiP*_k^m%yQhrps$aQuvp^WhlD`9&2R)8QCT_TsIeR)H$M z7LJ{8jLn5y-4w-<(iF=%XJIpagUMYt7%yX!IfI(a>C|M-ttNA#HJNji$(*rF=8SAI z=Vxkeb0^bg+)p+4IOR-c%wZ(J$qCiH6#rpb9bY1AJgtGzcCDv1INEcil&T5hh%8sZh zIg9C*3KRt%x6=WzEQkL-^*^Bg2i3>ma!&X1(Whxu*8anb%=e@4x{g_S0RO&B$6fgM zUEJfzRs0NGzr&k-vOMMQlh~guCd^2wMZkcm@^+;JOkw+V=&h+%H0yK6GdRTzwt^m1dp$ z9>t8XccUj@=7VX^XD1Vi&{omymCtmra|es{5G7QcgJ+jL%&sPp!S}=|=i?t@>_vCf zGykc-f>hptrfKiOm-kfu#>hLXZ0cBu;2l^t?GChF-c!?%0`ETIsc#{Ocjih9hPFrc z&FC4aeRsAkd>Kf1 zpx5)_$bbcY1P%$>q%j=oqE8iWFc9i+YX-U+a3g@guOTiY*Uj)!KbOE%GMvY8!{9pM z1LdqD=r~K^QkVLmqQq2jy2WoM$-2;oJKm8bp)$@u*Jd3+;J1mMF)I{9HNnKJ-cQ$F zjA<}^Oo-xU%6?^U@FDcGgz3+oX&2^$dVq}HGW1}X4m+cG>jCTUG=R; z6?zEiGIQF;NJ#jY_*A??=YudEx9%}?&C>w{elAPyN{p!)s@)8Uj*(!faWf>Ed4i$V z&5&rcWGKMxv2IaVuH2g~A{C;)xkz7t8)E{Y0k_tduFX1tur(e)*8v?sP~VHt<*VX- zh9YNUE`(+FMrNuD!uG11o{!V#S5%jdwUAkmA z^#9m<^Y|*N`~QFD&Ls;Z7){iGs8>J@kmUx#qEbzO0D%A@i-M(ILUs)hlYpQV5Ks|O zQM7I-)LNHTTk1-!wzN`9t!=5biml5HF?Fd`v~E>fey`V=*W5cd#MXZM`F_8D{J!(Z z0{M^Y%s>Dy?aLJT_8 zHxVa{1XUXmPq(pn$|2uSnu0$8Vf6)Kb0Gc7r`46#~|ei!${HRaQfTz=Dvb^j{bHXcZ;`c zDrDTy?Zy0%oc#Im#Qbh-Z2TcHV2#^G6@2IMd`Qrr8trr`3~H8m@QKKx{R}x!VCgoJVrJ@V=C-fzM6Gw}OIh7AoR` zyuC07ea(UpNQdXfz>JCMA?c5?)(h=VCcW=8-mxYd#6w6vTt$d5M$T%S3=G_42GV82 znHoNn@r~bJAX8opMp^wGy1ry*yNsqZh_3BU>i<<@_gH5d6M*I2#R7{ z@O1h!LhpLx9qR}ol+7AbK83zADcr`C@rl2GB=TetxmSEJdXl~*d4i~kP)w__c*4fw zm9KeZjx-!9?ny9(4=I(b#p_KiV&g2Na7V9Hda_B@`@hVD0#Dwvdtp3#?>ON8<6hy6 z-51W-dxt~ngQkfwamM0>FcwdI1F{iyGwX`8MaIN;BQuAHyE%`yN2=IrN~1H4ya%Uk z%_r_N&MOTW49@8J5<1`i;sDr~gkY&QnBaSx43Ti8MT|I5PA(&yD=JKH# zCqjr8}$M=ci^rz-kVp}&CQ5r(%>l(z|}GCu8h3Z&DU+u6Hbri5RqRIZpTbr3r-M-Aq@(G&?G}YDR)wVCr zTe5UXLtaDeqL#d|k)piO;lgp}k1qIs`=2dpDQHyr)-G%9G@BG~-!hCu@lDY%oWwQ2 z6HO()%rK=B9ekUjCC1&lw5bUjKDcR$ZHtD^7uO!~HcmrG{E%q=V;e9#v!HM!b{=!S zZRZ!JoL#;yZ)Ui;rFnf>xG*<2FIoWt^+M^`l=ZW>j%dUR7$IJaQty6w5^xj9;ZKs67mu+{RSUm$uZo-CX zj`IdKPqUp{R_Eu2b6u-*)(j^%zwpP+x!9=f!u)b4mAl4WyV~7C4SJHCTkW;s+0?TZ zK1c)tauc?=nfkGj8{GFb1^4k>L4E#uH|zwkNIpSp_Y*xdmm-;i48eKf0Rn zJZn8)&Yjl=1a$j!AYM{P=IaZ z9H;+`l+(E_+MTPwlzWe;nn$fOhp`#{5*K%P{Bd# z_EBT%$BcrOgc1!ncbm|c*o_FVe)WuIgm}hEnV9lSrD+w7NiCo=o&WM?E-s&55p=d* zTDZoy-yD*Ku-BtD9cRqi(J*5>KF7&n!5GtTE#_?QjPP_yG`d+S$mM2xXE0DX>#vAm z%JZLqaWsu{^Dk=|WvYH0ns?ag-}v~5^+G`^` zY?%k|ADV`Ci>awUugXsuh7zC2ZkX2uT{qZ`rp?2{VR8uz5`Hfic2W*s<)nHgob;eUG@?i1Zpo zjj(qA^0s12*yF<8nS;BK^tEGOf~dE_gtskUn}0vRgq_+FgPA=;`re~&IX1g&S-Pa} zz4{s!w>8&xv~*Z~sN-%gy*BOhCr2CNbl?F>Np)#tdTGfNY)|tqxAk)+tLD$19GP7@ zuh;%0u`T_up^dwlT!&jNzJ1lOvrq%B818OA2}$ zK{SZkdPMJT{Fl&>{=1$2I@-B!BDQ< zu#X1yAMT21HXDr(uze`h?qE|(OUyo}yvkSAR8-8VJY@4mmY^%$$7W`z1m(c&zS~Dc zeQ%{0Zw1)-x2o4H2ou2A=4JnOYek=?DRX9*COj2k=f?%MzTnGkwfOIzy08Tn^cu?X z_@I|d{MmvTGQ64E|Bihbd&k_zUQ2jNV142CjlFIH*rWQWLDfZK6EQnDCI~0CeA9vd zgY6pG%F1R>ouirbl#=R_#Iz);|IhbxT*P+TV10>g9TRf(W%p<_ec3;$Nzme675-N? zZS)NrW{2}Wwr})p))=2jsaN*CsnL$-rZ5xB*G*#I+cx%*7d481zc(W{A#T7kDelnd z-8y-rIQ0Hc@7UPpZH1YT=ETPHCAV%&(C}~fXl!d=+Sr15;(xeTqg(8U?C6>hx10Ld zkmy!&Y(K|@doZ(SBkn!E{4S5a2F7sz?WT{3>deduEnsn5haN~+ykvTH^nZG5NW5tJ z<@bi<3)+(ghSsNCntWN(<^47UuW&YEheoW+;~r^vaTPC>ojbyZ3$jq=CcN zr(T+JS@Pvc8~R-l+~`~hsYwIFv-=Mm&ix%jk`LjDF~d%Z??YMno2R%7WL$=CSx!KF z-x>Q|&bDs$ybSwWw}aH-9{sIv z!4Us_v%g6n>&rc22{l&kmzh{z{fw@7z2cV#-@*Mf<8jdgza97v$4c$xpK3nyrN~1# zZTLSXGk&r#_PyZaI6Zq0%)4oX}}o^1I0568j} zbiTtmWWUaMNm7jaclr+}*0Wt#C)V0Ld$vhWTnj!e^c{}7s!hzrF*`EGtcY(27yUQi zl^lRG_t!k$SB2DjQZKvv<(jL5{!@GT&+KKN-^p0gnK53%k_(N{X;5uPKY_scs_53@&r6{M;2^VJn!%?&2 zX(VFC*2uD!`j+L`aND)D!h#39R(w~|_#B;6`QAn4J@)MFp7`wk3mzF+)LixV;5SD@#<`z<3>gncjBzB#J_m#E5RqdY?R=ql$SLUSVivkO?Gwd$5NrBnG3Co~j@}Eu;S=ak@BLtQO6ls*qbKd!yJYnmtwFze0Airz-60W#1^8Jyqdu z_EZJ8%KZ-UUhyH(?5PU5Kg<5M_&2dXe)4Ae`9%|H_EZJUDzV@&xtl#zVK;lKf@V)u z(Cn!Snmtv)b0u%~RE2%5>}F3@*v+1*pxILud{F*Ri+e@0rz-r-o~qz}xxXQrJyqe( zZ>E@Tv!^P^en@+=X!cZv{Uq7Vo~p2$JypS}ayNUb!fy6d1HClCt^PgD2&hSsS27sRY9|-Drojp1xqAn_Ed%4?5PSi$ldIz3i~?Q z&7P{Tn>|%Qv!^P^b#WM<*;5rXd#ZwFPgT(DsS27sRY9|-Drojp1p)H25_e5TyeR$R=h#v zcQ%xJK-?+*SllhXAigYeb0>!5xBTS0;)f!a)S-KYxKKP#G<&7O|7O|m6(16RB0epe zJy9Vam7QklT)_HT6FrJ|XTAe=oiwzA1hn9u%?hkkNCd*eISa@|{%1bGdk(c$;{S z_@MY>@t5L}>2COtI7%ERmWbuzB5{MrZ!j4Dx5V#>KNNS1zZL%^{zd#)&5Njcg07Anu3T&t*OCagN%mW1=Zf&u^BuYG6n`c6=fs!AKZ{4>27}>3;s|lH zc$zpxoF$$qM#OVT%s-cjYs8Ht@^Kr9c=D^p#f!v^;!WbW#2<(+l8EPJ68V0c zL_F`w{;BK-WlzDJp8n}1ekSrpf_hR(9Hr9pc?`e@yn>vj1B4=fywC{WaPDDt;s$6f^KZj`3xYNbfKb z>CF|#il@qdws@A@7m6+768T>s`x@~I@oEzB-6%dR{*Xlcdq~9ptlXcMdym}T5&tIl zq@!JVvlI`)50ZVTcrpq1u`|stxU+#YqKM?;R25>{p@B>KXFH0OmB3(np z)5S?73d83Q2dlcy3W8#S>$9A@|7gg_f@f8Y>|Jv>=%ja#jC{YNa(vy z+#^0iLjRvg=zmRoQ||A}{&y1LGm&OqZw8aFpD24SiMDx~SSt6k#CmeLWwpq@SnL#6 zh!=~Oh#SOB;ui5najUppyj%RPh&yVNPTWQs4iGU-G4>P06UAIHES@T!E|!XA;yiJI zSSL1#OT>0@rHHMSO#GX~&Ek#Xt>XRS55%3~JlaZQ}jn4@53>P5EDoT*i*}F7aLQZz9*j zrhmGaCGxp1-H#WCiD9uwJWV`9tQO~q5wT9>YTMLnoe}~VDz+{p8#M6GHI7AGIT)mtAm**NI#Loc=e9<~bMaW&;ZFe!2fZ_7~u0O z=;aDAWVU#`h(+&=J68dx|0!azI7Q@=-1I+NtQ8x?3&e}Wwc=$WmkD8b{+>X7OT1hB zf%vfaxVTH?>fH?Yy!f&BnaFQ8=^qwP7bl5a7n}ZErJr0NE)?6v<>JNSCE|7BH^ke- zZ;Ix59rQjT`%lCt#b?C5Vwcz>zAYXQKNdd|xxO{ieV7;$`CTX7i^K`ybg^9IqSlm) zh+NW|_70KDSJQsEc#XJ4yj9#L-YtGtd{BH;T-SyE zL&Ous5n@;@63uf{$d}2^-~AYVfmkOtiCn0h{uhZ{d7SpE#T!L#)j@ZD=}+<-Uy^H+ zlTV0TT!8jH;%~*@i{0Yu;wR$gVj7==B0N_(AVcDCk;{egu*l8eXy;<(q(p#r@)+ z#lMR0iF}2E;e#T#+M@k%aj3N{WO16vCGzRd zwctrEiBB#Omx~vQYsJe%uAEQ#Tf}dQ-xlu^cZghIpYl(N-tP^2Wq(n8S>(d|lz(6R zOgt!Z>3#ZVi9^JYXnv1?f3ECYp`Y@_;xzK)`0o=Haz9J%3uIp?Hp!g}{8P^gakbpn z%f3OpM()?kev`OO?)S;QL;Rumg!q*Bw8*^z81Jj%8{*sIhvMHw?j%6@fg<-2pna$~ zQp^{}il>MrVyVdO2N-^yXnr?=y-xP?#HAv)BcS{`ag(@Nf}T;%nj?;(OwU;^!h?%wf1>ae#P)c$CQf5hyo842$0HINUaY{?o;|qWN71 z?%YU${^yG4i_1jruR#9|;*H|1;vM2$A~zkN{13&SiBE~#DuDif61&CM#gE0$#2|my zfqaU1xOk*EL=1`CoPhFU#nZ(};!JUlXnvQ1{MoW|2Lpy*DlQi<6wU8d@V`p->qYJz zz;N71fc&obp!lfB{RQa%v}k_Eg8fz5xjz8?-x9g;0PX(}gZ$kH_7su(5zszF94_XF z1>zWy+ZIrMs>qE8XrC`~{{h;~?_MBxAfWvcaf7%?#BG=vpU`ZL93ESn=bnJE<96E+ z({DpuPUCXWi^r129ukL(IbyCjL7XTSi&MnuV!2o$R*Su#OD>dqz1S?aifv-2xJFzr zZV)$#o5kzJo5Zc+J>q@h4)Gyzr|3P$+#~xl;$HDNF)F?$z9GIXej^JHHjHjBNVe{!*G zw!byvdU1oeNi^@#LGF6ldp{SwNACBDJ4Ewd9m4IBeYdzrd`8?Sz9dG)*Tgr(x5WeE z2O?hHH~9#PDPo#v-q(XUOZJdBT+9)3#R(#Jx@Y+mi&I1{K2P^@ah|w9TqxFyZDOam zg2e9^Ul(tb`?-AX0{1Mos{*tewXfl_=g2-?_Hx-5%I@_y(_awY>o2As!0z>feUg7k z;WJo{@Xu0thGZX3B0W}q$I8W>wTr;cc9+ebslA~!zZ0u)So!s}owZi}qK*zL-*bdK zUZ`Hy=DM^jY3YpAwzt==gng+i?vi>7`Q9}H(t`%s8Wt^UinJ_gT#6WsxpvW__J-wt z-`1sders)e?UJSjCBqGKs7q_hk_JyBVz=_STob?Nchg{EGOu!5`6ZRJ@@qRg+glbb z>x9}be;f}{6rp)9n4yYrZo=HvJAyLc=PvU#L$T~_4R{6v^Km#Co^mNTPm~>xpUtt$ zr;84hOaRVIu`Dj~#cM!AOc#+gty!XKDg`tk@ zDY)0BL5JseC+vQGyEeIF6!U@X#Pt0LW-knkRx$K#@G8;g_bAMMefyw~zr9c&k{Q$Y zYhM@`tvzUHe5chrytsY|2fx01Hpkm3UeSo@dl6=aL9v;mc$Q`HT`upSAJ5lBPww5X zVeaY)$&YgH$?SP8JO}rj^w1F${|frkw-f2ZpUE$NijSr5pD?2s+5mHG!i)c7JPYWl z#xy?G*XTX{TJ%59(UCr zHavEGc>F2h(V18 zg(2%$%L;AovBKNC9cz1+6}qk`JG>V5pY-Zc;Qe;z#e7xaW~{PNI)cGf?b0r!yW9t>^o zN`gJjx}nF&g>UF7+O@6c;G5gK!x`J~6WI2y+|ah3v|ZOkGoqLF*csPE1EFi8#k`)_!Zp z=AQ5w+j_!FxAj=tZ|!ly*F;0%t9p_aUV~S|u0o#w*prrVRZm9fs-9G!N8D zmqtw)L5G#Gy*q8!^+?x(uD=~TcxsSl$=ey5jNDhkFZWE`^>WYY(U*IM4c*@56rr4d zc3szD6P^8bXuD&Dwr38EZt1eaYn?!NJDPV@_uY8?;|zowcEpY@Pv)?2Cgk~*L1p(g z_y_a1LGMP?JL)02vFDP**GAW!kF)T)*Vh+c+p}iPwLMe98+&%2vArwUc4N<;`umYUFaYE=}*5;PWZL) z-v{=C-C6_P@N>&!dsq3IjXf2`8+)=sxAoY&ws%|M>rj5zp$@m84zKH(h&GU7UDAWQ zzn)^4>6Qj_5NEmUA($&<9uD&qnX_T0uIbP<1brbCy0vFY@hv^mD{kotSk+x=C=2}7 z-#<6wR_LGGjmu{Lz3YC}6|m={&Chd?9|!#jSB%PTJG>6%Sk;a3Ves%>lwZ*OlK?(G zM1KerqVEj*RTukSsQAjB;T2c*835IS#+hm@e?nw!4?D;C%-~`0aFlp9pJq#Dz z1-n(Coxv$q3)t zlihY}Pu3dt8-!`Ai)N!gCbu<5Q^J?vwScp_MjSjiG7b7zhU*R<9L%^`u6XxiFw2ec zXCmHg=*mF<%Yr`Ya*FGt!Qv*gyG!;55%+iS7&Qa=4O*GqFCRSEKSMhI2y>RqFTjj` zVRZiUp9kMcLw#jIFYAnLGcB|g{kpOX725w*_V@5slP=8j2V1*nUeNt_q;Ux1_v$wX z^@p*bI}GNce2Z{m9O++88MuGUdO^E((8ket-pbC1=Ob8gOOLI5IN?iC9@Sm<;q#9y zz5c$ER0v|Qwv9K!&rm#qm0>C*;j(f+k?zA@{=7xo}#y+FSlY`T@nqT zzVADDaAO+cO$%KMch?Q~Qnyf#m2oZF#v;hAiPE3>M;=dQ{s!*a6m`ODQMa3-S!lOu z8CRnJEsAEqe52~b32pCUowBZ($Kf!uOasNWsGmCMt?pilJfv-AInVE2j&!DlZZ`1* zqP!Md)r0qK26IfXcDd;>X++$nj4{r(FiiAXwB2*MK4N*8{BMfp?7*15#)Rv#+O~Iv zcHG9F=HKGA$=P&YZyk2DRlL)$T(SkUc_p~#1gcai!#NCU>fZnj6Z z-E6c4mPrsyp;>LOn)Oj}YfrMdmfV1{(6yxE23<=)?^+VBjTWuB3T>mRJGfcbl3fUc zayMh?<~m$UP)}<%xYrWsu+T=*aNWf<&b^k|?M0@e-7voU>v|Ts%^ozRVd|IdpZJ>sIYUJtc zQ@gIkXAuj!PQx{kZ7;d4HJTi~I*R(kYXx&zzk{j!D`;Q)>}N1v+1@<_ZTyqK)6h}X zy?4?xU1nUJ{B+lWq0eAUgdK5Ks~?;IbHJY4jk@G(xBd4Hdm7_*73`JHAlMH$?s&Wp z`pj6&aTfXF*oZRf&H^)VrXl?tKdsQyn5(Sop`Ntj+j>5+cXNKzePHPBuA+?fJ-1;T z+3PS4H%_Lr2YEQ)bA!Eq6!~F$92mMhY89i+qOGK%onYKKwZv<)C|AlPqs?O6KRhk$ zwpsSc32d_{J1hMB>w#S_z3!k4V{JClMoqWZH_y%JCpA_O2m71r2gk-X z&I=b|Tx*JQydD2fw=bG&<-!|qE!@(Rw6F=+HOvEWO$lb)(32Em`p}Py8>8&AN&ddp zw!J$kjIonptuwpc=iCipg0V1{n=tHiS%{xypM|+VAiOThYkbNY%mbP3wkFI6F~%bO z8Eseg9M0=gG3tnN8SD0Q&dD(WbIy%@&N(qoaLx&tZj`G#=foV6<3vBCo!4G7PV}C0 zLT_?xoPb&K-Z*gz>VAUtvKhOAsQYJsy8rc|!?t$~!5qmtVJ*hFr!jxp*n@iSPRT&u zf%#$p?%s7Mh-*^- zV}yfp&Wc`X>W|kVUWa~;xQ3%l9gH#8{o~-^yJ6@2f%D!Zv^%EHVSB@vWTEa-i`nn| zbNALL=iN5?6X)(}yD;9ialBp79bA(*cgHr*TfPY&{! z0ynhvt}Ov4y15^2K^J}l@t)?P-XJt z&ky4Dt;()%vp!H)X&IY)?2P6pw$16njWe#Xn^AAIQMNz&1yE+DJ~D7!+l6^&Xl*nN zaiy%m+#tj{*?{_~HFJZ_h$ja+ueC0Teq#T+YjfHq(IL^>dbS>Sg2_utXmd0*{LSci z)=S3CxF3Z++(Y$49P`)~HsktHfw&n5{ORt+okLl);cV-+o-Fhii|N~p{)Bs0rZ)p= z+0VZ7FRs_8qHXk#Ztu_2`T_E8hbQgt2*3O1@1f5ohqrG* zTfJf4=Lc`uiS~>6o|D3R47A@W)KxCZkA2yjCq04iv@^XgqHS@!!8QA>fpWVB{%kK> z;FgVRBj@F~jzyWKApEj3ZtM9j{CFLlhVmMYhR5IiKgR<#?lZw>1AI~vv~VwNnYkwV zRpPM=&vV{%+-F!eyl{O*2s{^B=DPDa6zzOQLN0^`%JY7nc0_0F{X|4->=<_qJ%3pH zJg9>w#zYHhW6xk-hPfW+|E|M4*A8_qT^d@{(iF-$v8CX|mJzw3`u3%5ZP){V%YrQT z;tt91ISPmA#DBXb8P83*h`~{KGLXWQ>j=z)NN`^mRwtNzB@hhuYr#Wx$4WTOK5ef2KmlKc|Vg~<8tO}`*wc?zCM!6)IF{0RO9sxZS&$}XkxchHnH z91rWPKn+4Ah54X1uoQVnns5b;PoXB0Cf*8Tip@kP=ih_+O2wdr|L4NfP7OduAeC>z zIH|KS849NI?f-tMi{X-#`d6ePIdv5@rlj7)K&jY&-Rhs}AlU;_3y_qw)LjUbo_Yr| zJ23TLNFJ8T_xmzZ=fdUi)LD=`B9&iCXQoa@RL%zvI&~-F%1%8F z=0R3qE}~B^I|%Q-x>o!W|NHNO{Y4lC+)ocLXI1aRDfMS2XZ47|wgP`f zVv^6KsB*u3C`u`H34&RvmC$XcehZ#~)H^efdn@o9l9znfKj4(crjnEVod+PF-a<9^ zF%?!iZ&Q=+r#YC;Uzd`xr`jQEi}cq{#nB_W#BVMwNx`jM%xw{`e>#_8CDU^(J?H1nL~Bpc5^tW183 zpPXW|g;|+zvI(Tx4GA$Swx>S6C^G3RtP5#v`z73wlVq)`^N~AmH8pG zBp+^kvNKH~W*W=$_@je%m`vmKH7c*7>+@L*+>fRf!E0n}b|qDa!miBh9xTg4l%2g={PZ z#xfCU{}eGD&h#c1+B7Ex-@*U1l~9(IQWQkU^q(RZDdWzE(K5{|WxT20BU_eODW^U{ z&m)&E>$Fl%qd6@d|E!d+m?E~)-a@W6q~=co)7Y3z(F&?_jLU4h-GTglvX$U^tByTwy-(4U>@P*|$%odrJCfBsP$9 zB7>%1fD#FepgAL**$a%KISUao;-nx$1Q&PdjEh83V9CzsWimWN!;vnR0h()oDSo^lk5)=Fnf zv8OUU!Sw#<*Y-4;Q_^eDJM6MB%xUR=gaUg8%^B(M&^(jotn^RN8|-qLv(qnvVtY2t zL(=brW_u3Jp(EM&>7dN%tvc z{B_OK(_drQv*=!)enre&k^T(I-<~%f?$sz&UdN8&)$?me+R^483;O7__y_L`fTZ9Q z_!%KK6C(u27SHi2I`SVJ*&vdFt6)jv*92*)XFm;dI(uj80vfIKub~Q4zxD)-!Su^% zK8IRU5bS0!z+kBn8r`cy|C5sF@((!JseeFu2U6JpgQ=s@KvPmLL4*h0izlnfjH$^A zYM&BeP=1zSrIxS=QlDj`OvO_-Tv)gaQZTg?N$8h)Q3leT`cp_Ir{2M)o%$EZq@u0C zVxP@Y%H~G#fw?Rl=Wgg7#NHK{YmBDt&b=S5gV|RCRg^krX=9@msAfw+=GY{Xg0y5; zAez7}EOaLcnQ#@|Via+F3fw{|SJ74~8f?_xW?W6raE<13K4Ziz18H$ic@yEBp;XD< z?wmp+B4rmD!k5^c3Wwh?xV{xe@KpFYrsY}Le2?A!9@AyFQ|!0K&NeZaql&$QuF%I) z&Ayf?{j15uuPAIvQ z>O1~bjv+H_*4FXn6N(wOD+58ehoK;3YO&m=&QLJ~12X@PNt|Ufy`i7tpJz5TG~0Fm z4c%onOK{CGI+3;?Aco{U@Xp>1#m;=D)p-MsZjH=0HNvmBocZkYgPndbew9Y+gsTy= zUC$ix7=qK@dK@ZfsHvrT))J3lrluNMQ+A~_9M5ts`zBKm400b%dn?!7Ine~W$!53{ z;Chk?cZ;cb+$&orSL5GzadXiM;T*dnkTTCYxfO2wsQxnJHaE}-pGx|S_&R)k0-qdv zZeY1_?S#t-lQ?dEjfpn7hLgRO5xa^08Y5o|$C3N+?`Z_b#e@BAF+_Se}Nj%oG`jqRSP)-w&}#~k*>Y{`R< zjv0^PYL{~5*IV`~4&vwm)Yt!)$SF@VSRZEo+g38Wa`J<4HvfjqKnr$CoFr7F+dE23 z?|1oa6y`b>B0;Mi{5!zPZVG21v_aX>9Y$7mY+{5uP?qSB|4oZ*4hwq)n)ePUR(Tse? zXyx+FetQ?SM-jFf5!hQ#L4R=j$u9PjZ^0vvGeG;NRQe>WL!0r>{^?p+yJ2#>{*$Kb zpPkPU&)&@hI#8R>3xfS~79rk9u-rU9#R!L)`uPQ83tU^CZ#vl?rj@JG795Ge>1|ke z*uUY6{o&K$bSwPAGhp~V4WnT=2t(mXFz}&_HRep1#-mw}Sp>r-8kWGo57ft82*WW* z&6vwzm`cNSFz`-u%k>=Tae?82Pnx2Dq_yia}q2VYP zxQ%Lf01U-6aDrP;1HYi!Km$Lm`VI_*ufi~z`o_*d;~R4}{_*qIF?BHforYEzhNQs2 zuX-lXum*-|8m@$)l?Fb>SP#QE^Ci!<730Pu!hWWp#yx3_YY;=h3e+x>e-D$t=02wW zUO3&0km1{5_$3WnU@$4;SBax3I`$!$#{R^!nlKL9jR|uK4Gi;j7z$%y#xTrXa2msK zyI~l)9Wnm_t!Ts^8Fy#C8%{?f1 z5b6)WH3zQtMfUwv@Ef@C(N5u$FpQ?p*cV|M`x^d@c^Ch9(>eB2dWPX?#^Ajwi|xuVX%=GlwbT9Z23yOx_s#aQq};%B%?*+%l$5uQJ{W zPq&QOj*L7%&vWJJWXkwGIGHjYj4C!|JcS09@lqIgm|hS?^g9`S_xBh(djUU^Gr7G3 zhC;Szw{$4xD;-*m{7atv5h!(2qBStY!!;c_fo#_+T1Fbq6QVk@!uN%d$UWGTDaShOcQuX&g7$hWJU5+a@UMYe%%2Fl`iNFT2YN^JYRA z(~dGR5SVr}5r&Zq(8^6aS}z0J(FLX*tuPsJt8pHb?qmv&v6p2d5?13Jgm(*)KD`QZ z1w7q?q^FU;GeO=IHt{1;Z(x@0gchYl1VbMK7VLzv=cwJB*tXyD-PD!c|E# zyfS#18J=UE_8RhIKVTQ36=U?k1Z-jpqO%`I@8e@4x?BYDuVCb}K7hd*_AI)&UBHL; z?zQ-IlpOAoZO(12Gm2<=+};Zz*Sq*zC<>kf>PtR?E6?Ig*mSQzt zAy16Q#*in)QDE7sa*5rw9*ayG8TuL;@La=E_|o(DP=j230^K}tN{A!z-%ho<)% zZhG_LWx#0gNs!mVXe~Gv+A8guqvs8nZ;CqH&nnEMPazE$1O~tpeZ5G|MZN&0w#U*3 zS2-hq@=BUR1^KioVAz-I#Bq$iLF2H~Hp#3?VkR+lw6H`DJeoY1e zf@7UyU3=$hIGZDi|E~XBpa0fA{40I_+hhKpD7<4`6pUrt=NO7P&O`NaA`q~`+sIa& zcvogOn&BHb>HGo4EY6AHOoWYbF45|`?gscx5rxUujPqO$)+sm<&SVPzyx5Y=!xU?q z7fsAAO`g4XxPUb#7RHz*PjheCBuT#uG+rE4lzhlYR!!>ernx|rrs*B%pSUc8v*dEu${ixhlrl3T%ag-sGG z2)B^Vp<3#*t#jgPEBaE)pEP&i^xES*T(fuL^z0ij84E&_XXhO%wR?6id7d7&Q%?uY zUU-_lu>Q8(jJP)8MB^g18spqMfgP@q3NlPq<}&=9u94s(Mz&Q=FhyvohbAU$5<^ui zOX|7_C(UHg)!?NI$~+D9y$`2t)et*zI@Yq)+h}k@)x<-^#!u$JP4+pSB0Alq=*jIk z(Gk21G9|oy;zIvuI8=|fO=+b1?XHnvh8Ygn;kpvLarzrcycWJp#?N9LTa7lOnA#AB zm-H{IY==pE1=G%l5*YD`&yBH)2pYW=jO`|4tYS9Y*ebl(`0#;`X@b^;d#!C7Ffrba z)3x;>^Gt#aY<YNVl8wbLQDH8FbBXmh1J;Ep zUiN%#miOLKoGI8msc3k+b;35Rn??(htXZ!;blBECCU<9$x+08V4+#MO8!PGj+kU@ye^l8EmrlM5>~An{&!7`@Oi zdST;&)p5b=eOhbj7V zNik^J0qk*&o+MnoWL^&+u0e)Ur66^}7#EC<_!M;0R!zZOIQ^0PMs`n<-V8xel%S{6 zpGrp! zdK<|{!MJc_0XeSm(0I_ncS1BFg&9V;hR8I=3aVgYeNEMi*rbjs5|X+b4qj4ePBVe$ zW&=!$zdGst98NTbeSjNHtf4a>ZX#lHHa=S3i4#}jY;?XNoG=pXD5$95C+Gv56T{id zu@{IjGn6YD-sXw=Q$&9*&4%E`z&zLJN&1v>AD9Wow}OJyiOXzUFm@HCAQNa?^C(z> zlM%)x=XvS$Bl;xH=lm{#&sG9u zUX+yNeIT>ydHc)m4fqdtHRS-suF;e9DN2D)$oS5sAa$bA#RX&IJq6vgokPJ1IQ^0P zE+L*Iy%~a{=sTWHe=_NvYrJEJ#7qBi0 zuK;EF(8P?J+1yU(|eckjtw*xrUm8hq@f;I;~I&}jWO1)DVTyYfJqcN z5oeNh?bg+pMA3W}PNa%TxH_>ffx}^4V4P~`%PEepOz6ANIGyE%^(UFpQa#tak3?DFX?}YU@y}LWVKkw1L$e&?%;oOZg#G4%*G!Mtg zTdFY5BAmPjl9KFoG91#;y$ z7vNlovmU2+^d-+ZuXlJ8RZc>gmQPsLzKZjvaBZlYPMn)@a@OM=-aMlk7x#rY>v3|v z!@15boV#)E!TAhM&V9VYn=E)&V9%YC1YYoayYpJ;Zz~)Xyf#vSG|$7?jI$Nz3Y=^+ zEIaSu1&0?H@8S}3N81SD9FCJ081LfZ`SVBb1vtHdjCE+@Mi~|P%89>D^AiU4M0VC3 zoVhr;mO1OlfArNqg2-RMT8UN_us<7^ZeeXCv_iIWyP$dL;)a4IteCg5U|B~)du#2I z`hwU7-W>(zGrfN&RJXLf!SV|=)z#(IwlB_GvUEv9UPJAomb|f%qP)@J!g1%1E@*98 zQ~-g31c8FF`9=AK1>WZ1Us_qB5(O_)h2Knec;GTVKo6zj#| zJIF|E`}lTjPmgMeS3qRZN~{OiiT&dj=QndO^m%o*EN*ZeJ38y@8yaCor;or?yR5Y{ z(z&v&p#yH{&=CmW6G>Rm1L7KBM{kHnPU%F4NLzc$^4d;C6Au}|&hAb4j1vKnCTK^c z!i;w2lUdf;(n^((z_0Y?zw?@9XBHHWEGP&&-w)&$?kiuHR}gMqUluOR&CLrJ_<&zO%v3cRpE_ z-@0yHQ&UsWaW<@G_>T~!<7`Bf&}Gb5uF4p#8 zEhr0z$Ii?vM7r)W;kxa$&6VL?B*=Mq^^Cl{0%Q`N-&xJvJZV?E|PXY5fE za6%)zrc>(F$IgZE?Nv12V4K1yejn!ZXIKH?E-k@e1i{DM4`kn>HuF=au^ zb7M;LW-a-9k#pgUsq3Be+c!X2qw^>GdFR`!@|_)~Qm#e@0?tuPUsL`p1cohpM$s44 zO5N>Db`riO2?mmy_&;yv;({`SdBK`-ZcECkh|$TN;e2%Qj6!I92~h-`Z<^e^YRq@6 z$`9v;jh88br2M4jW>nN?7q88O>y3d%r!#+ML4lK+?<|{v{EW>j&ns{mXB3nb6hQ9d zi>dMIz}idCjb{r1H=)u4&c_z3`wEk#^JzT(cDU9ub3>nZQ;u{y8%+!OyQ#3tS5xjY z>-i=~K4r~t4$F7W&v*Y%&uelHpW!TR%xi+oajcmity&A?&rM!_guJ{6+fR+{XC{|F z_RQzDj55u+5>49a-`Fy$d}iKlGo8E{qvrJ4-fv!gyK}2OqrmB5edocPPor~-jRIqn zd}&qwi-l|AwT$M7^4MaM|FXT7t!P2xh`u_L+h2g#s=cT@Z$AL8G&*aklf!s{Fam%Eq}6E}T&~3LbOVs;>#W9|+(g=Z!f( za%?-00*BVxj!tWF?TU!`I6czQa$$pS^oz7NG_`beHnc~~nB1_Wc2R4C*{Q5t!?T^6fLcaRL`#{jnvGZ zIeX4ov#n)II$D~RG}MRq<$8kB(#py?m616$)sZ<NbK; zu{s($twptU=PhgVY#p_W+gckU?HH`B&W6QpOWSK(k)uYdseLJ=TI&0XWlH6&Na?(a zvdYpa*5al0%aGsYEgdb$cjSVW`p#ynZdrRfGVVoERb5hD8mXE;dvauU>AdPhmGrDZ zHWOXTOJ+~2DVbIZ_x6UxwJl5P8``bfj<$xnPA0ZxDXv#btd(92iAAA8JF{#`=^R{H z+Ip40TU0fbWs%u)sv}e9)XbiesG489nhPjOqP8A&-5#NnTm7b}me)mMSFA|m()Pu* zop9(KQAy2|vN@5-(@SR0E-jCg&p9hHwX$?>P3i2(^Q~p5!7-yFoe496K4uDLDrNp9 zUhW%Pm)4>(ThM|~b&G3Txzez|fD+3yF)39jnMir*)M~4B>5`_9`IpeNI?iipgI`By zq+{ihI(N3gvWRpvoWHDLNnJyv88%c2qOUv8ibR;5!g0tBYQk;bWoM(Q&zdu(rks@+ zpN~YE8akB~tFF0r$&!ZF$l_Y9?oiuV*KA=j*|e;-siBvyYKt=$%WX_Gv&*U@Rc>LH z`rYPKPcN;EHOJ=;)R_(I-mZgaWX&Mz8 zP35c-cHx9ziG@4~-8@oRHf?%!@7Y?U4n^BwaUem7#YO?k?K~*SaYb-fe@%!Xp_f;o zpi9*%&7jnWXmur1q2#i;SJhNh%&DwK&vm;#n~!PT34s&KsM^8|8QqX;P@9TGqzw(K zb(7YFz=_3RnpuLsn~8YeOYp3!nN(3Wxw@vZ)Jt`*LN1>(EmBfmZlMdtr=YPx*y>oe zsI8^0a~W!g~gQ_&l$=gf&z&0^x&T_&K8F*0{9>ow+Am(602Nl=qeq*akwCG)H% z42u6k$PAoqt+gv7MlfN(Vn2%1*4JAd4Gl{oy>e>YI$B%m8Y~V+5tGG)#JG7XFPnuf zSXo*!d3vldb@;{;vVDW`#q2u?HP41` z>dagd)!2Q*eP!viva0IJ`50dLzuF9O-i*WTt%(Y~22fd9Q^7GQA-2SPnQN9iocb;% zZ4C`5D|B(U&qosGFuF!1D0O2j!|*?=qP!H-k|`zCC06`8;mb`$W!agWxb*6at_BUM zQ%f;>!B~|zv?j#JLUW}#X2qusrWc}!Bk}PgG5>BvHM3(wc4SUPX=O=u*__$E1gqj> zWds`%xYrL~DK%pLgq!)=_D)mZv5R%wsdp3bo~XFfy9ln+^_b-?<2DJpF8Lpl#O5uF zmbJ9j^AQbt86GCIELvKi&g*+R)GP63;#xNQ%#!l5DUp)OX*ILZdN91TVSKMQgLOyq z()La>NHl zMIHAZJ|@ktF2!I}S~5!mkr_n$nCmvww%0X#&AN{WbW=5}bk>~8`PK?gvaj(BHxreU zCnG)+S8Pgc<{s`O+06M9Bhl@ODdWU?(FlM$74-bsUM?G3+HpggsKaz3jY;ZDeM-3H zumU9B`BH;J>)n(C<&dc{)}sj4WQTsF0Aa(v*^jj<_ecfg1hKRY%qXLYzgYh8MQ zCL+2=P1NkRbCqMY?~czj^+P*1?q#e+%NiRwFz~T}DZ$9{+V+-O#@Xw-8k?{B6~}Hi z&C^=m9hv)_$Rf;m{JloA;zN|WQ{05|^X9Yhxisg(@z~pzcC_FY8qLI9sb;y0o<;gd5-xW@e#M&CEg-?Mv$#Iy#oN zcZ~S2Cv)xxCD@_>pVtSzJ`g`A`+h1iUzqTl5+3AzI42FvUY~SnzsrJ`I~xL5+h)HG z`tQM+jdRMtl=XBkq9cwd&T9NFGil)P^{JPpT$X%!(uRIl1UEWYLTb{$W;{ghKXCY@ z0gKFkH$4o;-&*jLJRv>&`K4qu{?+pL3(L-dvETT-5`4X#T#~{y`GQ9Tv+N`7qn&Jf zkUiKQVjmY6%AZvd55G&$dhej$*Wt5%-{J82z3*_4s!X4qKiQa10pZ3n!b2`A7koS> zV_O9~gTa#@?JTJrkMn3*qRPXfm>y^HKCOz?b#m^1C z!@&;(OmFx?@%{vSKx?3f*F{Qg;Si}Ckr*L8N#%9);6 z^rV!EAVKZ$~{Y7+!yfhx@?hi^uc)^2uS} zpq@V#+s-6BjibvrS8aUK-RmK7Z}skNnEPZ;cVh`xApdhmJ&-Y@PNWq}&tT$?*_Ufy z*21-DbOlUM5uZXQICJ9LJ2kO8f?gLjrZPTBgPPcNrakU#KJ6Pa62FI|euj*~Z{8#t z>2qWr-a|lr4GH77d2t1P_Zw1(*TTqrjO*e)3=KmtzVeMp%4ejwagH4ucN4j}c46sbZCQw#f08`dY;fk>yJF zOT~@ijpA1EUU7%W{>^Z|6j?8{zbd{Zvft7@4fRAGA!dumiNnQ_Vptp}P827JdaQqdhV_ zSBfBy5{HPx#C-8oajIA;a;aj5KUZ8Xt`)BqZxQbj9~7S!`N;+KJTJZ^?ib$>-w{6$ zKNWe&WB6oouy~RHdy#42&2xLCYUyj;9q{HFLl@kinw@eks=;%8zC#v$hCND*JN8+(B`QRI6^ zl)G5mDBdV?9VYreA^uYQgZPQq4+9G24i}FVM~Gv^5^k`ib)ucnZ6^$t(q;y1)Q#P5lZiLZ!ni64ph z0oTMgP#i3tB#stu5$_To5PvNGPJBarNBltiRK(QM#5YVFAr^>ZMY9ql%ArK|Y2qxg zN}Mk)6uIIv%kLubGSMtW33q<3N&nsAZ^b`~*to{{9}qtilQE@bxTD1p;#iUIq0zrw zp0!Hj5~R4|KPvlAN$BCS?{wcQcfOBFc`nsTa_w-^#=M5)+t(!5B_xN6 zdEx|dw^)IB5alirIWMA}D@Ktoir7TN*bj)GiOIZQgxt~MP%%%OAWjzfekA4jek8e0 zyjr|jyi@$X_?Y;VxR*q^yej*fB+Ba(@gH(e#ypPh{1}1p4HAdRo%24rkCuJB?32U_ z@of3mk%+g69E$6n+*gYm#OvgLtL$8tp6R$>d_??-xJNXLtwQc4+7VBbL_F`x{}VA8 z6HK~ikdPlF4i!gi-g``B=VOljup?4|7`Irxi1u3#18p?UG_`GjU?jPBHk}@ zF)X_8A`$;y67jz%z9RS6Wq+T9{6}(6LS86;n0PD+{}V{)8zcL8*{6|^pDTO4>`P?7 zK=w;y-zfVQajW=k@c|O?JwhVBr{w-yai6$f{-2PL|6KNDJZfNiGQ>gRFcSJki>Jwb zia1L=Oa2RGZxNS}i01dcR8|-iKx1Bm1+m|4DXkl1lk^WdB&?jTXbFibs)% zZ!ih@5po|bmdL$AoGssfv*WR-a>%y%Z>S0|dBcCbxT(MIALrA2{rN5|OBYD2$Ws=uOUN8AJ z$y>z-#fQZwNtEMqz8x1Bvv$D*t=Mugm{Y$xn*Ui7$#jCy~zE;-5qtHxgLhE+oPW zB%dXD9EtPU6v?wB&n0orUM{Yc|7Oy$tlK5uFMf-}{f@^Z?-qY3J}d4K_lmEIzY^aN ze<%K4Y!lxTKM?;S{#~@Nv7UYrmt{uA>D{o8SR|H+2@&?GjNX^TQQ}x}x;RUmD=rk5 zip$0I;wJHS@lNp}@mu2e#3#fT#Fxciim!`p;vd8h#E(SYH)VSSMROkpaxckT!IN={{mhvxn4B)U*Lb0#OuWy#m(Xtk*g*%eJ(ITK1@28 z?(N<1QRDQ~97l}boXT%=#@BAWYK@IPI0PqB|!B$kK? z@qF<@k&A;f{mJ4q5_w-PnP!C;zCiw0OI{|fmj72IuM;=PpUdnp{=MQ(@gea$;^X2E z#b?D=#b1eUh`$qCMHu`v`MfV46aOauQ}prv7|Ih6&EoQqyGf3Vg<^@A5V`6A0Ksrm3hiniOWUWFr)tsA{X?he5+{gQ$pS*`93iz?h?NvJ}&-1{IU2m@kNo# z+B2VnBJB!Len&hmekz*#oCwbix_Vp$pZamp-0y^3Cb>%Fx1!WD_dUTH$^6ck{`}UM zH1|Kj)si=hTf}YRed42{xgUynPfPxh_%rcEkqhrLpM&B%qPcGhf3C;R@Xy3B?`uMi zid?3ja$FoD4ioD{e)~+lMzKlUC~g+FirYml)X#X|6`vM=By#^-YniG-YwoM(%t~`e^mUw__S#5`yzawWZDv-{(p&F0FUxf@k8-1B25M`JXfSu z0m{8aev?eOSS%OM6KQ;a;iJWg;uMkJE;HQRKL%-ZfbueNwRoL)qj-~O?khuoyX2&} zOXQl1Opj|2lIA`$xK}b4pQrz?#5Y7^1PT7{O6EHB)cZu_x73tRh+K=FG7TM&<~}vp zTXG+C?rTHl0@?K6AtuFdi{BM# zQ-ONVi?4{k5V;H$!w-r_MXruT|4+o@A{W@Azqua{o+i16c(&MAEEOw6nrLAB(c)yW zR^<8t4CfjGB-bDy*NDyHMsbVSBGOtW^&b#v=YjI~M00-~^0Siniu**GL!tg}#NUZ; zi!>L(@DIg*h@Xo=-d9IB?WBQD zd9}D)TrFNN-YDK8-Y)JClj0-dW8zcdGvYq+HSss%e~NF5hecYeVEO(cekxjBUH_oi zMWj&+>eD_fStRxoE5tz}SO22k7|}exfLtf}ao`J>vZ$4Vf^#?}|^0KN5c?n&(B(`-S9Ri?n*e_-XNd@tF8G@t>maR98PBM#XMo zf!Ir=2^FSaE)Eulio?ZGA}y^@f4W#N&K0i~mx(mULjCok_uT2LlDCQXiL~27{gXbA zg8yp@H_xRYAC!DZq`4NxKPDa*KNV@kh2b%=hv+@0>MOawNDBefA0&>GK{5$bo@lWC> zqW2u^gk*=$l@Om+YRK;5nc~@EKe1FCCRT|wPQ&=M;!N>MalUAtlR=O6YN)?f+$e4q zTg0s*joDED5%F>HN%6VJU=60w*OEk~nATN`=TD(rYQM^f{5gx|hE+)lY;%@ON@mcYw zA}#hX{_CQ7ZU^}-$u#7{@MGfN#D9vk@5As@#O~r5;@M(fk!FCXe}QP8??Ij*xlWue z(#8+L78^tDZrMO01D{dCIh%Mq)al5!fd_;Uq z+$}yOJ|jLS?h{`V_lpO_lz2ouD!wls6F(7;i=T>?o?rOIn3ykie(qB&{}R!>e~W&r zlsrT<@8QDVd;T*){+*u#O_%>Hake;5TqHJ%Ys9r;vuNJSMSh*13vE~U4lyb25+4yC z6Q2>E6ZeRF#eL#y;z99{m=ceON5%KWW8x>`aq&};t5fkf@Qda>V7T)o7l^$?T8N{5 ziI@;8#VT>6I7XZxR*Q9F=jTeZOQkan;xT z9*q5B<}t{{I^ISqe2nB-l4ncaD%qPic1eDOMEX|QiffmwY?uSCT<&s_=fW4!Wh=QZ zPnlU;p={2I6;_$&3H^rUD_1qSK8yLmHCEZf!U<)|m$~XLnQjG)P??AfphMF9Ija`p zGw=n=kb`kI%$b8V60$?NT8tajRlq_D3+JmCZk&JhY2?~?N)fqRWpkG;F>8WkC1lnz zu*&c?U|GY;mCF~;S%r1z&>a7(8$Ow^aEMtvZ*i-{?yXHo+0P$r{PY61EUhZ++-5Cw zzfZ%XTN9spA?!txF$~Ps7~}U;naxXY0KBO0g)M_#_Qo=CV|lX6*95(6RWH2+^s>uW zxX9IG`S9q))Pwnr#?Im5<=c$Jyfon5?!E->?DQ&;9^*4T+^TO+uLf?G4@25)8(BE7 z@Njx*^E(oH55&%m|KHeF-bOu!FA=@+JqEpqrv!TGErvV0e8aNpi(7^5<@*ZUS;euQ zL3-Jrqj_Q1bV_dm(wh!l))%*s+S9ukZZ8g;)-&kH+q}YNh259srrwBhd?SNvByaQ5 z*ana6dhEIu|DEyf3G-!Bvc7EhN3eTw;I#IQa_0`Zxp`r`;Lc9(z+LW~!}RbMtUbMF zv*N&M9YcEYlhosf2+L0IeWb@{qfC!;npeJG!0nX*PAfJR<>o-q=7qfiIXk^W_h!Z^ zo5xGrfo3Va}Ve&YNK5(DG$ibNuj^*gu{ngfSi zaKT`sKRb8bs0pLprB{)lNwc^;UCND({Izm8H*pl6#jEsqOWH~#+Z-#|YQ^t@`}y>l zC(2u`L`ynWRr)U8bWMML;=~^jl}lS|*NKF{A4YHmq4wFTNH4j$RI`?W4@ zOWqmX_QY%B+WhhD>6TvMw!3r|N{`)@yd?2extjU=|GBh`1OamSzy$5qczjP5CIpPayx7Wsb& z_cl8x_01`}TR(t1(t^5GC0j$W`;2Y{(p_OYZG$7D+Yq-ked0vVrY8e!OP;*6tqaPD z(|T^T<8N!qL%niFwJkaAQoJTq(~76C-F^q%P~vVpF05_)Pq^b~4{P>TwM})K)r9u5 zHl?Q_jX26~#n7g4_$6*PI*~Zaka#d{!@nT*a+=|x*ez+_qsg{jiJQ}*#9iqP36wRl zK26<-qyQ`=Su9gYcK zw`AKf=Ov7tB*Kzy@!gx!CGkz^!o;R@PAu7KUyy8zByUdVVtmCC8`Gicn@xLc+_N*i zF}4$Jl5A^^?@UMb+=20NN6Ht!BjvYlPIEj~?b(zb65Es>hV;B~5QIL%Jh?D&PZ}$c zxBUuja`?oF_X_v04zt)txy9B!={v0(Q^%}dw6;WUO!-p}rgxm#C&e}iSuLq>?CUAS zdvEh+Cr&KFLA(g$_;y;@Z!PIde?RfCHM{0;1bx^W_03P*nYPi-A;^)$y=gl#tt}LP zFdf@{Z#qz&tnkC%mzbM!5?80}S;=!8YbtL;-XB4~7bJdT%87ZPXF=lj!yFe@?7{R+ z)-5)!fz)F)^5wA2ys(%-wsK&a|oq;vb>oMv}iMUq?7 zxyh?jxyWY(@?l%%SKpp?$K8YJE@*#Wb+XmJ2YT^jE88v9d==VxODebeCesd9)mAeW za}&)erWdkiwtjTt#LyVhv6IQx{OSkO{uun*EtPFQ7j{@OKhdp?wym*fuYnIB{zvu{E8;wB?6$$^ASwST0{2 zZHc_7B=@ycM&He8Ws+-U*b*&hiJ$bzP5#}AUxUG~MZ{o3VSsUh#+`=T?Gu!akB)6pMo^%lT`>Qsj z@SNQAWigJUT$X81vi0srB!#uoQ<3=g6by48K6cJarhI;DcB%w(9Qyz^mqF`2y7M(h z$Kv;3EZmdMNBT};4&t+%^Uyvud|m5SJZ)o}_Kar5@uN-tfwA#7^v8bWb1eRg*8SLh zb}jO#!3l!%8OvVNc0TK|hwfQzXwTdd3vTpraqOOSi+yA2xQ_Ek)^X0Xa9+bP_E5^C z4IRu=oUdBhX92{o#F$|p9k*X@-G;Kf!m)$0J_L6R`4u4l{M0=dkBt~_OHF-tU@S(E zzaMQD!8z3PZ-LQZtTdmtV{=lz#0Inh+^D}9yYXaO*F9TOK8$H6u_cv{xy`f_+BAmw z@@D1>9gZ)S^*4~&b`jI2Hx=c_ZyMyQ!g#@$%tyH}m*hs`oWEz`*tT*p*StrWZG~&! zo-n%(cWoQz60dE|xJ8{~iJMSo^kd@1G{W@LYiNYHnc*#sKCq%*nYS96J%q9pfR6 zvE9j5TxYkBJ98|cKkoK9sg{tH+TV=ynlbiTF!nI6k3r_~(M99$7j8RYyx)uV--K7O zlC3SDpZMeX@aOo8VLap~IR+ch&X{jdjs)i#l$UXQO{nYc?U=K!N_9aP{-@mUk3mKm zI7fzCFsGuAx-{MF&XLXA(^e953Fk<}3*&srIg)Y0?Qt^mVtyQDKsh4Kn{YnZkjih_ zlnyp+NChz$#*&-TQIvDP&uv4WJ*AE9X<5|{+xOe(tGf~273r=3c`fF*aGtd8U|BFO z-K}Zv63=P)H5@3s*2J&PdlwOY5TC*b;SDNp^Zf|J#D6dW+3^SO2K@dUE_&qHfiy;p zZxc@aIla-x@Clh$DJpQWmD3LwwU*<{8J`Os-l@qMu+sPh`Pkm^=iI}9rD(^T;kPru zAN&X@`M!btb7t(MPblXRl*+dqWz4z!`^G2Of|Q`jPbYKy$Z%W^{?Ge=iNN5`@Z_(hCfG7|xK*sszja18orI8^Tuj zb(GW&o42{bKS6<=@U5t!Km00Ga>85T6A1h98w~#*`k`==k-{TU&D`)h)SyfF*CKgnm-Tvq)h#UMK-JxiI>O4+&BwEB$@1{EzzE?{28%g!#@@Abd5V2E*Tie<;ka;NzBWFc5tCHwfq&3Z}djUf$=-A~DPQ4|}K@zZ!L&)ok{s@L_jxa0l zRBDCoSI{s1yj3h_t`S0cmveALOq57o9b2TUZJH;Kw_$@Z`vBtP=cSNJu$u`f$TN+Y zXM|pP4GcNmP5|+|J&e=c{u~7;#C*YO1pGWcy0L7*9`+)Zb38n%f_>~Cqat~G8UGyP zw(_`yLa@-p_vbBUIg3onp}d>eiG7U_$veSp&NV_TziH(PD_CrwKsp8a^C7=DYd!MI4;|Xa#iaFVP(`yEknd{GRbT>b&WcTg( zLGbNB!2gD)#4a*Q@cgIec@{nS15b7ah8l#(0{(<&&H|!5GQzXyw4yC&zVH?M;PglN zerWhgrW!)D0ici3!u50(m{M0m(XL<Lid}5cuYI@Q_D?g2NOEOB>$lCHKWOO^5ZDSIISMF92^&L5IBuY zl1GT|0y>c?hgI+AFkSkpoo(%*)ke{LNl?v*Ru8@%=sa!8^>KT-o;Ky;EaW`RNvx+S z;?tQT{xDO-XEH@}o&2uNF;1&@KC-Z<+k;V#o_vqqo=)ePm=o;j?Frk{nM5zn4))Ap z2=BFWNt0z?&IuDWpA#8fU%3 zx1?SF_4GfJ)3CFFzGre0cAY&A4L-&IbHZRBzwJrbGeQ9lb9`7x;!dQ<$jf z&f%uR%=BOm&7NjNI(HHLHo}iDQPb}l{7$hG#deKzJ)X#&yH|0N znK=EJ9OHDmxvA(`cy)(Y(QY^<((z3=cEV9ct@4*3 zmH!$)C5Q0Ci?;GVz+nPSWL_qj$OAF(P2_LFVZuuonb-OyOn_HMCXrGMG>`xOP$6!PhO_;eQ>6|KAa_(o8vD;Q`G>pW;o3Yky@sM4r?JnZxjU9vt@6 zL7YnL8#rY+tNl9%@nE;tu?)`Y_|9IOMeJr4u@`3%*J(}(_KijG?ZXM#bzTjZ8A*?z z`F1nMr(-en1xFH>crt?_0Kp7~L2#5&tJ6rj4F2v&dIo_e@->XZVVIte+Bt=joGm-|-!I8v2o#z(9!I9*kG#p8IUV3(&{E&uK$fIZ<3cVkK{p=_f`XP8N zLgb?DaBPC3jDaQJgY*C-MB?-i>3Mj4kD-N}Beo*YLQmOWU&lbs6EB!R zj<^DJO92BP&B3iGGm6p(EaIr+cQ9oP>@@O<;O~yS1OiPQPE#h%wTwe=Gx{EYWJcd! zIym}1po622ACYh?~znZj7qDB*`?*Fq{u!|`J{xS3wyCvPn* z(A_ViKo#r-(*yj(p^O2h2fD!<5tgGmRfw>M5$^nmHMjv@<&5MxD)>Lg>PNGbJWX&$ zU5(!caFchOE{%l)DrC@%M5 zJ&`;2@O;beW*2qM>*91hqwCb}-RxL*%mAlbPS>GbF6=Tk59KYix^(#x!ckB;ncpe! z#e7dtE7;c}LVlYvDr}>rx}g5XE_9+UGtER z7j{bbEFmVv9A<}AR!l*SaB6#sIm{_9qsSEVA%>75R4JY&5rw6A`f2vLJ=_v@&oMPA zfJHHsFH@HuW$<8;s2DfZLkniw>5R%Op%(<^X4IszGb~_b+h?G_c>+u#XT~Ga}&A8O{B0lRBG(0-KTe%VG3Q8 zV^!oafxg)xn7WW2#zKYZrs7+XxUb;OOK`&L=LO)3pbX(1$~eHJ2Cb4xC0lA7@G0wp zTycm{#wnD!F{)P%+{vK-z%I!2R7_vz{cAg@3YD4WVz~!pwF9yl%%WE0nWCOwW~m`^ z&h61&PF!oWH&C`e+xP;v6}Mf|gM}HYq%lZ1YA?))KIAlvsSoS1w5!|HIG!>dJo>Ql zXtk|s0ugXz<6z$jNBhPQ$7-?ybnr0uS<4Nnjt3I>H5`07AVDFe1eYU#_#3Str zbnyg^m;|rivMeu8!2Gh1bC^|4JZ7Aiy#{dQ4fqnfF>SzBIPr{eRugVYmmy8Fc?F<- zXy$nUJKf|#>^asd>%5|!bRNPE!_!9qH<77unXPjo$KcCE$RQ|+&laJC-90KZ-EMAZLxtPc`;=rZ|mhJZI9F zb_j5jo9301$?=XQ9+MKhD22UqCg&>7@Dz*Tl`x^T1oQS`c#_nF8T7r^d%CmWxfVOR zlDQvoodj=3LiM%lSrop`lx1d|vF5p|{|B-B)}8yWHx2d_(r_iZ_L~%IiE8BMv#z(8 zcgo~lORyO9_O?tpE@L?u3+R-3alU zbn2MocGpSl$L_PP2{Cy#NY<3XNGuBuB;vSnPVtJwmdjMV{ZR8FF_^JFHL<3mDO8cE zUZm`%r)JFLKGW+Bw%A7Oj2CO5yfFqG2%Jm+_q_-#=THh!VAu>5X0S8o=PN5LN)xawbylek+Mz= z%?R0HLhGpLW?q+3tn;cvMK|&3RD241b~!LoJ8LqSF{q06^3u#MF@qm5!L?p&)_Dvs zXRT_2e^lIa6nL`_Ao6jg=?2i%3p)Y`_p&+r;Xx?0#n!-31EWj zBx;Sb{aE~OO2dNjP73BvrZLQQdL{63?NF>^$hO$%O=lFhx!MmXhL)JnnO=g~Wo9t* zq#qeKs+aNRftz>x$%vtqCbWI(+>f@$6#)xN@P<&CkMR25asqWVcKlY1g^w6SItS z%4}eb>+~YwnDeT_I4si_=URo(=_YFGf}(7cGUY{G}uU9 z#h7M6R>i%HnbLmKn5!e?A?&;o0#e3%g`s<1sr6Ff;iJt=Uq0$36@DJnU<+^XiEgio;NZD(oY% zkHKDzy$(B{=^w(*O9gM^Ma?tVpTm9tyLTDkg?n>8=T**xpJ3+@@wR=K!uY)0o60oopQNy2odYMeqCU ze|C*p_~rnAk1_l#`=rJ`+fA9SDCcWy|4wJ_vgPwTC@q{jw-lyAOP4NNI=__W(n<%_ zSC-Q3@0SObH!hx24h7m0%_x)`%fRKHDWdEg|J%emCZg!&OB&`b;wNqY!(>)myP`u9 z?Z!|u?b9Lrf4`*Y`ngN8>?*-{6*?u8ys_6;wg{bO3u~(@Az&P25{HaqC1ccy+8sUWXwt{C{oz7&;HG8&^KpiH&n|sk_e_R}tE} zctAO8P=meMiHuu30D9jvao#fNK4kKMyBq=E@PtxI53OT1iLzbK3@YtE&*{Qq{KROy z0QJ)H5-PbKuUg{02A2+^qe6`bkJzFZ#FHxF6-6vE|obr<~=m)FI@=#H?0NERSTT6*bp^TY+4Ujj74cGn>g0N zy-oC-bICZwerny5#?tR~i#7d|H4a}0 zV=B~GzRzddFe_u*jSVYcv_Pgg5BF?^(!g{H_DFZq*0g2 zw5rv~^jin>ov!s&7?H&{!pj@@ZLgd5g2sl0oovN>mOiIW8b4|BWs_i_S!PiA_HTzo zU6ZXcWm_|D1wu(%yFVjC_*m zl&2f+9jCb=cj=)&0wHj8?muxGV{G zwBDVu_g?=mc4SO^fHQT!rgESRQr_7xUVIqiK2PftImB zTo2>(-hteyOx~5?{H3tG%yHPULb9w~ry0(*;O;I_VAfK|>WMEfWq!%j(W5a)>n2aG zubnu2!US_L)1G;UjOxb1kak^1zYeWkTR(C5bl9}VJA54?c2GhJ%jY*WHe6e86gybt zWNXwn%$sL%I;=N^?~st&cN4}=9BWLkj~Ih_*{$6Q*t}l4Fm8T$R#-a!8gspf(lp5w zcBe*ljh&t(c^AZ@;lpB{dtSn_T44Qe=|DUF?FkU)&pu6MZ^`g0`Sm^?o+s+=5 zD>#Xok#o(m&>^tnfHUU~cTVh}<&LJY zlSWLQSUq7>9gM^euN!V-b)Q^GoKC>{xI&!Kstl zBfq09+ml{}%vrU#aUTDbVtC>Y)Z#hI%CYdud>Csl&-`cVRHB-i$u;$3CrukZVeH8I z;Wd{|orvBu$6pf;X--?N!FnE^C+UYtlk45H$?$2z$4(f2$%IiS(;9w>+pO&ex=aS+ zio%`u+?K_;c;5VFCvW_dC415{SkwH5t2-)p99L$@k3c0y)mZaam_M0j;xt{+R6lp+ z8eI{aan+&99TWP(vB|Sk&8XocXXtFlDS2rFE;Z(G1kJb1frR;L+NhdZ3=s^yNhfVJ zUdN6`t9Cw4E}2m`3dh-~;S+U?t-Q8rzB`ltFJ5C$95r!r%?xWz`5LdG%bdcsc&JbWFpH zP<6Ei>Pa=+mckN6_@|K7y58RpoP_7k?GP{or_TD?iop|@T-LNPdcyEa|K%TmTi#KV zYfqLpdy2h2d}`g8$u(nVcJ8r`14o0eLoGXATTQJSJ)~1Uwe_{tqehG!J$6K93eo>5 z(*^EP+TJZZTsuu5?lp}pZR;;k$4uN}s;TRA5y?w_Gui*^oQP{~YtE_#3vkvqBf~Ut z{pyD0iyM%=`_I!v=cQ!UFk(D&(J%*7Q^z8BBPMg@#>=tx>q`pmB>)zAn%}U*vMwDl zVraaWC;hr*%Nke2VR$@_6`tawmdu%tdrI@-)ytR7oxftmvgIrK{g1B++?SwEV8a_^ zYrDdLC0}*&wgNcvCD6@%WY^F}-&bw(MmU2K*i*RgbV=93jp3U@n}Rn7Hs{>pzty=7 zTGP5F=HzxQyrhfcvkga^-x5Z|7Q@Z4_i=OWq;W@g-Q)9(H2RgUx_MsDhvO&JzohFB z-#3iXapJsP= z3hW+uakH0wrtfUtqV2e4`}nO7Ph^KWymOefIlLQ~wK*u&saY~_|DGn9ZH*ft{1D!> zyC+`^+25XwZCwJH53kuS)Mt8ZS9f#Ym-5<~;n|ymn~xpy&#{=k*KT|OoV_`?&B*Y~ zW^OySi;flU6yEVhxP#?RI>yg6A7wBB=4o>|l&sCkDha(EvwBxX!Lj(rE3-Lf#i48& zuL)*tPJ8RRo(>G@u{@dQGd;4jnO|p_y^z@)tc;dJDeh zpV3a<9WN@s;IDBZ+NM_@%c{cR(5nc~d&s_)d0(7zO7cp~YrW3FGcWRN_r0fH=iu*BbRGkahHT${?wrLn$QkZK zp^>b`muji!!?IHdGUS{=nWNQ*RZdVfi}nNi%KtoZxHwwmGgZc$F3uOP60Z?&5I2Y| z;x_Rc;jz{#G>W zoFW`|zD@dJF)sEMOT>ZV1tMQ^Wqqne^HMG3MUpv=8Qv`N3oy#t#a$xbA*TOx;wxfG z__p{* zF$ePr^XVqy(*q;py?sMtKMmodB-ecmVq#&wXNc#D=ZP1K z<3(d%4El2=FB88a8v9`gH+I9oUGm>8J}2%I4~Qx8eK9BKmMbRq5{t!3u}YjE&Jc~g zFXZ1Od9Aov+$tu;$HZsEy^mXeD$2N|Gj^UJZtGvvQSyj}dd_%rbUiS*tQ z-x2>Q;`=TWemaSKu-KT%r=R=>iWiDi3a^!Xh2#a2mx*gcVV?R{*vS|lBY;Ec8s7uPx2CR zwYW~ag+%||C+-rB-6HruEBQqdL8?<PhB=n6P9>@bJV-7HO zcfj$|yF$E*#QzgxUkCat{G{mqn z>?0P5W#T|_sQ4vuqBupIF3u8{ip#}oMgEs(d)zGECf+69BYso-wzyj~|9cSM{O#qOSge+usYlFLLcjluZCMK0n(d4gCgUM6xO zJ%<0E+7-W7@gESsAwDc}F%G8h*%RL*d9V1I$ajRP$E7+*EMjSB{-42pO!D8ve~RY+ z8QdZM9|F0Y2kF@pKU;ENu~e)Ohl*bkxe5s5d-lXHms~F{7MFPOq5P2esQ5kcX^|^4Qg5I5ns`7wC>|Bx7rB@ls;tY{% z%rN~%afNt|*xBwkm!hG*XYYH50A_j{7L5)I>h zCi?k58*)fIRXknnE%p%yh~?s7ai};_93xH^YsD+X262(tC~|2WmS??qi+HKb_*d~W(dK;uq#qOcZ3N{r zM6O~-xv$t?tQ5`t4TN7Td4xDloFq;cXNg?khv_a8SBuw)H;Olj{MLs0E#kf617c^p zNeqvP-NiFRuA;>7a`AleLb0=5axS(+eXd7Fa{VN-QCuNj zBXU_KhTkeaAaYq8`g18Ik}EBd=6(_QvgG~Z0g-DIQO~nC&c%x;d-le;t`cQ)UkQv! z&KJ4962tq672+U~i!CvHtXM79iIuG`q&P<83R2Yf?2XT*45I~${X$&m=wPyen<4~ zyZwjc7sXe^UyHvL4~Z%9sQAA4smRCpEGL)iB2N>0iCn*y{#>w&JWm`ZR*ATLFztcc zG)51%Qq27ez{t29HN-S;h;B0U^z$Xh#X_-IED?u@!^A3aq&P;LAXbZYV(0r0v*kZe zTqHJ%P2x&%jks297B`A5;#P6HxI;{eyTsk%Q{pq?bK)Lxuee`4ARZJCiATlv#be?p zqNV@oela9Q!~(IG7#9o0gxL8$#xVJh5j)?jsHKg z)98IujMn7iY_s8&54?e8Sye{D^QW=6#)i8$c67bb3xP$FahtFD(yQ+==yAAun^%Sgcx30hC958|v~16J1>8)} z+df64Z=C8$nXqN>%1&%sh)FYC1qdvxFAhudrERcV@ZawEl1wt|i!@ z+PpMwhn$`7N~~l;`=890_ujpHlW==+;KT}jc&0;#HZN=kbUfARC$WCuB(uWWLsQMg9(1dwIo#x~Cy9@f08ag2I_2=km|R`XkN9DsZm z2vfFsmyG$wu(NF0>FpnbbBC7*!aQerWuc6+YSXYmXFkNuY z;V6u=bzmQgHmn@j9rEli8XJJH`}gncFfJPCw1ui$(t|5Uzy{aE!+zS^g1sorAFvD6 zlJ>)%BW2V(*RD>s&qgcXHzJPi%&*rOilhGi3q5^*Jfe}Hr?V)cc*h;pA6-@)j|0}C?D-S9e|yq!r3TC@(tuavkkVvV9RQ&v029W zwD(9oJoRb25|8+qRB(LV4`!tPld zw)kR~9=57zE6;a05`(R~_=(}tmw z>!&R{v>S$Rf4l09v;#X-zW5ty|H$>N{@FL;b)d^ya}&uvc1!Y{U^3aqX-f9N80>!` zY;-X$^T2d^zlFGVhj=qvaqb%G+r2OCM?2c2wfV3`R&6}&w17>nT`IeJ>R})9^*3)$ zy^A)2ZN%2xCbU25$g;y`9^2N~-Gkl6!?arnn|tqBRS%}ERI+Ui>`I+joNQYOJB(ec zVH0Z)+Sa-w#kQs`#@VpT7*B3Vhf-V6es`o|vp1%ztPQZqxB)g9H>9s(T8P&IdU*$D zyZOHjKOfwO7zV$oWUJ)?Blm*53vvPalHqa4R^ms(NY#Bx1#n~c5cbz17i!Y7(E|#^Cj{Q<2h>2NOB>{d|$ffiR07X)cr8WP$}B75_Q8{ z|7|5GkFhg{dipRH*|t1JqnH~iWed%&qx0c7>It}a=ilIE#G}sqhlt9@I2V%(z2W@3H-wJz{u#btbP}7EVf6f6+ zAMHf@wK40q!%?f{r~{jpv<(P*v#oEz)*S0V`?--l7++k!a{$8-ekmSfSrT_f5Gwh5~{+5lx5VWjafZQIc; zecB6Udq0b|q-|6ieU+a=n_^s#hhIVLfppAzAf4a*0Ln5OX)i+E>srfcbFcaVj3LU~=}zv;GgtogQd z0Oj|`h98cjd@Q?#F>J+fKEOC(TITppj5v%joUVgz497@*5_1vqrCrzp$m}QA&fv6G zT#Mb0zC>S4Yh#?@=#Ns24Ij`A_Pe07x{=^F)<~Gb7o=yZ~0RJA^aNf=3 z9B=KR{+*c1(T51**vsE@8_44Y;{o}yd>q$o3)fC^CjVTt6UX6`sCU;G#`GSfgZ_UN zav{c#KQ{L;kI`R!e&W5SFhTIyBcDfpkqt+j`s|gutaNJkpI6hVbA3wTs!(0DRA4x^_Gpk2k^x*2MS)B5XV! z9#rya*13zsgAA^HI0l@Dj9Om+&u9lt`FwEk|MJ4FBE3e6#+P z@Jy5|hA-*xPbB;>G*1mLg*z|&I70KolaRt`;n$Gb>EW-TfZfA<|Fj^y1a4S!JO$YY z#-2d1Z!*g;;cYrc(zlxC@pAV;eiM!^-(`STv)Yf~73P~PR`?#|fbSZ|BD=ses;c(M zv(ZZ7c~G&!+mN;$z6OE5@FVz-2WyUeeIW4gXYh*5Ksv>NN1uRxly8#+9%Cu2D4!q( zzDu`1`VoEu-=jMejZo)tx+BrSEcI@>W6`BZEbx80^P|gWF?C?s|)EDOcKPS8we_j0HRZz(Z zA4Piy!e2(zV0ahO424faKg2EHP$2N~PY}>G6i5$*ak&;+`@l@cC#+v04ZL%VrL-r&%W3 zX8*@7W_muGX}?EX`Z|fD8y`<^2yJ80jUJKnUI3KD=Fj|p;z8y3Z6AbwoahC zeG~;OFttjb#h;uxnV(3*b=|=wt6fMe?3t{Bw-k%KI^^R%qh;^QN+#o;Any z9EhGZN1N$pTXPH)+wUSB*P3IXpAlSZj)DI6CkQFd`vI#nz!W;+)}X`)m3jPnBv58Q z1+^i0-{xQ`Hv+9W{sTF6V|fD=Hr)aL2l$QfMYjB4r5`b)wJ39N@R#AV%&sTuJasIj(}Du@ijJCsM3IT_T>8U8Dn^A*)*OF_ z0{Z$DK{FOzfY$L1pqthlnQ_3+7(VlfLMdw$;pKKg_-xiFIu!chLKeY_{uJ8bBGY)$ zuOY8+U%ErldB`hVY>H_bBix^T4Qq}}C|tsqcp@*ORt5GTwq6ugS}gm*tI)JobQq2s z&zd7gjcdUXa{|(|s}fL&MBhaudpO;(=n=-fgl?99B0^5*8R}b&O!xKpK`>uq z3iu!Kl-LzU37)_3JZT-YJAdHGMn`i%h|ERlBB7aOK$J&7XcnDTbSwHHbj45L^hfWb z`%0!ttBvN}8b%A%)9KE@xqVs9Fu&8X!+oLe3*Qd6Kg>5lLSeoKcS5T6;5(>#0~*!} z^TD+pz5=Sg@SmWBlMP$Y9?2RP+`*21n)P;$BTf(VnZVP=$ph5)G>`8dJR*Hh7a_Tx z9A>^BvT1sn!SIanHDkeb-i5S$#)+DI0KI}rWapc6K4LpXD65;t9OmJsHjk-UXK;$J zt63CoaqRXEzRl7rj>_8A>=JIh|A-&Eh9PzhvS3xu$fw^}#*M?p>n?l8-R*J5GHxGu zp2^<+GOos~vqFew2W>{Ndtl_mO)f#(sG2OoHuLE74;CxeD4uOBnRPL9Rv*3qWXt_H z3llN^XD_zwsLg!NzRGj;8O=U$efxZujqkdxbE?q%_CS+3F2F6mTx;*(r$mLOI0H>_ zE~=5^s6C#TsN{_GL|v!;_mm+Ws8XIhW6BUW8ms&whMshj(H7@$;%;I`+YF zAsq+cm_bJh4qnRj0J~Oe`~zswYArJF{|tUw;7|Kp2(!mn{aM-v;ML!FP4TTlKn+^0gtvCtK_(3- z72Jgke1Bp$IbVgcJ9z$N256dN_XCc<9%ih5kQuAS*BxEQ%vd#}@5er zwbOq_s^{*37Y#z6%TM^aL;KuE;b?-Rm|BTfAtm0xPrp|D+y(yxUqUP905g%FU>rt% z$BR4?)gzvO^2Z|Z_ zK7I{?hT}(<2e79g*x#x{Y0l;Mm;AR>Ouv3TAn{Ez>2kR7P_iFs_H=ngT}(ftd)(-r z$8={QY9)0)*zM`kKwG8fZ}d6qps|KwV6cFDp=pj|6q+BbJ`6t|!3iAlb_GJ5JF8Ha z+c_;fa*1afkYahZu|1}eaLwXXFel0bvlZ~{wX?arO3zN-pf9j-H~0%}+@0US#@&!i zBlN;?b3sOAmkiCAw4?b#Tts9%c#LA>Q4Ny@L>#+op9c=J#qnE$9SXz{>>U;8)95M? zYuXj);$I!aBwBFL;$}6m2L~-JIg$IY!<*pQJ=?(79>n^@O@LTr5}2NeG##F1JC5Io zn|uL~m6KVu;@{`wCE!>qtpJnYm6j2dgT?EoD(t9?=f(0ceVASHN}pwciO=p?rhv7g zFmO)JPNrItCDYAZ!muC^ILD~4+`F*jmNv29IBO07pBU#9B4To!MqFr|Q^o-ETwgBY zvC(z1NQaDb3US0ZYY2Y%1!F4&TRh8%3EZa4L6-R%>+JSIw|jV{&Q+dubhFw=vE$(tGaO>_xQr#PbDae9z>{ramvPSA1297-LGCx+ml1Ba)n>YFrq^7^ z!z&J}J;rojHQ}DRv+ZYP6sC9zu;{mY-M=PKlNJ6zs%4?jr2)B^t5&tgl48NSh%ijbCCXc@R5}6JDYvuxFY5;dS#frb>0p=`rkV9r87k z)n%24%k0pJgqu}j=UTX#G)h45kpPaNy}(9X1VOm~R~jYQ;p-KPnI+xKvJ^Xq2CXmq z11m7dsk0Azy9Wh7Qt!ex4V>d@(IbRC=6Ra1NFZ~Nc-cA@{&jd68zDREJt!Ef?kUji zh0~9Dpjt$MabA`HxU>n(l@a`kDeJ)gpO&5(onw-$Wk$nXXLgC$&>gCA1jQ^idQ%z2 z?TGfHl%XXibh?*db{!eaJn2Wqjq1!oz|A{z7{II2gtqrA|H-^>#>=$b2sz+}vitc@ z3`2mQ#yo>PYczOqaD+_Q>BTYv z%nohGxCI!q*@)gE3- zCvO6N%Y|c&skuqiW|C-c047lY4O26(Fp1XP<$x^+y~?W(#=y6y8Y6%k$zN z@8hP(IHz0JG8W)htMXy)Gl7w$=Yc!%HgxFMQi+TTfAB{aB$_nwNvtcOwk=Sw#v#-nEA$3xLsTIQTu*8YnEeP)brq1+HNz}v`yz}0F ze)CGRbiG@QZ~YtSA8zG*Vh4F ze_yZifLhPhR@gUdSy*?;2dtvoK*4JO+zpMgPTFN^hqbbQ8@ZQ_MrIBihnP#x`Y zHsUHNn^{smv};A#mX5kd$)`E*iG#|1Q_^xosfK9IdSAW#S>9J}+mv_5GF)%b_`3xo zvL^$=YyA7H70);5bhZBNtzxX<;-iuqXT9K1q#U%lm=p0*jQq9-rb5(F@#r$vB_$rDXg|}~V zrL1TBtAcCOPm#nErnxQo>aJI@lhtD<)?n6|`d@u37FTs+Cyr}4F8M_+I10&e|B`lB zd8LaJ#*URQn|yPcwZ3X*mFvsos$f+<#{-8|9aMOR3yU&|-<59+xiP0VUf}}iL0X6Z zRk&3YtT$QUs~TMu6v!wg=1T2}TWK?^#c*~VW>_xiHZ`!zx?+8{3s&+g$?w#_VFQaD z=rDhb1KivpJZwGrV#OoSEBvn8UHR<9U6nlZn{mJT@@C*A~C8xe>cyHNm z9?@H8KJVuL8jY{wIf5JPH*A9C@0siJz-q6!Hv03_UVq!_FZICcs(DX6^yiPe&H7Re z*tEx?7*Y+0)XCdmH+5__eVIZ!5Kw$(u?tTcg^GdeISWPdx8qYTZZtDBjR%M*2Yg_nUJcE5|#(+?(_yeQxZM zl1#N1%TBE#y^l{a>5XRIWbdoO?b{&MpF56zZJwL#edX=TO?j{A6=?6P!uSm{H6+$c zdu@GoLn72(ScU1Mc_2$Tzm1CGH&O$ZWb!taC_aBGOF9i?gPM9{<$tqq{##_zdZsLU zl_$Yv*|U}EZDV_Kxon?A@V`u57W1d3-dSxk)AJHIpL6w>-aGcPx~wSvsv_<7`RU~4 zUrdE){c4eZUpl=%od4!r0#0kMtctu#!ePY)Y?Y5Y9bFuVm2&YjH8Js%T~={KwnmyM zAJVrnQ(W9AdSln@TdaIjtmcXa@dBy2h~hE>KOqH4{l2Goo6|~vad_b?CS{Y|x!mgy z9Y#MF?Wc8z*(GV{)pl2%BOPyt_b}B^)a_~7?k?(9Gtba{ZZ3lDb&FXa4CkB5++TPd zJ|FrSVBf62!WT^4B#O@LSfMXlVwoQ@nszBqzUO%yJ;#^+C_av5!iU4UgBr)ft>AX% zPD!_g()P-O@I7H~SOpJ(Zpq;M{9H2Y;3PN|&VaMv#n7D#yxev0R(LmD2_J{g!`I<| zpxdfBpDm!jR9d%#ouC`zJG>I^1KmK*;eFr$I1C;NkA!1jEv$p}a4I|vo(*R~H@ous zE`synLU{LiaSao_^@?-;zEQ zU1KVJjKi$owW*|UG^JzwWu-r#@VRgSydH*Mm(tyfUJf6DkC|G}D^R0bg$~~?h3~#m zqTPqx`!xg}0gr(m5y0_N;dFRDbdOE1XAwI5xwKtNt;GikUxf~zF69@)FerXC@!`*< z@Q+F7u`#{gjZLN79K8d&J-Qo={+Qa1zScU9;mf7vMv}e;jwe3GGgkae^!dckg$v*{ z#NUFx3oeBZ!ADK4|7G|tTx)83eyILd-jCLBI~d~;E518Ae7&Ump@+i5;Yd^QHRuU& zGCUogZEAbM*Gs(GTFc#R>bTxTx}~IBPW&pupN1ODC${?y__nEh-ba_JACdPfe804w z*4AP-=usA&-aR~>?m+Y~^iNHtA4PZ_;U}U`M$a&nZZ7&V^!4c5(97XFruK6!x=h`q ztXr81+Ya_1yq~FZ>@alrdMW(`Yn5N?37-rb;hFGUI2-;7UI^#IE8w;82DljB2~~WI z{ngKCP`5=;(LrrmururmD`6j41&2a6%kyy@39Df(JRY71PlAo`On5Gw4WqoQe6K)X z3vYn#@$L2A375l_a21U5w9-9`ejdI8-+=#u??LzKb^fj3mT()`1-hq&)47j`*%Ma5 zLC{@+9X|?=hZEp5*a&CCC_igCkKp3vFNINlmc9mk6TA)H1@DEwhkt;Nz&}F|sp9PuR_0Uh-w=`+#p@9z9Bf|tXE(4F5M?-5$es8@+g(JSD?@Gc7%%+3)mE zL66d4{RS-dN%GJIjxTk6RNN450zJ5c!#lvVp1c?O$1v*6N;e#RIGhOU;WXF?J=TNs z|23QkFN0UXMbJaRIQ{L=Lqu3V2p@%y!Drxe@bB<7_%?hOehi~tu6$ckzfJvF%Ik3f3}3&&4@4KV8O3O^k^9j5+C=b zH z;$#05AN%L)r+m`12@OXdBR140JT9H9A6r-6pzmUt@@Sh`e$1pvnesGH>D3PCq!W^m z@e{{4RI5wP(bJ@Vo+MBBJ@OezdvfWh#{FpOmW{93y(}~>>zjPbZKrvi@<`WG?2IlG zJ+;;IB7bsPPrK{S=|3;sUP|L-{M_*5{8}fo@xKN0m7*Taas4=GNWUbVw@*dG?Dkb@ z-j_?dUO$)9JQSRr@1yzr{Ekw7-d^XYqC+;n;hOjM>5`7Aavk~kyP(tUktB=vwt6j< zoxBZ>p8(VC^Y6jN*;Kjh8?UhZ?W@V#Up;EG+jk22rCE$oeoOo^hso>oG(~^;`86oN zZIzMtSFhZ%`JJQrbQ#TNc2pAp*GHPfO9GN_GoZlAuOY^%&^XW30%`A3)c>(F{ zZxxrHUyGxXkvyEApJ{1+f7E=sjAk>>?5b~yzVMjRxRuiR`8_@=cb&SeOq$=*n)fok zu06G>&@f8AaG4zEztu2Jx4}=E_ak|SbV5uGO6T8#bn<#Vt00dG2$c``qXLeD9qrHuM(>s#$E>A9hK}xZhFJ2(kuHli9zMW&c zcIAqFgZa_i1=wCwLO*yw0(q%=z@=E`HmQJ+5&Jus5%9~~?74dnL}P9jy z+KdWN8vaZq0XYra-Dl%&{pgOqThz?-vMFaz$|uIgH;V1Ku)*(K7DLTBy|7&}D!PcdE{a!HJ_J=oaxyf-Hx<3DLOplqxjM==&#<%ub&|@w# zi+QWo-+ON5Ob83Y@KN#-wyZw+MDOjEq&kh`)iUJhi+2) ztuE4`PonL z_BF)CO=bpLV(vTYE%3%uk9rC0_V+gKb{m&~Zy|g?vvD7*CsU7JnoQky>2D&VY`*9@ zW?S8)rpa%@OD6C4j9c+c>VEHH=uV1y`S8u?xot-Lp*`hG$rIzXvk$#^S~6ziryKF) z;}uc|JP$j!yW`XuvfOd6LS47wFYV@ltsA93-Ne&!+4(#_QhmAD7TZu)PFTm18&4h~ z{!tH~wYE(daN^sESDY~u)?bqDvo`%NutgHTQCpColr#8c=0NS2`D`Jje74rh=E$Yk z>rw}sQxRucQq`HH`xy3nz_V=y9sf!8PF1{uyWiTUfZxgINbCJCV3@abQ@!HHi8y{E z-!Lipz+*NZ7j08q+Om;CkcTz~DrFSkf%%Cb=9iuk4K zWCdwEpjXV2dbcgplKOw3?~2+(X{S}MzeYJJTce!s3d-pOz9ZeyuQz8} z%^fpsZuR?)`|!8b235E6QHS>2?siZIq{|$bc1Ei8j!F8G^#0lh=~FvRhu0C(;g!FO zE}9Fiy`cJ|4Ohl(+eu`{J&h+_Q^=eew>~TxiWi^w)yBjxzK#fAGDRB7_c!=SM^N7_ zK{-{%GCIe=3s(1!q096V4AB- z7LF+w^k?{t`c}8PB!TZ-gALVBIcEC|e$|$wFNx!?k{e4`XRek`LH|NKZF7kKpOhnE z(|oM%_vyFQlgT5O(obKy(UyUSk&)^)X&+&upKTZ^~x!YxTSB z=E0iDOfON}C>!)szfYfcoxZ8-Gp1npVx>dT~ulaY`4W3|R{#f7+;P#LCe85UFT zZRjKYpM>uq_4O!lKX3w=bdS*AKIox0zHa9ub9`R@ZhbvPnKJmC`!(`DP?JCZZ*+0+ zjo-C)-Cn<5Hl0Y^ILb_UCgg?Zq|IYfPgAcSaE}mHMlb<-~K4KpB7>l1b1?)UI zURzkDKSE!V#>VIpcmLcQaUaD#x78OQ+c9O;yMwLT;?Cng8L{KQZ8OBJa+u?^GLAD& zJsqHO7clA5ZkWMtsp-)|T+;gEn zogJ^03l*=$Jv=R1PejId;1RF*HWM!%LJ8qSqgi*5C)7&_D97 z@tPg)%((Zd_l?(*=_i^0Gk3X!9o2%nB=bOgr(=wH=FGv2n z%wwk$z@91kKZ_qcolI5hJ?N!5RXg*Tc=G5eja!|m32%+$QwQtNB^AtF=%?G_g+;Yw zc2UhxU)jlO{nLe?|9Efq=Ra7?>?1?5w@q~m`%ckbafvt#B3WElMMkstZ+kcl z+mGg%hp0Tv;huJVACphXcNXAFp}$T*6E5GnIX%_zKlz#ELD${sZ+nN3DLey=`gbDa zBQKv{wwk8zJm4{&WB2L$_krn{F(+Bh@mh8QeJb<=g<$>*pW3tLoUv?RhpD5Uv&z&}C!G`Hp8AKD zRJ!gK#;rehW}dY5q_(4e%1mTv8)m8MU-hfL_udnJz4T;M&)e&)71~1I)Vi6HdW*30 zLdhndj_QQB-um(O`enxaKy!{n>R_$CN+2KRZcCYOoKb%znv=P)X6Ks7i6bL1$ylDO z&UB`acpDmR0v{)?YL0nl@t4I$bD$f8HO993&#ez_*EqIRdL*Dr7uDPMY`q?{b=aMx z42<1s+imb@&Z#*GcBwze`u0Gw8dI8Zj?J8MX`H#X=G`hg?XUjhbLW20jvnGupGWnd zx0lcjUF~=!wC>5HUiZ|&nlYcKGw!t+^xEY9v8AU|f9$oSs?I{%1LeE8bMlc(w0`a+ z-s+Y*)Y{3~SnaDb{fM_X&He**5}T}Q{d~qr;REQNXc<3^pV)F+UnOtmA74>9RDJ_r zCE#fhKV=X3USixl5V4W;d=@>G*B=q@qQ8s&lB2Q2`d^whI907@Gvr^TF3?BgPCGiZ zRP4HCMs=N}&-3$nqTz?CWBDLH?75SEKhc?H5~U(x*@>?R*nx%cwk6TFuwd+2-q zocRf_BRO7M9{LG=^QYifxm!{j@#U@cUB*02cWB3%#pJE_r14w+-cvZ{C233QD}M*s zn^OoNna2j*eAisEx`Wl~!wD>8)~veyaF5?M=Qay6+p)4Y><~Jn>2EYuXd&U|daP zwFau#xr>t_ZG|~4azg$KwL>@kCCX0!!@L%Qx203;zp&m>AGCxzPSXxGk5rqIzjxC2 z$p4v3E)8Xew(o?;RL5=qq5eYs%OaJh;@j}QqqFK%`NSt_i;{=@PS!HAiR5*0_s~7pVQy6l3iR$gtxr zG92opCwX73CF|E&g8k%H>caZy1^RLqo2mW0hkET~ov1Yf;4AHBza6j2)c4u7ej4;|L-(0C7Csux{TS<+>$}(5|&lX_gfWA~}!*d(50 zy-(lARL$;fB(x8~UV@!dBsEVu#vY^Jk7v3;!%AZ??I(>n>C+3N_b(guU zc9?W3yKH|2`e?mfz-}9`Wm5YNRqWQb|F!lcdp&ODRFZEfh4e$V&BQ2+##XIkWUDnQ zAMMKD`@eIB@yM6G&fh;|4%Q}nY2Fx5gzG5A`Jj)L4zl6jQ6J$xj^tk6B$u|ve%zgQ zJ}KQ_S?kOHDe;qznR~`msDTkKLUT8?>38m zad_gZyt8M1M)UMO!fk{b35keb?8kP4_|qkkxEF|fcLe{c>Lr4I7JMksDfFjMC+S~7 z|IoMd=n$66CBD%HCaZk!_>wmSy$h)M$wus^wVQlEGE}AyK{w>pXh)fO%HK6x{%!D| zWGydyooG33?Pd2KXn%{ZcIWmP#PCu}Fnk#`II0t=uv z=1kAu!TUHerj)L!PtaQWnR((LB>w0;@fG6t2l3Zk$-YR?-+hMo!aV$C;_sR#KGYeb zol)5w%BJz5SG-|+3Ci|eWVml58tmyZ}a#cmeBM_SoqAapRvJx#~BgK(CK#&?2n1UN+4 zKse1rW|HtE;UJ+*$P%^?dI(9v8w{k=gzpg8-!n%Ew0%<`q=N627bTCJ)?ED{cC+JE zug+3>$mq})77eUu|578R?v&drI|CJWzh?sb( z@=<=_H%)!l4S5ezKVhF1qx`;((^~tVDM0hT4g2j(X_PkP(Y{hf>G}Sk_+~kwJr7Qi zzvjS{LHifX6YK36zJ)gIUY(gj)_&?wbu~oTq&f@gOJ$br>2qfi)SHvB>*AT_ePly9 zLmL}Y{Zqs}pTM4)qb^5Jt%XA!9pq`96E}>(5#7SFv2Syx8y)n`@9Yi!cW%{jkMhs5 zuR)!+phvXMRoCcERd2U@DU!{;fxqvAeYCfwdeDA?_OOikg7&HFE;dPGBaOf2V)h!y zvlH8d`>XBLVYn{-2=W&&|HFr#P`xw8*SoX+UYXKH_b$VI`gZt~mth{G`m|-tWNPv^ z>1gq6rpDgw^I8k^V6(ILy?9!>PNA3l#vvconf9YvlH;$*r?e(ky@c|?-Yj#&pp9V%$%tiDU;fzx`QCz*_H2OA!+2Au&ZzHE zoaQ@W{l<~`vhoG~Wgxqi^s=#JI~D0OD?6n5ejLQZZ@-5tKk|_d1{>(xsb7vGo|Ol# z_(Z@jn!f9CxY8Vy50Q`7cU!)xZvaL6-S`lGq&j91AG6=UTyU)!IcL(=!~TZmHrWa0_RO(F z)3-M2?}_g8F)O2I0vn|dOfN@%D(%bHcf!uXY##C_?cr>KRqPBniY*;L?al{2l+Qb zC=>1_93)H-!jr2?H$1Xlrxwk?$ogd^a0^}kOrq!s@=ClrypJvcZ-1FNhCM$h!8lp&Oh>b$gbTuCg*4bR8&k zg9DTZA^ALX|7fGg(sOQFd#co?oI~5wU%WfiIY>9Wdo*9nxj7xiUGLhA$3_eJ!q^Ch zJqOWk(AVue%CdbvG0<(UoDv5YgHl=vzW$NeMr!FdH|@^;LATIfL_#@NoRh~~N<)M# z|M2KQzF5o+l!I(%&%3$}M&)H?$h`Kv=3E*_oOAtqTnQR0l;_fhM@t+>9v;xyXezjr zA1e;zN^^O};3>#Z7%n&#-C$7OoG~u$8p(gU5gFKyn!elJHHM=#RJCQ=)4xythb1{d z+C&>H?(u2EC3kGJf2=%|FAkT;cvgg!(cl~EFS)sWh2i4-JR`$9i~YrWd`E}~k=|pY zB*e6&w0;sH+dTZ1#7QyLz(wooTSoWxj|>l*Ep(kZ%72Sa zM)TabFE=nIO?c1rkChbpabLHa^2OW2#$(LQ8#k_Zdv5-{?e4aGexzg-zu~rzx;O6G znHxl;ncAO!qET`4i*peY<5HBWaZ01q>=R=oV}2QV9K-ib`y}|^ zLVEW8jNU^$!~5$5|6$e}zFL^D^0W@~AIFHltD%Nt>23rU{R9gc|KSu3FS9x&4Cfb2 zM?jSpJ9+Pl;HuN*5qyOA4H5j`>b=vLmzf-?JO@G7vG{!nDEv=>1r}N%uDs)+5ui)I z5$OKo>o5Kg7rhsGA^svSn?e+QB~SVJk1y}72>vYycZKADU;6rw&%fh+v-o#;Re$C` z3G*^9&o-(xVg4GtLz5EwB+M(op$Pql;FSn|3cMP@nTVUs5&SIp>jeKvn1A49B1F+w z^V~$EJ`<*e_Y)DiXp<5ABJigp{2jdaMDk-(*i1z9m#?HEID5Y4)d;>EJRV8E8vN-9 zeI0l=!G98l{bVy0p>F~&MDUM*zaHVw@IDg3Z|8kWg#Rw#5&BNvPekw`-X|is{Nd$D zeP+N%t_ak_-$vn`j+96H9PROto-m&QFGuhScshbh{=HX({DHqk@CV_4ritHNIhTJ! z_bh%0{^8;`Q^a3Fj^7K? zi%oj7$ZI^p|FH@G=O%n%!==p?^U zdYube9>Ko>t~M0Xe*msF6XIIl>YCV z@ONQ5^TtAE$%-?b45x_uekuPa8P zo9}qelA3jrz_t3fPXDgczcttD|7t&LoA(-<`5K%18XLdL#;;0=bCsp8^5d=6t9&_r z34Cdmf3+WPQ?0hSuCg*$+ss${@4f^}UF}QuCHQ$+&NY_0#=iI3_%&8?uT9%)HR)Yr zw3g~C-&4qyjNLtmT$dcl@8(WxIk!7sj9k#Qw+Z(SaQ$|7ZZuaM9_ZVX+tbG#-TZ*D z(Mnd#?H(?%%r?-N8y&1T(>>%_OY&SZjD^?Y*^}7 zzl|&rk&B}jRAi8)RXK8JwQq4k-E&(UDgbL|%sR zSMv1zRPaebGS}Ki@T}k{@|c$hrUXg9L6G!^fR~eQQh1(ks)8)0PYV{AKMC$+tQH(F zCW{VTcau&KIY$LmE}RYCaP2;da+f-W}8PY3WW z=4?tgBuKgrCJd6Nv+GLtOaNa9;K_jg7Vz>hPT64Fu6?X+1WD&IhwIvlotdi%CIdJE zyd3fg>fJX$W@2Vhn zeMS(wJ}Zb_wKozYoD^i<_lh7B#a9KH_e~34LVXHup*{rR(?*W?)&Zse5Kww=Ax?5f z1c~1#h`p+UBkY3+V%L*`*fmQYs@H=7d{Pkpvx3O$;j2m4{n%5GbXh^tO$e$U1j*;D zV1>Cib5Y521<@lTNV>ZON%xE(=}rowk72GVJR>MRLGcCgCk4g#n?BzT!3QZHQ0?NN z@B_3DLDE+RN&mVaa^Dhs$lt?>ad0HV-i-L~5`=$95dLQc;s1^x{My5bT~0gi^!ZYP z@I5C;`gI(_6x=Kb|8#)6D_|RHw17nfR%tg5#Y}S z_)7tPI>6ry@J@7=UOj@y+Z^CK0=ydF&j_ODw)gt{_XhB20M7{n zdQb4Tu%BQz^&z;7wUFTZY4?J^jsFSWO8XG(q5OhZVIRQ{P=A8IL%$-p9KRCe!sije z6|_simGp0dDe6~n6>AE?)$9ccuEAdfduhLd*HE8=*HT}CYgt1HuA^NGUPnC(uBSZ+ zevp0#D7$T;tn%l<0PYLmq~I9sHNamL{0!*?Nq08D6WB<2hamJ+fUgVitY8Uy0b?J+ zUV@tC3pkn07{ROf|4&tyLt;4+r*lSI_SCwy5K0|ir_)~l{%694T7Z02!0NG z3&Qtg0G|!$(*gcw06VEm<JwY(=s357C`L{sh@f&z)uFy z@U+}UKN>)~X^Xc9knYIhbPE=m6{UOjl>2uA%S9g!g>US{uPEpCmCcI5{&K%rv9nY% zD~fp^5m9d|^is^PVExfQ5|Sls)e2TdeCODsAKzKQUjB;ya=AFXbF9o-=U0Ak7vm5Z zuIz*BnK*tQJ}Rdknz`L&N(8j_O8Vp6YJ_AuI7llK~8M>Za}Ii3=a`DC{Os)JND5PJKz_ekGyyxgszOI4>Pna(gR=#J4zgWX>(geTLb)ny^>0Pt-TGu|m z{5NYfw(~T8v!)%b26ZNj^9|9v2>yAM4Cm3zQhV>WUpi{q&Sm;P7ejhs7o?j+^@4xviePq>$`k5DG)4BL)0XQI;F`%UQ_ z)>f6jEgqIT!&xNm2J%}$(6-m{tu~!i3-v~-y<-uc*W(U|y>F8=oP{@=Eo~e5s17zw z`S(r}Deg&<57XH;<=>Lk{X@>$q&YVi0I1DQIjlt!Mt(`PbE z^xHhEkR_Rdn>oj%vr7rx$3$nEN1KCe>TE{mdUl|5tl;0RlYMnh^WTVv^EoW^%h@$WX>bJE#4L7h)C!QB?wT)(*^A8duMHLd#u(9@fN{1#C_xADYFGj~SerzTl^z3gzkzV?@b5~d8bo5(H+`mvBm-vkH5kFt~r1sL) zclzfYGc~5OZFglk)0V}?-2af>>2E0G5&ujeXZKW2<)O2UY8QUKkK6NC4tELLBV`sX zC|>*3(k$joT+NeOjVcAZ?@^YqkfC&mFeT&Mbqdo{bh9cq`dd5MXyg0wcy>0HNB~`b&pNlTyPag?>uYt2|>LZX#nd;Nn zH!QRKI(*mfA*tQ^{&62?<*GBHH{%=VSJamzg5T3gP)5~Lb9-t{!XY{(ATJjkj*?+q!+@#v8Y8{eSY9 zL&Ju$*RONVfetM4ICeZ&M1`Pp0Q4hvZwA1_uQl-BZzIAN7?wMcXMy=GF#7A@S)dNm z%JL%ud11vPPjr1tjndCXaMAS*DoWQkln@tva|D;Z+MDqoU;c9uT=brXf z{AN6Eeq=er`C{DM1g_#KIQ+jADA^%?7w_#6oY%$^(+9xFqwmHnaT<^2dwe%7O5Q{h{Yy>wpEu!u0WN=32dDJ^5#0J8Q25^p$G>D-;Xec45W!o? zdkgsHfPQ(y_x&{53HH0WZoUeJ9jpI!&wiuwKWXv3XxG^2KwsaARjXI?@oEmb&Pasq zg^^a`r(=tIhv}Y2Zx|>K?+t#=vSfmfOMQD-0q*lZN7*gwc|JPLjb}@HH>b|}`b$U- zzEt(^)F*&O?{5?2H73l>g;nX@O;KZ`HgfMkpB)yo@4k0nXgK(((7gk;2>wAu8K>lH zs+@wK^0bkIZ}+pFmP3NI{N$VcPY`FzD@ZzxH=_5@ZUqZK zB)eM@J)PaDc(P?{YoevI zyE7$D%SGwd({nq!d*jIou-oHZ@l^bD{9EIxmRQg2-4j&l>gl=d_QdH`I?-~gN9&Gw zEY*|rbz$hszbh5*Zg;4;S+TBoYtqT-XzlIj>P)4&+%7VGXHU|_kF~}+;=VSV z^jH&4+TUL%hs?#hQ_0SFub5x1+VP4$E!DK(ijrn+*~hv%LCaGN^b(GRd)oeBezm{U z;cQ$9^w>gnCd_PU?cEygJ)Mr-f3HUMd}q*=`sg2(O{R&`(s#)s49Eowm$<_+TK(Ns zYp+uj1%uNGif9mHDIo@`?EH#FHfRu&MNlLn^WNLGESp!N+5ATRF-tUO^O`_f-z`5K z9erPj=3*j!I4HzTMa@X-!pu$)dUl#BM75^(TS2qG5D+)!|6_D?2Fi*-F=&ONgO(z) zMPUwF8Y1eST!S`)B4dH($f?!y-U~HntY9=_Ddwtzl2B!pna%ef*)A)E80lZO_k;qv znpmHoi*{7;^?WclRQM9xlz(ao@%zPJvb|i!3Z&83NH#Ar+5BIKEqOzTdo}Z6YtR^! zsyQTQD>vprd(WlF@1L?=20-7Yr*A6&w^}pypbz~8MJz9}UxAHa|@W zTaMtZn*0W%4?`}h6uF13H-XDKKO;nYq`^9NUANx9p$*E1^;n1WDMOJ!UOEGL+j4zh zWSR@LXoI>6HbYMlTTe5-0G^e|0OWa79);-dgI2J4u%MXaxtBcOJ22&;6IIkZ@Thm< zegYW>k;gRq!@ijqFShO?uI|7`|EvK=Z~0+cZ#B>xhMJ={qpvWPZRWlQy=}4e76L63 zV?q&k7ey|s{)#fxK`+NKld*)9#gM*DYO>F&G5e*ar!8ToEw3KsmAB=Uu`V8+pV!$Z z^d~6Ur>!DV8n3lx>Z-wsi`n z0lyVX=PeVJ)m6)a%A`QGHdU)t&Q~r_rz>AnW+-*a#evy=TZ0OA@aJjb<54f4P#tHT zn1)sH1yyKbhA%CEe-Y9hr94F#rGNfZ*!W$gJVngK|3P%(F2KNP?N!+HO6aKX530b3 z@dZ^>iN$W3ZA=BduldS#{6`U427_sr-vQ_amfwSzLR^VHvHs)uH!*mI0Ga+F;31^F z`p1!e5$P>%`3Hao#FTK;j!&JyVTt-yQQt1YYgd>e8E@_C>WQ^@Bk8mShHu%?)tbV% z+KSZ(tDL?h7<0u55A~L0e1hf1|KaikvZ!M`&lwvkj1T2=5!PrgLC$qGLexTrbudKr zgvb}+-fwM9wYCAKk`C)E;$YXlL- zYznugu<&TRJ%zQ$xrUiQMAu3qj6ONz8~&P0=t96rh!HpapBR#+o5%XZ<5=N1XWAq2 zqW6P529_~gj!1m3_)K_ggLP;G7>LKdc!BM*{8|?hpWzq4>v4YVFL4;xAfkwBvBNqL zSm-4HiNiqEczt8K5xU&WA2)b-givKE41it&nOvGf-L_nGK+4Wf?-NY%3XcfNyx;i? z$1l9jw(e@OS6^JFoqgSPfWktv)Um*t%v*Pf$a?yYyojVL&_{dyq(uhdBb+tUbgak9 z*J1+eEBJNwU*Ma_A4ZKu9|k|Dcxx-toFX#sX_0MGz~4bm_Xa_i>lym+tVqkdGNj#{ zSJGH(WOhsVvd6V(_Q^@Q-%a ztozi+PFY0XNQZs*=z#W=58&fimwlj(q~8WFd5;HVRonRRy}}&88fgHs7_jJ%ZNGTa zsude=*Z`Mk&&&Up{t(+rUr@vsky=^GQEWR{O2VHJpL5R%4t{CS#%HwnfHY;+a% zNq;P0^7z6;{&ALD&Nk`KJo~|Hj@Q+QEaN}R{d1dnw;?j`2W~mG%ca2bK}7bq5s>xA z`9E(<=J$QJuXA^yXK`~b)@OP+7suV=ZjEn^CBEhK!7Xuiy0(q3Lx-sw`lF427s3Bz z0hym8tc8CfME*%PpDYo7Iw13Z8~v1tzInkhZH{m7`>9$KP|wUGI`M*tbKSIOliPi? zP-Np0miwtQ;hAn7Z=4Yi`>j%7yKJJ|Pu+>kbMaH}0`FY>)D|@4AIof$fza=#>X3*c zlYR=zl{5OOyCI-ILAe(^dh-`Aq0=dav-zn7O;?=r`GA3OhfwlUldwAZ=+((ZRp`Yh zUcJ5;%JoTm-wB(oM2BP(d=~aqMJdEvp+ve+X~K7;Y4L)HW@PU-(a8)@X~#< za7iQTwaH)<`Pa;mh0)Ph*pBk??#y3eANDthe}?$Chy_Fo@hIXk#N&u>AU=b52=OrD z3y2DMTOMH$b}Q@Krf@^e4{qMc{urabvLWFQ?(%V$uonrT^cvQHjF9{D66HlHu` z$=HWsS(zJ>q2_L>0(O6Mt_;~Sh|3zBQ^dD4${HD$0fGO`VHq&vQltl^brboIgHPmN zW5~CCd~QXb{|K=Y@sAO|jkq822}JV$6e9VShHbF$oI1sb69+$O8~&-hfmMA#+l-Ni@%aTIHp$;NRjaCN_|CcL6wP9j`{F-(ZDTt(Q0 zvns-l?XrTfeY?~M(SMb2Xr~Mi?%XLA!hxMq5TP1N!Kd0eo1en%jj{rm2|2dD8#`F%(#~Ge`K}Q@YmIc;KK_5ZaYygC4<;wx=@9Iw zV1K>faWxAW#PilVX&(-8J!yOi|6CiL4UcPH*5R6mf%GO?!|;p>v=TNFJ|6+^T-Gpe zfT2}hB|xu#gnrG|122O-_L-6V>WJlg?E}E8N4^(4dh?eqEv;YpbG9{1)1sxglVdph zUVF16{BdiTV+$U$cy6uC>VqxqgPqIf1Mq7Gd>rI=l>y&AvpH83r~dwz24V!UE+??} z-BQH<=rW^u|49`%6{s76EvShMNX=L-+rzV^ivNJQLbiQn4)Q=hvQoy@*4wt!#%UPC zDJ=2ftaEUFleBfLY2L-2o4m~gKjf?N$Q}uMeRGg!?^uRL$t&+dz~gU%KUH5}I59eU zSwQ?@QESe;qvbO7n#>HiZ5fbdT8-4p*jHCVezWB}mo10vu%=rG|H%9`PJVmX$#0|I zWd2Iz!xuXD2KOW^-{Tn5O@wI8|jS?cL}R!8k56qUw*7CHcyw$b*_wq&jy);r-VX~ASjJFp z`_F{u*?y-M?ClxoT@3^jm25xp{AV~`yXEJs958D=;(#6=p^rV$2zvXGN4w8GEXUbI zw*PJ5g;C}OkKX(y)3xQcK|ibQU$k(6doX);+uy(qwQv8*b5{F|k#~>s0ZWTKV1;D2 z#?t!kuLG^Y|yOy)H+dc4}X}&|g3wiTk!&hCbxpw(DR`e-&`vNx;_y z;NR@K?Plz^k6m97QKs8ug+N;0V=bSP&A*JZ+Yr|Oh8T42e6cnca@gYiq=qxypq?#W zk*g|FPMR5myoN2!xF7$!(1%_2*)MT}Mz;6`-8t)JnrFDdW4j6o=N>gLP)G15=)?p-@=Q%O+G%;*LLktu={hYdC z-g~N;T5Ke*;8_8_nnfLBm(?8IXJP!!P>pGYZz~wK=ub8JE5tsV&UqqNG|YiQrIF5u zz?%vlYEduX@+6|og?7{nntM@pa~{WXuT&eTukW)O#CBVDJcAGM4Byxb`9OX;Ao{6A zAuD4WD+fQoIK5Ke(zqer?%5^g3i!d8ltJ?~%)Qr6 zsK5`Uv)k~_;gO*6+6g5yt8m1wi!s1fTDEI7B7 z#Oi{!AOGn!1?qU(6>NK-RktH1Yt4ODu=hUMkl9fPnLDgWXd{^2VUM9I;MM{!|RYfhai*;{(JL4h?|R(GEq4T`ow#X;=$bl?-bA$#_3g{MLJdHJ+eBIeKHuyKF&5& zeV`z~i>e>7>Ef+Lp(@%h>rsz%A@3sFDzyXNDt+ndY`bkow8RegjnK_Sp1}np`K76tvv#U^|1sU-F%jjFkywq;bzAJKh^z(=DQREz?UcCBz=TrK}SicQ2 z=GYEFuC%=&+!rbPp+}564f?pyl~oY`tV`TVlzI8o6Xwh`k;eNc(t^G)77G_nMZ16s zY`ZXCwkDg|BhdE|%#*iXFy6G^lqi^Aim|+)7}BDhXI+kAoH1ek!B5O~#-A#(FQ|I< z2<*dK)8_Z&IiF_c+E5R6u@Ucda>EwScvRYP`j6bpCrE2b;6}a+c~-?-4j6AjrW+uO z{(xe>3>$-SW$Y^G;EQ99dN$II{%TRC8?a~SA8l)$*mu66?>k>Lqq=Ht(`(Iv^QQxc z^t33-QDzt{Z`FBbg!2u3I&kRMz%T3`Wx}^zkUjc06~2Rd62h^=o;@a>$Uy$U(bCS{ z-CLjHF3{6~3u$*e`*Pw_yyJpA>S;TLg#C8LjNdl>95@&#Bh#+!$zPa=K_{CqPqR-y zjl9bfj_o|~>1g!@-(~r&rSiW<`HCr+zwVqIK$?37%qRFj*uGE6gDh_3*$l=dc?{&B zci<@LY#xSvL@{2s0%B7h@3UTc5$U@jkQAc+U!$W2{1M+D*>{sGmaSN`3RjaUK86rt zT;AvOx>5ljUO4;NkLsb?koyG;AYV`fw<-*45cw8omizw$H_bboPY{RP^i_b(Txi-s z5nu6sZCD|e1J;)ED(v>Q`0z_b_~Cwo^u_{|=nE6wWv=#>bB)_lmcFwreP3Dnv9k1& zNT(sxm4H0kI#O2tGo)WcIp%_04(C=1Z2woKl(Xj6fs03UB89~#>CMK!7l^;0Ed9G> z>Gfsl*0S_%W$9E|`tGvyp0f1!%hG&@Mg34kV`qEr+a>oIEcbvhJUwdTHmxI$C((Re z6z=RzwuTo7Yzkwo$@bF2CcJKHa<+xzA5nki!{}rJFQM>2xh0lLcD1y{Z|&?B#Po2v%snRnM)2&dt8h7c2#^f$VZEWP{j_H zO_g?an$*`fofF0=E_dMr)&-=dTJ)iedpFI-GCl-%(A5hzqcT^iaq#Zh}9adFM zvg}V)^^c614Wivbh{uFb{_}UuOG~kIq)?0%mkW_%7NvYDvmj)xo=IerK(aEall@{U zSzPSk$~voUQt#j{=*37Ool5ADbFq9XmMI$iTsB{f6ffkYR=ZKj$i?!pCB3NUBe8Tk zn}|S(tyznEHm{rZ;>%~xLVQt=B|#F|+y%32Z=7da~7iI5C`! zf9-&M#J!q^;ch+;`u(apHp(YcwEJ(SW}a0P1p{v+MGT4-5<>eUS>NTCWKcXReoqKb zsP?E3-2v@ZBOq=yoZ8ij5LYX`+U1%XxmSI>p@?wx$*lv5TRh$nB2<64wY8@YvXn!8 z)nhAHKTBL_d8gpDikWBwp~D8mO|%Ln?p4Sa|1tu+Vq2r&mgUzI*M zVJ`<8A=8hZA6>5WXg3=!^=3l^5;Y|>fw{Vpi@*rPro`FnA979x7Ea*RbQALL9^%Ax@+2o4Z_)*?jr-I;jYh z>eR(Kp&;(W|BkXNbiF}7d9-QSx9tAg)|RwOd$ddYk_VeLwEqY633y{Oxc>p>QPmxK zP4=rV@LEHwywdjczscgycpC(&+Fz146-mg~=5zTR-CS1Z5%(&d^9b$(!X8EXJ#>SAmd*9V|) zBS!Yb{lVCSLiG=zm-@KB2z3>Gd9E%*_;KPg>~XDPysD1qwY5I<8{<|L+WWF!yU;I> z#{SRMxreb{K^b%R%`4E$KE4DUSR-}XaD`T|Mpqg~k6y0Pclv3KeHUc=(EnWE_BzM2 z*?+Mj^)LoUp!3M5#DMxfEe8J#J@1(v=h{vqb4?7%x=`K!6nujpvhNrx_SFgh+0PXE zV~$<719gkQ?wz+9iU>K7nH~aB3?D3YKpFj`hr?fkSeo)6C^!0MD zML*aF>g#1cV9Qgv+3-|W8a<#rpl(n%s0-8uD$1?7Y1#O$WdrT+V_c=5=x0CLP&f7T znR*6HJ*rKQ74tVdM$F$p%va6w4U{cAe`~W-wArDrmL1DqVcK!o?7S>>8L|2vVssf; za|q!=W?ILhLcTn7I-@~g;6WS*yYF^{b^$2F$Oy@h-6wY34RG41CK zjz>S{Rj;@%*RxfJHTR~9wa)dzHO6_tHP%-)_Jw|PUkGAN^rCJM*aND8_JH<*at|2* z<(wD-wdTVB)}Mws%sEEAuJWq1GYC6_utA?G%a~C==j;23#U0r%A-Kkh$SN{?7m6o{ zv+cRMg0pQW&NJ*08`ujsaJFx3q1}MC+87k8oP$-=zv)m`*LXJeqh3Wl?i?GvDEFbv z_2dy3Ydp7kRtua{l=UEXF4%B4_omV{p_OmARP+Hlv6t1ma3&4GfBJ3hId1focNLfT zc0)j?OS^-84Cf2tYVmk>a!<%Xw=1wxONVf7MN8E#73+@ifvnW$G1f1Ab7PO=+Gf2& zyI;pWXO9~;+&Je|rBvOG@y8wP70v_hrHD&+kNWM#_>W!n@IOt|dvMp|SxcY7Yc8Cp zrRsPc^`4a)rrU-~{ceLY=v()rpbGAYI5VBtt9ak~L5_PU`n4P9>$({ytL~WJr(sIs z&SB*F(_WudCI!C@&z|;q?flse`Cxc@9DX$Q0R}s;-;RUh(_uRXY?B9WlZQSZmzd=P z@Cfb~O$_-qK5!d9h5p*xr~KYFJl7Eq;I{t9@N!`H7cka=+x(5i7xH#KV4FN}n>_Tj z`48OYKjho^z-|2bQ}d_o{hL2Mf69)*p0{JL+wgdBtU10a;yOJZp0;8wad^B9ho`5< z?ff_twBhM?JU;1d&Nu3dhuitN@n8_^UbvCT&nZC?u7CtVVxWFdKlncI zeV`+tBdGVG-Um7YI${}<-vC;#$mWZ)=zO8JUY$Sv-5JWHp7z&gX@c(w99JgB$Bzfs z-4RgE?@3VXsbU5cd$~9Xx*ha+P>y936n8+e2+Hv-g5phATm-e!)a;4lQ^)bfF#F}% z6JMDXbEhUIrsn2EDkDU8xhN9p7eu0%2R;`|r_A?qqtE;VAwN9qEj**{Ee!5WJ+n8p zPbE{`n;TM%PYnfi@A8mZNd1+r?!{&9zmd)18v_~{{H6x8Ry8B2C)F1hQ)%5Wp=V<8 zG`e%e* z;0!46{G6myvnNT<96JFYrtqAa3mpqhp*(RS96l8SSIV6XPX#CES)MpC`|Po4Ec%Iw zXVk&z*;DFC%!LAmD6a;?$JME&xSmX6=tKEzLN64u`NBSRbl5-aRehTGpmq@700;AW zT8|a7S+6dE>%cnGpcXo&>`>WS4GeV+c7;BPYH$Bi>^ca zgJN6v_MlsN#L?~A>FQN>DW7rnDZ7`JHdn4u>y#_E zCE>&h{{0q2Ns-?LLd`lwJl-s`;FjMGxUP-l7EhqSJ;F$CsV{0lQ(wh~X>Z+z+4j|D zCluNKx($>6(1xYI&Ar3$mwSzo6!8=a{Jvo%xA;5?0~Un;eBV=T*o!jnr$%y%gD7w? zjAZmDXVXuA0^9&)QpBHtY9?ZQ=-;G`Px&M_N|_W90G%`do`(F_ZG6f{xuMFW2uxeC zY9h*i8ReV})82WTJllVt8?a1@cn-8;06g8|D|o(V!(Ty1HWyHnSP1XIKc@Gouh*ML8;VYdI! zCeQXaAHhQ=MSKfXUi2h3;$5=w4LRfK#7V~Xt<)uMnIMWWRlxraFw2Xe#J5530{?-D ze+pUw#=Tzhe*yXs81HHluYr0n-dtB~Z%i>J+vS^qkU~y* z^4jIQMYkEdD5`hD1GO1TV;v6zlXu1B&j7EZ{Emsg2F&%DHt{Pc^J0)Q@!tV+y>O0E z|38v%Ci?n|4*XFE-j23hKU@;hKj1$Fj+*#Oz<&>H>6e#W@R+E78GI`dU+%!)>cHRW zz(4B1{{qbQ`7w0SpN~5DPWWOa+S>)p^>`j~l>Y)S=l8F`BmN>V=WEi$A>aV!W7Nb6 zU@K8y8kqByYl`i^*}=E}NFfGdVjwAoXC^d0ynOih7~$g}AESKu`8dSK7$1lE@JeZ~ z(NIcxrI=SX^Ga#26!%FPpCK#iK3U`Q3wdLRPKPEbV35zVnaz-FJIcO+P*vN7!nL204{QvsJ z>|7#SzzsH|=TnKulD-s4$Y0Y8S6i1{`8ykbVf%!9>*uu&=@#R6{N1hjLmYllEG`%a@gzWqx-h)W7 z?$3~7y+2QCuH$|j>J{QqoNXpeVjpBZ??SBSw?k6ieMmnxDepQ?d?<>N;t)xa_8RY3 z&Ry6qh;bN|K>Kl7c$ahr`w!`H+yJnDkoJ*+?qAoPMhfy?$8V$?@LsV@mieT$%M zpC-j`qd5~7NmcxQiKCD0CQW+Yq?;xkL#)X!nUr@R>VFs1`82-0g3`_%;sKo5q_B67 zbgvNiNk4~kh4k~dV~~RXA?YB-i*z5xi}VXP6G{IVaU~tX9SLLH|7SQiN#V!4Cgoj* ze%uA6{d=I)d!O_G?3wrjQVspa9O?fH;|}8-f#1YY_(O_uLRf_(VEmp-+A9pqJFFvM z+;vIek|6b)^oU6(O$t@Q5isT{Dd#7t7%p5`D#qfV#k@fmtrFgFhKqOy6~lZ56~pmD zK@8`!1|XBAVHWb)VZ3X`(iWS_yu&z964|9CZ2e*w??}V3BL0sdzFgD`u=~GEm>M_* zjc*NX!v3ZCVZls{57QqaBV;0g%=8cyQLKR;l-Ztg2)V$}ON{9+Q^}@_6_jPdP)qs$ zNe)9O+rX4e)c3UI6l$y@$Ah{peRuFdd{MSA9+un~puHbw@DVwRI`#uozu6DI>r$T& znQ7=T%tgxyVCo|uQ%h3%$@IM)_{L%s<&!eZ3&`*-CoA!IdZ!SWj?F|FCNyvMf%yCI q??o2OWXX}*+!1G>&w~!|{yvFJ|2)X-s}&Oz#UftjR%{iPzW)LP{m)1M literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libmmal_components.a b/units/armv7-ultibo/lib/vc4/libmmal_components.a new file mode 100644 index 0000000000000000000000000000000000000000..892ee0cc307b8280863129228b14c0b65c69574c GIT binary patch literal 72162 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 aCjs5Slp_OV_-&xq5eC5@!Dnwgz5flu$~)Kq literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libmmal_omx.a b/units/armv7-ultibo/lib/vc4/libmmal_omx.a new file mode 100644 index 0000000000000000000000000000000000000000..664b0ed8dc1a9d4f3032e64e48eb976224244f63 GIT binary patch literal 60092 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 VK(^J;2`;q-DD#-X1h{eee*sdNqCo%v literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libmmal_util.a b/units/armv7-ultibo/lib/vc4/libmmal_util.a new file mode 100644 index 0000000000000000000000000000000000000000..109b495fe578cbbdba730794b836a381fbece867 GIT binary patch literal 76826 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 JCkfV|_kXqv1gro6 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libmmal_vc_client.a b/units/armv7-ultibo/lib/vc4/libmmal_vc_client.a new file mode 100644 index 0000000000000000000000000000000000000000..5e0781a21f3face993cb783d990b8d528aa0a0d8 GIT binary patch literal 46364 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 z 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 C8CtOb literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_asf.a b/units/armv7-ultibo/lib/vc4/libreader_asf.a new file mode 100644 index 0000000000000000000000000000000000000000..4c46a9415dbe8d1eaf2f6a7760444e814af90c28 GIT binary patch literal 85114 zcmcG%dwf*Y)jqz@%$ZA)0cHpxA)-!5#GnBt7bHm`42X(~IzZH*r~yHtB1Q}?cq7~d z6>0*gs6j^Yg14GhZLOs?3JMBp6s*w~>r94GL~GM(HC1cA&$IX0b3yFy_x|zb^Eq?Y zUTf{O*IsMwwJ+x!C>S$y;pKB{GDrH;|4K&%MvV@PuB;m6_Xi{?_1Et&tI+)QnL-Ey z*W)vFdp|QpC}xVy4k5zXo{n{0 zX7}cUn$HG4)4Q&Vd^Yeo#D|j44B&3AFf>2fihI4`SVM65ry>-N`oxAqtRn(<#@)aR zu_3O@wj;^`acA6j+{!M|z9BBqMn}QkXm{bxXpet<)Gb721!PP(9&}?x#Pn}CXcwWV z@UM^aa{HFY|J~c0UnCC18=C%f$Yw*|z5BX4s7Ejy%@E=R;cbT8mUzd^_NddpKH>^& zmHifhjd9o~4*SGAP?vpxZc(l4*S)=m1Af#6o;KBeGwV0RsTbtOsGCECqo!}eCq{6k zv{L{$Q%s9~)7yKS6EyM#f~#cz;fE;otZi?RGP}nQ|I`x-8#c-dZGfy9QIt!Cm=W^> z7mBpR4fMm_5RQ7<=S2EO=0rk~WvF{;Ow@;?V z+9w=kKbAHaU1n%~JW$^pcZF6(Ci&luJH=GWJgEXcuo*3%(7%wCXNU`8h}?U%?EK@x zF*|Hi(X=6MM}K9kfY)iP`2_rKwiBSg==X-@@kxPKWZ4L;=n6o8>eq1U@K0?`Q@cd- z4#s}mjW}m4+N>DXepPXdeu_GbllQywkpbYBm>aR*umb(8|1ggDjyq?sh~82Vj^5&* z5V486=*#2ahrs)hFME4m5YQif&CZhcx|24K(f@3tG1&XDj&(C7)}5j@in{q66FTm6 zo7C5Yo?gT)_2$@w{6s7=Ryj^7-}GXvdc)bOjbsc{mKU+reV&Saj&mU(w{2aQtzOxI zag-(f*ev6bFzq9462h1cg|j)f9knYAIX=)H+ezbV0$-EjbFcg_e9ho%R(u&7{|jFj zd|}0x`H<>yl%fvC+=4d;nvEc}nCj^7no$ z0_@ubQM>m&_)z(oIjj2)QQ|h$j z2;NUpcr%XRz5WQ^11Y?jNATW|${Tnu@-}(VKjk-_N0WYkop}mzBmK=d3a#s6>@c3v z#_WHIA@Y%5kCFctZ~s@kdQ8wi0V|FNGlnD0aS!^`?SF&0G^*P-%=-_C_Hb-K`?|On zmy8qif#bvz*zEYWUl^$;oXxSaK`ayOQ;+9$Szq^4%VK=>vEtf;_}6jW(R3T)N!h#u z?PvOtUjjS2WE<8vl=H3F*VXO4Ew1Jp_y+S$QCkP@7t2_5&%{`62*;QYUEX~WDE7G7 z7LH{h_6A$=$b2-O`J^6x054+ruu*>(#=)aqPUN2<%$JOF=wm}asXP0OF&5Kh*$<36 z_Tk7eN7`ZJpN!_)B7M9c#y$QIkw@Q;8)91QAm*w(v98M~S{}6q7>Vo*ajrK5_CUy0-Y$BQ#cV#rc7I8OiiexlDmb_!m&A^o-yrZU#G;nf$u@N`wZl@dgjFD_<-QlF6K$DIYbEl zXh6(cxg)kYn|*2%A*RQs!w;EF;VArZ zm^{lM&j{8=MCg?+Td)>wVXXpK+TUuAJ|JGkA#;!y`6{6DmGG-LGzKugh3(h+d!07S z2ll|bk+GH@|7UH8cOyk?L);aI?h$+F75GBsFl~#$skX3uatv%?G_65?t&8Ts9-QNj z?5}x*Eo7el|JmYa>GxY%Q#QDr0<~*c>>{BU+{ZGlNw`9@P9Mf zgB-Tgv+NbbVKNsxkC1KiTC$OQ3=#JED7y)3gr+rE({74*yid{x5ySgHq-jVvx~vSc z{Zk|1u`8lRU`ND;F=TIkGO`Bik6TN_(QP#=qOd>KQc4HrYQJ|?ob48gRWgR@8{&ym zYX!~`h)yOchuhgcBC)z8TF^`J;0m(JLAp(%WQjU4C^$cylJrOMu$xR7uevyy4#Uh|Da9U zoOS$OY?{BPJ=F=ulQw(=hO;K#fmeHupnw)FYV-@Z9s6xocmI@Xb}zen7L z{GIfz>|+>yZDSlkmLF@5z^*R#neEVKscq@GLi^nn2qTv(TXUW755Ybm_Lu9DeO+c# z_?e%}aYa8M$29H3x^f+SRTrDhctC%h30q^2(2n&u?HPC*c_#cD?g1{sxT|2yK_4@6 zYL`vU3AbQAm=T=@n(2Qr?(t$x?0q|KL$1W0BVX^0oWqxQb%>XvhQB%b58zp++jt{- z8tP^FZ$tmER}$xEk4O2=%w-X0>4r~C|K_-J8Dne%_De5Ed&C>jJC7-d^vuNE+pr8#uA4X@v8_{k*_H^Ml zqid$Dju&Gd>jd5A4@K;Om#{8_PhrPQe{&=&@Ia)~cum$_<-^((^;dbvN3cId{DxO- zDqX!w#ip{IfUk6!?ZJM=8e?@1c(cKqBTDaqy{93DEjtF#NAyj`B5>l`Tj86ef85Ze z#F~#gV5|2z?_fR6_+w1wHDjI$La%!4Eupg){xb~3WoTW*-jIw-IWMK;2gXin?(rfv z2Ou`7zsx~`<4okI#%Ch;KtGPj9^3A;wTm8`UOmPcTkK0pyEfEg+Zrch8{@&pwN6_& z+lzHVR#Vug*E{aEuyG34-jKodx3sOb&Mw!n97ZgQ57161Rsx-uio94e?YnYIoc73o z4c$$5$n~1dToBFhzZV&ZHo5M_{tPj> zEaPVm+2wZte4yaLomK8<3@a z47o84_iw7};#?$}U+ePt*Tw(zUGHbq)8mC~*wy1lJE0cr!ib?^1x{H8*2<}|5GRTtvkSPc%~pX-3LAIi?gqWKU`{*gbRgtLwq6l-QHzgMVMEl zf1rOy6UIH{cNDxHE%JU4cQ;MN+HMEtt|>9Zb2KA>yayd0L%ZA~aUVrnTuWU*T{C?!uTCIM4YYuKhwi zIag_&s1MI(s8a`gj68;U6gr`O1MUA6G}fW7bsfTb4A3vsDYZ;^JnVZS*8|~jw6VAM z-YmpJ18sS;gAcxc`bFOWRQGpTU`{4v1W zpob}}90YkoEQ>_Ry~3nHr-WI)-%o==SDwE@vFkPw*RkmhhKf%@+;eDMs>>bA3J5T+FqI z6|)KF7D4OWB7~fR7$BZD;yM%S@*Gry9^6Ol!}%5Ks=d9VO`YLnJ-Y#ZyDR>$-rmgA zbvt|sV<6tm%_>$9ft0OtqV`u5U)}Y*y=fxyQ2h6T^?PhQ|CM_Y)^U zPkTc+ignWA|Lr=QV>&}z7##!|j0>Y-bz;$YRNWar0bJ0Zw&Grd=Q=;ye_(I$ z0oUQ+O|_qC^;@p*t$mK%LwT{r!TtqTHe}1aHFAg{_cD<6ImgC-*=Jy%ncQ<(`;2Dv z&j{a!+8l64|ebRDC5Dv9EEwxp2xKc&UGue4h&}f7IW}c?p=^8GMU3GEWZoH z31ft31%AX2=OcL*h}bcK@0hs*Yx;FER=TmKq5r+GkBXz@xtx~Q?b{L$47J5Re_%`e zwm;`!Jv4tQ`ArXZ_TOt6@ikXAiFS_ahI%cXD2Ce=mah{BdV}9q6w`Y&NWS zz3+9MKpgBW`w3YhfHM%Bt>4WY(1iHH-iPy-t(k4U(*?i3kSFJ}ce=3Ge4)RM=dtf} ztqrKYA+EL}#-5RVM9dihTYs+GmZL8_A=6X8InF*9-W7>{2=6WN3OwiFm^T8aVm*IL z9OLJ3+POb;dk?r`v}5zH!Q6NU=Ci4Y|61cJ$bJg6h#|xQT+O&v9_sDghQqxvxKj5e z191i+b5%X|Z=&@O&mnX^NzdPR#W|kjnXb<9R?a}|K2xOghM()IcQ8+eV#i|+%(Hkz z;BNF~1^Ti&o(tZNWiLk|FX{+jUWEV35yR}ST(cMKh`Pg=quX{wGO^ds!d{Qe|)xJru9|ro0EP2zb_}| z0L$KtKbiN#n5)8SuF_}gsd}-GspTKZLELiwld_JS_b{&q{}<=qlDo;7g2a-VyqmRFdn9}Q@q7cs)&yQgZj`hIBG3=!>2U@xym%ZRi z{V$Fln^NcZavoKCz2rJ(V|?IG^vAUPnD90Fq5H&nJp#S(TnS^3`y)IrK_8HRqg)%b zvLBYNn4d9!TRy~^i+RHy3j5ZfexAj18+dT85p@NWzp^-XL*eL3YmC_d*EV5p;5yHb zbEzQb!Md2e9{kPN6QQ3Xz%z{&oa=Mna6V!*9P_l#j7$t{%vl<+_qR9S>c!c0jtH#6 z(c}fOTHulEbAov8S!Cs{u{aaKIeK(VV1Jxv1BkVgLew2PPc}qmrI+xOSS?~l?IY1P z+UtUzZi^3bh4_LlSi5_@*uUU;so|X#L4Ljnu^7{BWrWd(2>9B=u}(YIxb3&b2L$fN z9w!v@w%?C9SqIy`jWYzCnQ)HAz1zPN&&iR`3&HPSkF&C^iL(%SwvK1Wn3oLfWePFh zRvYjQbCzyX<|6;yaWlL={tsZR(zT0boha@`PxW^9IKm)^KUhrPhmOg7)k-c1C3$66+;z1!I$A5i%H~V*@+mWBfbg+Ze0h zcT-pLz`l$xPvG(hpX1~FBZ~2Qn@6zz3ak&OL^t*JR(r+0(l?ms^Uc7$ay+cZn5EBj zT+w$UfzxB;LGX_C?vLy7gE$*CzPI-zjtBaax~2MYBK%l|`iQ0YQjr})IX((Gw*+H{ zc7N5fm&>yIF|;S_RSfzh*oiznNAUEuc#6O?+2Yx5@%$Ti?U#;%ol(SZtPVb}#MO-$ z>KO7m<}G!$*a?_>0>&24CON*29CJLAr2RPN?&h;LKhLjsL@0}~>46R^pSQ&6AA4X{ z#2rCiKn|mi`qJLOsW=yz0r0a=hb(>JNTn}g9y~c;{Lq`9{|(nQ$Q{T@toP{;y_uBR z7kc0&f|KM}Lt7Xl7!N!zYDK#1W>UkXIRij*ztnaDxfVC)&06Z&}#8~yw@)Mt)iuDgk24}K0cVJ!qb zs9$Z<%2oEJaEk{too^Dk2C-F%{xhb>AeOn#>8poBM zqv;3gjWLvu>*#dmZNwALMw!2O{y7z~%RSx&Kj17%+>QBWC*B=`?J$2aw%lIKLB>m5 z)8X9yrHIr4XWcx5?cLzj+PN0kigQrFxN}_e#kd%ccyr_IX+HW&ed{nLsqb7_ z-W>mSq{@G8FW1-MSS8}3dB_T^!&>E-WE|!FRA10nJNk-C_LXvHKsAzA-dZszv_odccvk7aU_ST#U*Q~Me?w;A2lh=;@9-a?jZGh*C zB2%vk23vT{!P)<2yoFRe84Xy&2gA{z_pW%y1MSFvuSUDW$ak1mMcdXc=EEM8?Kp$6 ziHi)(6Pb7x5zT^a=(EA$bzOP>bzM#`_MHOHYJk7}KkD5;V&Jz|&&Xt7GV^a;^~~ zg7wq1=w#TGbA}x>_NS*{m(e|Bmnx$zTPdGw?ur5zoydJUa25X5@vY@;QM8j?5x{dQ z)T;>G?ZEodjRxXH-W7#hyjyq}&yl3Q4(Q;sV6HX#1741P z(0B5^H;iG*p^W2FaD0wxhpwa<;j_9pmhA8kj$Twf_?c(Cvk^g!M`@{9FGra{anEpVjAK{@}A0&J72o zZn(ogfgsm5cwYwVu+ApV2^+eC$OVks0dmg4IKf@V8S+td&3M>3sNTnFL(Y(AoZjU) z-$WcwiNxI3Vw|=wkC^`DSkq(P3Pxfb{+FXA^*C>uG+vz_!uJJ;pNhae@#4_Bu5Zr^ z$6R=J>p>idwtdL4;;@0U?@`dviLvcq-{D_AU!22dgs>0s#9^M3cswu6FGenMBbQ)5 zmA?}3lRHSCf$L%(f@Q7+j%DocGIK2Z9fbYpuTJRCvsH|V#F?4g9|GS7e|x;Bi#1># z$~OP<81iMjqxe*;J70Xg3-6f zd4_Dmx_l2~P23Z2g1#L^Z@?DKpBRX5FUoq}=emu0%YH$=^e=F3-ukhtV_Tjoa;EQ z1MPf|U`A{Jbgl5;BllmPmk`rw|v`&KwS@DFlPKF>Ix?NH~fgF~AW<7vWqt7ML)4&3tz=;8Zf72fOE z0b9s(PQ0UWF8r?6?*a6M?R-WbLr;4t#+i3L-kC?-;yi_yd;Bu_&b)39wvNKqQP?`h zvv1m%w#4)JC}}p(=qtt~X@pa04*}2I(#YJxd=U;uCn1kaMtqxX*sC}38F*c64aVFg z^ntn?f#xW3XnuWA#R_bOwa>layA=DVuz`b!%ntjWs2RdL;qAcJLnp+j**+P$hi3qs zpSQ<74QQ|7J;e2evAL*Y;F(O1{}sHCG$o2>#QDxZB>L*#UyW|XyW1RZ9CwqU1M`%K ztcy>=Sb84kQ;nAG#T4p#e$0n_*D+*Iv~$)T#G`t@#fiHM@3~O-4%m0iOg!Vj+0z?< z2i3qQ7;pCW_0iW*roWt>yqc?9CvS=_Awco&|9xNh4)_MeVl)CZ;W{2GZxkn^nh+->V}u-3|V8{#nA=5wCZb`$O3{R*6A;GFVaDM#<&*ltz;dic?% z{~f7AePFYLd$P~L??nE=AkSY@dS{%^C^?pqJM-Ob(1-Sh&u|8C*o4m>>Bs(Di2N0{ z8$$G_{ziS+_bbHG4CIdxeAPK}PZWK^w;;@e^nV01h6iq&1O(vZ`h8pgFRC?ySwNOpIwBFy?B=0ZN33jX2d$oH=?`!_r;s- z_Q?9u!U)c2;PVv`zB|P^uYs|NHai<`??SA{O#gc9b+&f(0LS>o+#e6&jy#BUE9NOY z+jPSo9&u50Ci1%3(qGb+-#imxgNM;{uoT+ZX2D_|QN@aXeOykCMi!<>b)M#L81zom_eU=#Y8_QqL`v=w#J zcIv>|C)G~0O^@-0(Mh@RA7UZGcNR_m#)u>EFk)AgZNc>sduVIKY(l%i<}ODw{2O|p zYhwxaeqQ^K#906KRr zQ++e>ZY2BRz&pm0$FfPn$A0)2`Ij;&uL1FNTPeuQwW=SmuL=2`g?pl{^{XST z*Pa;B^C9N67FQtL@*MZD0%HNZl!NaR@UA5Gpy&s48OK?@7deCLDqPF3N880Z$P@MT zj7jE-X)&B*WDY`Ij!pPj`j%(Na;(Dka$O9Wha}QyX)&!2YU3&3Oj;b1C-BlHL&Nav?8# zgFM;<-}ZtwNm%bZV9y=&u9kD6u>5W|ti^fU%J@HcmR27^-VxY$s&lZu^D%U_du}eK>}9CJ&>HXaIV%4^lVChh7*r%-P`>-zn}BO7@-a z{c64VtiBGidI~vi`TT%mSDih{Si?GB%7iTHKzZ7RT!+c$F~kMr9xUeZFEty~72Pn}OHKZyE`@jzswd>5W)eS9y2^Q(b5bi!q;`|}xpH+1v9wCo_i zwZoZaPT%M*dOjgD_$i+87YqRexWuyHed zoQbiOg|Q`V0h_^J^1Z$e+6_5_c)X8AUr1Zfm%pH|!HYP}#QPM74gW3JMwPRw`udXF|1ossX`i35<+8qWjyI>iR=&z{>auwspLt*7Q~mec z^6uIJAKx}?$k5!$e;D;aB`S@A#hmJ?fwT{es5*&b*Ia&p7R&7w&yx z&s~onI=rXnm8UQM<)oEYKE8J1x07Fg?DSJ_jQsukvwu6Rs^+ibXRLa2QO^zQPJi3C zZn>zx`?Uvu8+@qa9arof-`(Aicj>lJ`4RdDr@np5v8B-WA*Jtg_CH@X;<2}UzrvFZ zkAK>nkB;cyz9Y)bZc+Z5_*=ePzheC}_w0H2;{gj_Ejx9^J&(b&@(7T1B_|DN(b zR`MP=@Wk3PSU#xAIP*#THDEAek0t-=0rTrt{)GVJ-BbC8^CvOMf`h<^EI0tT-h%yr zu|AZ4Ucfh6umId_!QHsGT5tsSHVf{+ofrSwabc|^|47F=N&bcLi*=R!tH&?f;9m$A z+vZ;o7j@!aGp>mi+yuDJf*SxgS};KQ{t54M<=4qVTrqF{9Dl*ihE07>(}x0q!O$h*H`=E9j*&uN^q@H)~| z+kPqbx_Q?uAnx*OX3x3YKY!kJjf5AV!AAe=IoDmja9%?rSrR%Njfnb|YP04wE}Yqz z)*~V2&s=cjqM29DvBV2#GE?i_Fmv|oc?+&Yn^!l?Y@9c1-u!uuODIpa><9YlnG0qM zarL6cMKk9^=ga3WO6siioU`Eag-ev0Kh`saICJ(dW-hoKcGP`Hp)Fc))q-n&xj>9K zQwZcM{F%nnc)8CL#G6bfV(HAkV3oSt+^%s>A#A4WUAWfn#UY!$lhJFMj(H0jh0Sm- z$6=Vg7SU}Udm#um!+k9T*=&wAIUp2cIyFybY}jnB7s+}aa+W!6IWeYV{6Jt{0>3$a zqr|v&Vf|tM44Wu(`Xj`+9p^wf``gcd=vV^)OVARMtc^ClClz)sm&G>2dt4pW>Z zza;n_Y~>8xO0XPOa8}+&unD^o=a{DeW*O|gYeWy)@GR!Q_hf=-c;;h=VDmga7~Gzd z@zC7#OoS+h=SpClo=>2e%QFEI-JUK~&G7t^2acW+sFvm7ixnPE4kYyPya{vm^=tuW zKhN)h@p=wGQJ-f6IQx5s!jRdX7FcP3rw0;pJhNcufu6G=Ki9JtZRL56g_8ye`x#he zxXwI}{`@Q4?V3D-;96osgHWkYAC!jy==(f+VbeXEHUTKlaM`mU9BByq7f{A^0a@+) z(KFW!O3E@BAFhSZ0Nw9nfQ|DS=l6R9tTQq2`~4HD%$z^#>VEAYaoqL$#xKN@IWrgb z`y8=y<(vfz`+1-XM%PvSLTGLNl7)*sFN1_u*28zMrFD>;aT;oQT`OE*^^U!_y0d&GQ>D+J*ge3VozMP#GJbUa{-(U4VVVX^SUm0O30a?r}Xu*!2CKt^b;^ z+jkuJT~8DC_}nyo8)2{SYY1@thVTI28ibtdw}kV2g9$%Fc(89Ng2weMVZZM%&F~!I zB4MWzuHQ|72uuGLjsdGDgisKk4`m1*2Y1;#zXRItIfOHB)AJ%KIXvSSy&mj-5rUIo z6St=Z!@w`>%W!k;dIvK5yIt`!P|;TnUf0J2h3`g^KOt;l5Sz2G?8*?(b&~6yUF7XU z{q|Eo;p@--ze^bZ&;Wwe^&Vlj?@j38>Ll#(Iq~cIfUws$i~jp7#SHM>iqLjN@Ws8T z@J&ScyP||o@%@(VA9@cwm7))OOHfAZ@uJUAz@O+cf|QE64xbB5#%r*N$Mr=a^i{FZ z&Dapi7ynQ?N?-g_>L~22;QI2PsGB{>^~1%eH((vjEey6WU@QA$81(;uE0Ba-HiNQ7 zPCX3nvKu2%82AoyS+UD$e1k&n6||z;V1$X>K^Uj548sl`%-pLPR++Nk&ixrOqRS(z zcygDZqN}eV&66v`+iNhs2jottZGDoGmn)5!EenHlyBXmF4TiWsHV+@v&vM>g^_d~55>gy^s2oL-S_Re#iXPk)O$$gEUm}1<>l#zQTZ9G-V zG*tuBWWk+#EggA*u^eok+!HCRPU)W8NP|x|)_^iVWc(hc%*!aFINvguC1ccc2tVPY zRWmASRMSUuXH?6e@m&tzW{f4?!Z^Ie2&oiX8$s5<~%pr%gK4&|NZuO!S& zmcx#?E;jbCQ>zhT9@nMDyC5rV>t%R|+)bP`W=d_%-0M)!HA@!UB8Qb+vyCw7!fSO!L1K5H{#z@u88I!1~ zciuH3|**Ieig${IX-2GuW{r+4;u(&q0{W;rSTR=Jaf0XnLMS-`t)IKTPNOBeco%%t9b!dHx8ec{~eHw~q%8Y_ay* z4DtOu#{lp3TnY(3&r;~s-!ltSQ?}~*N+G;b$(Gy3H;?*b@CD}yOtMzYhSd!6P3B$Y!l%_~W2 zG!q5#c1@36k=(Br{Z+9 zC5MUUl(PW}xfbz^rh`oHyamEj%?ZNoy=GCP@cc|p7CyLMc*c^&D~_#2XgE!Zu~VdH z+z*g`-0_%p!iI4RrwZRT{1~^EpqB6*1dnkWhrB6g5MwP5SKY_|3KfiB{e!S^{K?0o zaK~l_nsNMC#D;P2HWZo+v@`?4oaPk#9{09ih{c9+Ka-p9*I+Qh6fAsm5!l9qvJbvr zBkGK;oNe8{(FkVaVe)u=%*)0jYIuK!05u*Z?Dw4jpBs3{BcOZ`%FWLa_KK?F*it+Laz`{8GS(watl^w!KgVTHo z+Dq4Ng68@1M|zSu3*`CK)W z8VH9pnJHd2fjTb086H&k_BnAnVBg2ERG(qArtrOwf!*h%Jiw+eLil9DPG2cn?NdT_ zx7t6=11MLdE~Fl?^cgW2nEnmMOj^PBYZ~NoT2{zJYs{v6x9@Ixehy)eua2Q|1$n&Q zIoDh#j4SE6Jm0DG^jyM&eSMkc=1~W~?{s=}KEtfY7seE9Tur#x_fN`PK)A&B7(IOr z;efA^@U?_1e3vu)780)Xy?}vgG;)17#&-v1cViLZvA+Kh{snal`j`!jC4?vXs@a$8 z2~YBU2Rj%y5T5MopguPe4*AL$NjDL$_5F@=nh4kVUgXeN#y-~jE?{4l6P_#V{TZq& z8)-AYv5{j$PEN*M%4QF-Pj^#>+c%4mxrq+<`dTp>jeDe>lpi>vq#t_WTAJR@p=q>o z81=6-o|}dM^_@eD{$5FLU=N;Gl0!)8#vjPy_1%kXZTyiueqSZ=+sRYx<95UN6Y&Aj zhc^xj*`gu(aMI?`(B%tZU=9gcUJ8xAp+;}}A!0WNh2LYijaR^s>*o;5kg&*|PD^GQ zZ=$xDdllW2WgG;T8xr>5?qambu|lkhbJ_#s4j>ACbsVO_e1mSZ9}f!+!TJbgf`w0@ zaob=?D_S@QCpyO()>N?v%Aarv$s=UV3&1{#gkTS&WQ*s{K3!k!pWmO8fg|`>M^qs5T#^F7KK2s3_=QJm2JyJ-8wv z;U-722RA!p53;EB%?_^9hJDRIzS%+kLK*B$4k^tkg%+%(%;`$2=Myrgr)YIiidHj} zR(SLyj7#KkO3_?l%rtpABMK_m>>Q`m?-Wc9s)uu&QooS}AYS2QkPZ8jOdw81!my`l zr7N7WKV1y>E1Vo9gj zDtH+L7>Au4ktY|vM4SFw5q{4>ZNZOo!u(csqnO=L@X3V`B#aCfrJh_^LWA_f4in9t za1wQuoLYuVq+(dsbv`K64rN!!O9Of#X>uj`kA@_sEMYcS^qTo^H zwG)(tmlG0BNRco!MZ!=e;Ys?wST1i1v)F43?$3@6lXy|U6`=95@0W<Wc3PZ&P!ak1 zFOV@@rjiHkY=D0wWD0rEPLn&QZZM~9FvST?P{;Nv-D-D1TbZz4O(v|}M5=`KS~-Qt z)6QHVWlpw>k!*==7UMEnXMz&=7^ngiOS=KsS{lo~!+in}QCdzmspToSs*CaSAlj>*1b_{T zk~>*D;AR-%lQ~f*g`I`qS6vRc8AdmQqPke-mR-DnT`YIAi>;tlHR0ze$g4s{IN7!c zmL}nO;8>>VM{=Hd2*};CjX!`jFbb%BKn2DF$VA2toCDw@06!ZB!1*nIx0FrCZwruB zMfjojw#jy;Aeg2ijAV1OL1LE}Txed5#LcP)`FDxCB5afU-pZz9z5? zz{yBa`^RtWxH&o6OAal^~mAZ1UbqH zJ#zTnk1{Ryt)1ciDoTYXFg>X9SO&5eNVrlM-`k&~%8cZ0;A)7p!g;m~XD`B_+z*lp zXAG$s98!o7QMCqW8e=y^sIV#DWT9BZuq$E5jN@b!Jqyxg*?|Sf)T#r=$tW6uHdF_W zlTkDoQ6Mwe1ZT0<#a_69BGeM%uRT}tgw zOCf0+rNr#N(^9^m6e825-1yT{NZL&)2kqZ$DLhK8Au?UcLq9Erq(hVvx1SC_NW0`w z3Xxih49F5-%l98uQq>q}&w#uLBCHWw#r-#N3oP7X1nx!)x7@-l0j}M`-DTmfM>7X4 z9A(`AMM_K{j7%BMUjf`tjayH`Dpv(grVM93q*dXZDZ}{^lvOx;lHn|X6pXvRW;u2Q zGMt|Pu7*e}oad`>rX6%3ERunMktO7yr~rxS*6^82v=kn@)DW32W#UgusRxO<+8AK| zSxebZDMY4AY4~X=YeAYzDY>Qt7Lh&rlv0RHm(qGvDb)d>>8k1(8d#%&XDvXKY{A$t zrpmFq8%Qq`OlxIZVI!_LX{+fYd=Lv+PSCMd?9=)F*{g9axRBsTRWFHoZwWps3+&gU$) z78dI0cu_{j-$7B)@uG~5K3FQ9DmP#4YEEFNyd=9H2T9GIs;tJbf~5z(f~;b8VyC?q zddR5nhdn|Kk(L)`NG}utTRs5tbVq)f7|RoBjz*B^65}oVIYX?77>zpPHNi5=3~83h zl(zCm(r6Ybty4>T$9|udb{VB(!3Kndy+Q(kWYm!>A72#mqcRIt2PzrrK;<-%gUXzHUTWgxAH(?Cl#XZt*4x*1L<3NvhXn|Dv-XFCkiG` zKUDC1uYzZK2}ZigKmQ_Segr z529wJ+*#isozcy*+(h3fkAm!8xZ?n(YvU$c3DmBX2WSc&4O%5%5HW7H@ja3d%A@3T zu++wLU|Y+iN_mFbB%8hl8Bk8=%>E`D1Qh7e!@@tK?+j#YTG@OO+S4~*+g1?3aX*acahSi$U(`O$%7j8lya-> zBTC^^{{y8EX=VSQTB{5OI$a7g|5zT@c@f%+Ddl0?87D!?65z6dlmGNiX&TT1(s{tt zkiTp*N&{i7vc~{C0-*Fc0JfH3^&}M7T9p?IHik{zFh)|ycD*$|tNa$>DoNmwtqNGE zn=MqSs2&3pJ6hcUfSb+gjT(5;0;<{pu!-laYGtCT!$R#&q7DK@jiL&LGXix0RoxB3 z`&89GK*{-!Rf!r|C@;*S@=8_ELKP-aAq#a%0##mbp{!&i#_|xj1cnRK&RcC=wDV}- zcEV7BQvr0P0p|fDpjZw0%PvN#46sO zChgV00Skc8CM&+aQ|jB6NXrC8RWk@QY+sC9D+{<0MMM=?DAQhusu`%i12s*e zLQ>)s+hQ%3PiaYBm`?W6A!s%NGEaxrT4Z_b!d+hZ0oX`3r2|PGES1be1!I`p`#ldU zd1R)4bhu77!{pv?GAJt943m4mpQFtDe6rm6&4z_l_EzN;D9iQLZm{uy!x(O!h8!bD z*ftPrh_psntz7r*0=E1h*!3t={VjtdYa(Di<>$gEm5qG>&cgeVPpxvHJUmu3wTxA; zTrN%qGv3S?s-jMs!TC5k~QpMferRzh~C8>Aj~XN)-j29n+R8S2y!nI`Ex zN;2_t6iE!OiMV(KWlS(Hf+V%UA;L;twQ`b~MJaVZl2U;VRRy36y?HgNTj4dyLN!^a z3Q_&6g{nGa0j(CT47mV;DFH*Pf~wT1Wh1bgWDJ};QpZ4@TsHEwPsKo;TsA(5vYKEn zlIQF5FtpSJbg`6lKg$IfkUT^3|Al2aYp8PnJQYKi$TRt~P^#o%g`vuqpgbxUO;}}5 zqkxg|Ji*gNX#$*Y zUItLU9|A0Q*;}4p%JEc*21idq{qG>LaxW*#ZL%-#qC(Y5{Lp~^01+5JnKwYlx)Jn!swF5odNt;XvSzg zHK5(pCEfHlNKkI-lB#BbQ!UC4N;er7DksIIoI62PBj{tvtsJD_XF;3DXx#_^Sptv6 z3=dk9)9qg1#%qF(S~cZ91d@*XmdR?OfI*sorn!!X2rFWnEmWC>Dih^j0mba2557yb zFc^19WkcAb9Fm>>1{KuV)GpcSC~B!r?~>if1E-43*JP(zQ+4}w)oqq#Ebfu~?I>5R z#19p0x3oce-e{rrS*TJ`^^k@7IDsnX$+gybG4v~$#eZWF5C|#EVxo0 zGAn#G7L@7`M3rSCt3^}w94l|y-Y>Nh*;p{v5UCTHTKSkb{M61&=42^l3`k9s^0w`G zBx;!sr&0=$=~5>Dv=ovyQOY~Ed0NVqltQGIBIk%3fGxlArzK5iQ(A!$Pe~q9PV5oJ4h7sArO>Vi=g( zziOedAgr`d?^`Hz=payBW_&48A)8ueT#pPm0H$UAs-Ok*gHbr%G3D&nG=4rprjspN z5Nll+lc<^md-+D7^tfu|xN64HnlVN`Vr&JCp9&eRA6DyeHAX&Sd>)kH@-2|D@*RpZ zFc^oQjjU*lmG4g6!1CvP66JePR=HxFd<6Lh%IZmVP_{G)pNrweB}WJ3j*cJ*zJi98 zd?DXB*HMU#>}RM@{W*T9z8K4QSQewy!yr1}QCNu}x)QiSegI1W)DgH2z)k=)WE*!o zN@aKBr!V%)eCmzPKvj>u4dtt0MTSr08cfbunrSY0j>IA#3 zrM9d;?xR2{_n_{#P>r*Ydg6jHFUFn#dLBqYPP+G*U6eKoIG#J!5Lr4-Ng8(+?&ZZ` z)xmy*6p|V!WwTjwiY4U|N+D89DWjBy)Q9~)iX;xcm7s?y=}B`TC2{aIQxcKsgKrbi z=~Cbp)vJ;sEITRXPV*V9&%=~Lq}E6EY7AJDQnY|Iz;;r=vu2ML@B#%8sRhUmy#;Lf z#v_GHq;0nYD?RmuIexTdmA`>~ye6axvJHWt-A5JF4XhWc8IPN{XhAt(AFl~okm}O+ zM-{@uE2+(+=383GNfe?9T8Qk{IBMfXl{DK_?S%Ra@-9fQhIAcTBdWRt+;X!yMgx;I zFarR+TRmR`H(G$@u#Jd_ZU=gJh2v@t7lz?fs8B;>nqpT{v29>aD#ir{1A4+=P-`;i ze6VC(>Ii&-@+y=AUjo=laio;>qVy6`H-=?4g8F%s=3gWzzvXuWuuA3 zyHivzwy;%U0F2Q4BzcMh)iI$}cK|KpHKKv9G+?4h8LxR7DAqs#0Bhmzv_}z0#=~-s zcoOLOCW@__$LiVWVL2OhL(AcwERY^?@C9Ta#>;Sd)b@ycdv62EmHbBvjcs!FIRhS4 zr>2iNcxu|pvOLy%T(*=0B}d8G?Fl)%85fM==TgR#Qkt!0@+kRKOBX|<)JxSCwYG95 z3}rm!-~sHfA!_toCnkrVp^f8gAoNJWJ`k#I!~ufiOnd?WqFRi@_BM9|<`e9s`I3v; zmvC0$ss1#ar<}z%PUH(Dqt`(0wlR<^UnTC4?PtMCW9Ng#kHeBM7>xHEYrzw^3AiE< z1GfU00HB7{vO7_#N2%-q080UsJ_P`WkJS%B0DW534uEsp^$8JA(|^P~&DJt8Vc)6)7T+yD;`^}%20Q zZ>)?{TzpuR2ba!}@q21e$L}dF9(^Bz*@w$_B2RIVHVFnAjwB+C(JsD&c{|H8o=3a* z?&T9Gk2q`xz0w7t@Rk^XYAn{sqN&ze)h<3>ih;Xw0m9t)nS32G1Y1?|`ypeDti6+E z`PQZ?|D9#|X@Dv(hELV#7%ThHgYu~VVe8{uXQEkqOXtm_+Yw9ej{`vtglc71sbuQ`zz5#9q>=&?O;H)C>88G(%2z~@0un#{k zqg2C6W&ObP8A_$c0I;`o++2F11oq!tRt{hwgjbo^-7>_gA)X%Li6LW@!N_o%#)E|N z$>3rjD3>pR>BQN)f$IR!hMK4F>qldri?656quBX4h2VHyCBT!EyYI@_-3Vn=tiCH_)du?wm+uV!#l?4qm$NKm_b)Pbzd%_T{@KeC>DJNmE;zCP$2 z))=6FCZm21%A@lTjORg4Wgim0mV`S&n80_r>q`-8jMnd5f!9#}2MB?G1L%j&2mS`2 zia->=Oaku$SOTDimC772*4-$T`2g^AW8AR-%7)?RQ>dvZTzMA) zS3{(=@}4A5B`bj~kKjj7>niV6Ky4|hvJ8)`C~2Lu8vT)yE}$eL(k7{ z(*V3p;0yp?0;nNx*)LHVjEZF|0Gv+X4gj+W+y{U%%N_;L4WRTH0C4o^ZKydGkyq9Z z#Cheg?p^@nI`LD+6YXn(l7?aRLo^IN9X{1EOf!fzL|TTKsE*JE0Bsq?Y-wZXDT zu1vNn{s}qNgF%o^-D?5xX%DPIT!r;|wX>yp>DO+o zddj`0B)!e)5-({6VTd$uSJ-Y6$QrhrOaqaO_5URtJ*UZ6a%Z6aL9S|AUq4+ZhSTIL zxkJ#r8rWyZS8{_a%SF~CS@Rbt^Qi4i`I7FND5(?Yv)tB+v-%?B1-CqTo{QbkHd^Ky zchzaI3{RfFK%E*Q^~rPcHd)%a<>vX!)}#f9Fxa%T;E2!oC6vSNhn>#J$OGbYg=oO+bWRs%!M`a) zJrSFU_(CB0OQ z!*dHH!K>eI&s_i;@bV5k_bc>`SLVa#bwWI^^WKCJd4=9a3I7SFa0^1` zYP@%lFnq=deY3OdeUItuGx|Hd5N0b9Sy?qeVMRGm*!xyz{VeND_{X&HZfMdEEO_Ie zH#U+dVvmsE6%g#+H46qm-R4m8phb#vLhRBvUW2nAX~7EZ8gW+iJ5wQ5R_oM_dQg<`9wEDQsiY?FpLDbp(8 zXgmvpxg=E~21GFL?g@ivrs2tIHUtU&85k|ahQu^-gi)HE#vgEq(rj{;RuBMBnFN3- zzZL&-q7N02xNlo-2wPsu1kgt%J4^OclHH}4(OJg%xm2Vwg$?*BEsV5k6oiueGub}m z;AQsGYzEobW6|VPNU6)3F0EffkyyG=FL^A@+xRS~)*pd4A(b63wkDgUu!*FSQ42fm z$CkTGS?+XgWBe<|;tZuO*1o_>ZxVZECR8AB7VS}*E$wl((uDoOKW8;=P%=`|41JEJ z7@SM9ojXE|8#HFng1(X+nx2k^YQ{cm|EsCTtSpSoO zH!Q|PIzs@MO2vR*`A4P;aiI=xjkwb5)B#hE3k>*`e`H#N3n<>cm*DyMm4Bq(j>{?3 zXK{qd;uK%n|7ANNq3vGa4&bthKmr#*`4BGr|3AES(!c;Y;rKrI;k$>AzZ6_{6%-~HanJ@{9 ztx{-+w_OsP##@gB6CNUClSED7O;Hn#Xfd=b_864;QP+7dWk(i5HZqbOgb6rmu% z$>~(8*P&3n!Q*U3%O;hV)|T*gTwZ}8`qc^U?|aqXkS)aS$JJjA-!z(*wik3ZA~hwj zPZk;>UjLzauT&w#8$TvW(T2(m#-+6(?3ZPgG6?eDk#PYi?O-bra zEWg##6#Q4ERvlvb%wAJ^5|q8b4u)z@alr=j!VP9I;F6SbCE&W0ay{UcDdn|*+fvH9 z^VGi>mkple{bXE-B28u|rr|=CNLq~g-*6<7s&73KNv-$cLZ;Lb#eS3{xKdi7%?H3C zK=HO)f{B12m6vt_VGmefq$2`?SUxZNZvo*3Jr`H1N_<{+Dz3C%^2?`djzsbi!F@*} zsV|r2P@lI>H^GGZq#nYh)hA3go485d{WwYK4;TjsX%S5P>@-?3PKf6jj+Xg6;Jqp3 z-B5vQXu3AO=Hmz_e+MqR_=T~BzyVzN-3Ho<3~FNeB~CJ4lQiOI;Bt!E4d(e9%zD7HQ_4IOZci!i1iU+?%&&O- zP)yh7H&1mbWy1XM4qBP%iEA;i?2@jj`xS)55H5O{_b0()h`Q|-J3!4z-Lr8aZXm__ z8vukKSBf3khZRTi@k^@KbUyawlOy@~jg*ioB(fDXzabsP@1HiNqu93t3dI}06-gPc znyS4=mXC1#*n7nC6PKfTk9dCTlBD7Py^?=Jwh+&cUXnEYU%eKMcz*qoq;)1}#LrEm z;r}eL>JiURWRmsp&!1Z~;=f9xwI^uA`(c1&z3mAa@xe42{tpxRH)IR({OTuJ5C2b) zMI)X@P14#Dv_vqV-4k)8jkFRVrr|QgrJ9f5VFe{B;beAa1+KKJYk-JIz8SjeN)$Ir zRH7<-`yH;ds_bSVt~4b3cgB%OcIp5wL@;ms&LuT)fI5gv2M*ywxDYsUWsn@%)S zMpKfZLF}Xy3jVVd%c%SsrxTZ+|M@A-m$+P*x4$X*Cb@T^W-~zGDCK>O)bhefxG9Ab z%U4nxaN&P5+F(xEU=n^FS6{J6io9O_9=Chj+(q1pLaO2C47uf&C(^VW#NMzZj}7#DVbhj61oh}P0* zq++y}lJg@d9+IdKZ$(n(#gxgTXCg@z&0S>!j%$GPbN@_fa2F&{HGmLW-L1A z6I^N1Xnp?kmuW~ZbdvvQ3^oB!>4=a@QZG(Y6Luk${i9vv;3kh3SGI*nTPTv?PbVh# z4I~88iTDpOQ3n zvubL?9F?dIc?c2)OG8fKjn6M~v3T##5iWg7!15^t_9$Lmoo?etScn?lcJc{Ka&b-S zeq1^i6Yi8{m5T}Y;6jc(Vp(hAG09+DKc*A|%Wso3C20&|`L7yk%I677@WZ8Txbz~K z-@hJ6DHHC-rE4ZV{ynfEbV}E(1-vGuycRG!t?Ak>9@L|z%!#}!!z99&WG^naxIt7F zT_*~*u%wt0aZ2k%aB;WKdkj}fcH^V}?sQZ$goJUiRo?k^mRbPbj;6t*k!j$j;=%tU~2p7w;b-V+ZdTaUGs#L`^~il(0>>NcG`A#@gcwWhkP zRdrHT(6#(VwD&Bol+>$5Y4slhnK18c+9pa9Dt7?4PgW0UiJd62Cn@WP0}0er&BZV2 z6j!2R2wk0zOE0-KE8AR*3vtIAztc)dP@1a4i7ZQTArZ*as$_B@mLHfU_en__@%+*( zNlPYS;yq|oCkQWKDxu3-PqxfY(`YN+gHq8%_YMN}B`zm7=_wwd_^r6o1}^2#SM_;o zz@^3-p(aJ(jh~LCEDBj|1}<$3!rij04mJ3+nN^NdoqTM^ifi2@MuQPTVCzOLG8IJ!m6pqq4JK}O^8-(7nTmo96; zY-pltmp6U^loHvb^1C)|9{G(M%7_)YWlT=?^}sfyP?C{CY*Pv)IYklMoI*)%Gl>nS zP?FnBV%t(E$qfs!?J1N4iK&p-juc9AD?@A~g_7LL5Zj$X=}1T;mLKqG8zi?f#PUlo zP1&2MLo7e|(v+PE3bFim*)-+l1f>yJ6Yogq(d_|ToKhwnz@=*@CvbiwwljruFW~N! zGGTr!rfVjBMXW#wXi9QS^Gh-Yht?)Fe%hcZgLOOZo4`YucNI*@@eDHm*|(HQlQnir z)cM^Om6gfmhANm8dE?h_cCl#b76OA6p1ohIz%XvxaY+?$-!0M8dE>WncClpX76OZ* zk|CyR&Dlt{WSvrrTO%$?;9UuxqB-etJGj%fPjuYbMda%4X*!J+L^#t zRh?^pCp&~N7}27l#cNblgydvk5EWYj36O9ykU>GIhYTl!h9o8@%mRj>s8ngI)hZ1* zv_+*#D^>(ls#vi_rIjKMRjx&)mEKDgTD-;jJWe59p8Kl#;PhH*2Bca#zG(V{1JQ=$6F5CV$#DA<6$~+9EKjI zuca+*IP)=`$h(-X;IE(_rHfW@AAhKXQ2ilkkM0H{g%KSMfGdUP; za!^JbGu8@XuyRngmbURQXe@-yTG?9K2AZr@5H@RwHJY^wf7Z&@GHVB55EXF@hIuYq zOPiPHXe-=<%JFJ#2J0!yEhoIvL=N9*N;ANmfotsTi&DOPw$8IMZ-+fA z^Tp@j(c1au-yqLwGd3O>m;saQT>ZVIYrdC6JI@5J@;5JydO{RUFef{UwmZq(w_C(p z^yfuOdJ;a?=~LTq%;r#-zIb9HW>0%Kl&os3x&|R$mch3x(c^k$k85;FPDi*>6SkbV z1}4#&mt@nV^K6(TXTtblYiWzXBsfjfqrgd7 zzl4@uCa&oOBQbhfyeOh84n{HBWU-8(E4*%4V(W_TYuilLcABh}5iF`MOKE-6hzodGN~AHJM&M>2(B!Ukqt-|XY=7D8)13UWTl+gVXTz|vtzu_avTPokYKiqp6O48fu3Np zM&FZuPes^9!7}hg!(A{KbBGG0MK#}K^lG9sh$J?{pi+3USZG^#CW?T)rNPJ!z_30@ zMmzwUym$sC$9!4JRz^>%J^NwQdA;=No?begy_C_QlludE9^<>S=P|neXN*ZI8#%

)nll=k~nOvR}+KB8ZE&$wS4u* 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≪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 mkFH^RgrI!H5D)~D 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_binary.a b/units/armv7-ultibo/lib/vc4/libreader_binary.a new file mode 100644 index 0000000000000000000000000000000000000000..62c4ef1d2cec90abfc40c22fe72d02c153a02498 GIT binary patch literal 19822 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_flv.a b/units/armv7-ultibo/lib/vc4/libreader_flv.a new file mode 100644 index 0000000000000000000000000000000000000000..85868de1951f4d6b9c1edfa8b819f50940e81c3c GIT binary patch literal 65430 zcmbrn4SZD9nLmE+y_1;O_oE zzxjO5oaa2}oaa1m=Q%I;PBLXqZTsq`+v2lbv7ek7o*A<|v+`%>xm+Gu75(jUuc-k+kI=>>RUzjaH3|HFUfQA&5D}%AzJR$?zOAFk{zF|GhjAx zMRSj zXBH2tE`P}4+&%ck<;x$a!W*)PcjAQbkB##nw{$BBXLb)-E*^N-%O6a1qAdEt93#cE7qpj!gr_@@;^~1LPon(LIN|9FrwzOo z76T{43Bn&FAIv9R&JHF-_5bMd<@XJlgLwl_hEzz0y$*+i%?TYH$u5j$7;$LjS34d{J4+v*>So6#sB>yjxH`s&n=(6ZGqmC#i z+ZB zLN4{=$M>uh;(g4D_bZU9k&=;aM9M_UL7IV-kHmV|=Kb4|%8`~J6(HH5ql(eNbDCHh zDuX?h0d??qp1?V~6LwAT2S-o$2d}%%A1q3Z4+ZH`I8?4u6&gKMTP2(9_I1tIt> z^z<#b6jmYWuYwpWr;`(G%piz@#o%4=MD*FV%Z9(`4Rw<3KV!}OIqLYR;6m50aWV_q`82!D5s?rUVXRT;v1btH2+04(tw}sr_|O_;-hs03VRC8}lCiE`8Gl-}L-Wj%f$( zjPkRfBJRK(U8ckfzoudS*& zm+(3C$wNF69_ke~_PmDJUx~E?YaV#I3G>+^eheJfx--bVu%C!mJl%tF`dT*eO^mO3 zx!xd-V@)a$2hkQjgEA$JPeD_*m%q6Dfdbin!8)%$^bT^)2c^az%yaGum(ixM zS0?&dbNsu$BoUvA@|h{GVval!c;)tI5Tm(f z_R9Dvyxzgv3_H*9?;gxMynC={&+fsvHuw#F1vFDZzW}fc`I#vvg0zF!vpbv$IWDH<1G~Z(r<@L+#h58=yTWNmmt3cUXMoGB*%fwqS$`^6 zgfY@RyRg65DP^1^$Mi~@lHO_9Ce8aA=vRk+2{;b&l+j-?cgWX&K<_3`3GjX4`dwIs zFJ^&X4|r6;KlU=m$UFUjK9LR?gn(WPIM*xSFMZ*n0pR4m>WOfE+X1ON#dws4wrTR5|3TiDgMEu2!YEu22EElj>dpnF^<_?Pp2pnIIj=LqOL9=hh5 zO?#aF$K?;myUvq0^c}3})VnpO@7!CEM}_`T7xx@^h5Wi-`E|dVL%-VQ52nJO;^9|G z$l+syc3JK{m*(6(m_i?Oai56z>f9Yp2hMU>w~rHL+Uji0uizK(7tFIXsq;Hw=Y8Q4 z=q<^xG22+6zc|-h0S|WH!nF_fWen&Gr%QbrHh1bazf|xFboELwv*19OzLV+S9(Dz` z!@k?YsRi4^DFfTF&qH4DNZ951diZR?zX!E~s=x`~zXhzKDrob(5wI5ce`NFee`JBa z;-ELVCSXoafp2;sXI>3tfvk4u(N100><%Y@UnlhUJJEh-c4$vP~hQ0?L1n^kvr2bL_@XlU+&Vb*%0DMk) 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

vYaC9rva4djI|GUoK!Bq z8%z<7;-ybFUJHu6n;O%m-!ljob*U15T+J^QQpcw_*siG6!g#etDgG-0+ktIn zvK>vJ-7*x7!2u1fu_?T03Qf5Oai4yl>$DW!xu8?)eR6{n*Q}TMuKxy7%79eo9;cL_ zgdDC-JxHhOdnrX9whc*rJ3+f;sNy2%YbGIw%iDvrOOy31a(lxV>(v}crN*W02OB-c>n+a literal 0 HcmV?d00001 diff --git a/units/armv6-ultibo/lib/vc4/libwriter_simple.a b/units/armv6-ultibo/lib/vc4/libwriter_simple.a new file mode 100644 index 0000000000000000000000000000000000000000..3002562411594fb966ed97ae5edc7cd32e2f7a0b GIT binary patch literal 23962 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 P&%F#kUoZf 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�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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libGLESv2.a b/units/armv7-ultibo/lib/vc4/libGLESv2.a new file mode 100644 index 0000000000000000000000000000000000000000..9b3dd8c413c2366a5bb8265cb6475f16c7e78e1b GIT binary patch literal 95052 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libWFC.a b/units/armv7-ultibo/lib/vc4/libWFC.a new file mode 100644 index 0000000000000000000000000000000000000000..e0daaa38b00c32bf61f41d4b7340d58aa6d2a9a8 GIT binary patch literal 75712 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 kmFE*us;-|J%`Q+2eUweit;?Vo|pW222Q~&?~ literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libbcm_host.a b/units/armv7-ultibo/lib/vc4/libbcm_host.a new file mode 100644 index 0000000000000000000000000000000000000000..ba187540f7ca435ae21a61e384f1c96832dd5d72 GIT binary patch literal 3680 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%0D;KlzDDMXXi9NwGZ_r_N!!Q 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 N(MMb1jiBdu{|_w%I}QK< literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libbrcmGLESv2.a b/units/armv7-ultibo/lib/vc4/libbrcmGLESv2.a new file mode 100644 index 0000000000000000000000000000000000000000..7f1ca77bb0ccd1624e218118c2f6296c4e8d1604 GIT binary patch literal 95052 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%0AwVJP zDEm1md&2?9deJ1ZUbKj;7rNI``42(mpHMpaFNx&8Dw6-YNPgY>sQeXB`5T~JKf?ua znDG|bE?gHGXMYRS_D>{kt4Q2-QR}y{Pl;?NbPuJt`$OsYM?T`@9}&qvCX)XoRQ@!y%T+r0n;vrVw~6FGB$8kE zUMhbKDt}t(h%G_lxA$y_m{h50yWzbn?eP3hA#!k^THxk@j5?X_bF;!TRgnH7n1N+iyrNF3b@D*tm({#TWbf5XQh{!JqF35moR6Nxh=5@$vv zj_w&%oYPQo&MTcb)gOn%sTGOSCK5;YkSc!?D*s8PlmCK9{wpH+s~>ULDB{;9QhrFJ z{Fq4j^Wx*oNAU@^7b5v}FRIG93RTY5cG4*)DN@daNI454`2(MDI4Tk^EfR0ur0We- zHBZu?qUtMBpDQBuxo%kTTaK<0sb5kg{-mMqfmOX`pxu6`mFN`zZh zDv{%q2B`RrQ1M5UPMoGNB+i&foGFnwGa_;3MdF+miL`8(@=5FDxEkZ5lEaVkvM6QICCO#7DeKm6^WyJm=(v0I&o^D z;>?QppAzw36!F(R&C0(HRc>XUlfP4ByLnnGd`DSx#{yjqcX^&;_fZ?xhBpyEW7j{j*9|7DT+c17WFvmjE=c~SL!%;6}M-x!o%TIu+$ ziukRI_*EyI{FeqDwj>?DRw%y_Xtztm@2seH83u;XoR1z7xt=g3(!R7v`{qR2cS@vw z%Z9plTlK4gDyJE$oa#?O$_a?%kBGz@5s5b@5^vSmb&t2=R6@mRfQpk8i8Cbg=uU8EkJBK4RNS%2q6@}GjL$7!f~EJD>| zU3ThGe++8;MCuU{sYlwd{&C0NCXzlSQf^wL+&PhQ&l|h$kym+DP~|m3m6H_Jf1>(N zRR4+ipBAb28IgMHUV6nj4;80koOI$$i}=rq_|J>-hswVQm48*~rX-Rg~>o_D%Kvca%)eGA7g0`R1Rj>c#uwoKYuLY5M z)jSKSSFK3AMv-^{k$7>DaTpP)m!1hw{5h!j^HB9#m7Q|hpM%7Sh{TDD#L=??@*9Kl zn^ijbt^W+!5BSBevi^(Azjl%Nl@y6LE)s82B;Ja#Ul6%Ic1h&?! zc-12D{37uh#Fv?OP;ui>ap#myT>msAZoNp{Ln8SjB5@=C1rm2eB<`3<+*y(QSHyYB z|2!nWo{3O7O;F{;lukMGBIPWK_+1dme@!HQ+3!N)SBk{nEK(0WL!o%}Q1L=aC*D;N zzmgev_koQpC@1SS#Y!2<5jM z%5PNZ_^tk)T?yU+-uO@|9%y_>MIgIEfRl4#BWt(KGx1b%4rle4u-8FSn zcV5J=;%o5R%m=7)15o8QL6tiqJLO(|8B%V^??cMnEaKlHQr;nv@y|v691e?{1uV-HD8Cs9~a4Y5~}`bsQ9x`@z2Xn z{I*vh@k1i<$3^_+MdB}t#6KevzvLT`_{}2u+M(hff{Nb>6@ONC;;){9#J?&Mzv>Si zzgCg>og(ogBJr0+;$Ietzx!K|ahQTCXBw)U8K`nD$WA$Pe+-v6ZVOKLwS(@+YJd|B^`jYhoYqz7Hv{{%$Z+baHm{t$o2c#Hp)b{l*>xBu6AmNpC%#6l z<8H8|RmUxtT~^)U!9lAoG2jS?^4eC%Eq}be=ZL=Zuj7?Eb=;Pah#ux!<3Z~myS$f- z)W#|`4h=9#9o?nGeE2u;ZTtm{Uilf{rPSCjNwfWxuZ+Jt_*1-M{)b~>!PLKCRpN~m%MAW!a8_Szuor&(?##WE?(ugbhfV+Z_xA!q+k15ig!Xj zwEwkt1WHybc>nm+F8xjhW#C^y95;sio-;AL{$IF>zv?Of>H_~y-^AbkU7CXO?Ka|H zQs5uCiNF23GzI?Z6O~_C;Qz6k_}jmoSKwc1{Pi0T-uB;r6aP=#r2TrgyT*ihzNw5D zmY=b>OYb*6c(Hhi-@q%3vzmTwzvBFa@mhVyY7y_!)i`KOH(X#DB+4{52os z@Avxijy|>%_FTx0<5K#yE%N{GyvujVdC$Dc_v5eMR&?i|JI6Hdl>W=#~+)SPjcy4XlEG=!f=tqWAEl^)6M`$a1y{uPMERbj4RX?>gU9hE_S! zKSx*iRrY6X{SW9$wC0-ZYv?Mp#!UL}(A8+I3(~KnYtWio(!Bq0lU*lEx^uPi*9I=8 zi_#ZW53RSG1IPZhV)b!;b0B?@IepQW`q>pL_1QJOZ@H-Nb8AoYyA!^SzgXLl`rKMk z-(RdfmD-zmI<+t3OI^A0Gh$cpo6{A%+mfRqyKWjcUutTtB(=P@an~~b{)}~Cig!gX z^N#4LwW5yYwXdc+GaLG**2?;p*S=ETnJGzGna!y{W21#@4L9JE`x|nm@HAQ`|SUHdcNo z@fE8#Q(8W@w$a4$5z8XR-UI8IVq%UR*q13Kt{cRTEu(THL;QhXROKbc3)-z9c zSedW(1;|g_)CTe|@q1GH?D!k0r(MSnF0c7^(cWFuk9LUP=%%QsW+`!i4URZ{n*wRGQ}jE_2xrz)vCI@M&yezLqWQ%d}e)ZZO9wyhV7cz<`` z_`3bB?Evpxj_{sXy@RyGN?#0^_r@0SZr{p){m#-i)PJSaOYQa1){WG!ggz*vjzy^{ z#+ZKSD5g$(?7l4NvuG=Q+1F&(Ycu0iV(O*w(b#y$rHGit#8V$Cmd0hwj7z$&$1^VU zn`c~#XxE1FTr9=VxM-|3E{f~M)VNp&oN-YfXC+ zweL>)-l?OH_7~Cimoz5y{gytz-R~PaIy0K1n!Adh?s!+m-_hpGuT+WMj&xs}JvL*E zk;-$+$^MS*KXGhIsZ${JbNlyQ*idZJymoad+DiQ*Q%1k`rcT*;d{&x6iS)bd{x{nd z#n84??_1V(S=;ofO}AwDZCW?z}&F|KD>#Q>Wo-)~&e#^%oQJM3+Rwj0`} z6z`g18?-s2u`Ff$UM#O-d-3i}ak)S9BHOCl%Qt53Onp2v4%Iis`1s0M|LD81@-2+n z^4ga2TWp)gO6$u;_DxIWe`xn>p!}7O{J1>Z$6uk3ziID_e)QLM|D60I-ck^C)ozvk=l`YD)p(1l{!Y7{>0f{5kvkZ_}Ko$vGCP?SG?2@owyr+Nyl|Br;cW<6W_`_bAq|b`txe} zE17_qkK2`}{P8vYegZ3R`5PyWW|mGk+YGDxTYrA{iNE<@V<)12{&yaq+ijmG@M(MP z-S{+@AI*G#`94=3&n%VyJaeFYr(K86)GHt9Of7u!$829}%j@m53QnQk<6Sq%6EJyH z?|)tXr3cxLbXbf{8SlC-)xL%~qPf9w%^SV!k1DKZZCznKe>w2-dgceDM@iRji`sLD zcQ^k}(jF+tdxkWfq5P8d?*G3x)8@`0)rNo0yJ>aqnOnF9gear4oyBL#Ug6QQZ`KK> zy*Tz-kCwg7qvhZ3(X!7l;Legef0Wj{R=kVeg>s8Y;2gw$Hn$Gy^94?X^{g)EAa?y) zjJ*}MQ{S}FA$SelZgc{+GT~j#xu7+NcKu&MU-j6(i*BJ>ilg%W3hI7tT`Q305=M5Z z-WbDtP z&!V|hVdwuEdWs#Q8~=~cdj9~I32gg0^fk2GpO?@YKUWviuNtovlV9&1-O5H_%;>G? zd9+*pezfkdZZP%`dNUU!Mv1HbNub?D{d2TH>zMc#3lKyHBII)ide#6MK3B>_(TYDd?ROiNVJ# zE{FEt-D3?tmf+Dz=b4OKd3OWrXbpSDOYk-}I)_-NYDkZWr0dy;+up-9H?2$WXPsaj zskxo)f{1Ql9guFVfLxgD6u0t>f#Ia#Klz&Nzx3iP>)g$*&!(x5yOfv@h1X}#{#1BXVjq#ap1Ox?n*W&V wsf}EVe87(E{O8tB^lXl-5#s3`CJd?dYy7ESw9S%s+sa3)nZ(a{9Nl>T53gr5!vFvP literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libbrcmWFC.a b/units/armv7-ultibo/lib/vc4/libbrcmWFC.a new file mode 100644 index 0000000000000000000000000000000000000000..9cb544ca7ca7b945a0b32bf91736e2ee3936e17d GIT binary patch literal 75712 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

n{bh4MxDMbvHv&=RR_khRBITUG$uJj9yq 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 N*aj^Uln|)ze*o7gW_JJp literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_metadata_id3.a b/units/armv7-ultibo/lib/vc4/libreader_metadata_id3.a new file mode 100644 index 0000000000000000000000000000000000000000..9709f6cd2c20609cb47b2d1a2ebebb7133654ce8 GIT binary patch literal 35574 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_mkv.a b/units/armv7-ultibo/lib/vc4/libreader_mkv.a new file mode 100644 index 0000000000000000000000000000000000000000..d6fa04cb2644011e929918e2a549d497758ecc27 GIT binary patch literal 90866 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_mp4.a b/units/armv7-ultibo/lib/vc4/libreader_mp4.a new file mode 100644 index 0000000000000000000000000000000000000000..5acb3c0eb168be01d58d44c30fa3221456bd0b16 GIT binary patch literal 87670 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 DH_JJq literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_ps.a b/units/armv7-ultibo/lib/vc4/libreader_ps.a new file mode 100644 index 0000000000000000000000000000000000000000..2b7b05019d5831153a3bd12f5ca4d4ac1cff766f GIT binary patch literal 64620 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 aIlg`4E5{ba-#+I5KF-H3cM_%Lr~d^hy7<-r literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_qsynth.a b/units/armv7-ultibo/lib/vc4/libreader_qsynth.a new file mode 100644 index 0000000000000000000000000000000000000000..95f71b994e5909483d78ea59c033700e34ac8c0f GIT binary patch literal 27650 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_raw_video.a b/units/armv7-ultibo/lib/vc4/libreader_raw_video.a new file mode 100644 index 0000000000000000000000000000000000000000..bd32c851ebdf66f7b9412312cba3f6db00395565 GIT binary patch literal 29106 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�{P&a^oziU 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 iCYfCw06#t}z9UqJZZB literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_rtp.a b/units/armv7-ultibo/lib/vc4/libreader_rtp.a new file mode 100644 index 0000000000000000000000000000000000000000..be25d2101bebbbe8bdef72475a65d5fe676cc4cc GIT binary patch literal 121514 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 U&BV>Lg~Qtq!ycHq%Z2y90gXOOKmY&$ literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_rtsp.a b/units/armv7-ultibo/lib/vc4/libreader_rtsp.a new file mode 100644 index 0000000000000000000000000000000000000000..06b085c6fa348a57dfa291611f1546771abec7fd GIT binary patch literal 64694 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žDdLga>$`o;d?}>PGq^lc=I|6{sBTu$L+S`%|C&5 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_simple.a b/units/armv7-ultibo/lib/vc4/libreader_simple.a new file mode 100644 index 0000000000000000000000000000000000000000..1bc94595ee82f6ebdaa20a2d898b5a1587bedb86 GIT binary patch literal 30118 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libreader_wav.a b/units/armv7-ultibo/lib/vc4/libreader_wav.a new file mode 100644 index 0000000000000000000000000000000000000000..f82ee0191131d3e3091fdadeaad5c5b0b420eb50 GIT binary patch literal 26242 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libvchiq_arm.a b/units/armv7-ultibo/lib/vc4/libvchiq_arm.a new file mode 100644 index 0000000000000000000000000000000000000000..5d9406608ac85e3114124449d381f38e7ebe473b GIT binary patch literal 21304 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 S;Br@;FLPfjZhz>a$C10 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

~-&)z(xVQ2JXw|Lq|*HR97B*3)kH?H3W{p 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libvcilcs.a b/units/armv7-ultibo/lib/vc4/libvcilcs.a new file mode 100644 index 0000000000000000000000000000000000000000..4ac0be66804c4de3c89f1e7bd935e0a2ea74acaf GIT binary patch literal 24558 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 OO*2!P){^dV<^5m3QdVXF literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libvcos.a b/units/armv7-ultibo/lib/vc4/libvcos.a new file mode 100644 index 0000000000000000000000000000000000000000..2cfdb0a7b69f67f1fd25886c48cbca13c833ad5c GIT binary patch literal 220250 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

J`hDRV}ZHeh#~S8>9L8 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libvcsm.a b/units/armv7-ultibo/lib/vc4/libvcsm.a new file mode 100644 index 0000000000000000000000000000000000000000..948a1bff6146dc7cd93c3b69ec7d342617793b08 GIT binary patch literal 20080 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libwriter_asf.a b/units/armv7-ultibo/lib/vc4/libwriter_asf.a new file mode 100644 index 0000000000000000000000000000000000000000..9959ac8873a6d58dfacf63e6560ff0aa66af5d68 GIT binary patch literal 46594 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 z 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 CQR&qH literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libwriter_avi.a b/units/armv7-ultibo/lib/vc4/libwriter_avi.a new file mode 100644 index 0000000000000000000000000000000000000000..1dee103a185aafb25e73cab9be6d136f53018c62 GIT binary patch literal 75818 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 A_W%F@ literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libwriter_raw_video.a b/units/armv7-ultibo/lib/vc4/libwriter_raw_video.a new file mode 100644 index 0000000000000000000000000000000000000000..40541c1a89737ce345a8f454130ce647a6608186 GIT binary patch literal 22534 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 literal 0 HcmV?d00001 diff --git a/units/armv7-ultibo/lib/vc4/libwriter_simple.a b/units/armv7-ultibo/lib/vc4/libwriter_simple.a new file mode 100644 index 0000000000000000000000000000000000000000..4a5d081f6dc3ad966e0d3163f2f085e72810b2fe GIT binary patch literal 24038 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 kRDn>H4}>pC1)X~T3sp$^4FCWD literal 0 HcmV?d00001