From 4f5e322b3d2f7c4d854cc63c83064e9123b27f49 Mon Sep 17 00:00:00 2001 From: richardbarry Date: Tue, 13 Dec 2011 15:41:55 +0000 Subject: [PATCH] Remove the incomplete MicroBlaze with full ethernet and tracecon facility ready for V7.1.0 update. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1659 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- .../bsp/freertos_v2_00_a/data/freertos.mss | 12 - .../freertos_v2_00_a/data/freertos_v2_1_0.mld | 101 - .../freertos_v2_00_a/data/freertos_v2_1_0.tcl | 806 -- .../src/CreatingTheDirectoryStructure.txt | 4 - .../freertos_v2_00_a/src/License/license.txt | 435 - .../bsp/freertos_v2_00_a/src/Makefile | 77 - .../src/Source/portable/readme.txt | 19 - .../freertos_v2_00_a/src/Source/readme.txt | 17 - .../bsp/freertos_v2_00_a/src/readme.txt | 19 - .../data/FreeRTOS_Hello_World.mss | 9 - .../data/FreeRTOS_Hello_World.tcl | 127 - .../FreeRTOS_Hello_World/src/FreeRTOS-main.c | 398 - .../SDK/SDK_Export/hw/system.bit | Bin 1484497 -> 0 bytes .../SDK/SDK_Export/hw/system.xml | 7098 ----------------- .../SDK/SDK_Export/hw/system_bd.bmm | 32 - .../__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl | 180 - .../__xps/.dswkshop/MdtSvgDiag_Colors.xsl | 150 - .../__xps/.dswkshop/MdtSvgDiag_Globals.xsl | 168 - .../__xps/.dswkshop/MdtSvgDiag_StyleDefs.xsl | 584 -- .../MdtTinySvgBLKD_BusLaneSpaces.xsl | 2758 ------- .../__xps/.dswkshop/MdtTinySvgBLKD_Busses.xsl | 546 -- .../.dswkshop/MdtTinySvgBLKD_Functions.xsl | 1112 --- .../.dswkshop/MdtTinySvgBLKD_Globals.xsl | 115 - .../.dswkshop/MdtTinySvgBLKD_IOPorts.xsl | 495 -- .../__xps/.dswkshop/MdtTinySvgBLKD_Main.xsl | 1566 ---- .../.dswkshop/MdtTinySvgBLKD_Peripherals.xsl | 1582 ---- .../.dswkshop/MdtTinySvgBLKD_Processors.xsl | 465 -- .../.dswkshop/MdtTinySvgDiag_BifShapes.xsl | 271 - .../__xps/MCB_DDR3/mig.prj | 173 - .../__xps/MCB_DDR3/mig.ucf | 159 - .../__xps/MCB_DDR3/mig_input.txt | 16 - .../__xps/MCB_DDR3/mig_output.txt | 4 - .../__xps/MCB_DDR3/param_input.xml | 953 --- .../__xps/MCB_DDR3/param_output.xml | 598 -- .../PlatformStudioProject/__xps/bitinit.opt | 1 - .../__xps/edw2xtl_sav_globals.xsl | 263 - .../__xps/edw2xtl_sav_view.xsl | 245 - .../__xps/edw2xtl_sav_view_addr.xsl | 894 --- .../__xps/edw2xtl_sav_view_busif.xsl | 631 -- .../__xps/edw2xtl_sav_view_groups.xsl | 1447 ---- .../__xps/edw2xtl_sav_view_port.xsl | 771 -- .../__xps/gensav_cmd.xml | 2 - .../__xps/ise/system.xreport | 218 - .../__xps/ise/xmsgprops.lst | 3 - .../PlatformStudioProject/__xps/platgen.opt | 2 - .../PlatformStudioProject/__xps/simgen.opt | 1 - .../PlatformStudioProject/__xps/system.xml | 5885 -------------- .../PlatformStudioProject/__xps/xplorer.opt | 1 - .../PlatformStudioProject/__xps/xpsxflow.opt | 1 - .../PlatformStudioProject/data/system.ucf | 360 - .../PlatformStudioProject/etc/bitgen.ut | 3 - .../PlatformStudioProject/etc/download.cmd | 6 - .../etc/fast_runtime.opt | 84 - .../PlatformStudioProject/etc/system.filters | 158 - .../PlatformStudioProject/etc/system.gui | 221 - .../PlatformStudioProject/platgen.opt | 7 - .../PlatformStudioProject/system.bsb | 1 - .../PlatformStudioProject/system.make | 216 - .../PlatformStudioProject/system.mhs | 485 -- .../PlatformStudioProject/system.xmp | 38 - .../PlatformStudioProject/system_incl.make | 112 - .../HardwareWithEthernetFull/.project | 12 - .../HardwareWithEthernetFull/system.bit | Bin 1484497 -> 0 bytes .../HardwareWithEthernetFull/system.xml | 7098 ----------------- .../HardwareWithEthernetFull/system_bd.bmm | 32 - .../SDKProjects/RTOSDemo/.cproject | 1433 ---- .../SDKProjects/RTOSDemo/.project | 82 - .../CreateProjectDirectoryStructure.bat | 117 - .../SDKProjects/RTOSDemo/FreeRTOSConfig.h | 181 - .../SDKProjects/RTOSDemo/ParTest.c | 160 - .../SDKProjects/RTOSDemo/RegisterTests.c | 307 - .../lwIP/lwIP_Apps/apps/httpserver_raw/fs.c | 177 - .../lwIP/lwIP_Apps/apps/httpserver_raw/fs.h | 100 - .../lwIP_Apps/apps/httpserver_raw/fsdata.c | 2068 ----- .../lwIP_Apps/apps/httpserver_raw/fsdata.h | 50 - .../lwIP_Apps/apps/httpserver_raw/httpd.c | 2184 ----- .../lwIP_Apps/apps/httpserver_raw/httpd.h | 236 - .../apps/httpserver_raw/httpd_structs.h | 115 - .../httpserver_raw/makefsdata/fs/404.html | 21 - .../httpserver_raw/makefsdata/fs/index.shtml | 20 - .../httpserver_raw/makefsdata/fs/logo.jpg | Bin 28602 -> 0 bytes .../makefsdata/fs/runtime.shtml | 20 - .../makefsdata/makefsdata.c-source-file | 610 -- .../httpserver_raw/makefsdata/makefsdata.exe | Bin 46592 -> 0 bytes .../RTOSDemo/lwIP/lwIP_Apps/lwIP_Apps.c | 161 - .../lwIP/lwIP_Apps/lwipcfg_MicroBlaze.h | 15 - .../RTOSDemo/lwIP/lwIP_Apps/lwipopts.h | 314 - .../SDKProjects/RTOSDemo/main-blinky.c | 530 -- .../SDKProjects/RTOSDemo/main-full.c | 672 -- .../SDKProjects/RTOSDemo/printf-stdarg.c | 282 - .../SDKProjects/RTOSDemo/serial.c | 209 - .../SDKProjects/RTOSDemo/src/README.txt | 1 - .../SDKProjects/RTOSDemo/src/lscript.ld | 213 - .../SDKProjects/StandAloneBSP/.cproject | 14 - .../SDKProjects/StandAloneBSP/.project | 77 - .../SDKProjects/StandAloneBSP/.sdkproject | 3 - .../SDKProjects/StandAloneBSP/Makefile | 21 - .../SDKProjects/StandAloneBSP/libgen.log | 20 - .../SDKProjects/StandAloneBSP/libgen.options | 3 - .../SDKProjects/StandAloneBSP/system.mss | 93 - TraceCon/readme.txt | 6 - TraceCon/tracecon_big_endian_untested.exe | Bin 35142 -> 0 bytes TraceCon/tracecon_little_endian.exe | Bin 34982 -> 0 bytes 103 files changed, 50762 deletions(-) delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos.mss delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.mld delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.tcl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/CreatingTheDirectoryStructure.txt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/License/license.txt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Makefile delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/portable/readme.txt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/readme.txt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/readme.txt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.mss delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.tcl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/src/FreeRTOS-main.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system.bit delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system.xml delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system_bd.bmm delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_Colors.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_Globals.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_StyleDefs.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_BusLaneSpaces.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Busses.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Functions.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Globals.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_IOPorts.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Main.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Peripherals.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Processors.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgDiag_BifShapes.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig.prj delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig.ucf delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig_input.txt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig_output.txt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/param_input.xml delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/param_output.xml delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/bitinit.opt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_globals.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_addr.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_busif.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_groups.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_port.xsl delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/gensav_cmd.xml delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/system.xreport delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/xmsgprops.lst delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/platgen.opt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/simgen.opt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/system.xml delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/xplorer.opt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/xpsxflow.opt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/data/system.ucf delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/bitgen.ut delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/download.cmd delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/fast_runtime.opt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/system.filters delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/system.gui delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/platgen.opt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.bsb delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.make delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.mhs delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.xmp delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system_incl.make delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/.project delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.bit delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.xml delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system_bd.bmm delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.cproject delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.project delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/CreateProjectDirectoryStructure.bat delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/FreeRTOSConfig.h delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/ParTest.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/RegisterTests.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.h delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.h delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.h delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd_structs.h delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/404.html delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/index.shtml delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/logo.jpg delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/runtime.shtml delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/makefsdata.c-source-file delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/makefsdata.exe delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwIP_Apps.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipcfg_MicroBlaze.h delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipopts.h delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-blinky.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-full.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/printf-stdarg.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/serial.c delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/README.txt delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/lscript.ld delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.cproject delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.project delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.sdkproject delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/Makefile delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.log delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.options delete mode 100644 Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/system.mss delete mode 100644 TraceCon/readme.txt delete mode 100644 TraceCon/tracecon_big_endian_untested.exe delete mode 100644 TraceCon/tracecon_little_endian.exe diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos.mss b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos.mss deleted file mode 100644 index 330c3083a..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos.mss +++ /dev/null @@ -1,12 +0,0 @@ - -PARAMETER VERSION = 2.2.0 - -BEGIN OS - PARAMETER OS_NAME = freertos - PARAMETER STDIN = * - PARAMETER STDOUT = * - PARAMETER SYSTMR_SPEC = true - PARAMETER SYSTMR_DEV = * - PARAMETER SYSINTC_SPEC = * -END - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.mld b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.mld deleted file mode 100644 index 123cd4a21..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.mld +++ /dev/null @@ -1,101 +0,0 @@ -############################################################################## -# -# (c) Copyright 2011 Xilinx, Inc. All rights reserved. -# -# This file contains confidential and proprietary information of Xilinx, Inc. -# and is protected under U.S. and international copyright and other -# intellectual property laws. -# -# DISCLAIMER -# This disclaimer is not a license and does not grant any rights to the -# materials distributed herewith. Except as otherwise provided in a valid -# license issued to you by Xilinx, and to the maximum extent permitted by -# applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL -# FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, -# IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF -# MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; -# and (2) Xilinx shall not be liable (whether in contract or tort, including -# negligence, or under any other theory of liability) for any loss or damage -# of any kind or nature related to, arising under or in connection with these -# materials, including for any direct, or any indirect, special, incidental, -# or consequential loss or damage (including loss of data, profits, goodwill, -# or any type of loss or damage suffered as a result of any action brought by -# a third party) even if such damage or loss was reasonably foreseeable or -# Xilinx had been advised of the possibility of the same. -# -# CRITICAL APPLICATIONS -# Xilinx products are not designed or intended to be fail-safe, or for use in -# any application requiring fail-safe performance, such as life-support or -# safety devices or systems, Class III medical devices, nuclear facilities, -# applications related to the deployment of airbags, or any other applications -# that could lead to death, personal injury, or severe property or -# environmental damage (individually and collectively, "Critical -# Applications"). Customer assumes the sole risk and liability of any use of -# Xilinx products in Critical Applications, subject only to applicable laws -# and regulations governing limitations on product liability. -# -# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE -# AT ALL TIMES. -# -# This file is part of Xilkernel. -# -# $Id: xilkernel_v2_1_0.mld,v 1.1.2.4 2010/12/10 07:27:08 svemula Exp $ -############################################################################### - -OPTION psf_version = 2.1.0 ; -BEGIN OS freertos - - OPTION DRC = kernel_drc ; - OPTION SUPPORTED_PERIPHERALS = (microblaze); - OPTION COPYFILES = all; - OPTION DEPENDS = (standalone_v3_01_a); - OPTION APP_LINKER_FLAGS = "-Wl,--start-group,-lxil,-lfreertos,-lgcc,-lc,--end-group"; - - OPTION DESC = "FreeRTOS is a popular lightweight kernel." - - # STDIN/STDOUT - PARAM name = stdin, type = peripheral_instance, requires_interface = stdin, default=none, desc = "Specify the instance name of the standard input peripheral"; - PARAM name = stdout, type = peripheral_instance, requires_interface = stdout, default=none, desc = "Specify the instance name of the standard output peripheral"; - - # System timer specification - PARAM name = systmr_interval, type = int, default = 10, desc = "Specify the time interval for each kernel tick (in milliseconds). This controls the CPU budget for each process. If the timer is fit_timer, then this parameter is automatically determined"; - - # System interrupt controller specification - # PARAM name = sysintc_spec, type = peripheral_instance, range = (opb_intc, xps_intc, dcr_intc, axi_intc), default = none, desc = "Specify the instance name of the interrupt controller device driving system interrupts"; - - BEGIN CATEGORY kernel_behavior - PARAM name = kernel_behavior, type = bool, default = true, desc = "Parameters relating to the kernel behavior", permit = user; - PARAM name = use_preemption, type = bool, default = true, desc = "Set to true to use the preemptive scheduler, or false to use the cooperative scheduler."; - PARAM name = idle_yield, type = bool, default = true, desc = "Set to true if the Idle task should yield if another idle priority task is able to run, or false if the idle task should always use its entire time slice unless it is preempted."; - PARAM name = max_priorities, type = int, default = 4, desc = "The number of task priorities that will be available. Priorities can be assigned from zero to (max_priorities - 1)"; - PARAM name = minimal_stack_size, type = int, default = 120, desc = "The size of the stack allocated to the Idle task. Also used by standard demo and test tasks found in the main FreeRTOS download."; - PARAM name = total_heap_size, type = int, default = 65536, desc = "Only used if heap_1.c or heap_2.c is included in the project. Sets the amount of RAM reserved for use by the kernel - used when tasks, queues and semaphores are created."; - PARAM name = max_task_name_len, type = int, default = 8, desc = "The maximum number of characters that can be in the name of a task."; - END CATEGORY - - BEGIN CATEGORY kernel_features - PARAM name = kernel_features, type = bool, default = true, desc = "Include or exclude kernel features", permit = user; - PARAM name = use_mutexes, type = bool, default = true, desc = "Set to true to include mutex functionality, or false to exclude mutex functionality."; - PARAM name = use_recursive_mutexes, type = bool, default = true, desc = "Set to true to include recursive mutex functionality, or false to exclude recursive mutex functionality."; - PARAM name = use_counting_semaphores, type = bool, default = true, desc = "Set to true to include counting semaphore functionality, or false to exclude recursive mutex functionality."; - PARAM name = queue_registry_size, type = int, default = 10, desc = "The maximum number of queues that can be registered at any one time. Registered queues can be viewed in the kernel aware debugger plug-in."; - PARAM name = use_trace_facility, type = bool, default = true, desc = "Set to true to include the legacy trace functionality, and a few other features. traceMACROS are the preferred method of tracing now."; - END CATEGORY - - BEGIN CATEGORY hook_functions - PARAM name = hook_functions, type = bool, default = true, desc = "Include or exclude application defined hook (callback) functions. Callback functions must be defined by the application that is using FreeRTOS", permit = user; - PARAM name = use_idle_hook, type = bool, default = false, desc = "Set to true for the kernel to call vApplicationIdleHook() on each iteration of the idle task. The application must provide an implementation of vApplicationIdleHook()."; - PARAM name = use_tick_hook, type = bool, default = false, desc = "Set to true for the kernel to call vApplicationTickHook() during each tick interrupt. The application must provide an implementation of vApplicationTickHook()."; - PARAM name = use_malloc_failed_hook, type = bool, default = true, desc = "Only used if heap_1.c, heap_2.c or heap_3.c is included in the project. Set to true for the kernel to call vApplicationMallocFailedHookHook() if there is insufficient FreeRTOS heap available for a task, queue or semaphore to be created. The application must provide an implementation of vApplicationMallocFailedHook()."; - PARAM name = check_for_stack_overflow, type = int, default = 2, desc = "Set to 1 to include basic run time task stack checking. Set to 2 to include more comprehensive run time task stack checking."; - END CATEGORY - - BEGIN CATEGORY software_timers - PARAM name = software_timers, type = bool, default = true, desc = "Options relating to the software timers functionality", permit = user; - PARAM name = use_timers, type = bool, default = true, desc = "Set to true to include software timer functionality, or false to exclude software timer functionality"; - PARAM name = timer_task_priority, type = string, default = "(configMAX_PRIORITIES - 1)", desc = "The priority at which the software timer service/daemon task will execute."; - PARAM name = timer_command_queue_length, type = int, default = 10, desc = "The number of commands the timer command queue can hold at any one time."; - PARAM name = timer_task_stack_depth, type = string, default = "(configMINIMAL_STACK_SIZE), desc = "The size of the stack allocated to the timer service/daemon task."; - END CATEGORY - -END OS diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.tcl b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.tcl deleted file mode 100644 index c7067eb24..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/data/freertos_v2_1_0.tcl +++ /dev/null @@ -1,806 +0,0 @@ -############################################################################## -# -# (c) Copyright 2011 Xilinx, Inc. All rights reserved. -# -# This file contains confidential and proprietary information of Xilinx, Inc. -# and is protected under U.S. and international copyright and other -# intellectual property laws. -# -# DISCLAIMER -# This disclaimer is not a license and does not grant any rights to the -# materials distributed herewith. Except as otherwise provided in a valid -# license issued to you by Xilinx, and to the maximum extent permitted by -# applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL -# FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, -# IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF -# MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; -# and (2) Xilinx shall not be liable (whether in contract or tort, including -# negligence, or under any other theory of liability) for any loss or damage -# of any kind or nature related to, arising under or in connection with these -# materials, including for any direct, or any indirect, special, incidental, -# or consequential loss or damage (including loss of data, profits, goodwill, -# or any type of loss or damage suffered as a result of any action brought by -# a third party) even if such damage or loss was reasonably foreseeable or -# Xilinx had been advised of the possibility of the same. -# -# CRITICAL APPLICATIONS -# Xilinx products are not designed or intended to be fail-safe, or for use in -# any application requiring fail-safe performance, such as life-support or -# safety devices or systems, Class III medical devices, nuclear facilities, -# applications related to the deployment of airbags, or any other applications -# that could lead to death, personal injury, or severe property or -# environmental damage (individually and collectively, "Critical -# Applications"). Customer assumes the sole risk and liability of any use of -# Xilinx products in Critical Applications, subject only to applicable laws -# and regulations governing limitations on product liability. -# -# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE -# AT ALL TIMES. -# -# This file is part of FreeRTOS. -# -# $Id: freertos_v2_1_0.tcl,v 1.1.2.8 2010/12/10 07:27:08 svemula Exp $ -############################################################################### - -# standalone bsp version. set this to the latest "ACTIVE" version. -set standalone_version standalone_v3_01_a - -proc kernel_drc {os_handle} { - set sw_proc_handle [xget_libgen_proc_handle] - set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] - set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"] - set compiler [xget_value $sw_proc_handle "PARAMETER" "COMPILER"] - - # check for valid compiler - if { [string first "mb-gcc" $compiler] == 0 && [string first "mb-g++" $compiler] == 0} { - error "Wrong compiler requested. FreeRTOS can be compiled only with the GNU compiler for MicroBlaze." "" "mdt_error" - } - - # check for valid stdio parameters - set stdin [xget_value $os_handle "PARAMETER" "STDIN"] - set stdout [xget_value $os_handle "PARAMETER" "STDOUT"] - if { $stdin == "none" || $stdout == "none" } { - error "The STDIN/STDOUT parameters are not set. FreeRTOS requires stdin/stdout to be set." "" "mdt_error" - } - - # check if the design has a intc - set intr_port [xget_value $hw_proc_handle "PORT" "Interrupt"] - if { [llength $intr_port] == 0 } { - error "CPU has no connection to Interrupt controller." "" "mdt_error" - } - - # support only AXI/PLB - set interconnect [xget_value $hw_proc_handle "PARAMETER" "C_INTERCONNECT"] - if { $interconnect == 1 } { - set bus_name [xget_hw_busif_value $hw_proc_handle "DPLB"] - } elseif { $interconnect == 2 } { - set bus_name [xget_hw_busif_value $hw_proc_handle "M_AXI_DP"] - } else { - error "FreeRTOS supports Microblaze with only a AXI or PLB interconnect" "" "mdt_error" - } - - # obtain handles to all the peripherals in the design - set mhs_handle [xget_hw_parent_handle $hw_proc_handle] - set slave_ifs [xget_hw_connected_busifs_handle $mhs_handle $bus_name "slave"] - set timer_count 0 - set timer_has_intr 0 - - # check for a valid timer - foreach if $slave_ifs { - set ip_handle [xget_hw_parent_handle $if] - - if {$ip_handle != $hw_proc_handle} { - set type [xget_hw_value $ip_handle] - if { $type == "xps_timer" || $type == "axi_timer" } { - incr timer_count - - # check if the timer interrupts are enabled - set intr_port [xget_value $ip_handle "PORT" "Interrupt"] - if { [llength $intr_port] != 0 } { - set timer_has_intr 1 - } - } - } - } - - if { $timer_count == 0 } { - error "FreeRTOS for Microblaze requires an axi_timer or xps_timer. The HW platform doesn't have a valid timer." "" "mdt_error" - } - - if { $timer_has_intr == 0 } { - error "FreeRTOS for Microblaze requires interrupts enabled for a timer." "" "mdt_error" - } - - set systmr_interval_ms [xget_value $os_handle "PARAMETER" "systmr_interval"] - if { $systmr_interval_ms <= 0 } { - error "Invalid value for parameter systmr_interval specified. Please specify a positive value." "" "mdt_error" - } - - ### ToDo: Add DRC specific to FreeRTOS -} - -proc generate {os_handle} { - - variable standalone_version - - set sw_proc_handle [xget_libgen_proc_handle] - set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] - set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"] - set procver [xget_value $hw_proc_handle "PARAMETER" "HW_VER"] - - set need_config_file "false" - - # proctype should be "microblaze" - set mbsrcdir "../${standalone_version}/src/microblaze" - set commondir "../${standalone_version}/src/common" - set datadir "../${standalone_version}/data" - - foreach entry [glob -nocomplain [file join $commondir *]] { - file copy -force $entry [file join ".." "${standalone_version}" "src"] - } - - # proctype should be "microblaze" - switch -regexp $proctype { - "microblaze" { - - foreach entry [glob -nocomplain [file join $mbsrcdir *]] { - if { [string first "microblaze_interrupt_handler" $entry] == -1 } { ;# Do not copy over the Standalone BSP exception handler - file copy -force $entry [file join ".." "${standalone_version}" "src"] - } - } - set need_config_file "true" - } - "default" {puts "unknown processor type $proctype\n"} - } - - # Write the config.make file - set makeconfig [open "../standalone_v3_01_a/src/config.make" w] - xprint_generated_header_tcl $makeconfig "Configuration parameters for Standalone Makefile" - - if { $proctype == "microblaze" } { - if { [mb_has_exceptions $hw_proc_handle] } { - puts $makeconfig "LIBSOURCES = *.s *.c *.S" - } else { - puts $makeconfig "LIBSOURCES = *.s *.c" - } - } - - puts $makeconfig "LIBS = standalone_libs" - close $makeconfig - - # Remove microblaze directories... - file delete -force $mbsrcdir - - # copy required files to the main src directory - file copy -force [file join src Source tasks.c] src - file copy -force [file join src Source queue.c] src - file copy -force [file join src Source list.c] src - file copy -force [file join src Source timers.c] src - file copy -force [file join src Source portable MemMang heap_3.c] src - file copy -force [file join src Source portable GCC MicroBlazeV8 port.c] src - file copy -force [file join src Source portable GCC MicroBlazeV8 port_exceptions.c] src - file copy -force [file join src Source portable GCC MicroBlazeV8 portasm.S] src - file copy -force [file join src Source portable GCC MicroBlazeV8 portmacro.h] src - set headers [glob -join ./src/Source/include *.\[h\]] - foreach header $headers { - file copy -force $header src - } - - file delete -force [file join src Source] - file delete -force [file join src Source] - - # Handle stdin and stdout - xhandle_stdin $os_handle - xhandle_stdout $os_handle - - # Create config file for microblaze interrupt handling - if {[string compare -nocase $need_config_file "true"] == 0} { - xhandle_mb_interrupts - } - - # Create config files for Microblaze exception handling - if { $proctype == "microblaze" && [mb_has_exceptions $hw_proc_handle] } { - xcreate_mb_exc_config_file - } - - # Create bspconfig file - set bspcfg_fn [file join ".." "${standalone_version}" "src" "bspconfig.h"] - file delete $bspcfg_fn - set bspcfg_fh [open $bspcfg_fn w] - xprint_generated_header $bspcfg_fh "Configurations for Standalone BSP" - - if { $proctype == "microblaze" && [mb_has_pvr $hw_proc_handle] } { - - set pvr [xget_value $hw_proc_handle "PARAMETER" "C_PVR"] - - switch $pvr { - "0" { - puts $bspcfg_fh "#define MICROBLAZE_PVR_NONE" - } - "1" { - puts $bspcfg_fh "#define MICROBLAZE_PVR_BASIC" - } - "2" { - puts $bspcfg_fh "#define MICROBLAZE_PVR_FULL" - } - "default" { - puts $bspcfg_fh "#define MICROBLAZE_PVR_NONE" - } - } - } - - close $bspcfg_fh - -# ToDO: FreeRTOS does not handle the following, refer xilkernel TCL script -# - MPU settings - - set config_file [xopen_new_include_file "./src/FreeRTOSConfig.h" "FreeRTOS Configuration parameters"] - puts $config_file "\#include \"xparameters.h\" \n" - - set val [xget_value $os_handle "PARAMETER" "use_preemption"] - if {$val == "false"} { - xput_define $config_file "configUSE_PREEMPTION" "0" - } else { - xput_define $config_file "configUSE_PREEMPTION" "1" - } - - set val [xget_value $os_handle "PARAMETER" "use_mutexes"] - if {$val == "false"} { - xput_define $config_file "configUSE_MUTEXES" "0" - } else { - xput_define $config_file "configUSE_MUTEXES" "1" - } - - set val [xget_value $os_handle "PARAMETER" "use_recursive_mutexes"] - if {$val == "false"} { - xput_define $config_file "configUSE_RECURSIVE_MUTEXES" "0" - } else { - xput_define $config_file "configUSE_RECURSIVE_MUTEXES" "1" - } - - set val [xget_value $os_handle "PARAMETER" "use_counting_semaphores"] - if {$val == "false"} { - xput_define $config_file "configUSE_COUNTING_SEMAPHORES" "0" - } else { - xput_define $config_file "configUSE_COUNTING_SEMAPHORES" "1" - } - - set val [xget_value $os_handle "PARAMETER" "use_timers"] - if {$val == "false"} { - xput_define $config_file "configUSE_TIMERS" "0" - } else { - xput_define $config_file "configUSE_TIMERS" "1" - } - - set val [xget_value $os_handle "PARAMETER" "use_idle_hook"] - if {$val == "false"} { - xput_define $config_file "configUSE_IDLE_HOOK" "0" - } else { - xput_define $config_file "configUSE_IDLE_HOOK" "1" - } - - set val [xget_value $os_handle "PARAMETER" "use_tick_hook"] - if {$val == "false"} { - xput_define $config_file "configUSE_TICK_HOOK" "0" - } else { - xput_define $config_file "configUSE_TICK_HOOK" "1" - } - - set val [xget_value $os_handle "PARAMETER" "use_malloc_failed_hook"] - if {$val == "false"} { - xput_define $config_file "configUSE_MALLOC_FAILED_HOOK" "0" - } else { - xput_define $config_file "configUSE_MALLOC_FAILED_HOOK" "1" - } - - set val [xget_value $os_handle "PARAMETER" "use_trace_facility"] - if {$val == "false"} { - xput_define $config_file "configUSE_TRACE_FACILITY" "0" - } else { - xput_define $config_file "configUSE_TRACE_FACILITY" "1" - } - - xput_define $config_file "configUSE_16_BIT_TICKS" "0" - xput_define $config_file "configUSE_APPLICATION_TASK_TAG" "0" - xput_define $config_file "configUSE_CO_ROUTINES" "0" - - # System timer tick rate (Microblaze only. kernel DRC ensures this) - set systmr_interval [xget_value $os_handle "PARAMETER" "systmr_interval"] - xput_define $config_file "configTICK_RATE_HZ" $systmr_interval - - set max_priorities [xget_value $os_handle "PARAMETER" "max_priorities"] - xput_define $config_file "configMAX_PRIORITIES" $max_priorities - xput_define $config_file "configMAX_CO_ROUTINE_PRIORITIES" "2" - - set min_stack [xget_value $os_handle "PARAMETER" "minimal_stack_size"] - set min_stack [expr [expr $min_stack + 3] & 0xFFFFFFFC] - xput_define $config_file "configMINIMAL_STACK_SIZE" $min_stack - - set total_heap_size [xget_value $os_handle "PARAMETER" "total_heap_size"] - set total_heap_size [expr [expr $total_heap_size + 3] & 0xFFFFFFFC] - xput_define $config_file "configTOTAL_HEAP_SIZE" $total_heap_size - - set max_task_name_len [xget_value $os_handle "PARAMETER" "max_task_name_len"] - xput_define $config_file "configMAX_TASK_NAME_LEN" $max_task_name_len - - set val [xget_value $os_handle "PARAMETER" "idle_yield"] - if {$val == "false"} { - xput_define $config_file "configIDLE_SHOULD_YIELD" "0" - } else { - xput_define $config_file "configIDLE_SHOULD_YIELD" "1" - } - - set val [xget_value $os_handle "PARAMETER" "check_for_stack_overflow"] - if {$val == "false"} { - xput_define $config_file "configCHECK_FOR_STACK_OVERFLOW" "0" - } else { - xput_define $config_file "configCHECK_FOR_STACK_OVERFLOW" "2" - } - - set val [xget_value $os_handle "PARAMETER" "queue_registry_size"] - if {$val == "false"} { - xput_define $config_file "configQUEUE_REGISTRY_SIZE" "0" - } else { - xput_define $config_file "configQUEUE_REGISTRY_SIZE" "10" - } - - xput_define $config_file "configGENERATE_RUN_TIME_STATS" "0" - - set val [xget_value $os_handle "PARAMETER" "timer_task_priority"] - if {$val == "false"} { - xput_define $config_file "configTIMER_TASK_PRIORITY" "0" - } else { - xput_define $config_file "configTIMER_TASK_PRIORITY" "10" - } - - set val [xget_value $os_handle "PARAMETER" "timer_command_queue_length"] - if {$val == "false"} { - xput_define $config_file "configTIMER_QUEUE_LENGTH" "0" - } else { - xput_define $config_file "configTIMER_QUEUE_LENGTH" "10" - } - - set val [xget_value $os_handle "PARAMETER" "timer_task_stack_depth"] - if {$val == "false"} { - xput_define $config_file "configTIMER_TASK_STACK_DEPTH" "0" - } else { - xput_define $config_file "configTIMER_TASK_STACK_DEPTH" $min_stack - } - - if { [mb_has_exceptions $hw_proc_handle] } { - xput_define $config_file "configINSTALL_EXCEPTION_HANDLERS" "1" - } else { - xput_define $config_file "configINSTALL_EXCEPTION_HANDLERS" "0" - } - - xput_define $config_file "configINTERRUPT_CONTROLLER_TO_USE" "XPAR_INTC_SINGLE_DEVICE_ID" - - xput_define $config_file "INCLUDE_vTaskCleanUpResources" "0" - xput_define $config_file "INCLUDE_vTaskDelay" "1" - xput_define $config_file "INCLUDE_vTaskDelayUntil" "1" - xput_define $config_file "INCLUDE_vTaskDelete" "1" - xput_define $config_file "INCLUDE_xTaskGetCurrentTaskHandle" "1" - xput_define $config_file "INCLUDE_xTaskGetIdleTaskHandle" "1" - xput_define $config_file "INCLUDE_xTaskGetSchedulerState" "1" - xput_define $config_file "INCLUDE_xTimerGetTimerTaskHandle" "1" - xput_define $config_file "INCLUDE_uxTaskGetStackHighWaterMark" "1" - xput_define $config_file "INCLUDE_uxTaskPriorityGet" "1" - xput_define $config_file "INCLUDE_vTaskPrioritySet" "1" - xput_define $config_file "INCLUDE_xTaskResumeFromISR" "1" - xput_define $config_file "INCLUDE_vTaskSuspend" "1" - xput_define $config_file "INCLUDE_pcTaskNameGet" "1" - xput_define $config_file "INCLUDE_xTaskIdleTaskHandleGet" "1" - xput_define $config_file "INCLUDE_xTimerDaemonTaskHandleGet" "1" - - # complete the header protectors - puts $config_file "\#endif" - close $config_file -} - -proc xopen_new_include_file { filename description } { - set inc_file [open $filename w] - xprint_generated_header $inc_file $description - set newfname [string map {. _} [lindex [split $filename {\/}] end]] - puts $inc_file "\#ifndef _[string toupper $newfname]" - puts $inc_file "\#define _[string toupper $newfname]\n\n" - return $inc_file -} - -proc xadd_define { config_file os_handle parameter } { - set param_value [xget_value $os_handle "PARAMETER" $parameter] - puts $config_file "#define [string toupper $parameter] $param_value\n" - - # puts "creating #define [string toupper $parameter] $param_value\n" -} - -proc xput_define { config_file parameter param_value } { - puts $config_file "#define $parameter $param_value\n" - - # puts "creating #define [string toupper $parameter] $param_value\n" -} - -# args field of the array -proc xadd_extern_fname {initfile oshandle arrayname arg} { - - set arrhandle [xget_handle $oshandle "ARRAY" $arrayname] - set elements [xget_handle $arrhandle "ELEMENTS" "*"] - set count 0 - set max_count [llength $elements] - - foreach ele $elements { - incr count - set arg_value [xget_value $ele "PARAMETER" $arg] - puts $initfile "extern void $arg_value\(\)\;" - } - puts $initfile "" -} - -# args is variable no - fields of the array -proc xadd_struct {initfile oshandle structtype structname arrayname args} { - - set arrhandle [xget_handle $oshandle "ARRAY" $arrayname] - set elements [xget_handle $arrhandle "ELEMENTS" "*"] - set count 0 - set max_count [llength $elements] - puts $initfile "struct $structtype $structname\[$max_count\] = \{" - - foreach ele $elements { - incr count - puts -nonewline $initfile "\t\{" - foreach field $args { - set field_value [xget_value $ele "PARAMETER" $field] - # puts "$arrayname ( $count )->$field is $field_value" - puts -nonewline $initfile "$field_value" - if { $field != [lindex $args end] } { - puts -nonewline $initfile "," - } - } - if {$count < $max_count} { - puts $initfile "\}," - } else { - puts $initfile "\}" - } - } - puts $initfile "\}\;" -} - -# return the sum of all the arg field values in arrayname -proc get_field_sum {oshandle arrayname arg} { - - set arrhandle [xget_handle $oshandle "ARRAY" $arrayname] - set elements [xget_handle $arrhandle "ELEMENTS" "*"] - set count 0 - set max_count [llength $elements] - - foreach ele $elements { - set field_value [xget_value $ele "PARAMETER" $arg] - set count [expr $field_value+$count] - } - return $count -} - -# return the sum of the product of field values in arrayname -proc get_field_product_sum {oshandle arrayname field1 field2} { - - set arrhandle [xget_handle $oshandle "ARRAY" $arrayname] - set elements [xget_handle $arrhandle "ELEMENTS" "*"] - set count 0 - set max_count [llength $elements] - - foreach ele $elements { - set field1_value [xget_value $ele "PARAMETER" $field1] - set field2_value [xget_value $ele "PARAMETER" $field2] - set incr_value [expr $field1_value*$field2_value] - set count [expr $count+$incr_value] - } - return $count -} - -proc xhandle_mb_interrupts {} { - - set default_interrupt_handler "XNullHandler" - set default_arg "XNULL" - - set source_interrupt_handler $default_interrupt_handler - set source_handler_arg $default_arg - - # Handle the interrupt pin - set sw_proc_handle [xget_libgen_proc_handle] - set periph [xget_handle $sw_proc_handle "IPINST"] - set source_ports [xget_interrupt_sources $periph] - if {[llength $source_ports] > 1} { - error "Too many interrupting ports on the MicroBlaze. Should only find 1" "" "libgen_error" - return - } - - if {[llength $source_ports] == 1} { - set source_port [lindex $source_ports 0] - if {[llength $source_port] != 0} { - set source_port_name [xget_value $source_port "VALUE"] - set source_periph [xget_handle $source_port "PARENT"] - set source_name [xget_value $source_periph "NAME"] - set source_driver [xget_sw_driver_handle_for_ipinst $sw_proc_handle $source_name] - - if {[string compare -nocase $source_driver ""] != 0} { - set int_array [xget_handle $source_driver "ARRAY" "interrupt_handler"] - if {[llength $int_array] != 0} { - set int_array_elems [xget_handle $int_array "ELEMENTS" "*"] - if {[llength $int_array_elems] != 0} { - foreach int_array_elem $int_array_elems { - set int_port [xget_value $int_array_elem "PARAMETER" "int_port"] - if {[llength $int_port] != 0} { - if {[string compare -nocase $int_port $source_port_name] == 0 } { - set source_interrupt_handler [xget_value $int_array_elem "PARAMETER" "int_handler"] - set source_handler_arg [xget_value $int_array_elem "PARAMETER" "int_handler_arg"] - if {[string compare -nocase $source_handler_arg DEVICE_ID] == 0 } { - set source_handler_arg [xget_name $source_periph "DEVICE_ID"] - } else { - if {[string compare -nocase "global" [xget_port_type $source_port]] == 0} { - set source_handler_arg $default_arg - } else { - set source_handler_arg [xget_name $source_periph "C_BASEADDR"] - } - } - break - } - } - } - } - } - } - } - } - - # Generate microblaze_interrupts_g.c file... - xcreate_mb_intr_config_file $source_interrupt_handler $source_handler_arg - -} - - -proc xcreate_mb_intr_config_file {handler arg} { - - set mb_table "MB_InterruptVectorTable" - - set filename [file join "../standalone_v3_01_a/src" "microblaze_interrupts_g.c"] - file delete $filename - set config_file [open $filename w] - - xprint_generated_header $config_file "Interrupt Handler Table for MicroBlaze Processor" - - puts $config_file "#include \"microblaze_interrupts_i.h\"" - puts $config_file "#include \"xparameters.h\"" - puts $config_file "\n" - puts $config_file [format "extern void %s (void *);" $handler] - puts $config_file "\n/*" - puts $config_file "* The interrupt handler table for microblaze processor" - puts $config_file "*/\n" - puts $config_file [format "%sEntry %s\[\] =" $mb_table $mb_table] - puts $config_file "\{" - puts -nonewline $config_file [format "\{\t%s" $handler] - puts -nonewline $config_file [format ",\n\t(void*) %s\}" $arg] - puts -nonewline $config_file "\n\};" - puts $config_file "\n" - close $config_file -} - - -# ------------------------------------------- -# Tcl procedure xcreate_mb_exc_config file -# ------------------------------------------- -proc xcreate_mb_exc_config_file { } { - - set hfilename [file join "src" "microblaze_exceptions_g.h"] - file delete $hfilename - set hconfig_file [open $hfilename w] - - xprint_generated_header $hconfig_file "Exception Handling Header for MicroBlaze Processor" - - puts $hconfig_file "\n" - - set sw_proc_handle [xget_libgen_proc_handle] - set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] - set procver [xget_value $hw_proc_handle "PARAMETER" "HW_VER"] - - if { ![mb_has_exceptions $hw_proc_handle]} { ;# NO exceptions are enabled - close $hconfig_file ;# Do not generate any info in either the header or the C file - return - } - - puts $hconfig_file "\#define MICROBLAZE_EXCEPTIONS_ENABLED 1" - if { [mb_can_handle_exceptions_in_delay_slots $procver] } { - puts $hconfig_file "#define MICROBLAZE_CAN_HANDLE_EXCEPTIONS_IN_DELAY_SLOTS" - } - - close $hconfig_file -} - -# -------------------------------------- -# Tcl procedure post_generate -# This proc removes from libxil.a the basic -# and standalone BSP versions of -# _interrupt_handler and _hw_exception_handler -# routines -# -------------------------------------- -proc post_generate {os_handle} { - set sw_proc_handle [xget_libgen_proc_handle] - set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] - set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"] - set procname [xget_value $hw_proc_handle "NAME"] - - set procdrv [xget_sw_driver_handle_for_ipinst $sw_proc_handle $procname] - set archiver [xget_value $procdrv "PARAMETER" "archiver"] - - if {[string compare -nocase $proctype "microblaze"] == 0 } { - # Remove _interrupt_handler.o from libxil.a for FreeRTOS - set libxil_a [file join .. .. lib libxil.a] - exec $archiver -d $libxil_a _interrupt_handler.o - - # We have linkage problems due to how these platforms are defined. Can't do this right now. - # # Remove _exception_handler.o from libxil.a for FreeRTOS - # exec bash -c "$archiver -d ../../lib/libxil.a _exception_handler.o" - - # Remove _hw_exception_handler.o from libxil.a for microblaze cores with exception support - if {[mb_has_exceptions $hw_proc_handle]} { - exec $archiver -d ../../lib/libxil.a _hw_exception_handler.o - } - } -} - -# -------------------------------------- -# Tcl procedure execs_generate -# This proc removes from libxil.a all -# the stuff that we are overriding -# with xilkernel -# We currently override, -# MicroBlaze -# - Dummy _interrupt_hander and _hw_exception_handler -# (in post_generate) -# PPC -# - xvectors.o; sleep.o (IF config_time is true) -# Common to all processors -# - errno.o -# -------------------------------------- -proc execs_generate {os_handle} { - set sw_proc_handle [xget_libgen_proc_handle] - set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"] - set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"] - set procname [xget_value $hw_proc_handle "NAME"] - - set procdrv [xget_sw_driver_handle_for_ipinst $sw_proc_handle $procname] - # Remove _interrupt_handler.o from libxil.a for mb-gcc - set archiver [xget_value $procdrv "PARAMETER" "archiver"] - - set libxil_a [file join .. .. lib libxil.a] -# exec $archiver -d $libxil_a errno.o - - # We have linkage problems due to how these platforms are defined. Can't do this right now. - # exec "$archiver -d $libxil_a microblaze_interrupt_handler.o" -} - -# -------------------------------------- -# Return true if this MB has -# exception handling support -# -------------------------------------- -proc mb_has_exceptions { hw_proc_handle } { - - # Check if the following parameters exist on this MicroBlaze's MPD - set ee [xget_value $hw_proc_handle "PARAMETER" "C_UNALIGNED_EXCEPTIONS"] - if { $ee != "" } { - return true - } - - set ee [xget_value $hw_proc_handle "PARAMETER" "C_ILL_OPCODE_EXCEPTION"] - if { $ee != "" } { - return true - } - - set ee [xget_value $hw_proc_handle "PARAMETER" "C_IOPB_BUS_EXCEPTION"] - if { $ee != "" } { - return true - } - - set ee [xget_value $hw_proc_handle "PARAMETER" "C_DOPB_BUS_EXCEPTION"] - if { $ee != "" } { - return true - } - - set ee [xget_value $hw_proc_handle "PARAMETER" "C_DIV_BY_ZERO_EXCEPTION"] - if { $ee != "" } { - return true - } - - set ee [xget_value $hw_proc_handle "PARAMETER" "C_DIV_ZERO_EXCEPTION"] - if { $ee != "" } { - return true - } - - set ee [xget_value $hw_proc_handle "PARAMETER" "C_FPU_EXCEPTION"] - if { $ee != "" } { - return true - } - - set ee [xget_value $hw_proc_handle "PARAMETER" "C_USE_MMU"] - if { $ee != "" && $ee != 0 } { - return true - } - - return false -} - -# -------------------------------------- -# Return true if this MB has -# FPU exception handling support -# -------------------------------------- -proc mb_has_fpu_exceptions { hw_proc_handle } { - - # Check if the following parameters exist on this MicroBlaze's MPD - set ee [xget_value $hw_proc_handle "PARAMETER" "C_FPU_EXCEPTION"] - if { $ee != "" } { - return true - } - - return false -} - -# -------------------------------------- -# Return true if this MB has PVR support -# -------------------------------------- -proc mb_has_pvr { hw_proc_handle } { - - # Check if the following parameters exist on this MicroBlaze's MPD - set pvr [xget_value $hw_proc_handle "PARAMETER" "C_PVR"] - if { $pvr != "" } { - return true - } - - return false -} - -# -------------------------------------- -# Return true if MB ver 'procver' has -# support for handling exceptions in -# delay slots -# -------------------------------------- -proc mb_can_handle_exceptions_in_delay_slots { procver } { - - if { [string compare -nocase $procver "5.00.a"] >= 0 } { - return true - } else { - return false - } -} - -# -------------------------------------------------------------------------- -# Gets all the handles that are memory controller cores. -# -------------------------------------------------------------------------- -proc xget_memory_controller_handles { mhs } { - set ret_list "" - - # Gets all MhsInsts in the system - set mhsinsts [xget_hw_ipinst_handle $mhs "*"] - - # Loop thru each MhsInst and determine if have "ADDR_TYPE = MEMORY" in - # the parameters. - foreach mhsinst $mhsinsts { - # Gets all parameters of the component - set params [xget_hw_parameter_handle $mhsinst "*"] - - # Loop thru each param and find tag "ADDR_TYPE = MEMORY" - foreach param $params { - if {$param == 0} { - continue - } elseif {$param == ""} { - continue - } - set addrTypeValue [ xget_hw_subproperty_value $param "ADDR_TYPE" ] - - # Found tag! Add MhsInst to list and break to go to next MhsInst - if {[string compare -nocase $addrTypeValue "MEMORY"] == 0} { - lappend ret_list $mhsinst - break - } - } - } - - return $ret_list -} diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/CreatingTheDirectoryStructure.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/CreatingTheDirectoryStructure.txt deleted file mode 100644 index df40ad2e1..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/CreatingTheDirectoryStructure.txt +++ /dev/null @@ -1,4 +0,0 @@ -The necessary files are copied to this BSP directory structure by executing -the CreateProjectDirectoryStructure.bat batch file located in the -FreeRTOS\\Demo\MicroBlaze_Spartan-6_EthernetLite\SDKProjects\RTOSDemoSource -folder. \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/License/license.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/License/license.txt deleted file mode 100644 index e29669138..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/License/license.txt +++ /dev/null @@ -1,435 +0,0 @@ -The FreeRTOS.org source code is licensed by the modified GNU General Public -License (GPL) text provided below. The FreeRTOS download also includes -demo application source code, some of which is provided by third parties -AND IS LICENSED SEPARATELY FROM FREERTOS.ORG. - -For the avoidance of any doubt refer to the comment included at the top -of each source and header file for license and copyright information. - -This is a list of files for which Real Time Engineers Ltd are not the -copyright owner and are NOT COVERED BY THE GPL. - - -1) Various header files provided by silicon manufacturers and tool vendors - that define processor specific memory addresses and utility macros. - Permission has been granted by the various copyright holders for these - files to be included in the FreeRTOS download. Users must ensure license - conditions are adhered to for any use other than compilation of the - FreeRTOS demo applications. - -2) The uIP TCP/IP stack the copyright of which is held by Adam Dunkels. - Users must ensure the open source license conditions stated at the top - of each uIP source file is understood and adhered to. - -3) The lwIP TCP/IP stack the copyright of which is held by the Swedish - Institute of Computer Science. Users must ensure the open source license - conditions stated at the top of each lwIP source file is understood and - adhered to. - -4) Various peripheral driver source files and binaries provided by silicon - manufacturers and tool vendors. Permission has been granted by the - various copyright holders for these files to be included in the FreeRTOS - download. Users must ensure license conditions are adhered to for any - use other than compilation of the FreeRTOS demo applications. - -5) The files contained within FreeRTOS\Demo\WizNET_DEMO_TERN_186\tern_code, - which are slightly modified versions of code provided by and copyright to - Tern Inc. - -Errors and omissions should be reported to Richard Barry, contact details for -whom can be obtained from http://www.FreeRTOS.org. - - - - - -The GPL license text follows. - -A special exception to the GPL is included to allow you to distribute a -combined work that includes FreeRTOS without being obliged to provide -the source code for any proprietary components. See the licensing section -of http://www.FreeRTOS.org for full details. The exception text is also -included at the bottom of this file. - --------------------------------------------------------------------- - - - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License** as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - ----------------------------------------------------------------------------- - -The FreeRTOS GPL Exception Text: - -Any FreeRTOS source code, whether modified or in it's original release form, -or whether in whole or in part, can only be distributed by you under the terms -of the GNU General Public License plus this exception. An independent module is -a module which is not derived from or based on FreeRTOS. - -Clause 1: - -Linking FreeRTOS statically or dynamically with other modules is making a -combined work based on FreeRTOS. Thus, the terms and conditions of the GNU -General Public License cover the whole combination. - -As a special exception, the copyright holder of FreeRTOS gives you permission -to link FreeRTOS with independent modules that communicate with FreeRTOS -solely through the FreeRTOS API interface, regardless of the license terms of -these independent modules, and to copy and distribute the resulting combined -work under terms of your choice, provided that - - + Every copy of the combined work is accompanied by a written statement that - details to the recipient the version of FreeRTOS used and an offer by yourself - to provide the FreeRTOS source code (including any modifications you may have - made) should the recipient request it. - - + The combined work is not itself an RTOS, scheduler, kernel or related product. - - + The independent modules add significant and primary functionality to FreeRTOS - and do not merely extend the existing functionality already present in FreeRTOS. - -Clause 2: - -FreeRTOS may not be used for any competitive or comparative purpose, including the -publication of any form of run time or compile time metric, without the express -permission of Real Time Engineers Ltd. (this is the norm within the industry and -is intended to ensure information accuracy). diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Makefile b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Makefile deleted file mode 100644 index 57884bf14..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Makefile +++ /dev/null @@ -1,77 +0,0 @@ -############################################################################## -# -# Copyright (c) 2010 Xilinx, Inc. All rights reserved. -# -# Xilinx, Inc. -# XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A -# COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS -# ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR -# STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION -# IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE -# FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. -# XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO -# THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO -# ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE -# FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY -# AND FITNESS FOR A PARTICULAR PURPOSE. -# -# Top level Makefile -# -# $Id: $ -# -############################################################################## - -# -# Processor architecture -# microblaze -# -ARCH = microblaze - -SYSTEMDIR = ../../.. - -TOPDIR = . - -ARCH_PREFIX = mb - -# -# gnu tools for Makefile -# -CC = $(ARCH_PREFIX)-gcc -AR = $(ARCH_PREFIX)-ar -CP = cp - -# -# Compiler, linker and other options. -# -CFLAGS = ${COMPILER_FLAGS} ${EXTRA_COMPILER_FLAGS} - -# -# System project directories. -# -LIBDIR = $(SYSTEMDIR)/lib -INCLUDEDIR = $(SYSTEMDIR)/include - -# Kernel library. -LIBFREERTOS = ${LIBDIR}/libfreertos.a - -INCLUDEFILES = ${TOPDIR}/*.h - -INCLUDES = -I$(INCLUDEDIR) \ - -I${TOPDIR} - -KERNEL_AR_OBJS = *.c *.S - -OUTS = *.o - -libs: $(KERNEL_AR_OBJS) - @echo "Compiling FreeRTOS" - @$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $^ - @$(ARCHIVER) -r ${LIBFREERTOS} ${OUTS} - make clean - -.PHONY: include -include: - ${CP} ${INCLUDEFILES} ${INCLUDEDIR} - -clean: - rm -rf ${OUTS} diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/portable/readme.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/portable/readme.txt deleted file mode 100644 index a20d687e0..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/portable/readme.txt +++ /dev/null @@ -1,19 +0,0 @@ -Each real time kernel port consists of three files that contain the core kernel -components and are common to every port, and one or more files that are -specific to a particular microcontroller and/or compiler. - - -+ The FreeRTOS/Source/Portable/MemMang directory contains the three sample -memory allocators as described on the http://www.FreeRTOS.org WEB site. - -+ The other directories each contain files specific to a particular -microcontroller or compiler. - - - -For example, if you are interested in the GCC port for the ATMega323 -microcontroller then the port specific files are contained in -FreeRTOS/Source/Portable/GCC/ATMega323 directory. If this is the only -port you are interested in then all the other directories can be -ignored. - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/readme.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/readme.txt deleted file mode 100644 index 81518ecb4..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/Source/readme.txt +++ /dev/null @@ -1,17 +0,0 @@ -Each real time kernel port consists of three files that contain the core kernel -components and are common to every port, and one or more files that are -specific to a particular microcontroller and or compiler. - -+ The FreeRTOS/Source directory contains the three files that are common to -every port - list.c, queue.c and tasks.c. The kernel is contained within these -three files. croutine.c implements the optional co-routine functionality - which -is normally only used on very memory limited systems. - -+ The FreeRTOS/Source/Portable directory contains the files that are specific to -a particular microcontroller and or compiler. - -+ The FreeRTOS/Source/include directory contains the real time kernel header -files. - -See the readme file in the FreeRTOS/Source/Portable directory for more -information. \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/readme.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/readme.txt deleted file mode 100644 index 49eecd6cd..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/bsp/freertos_v2_00_a/src/readme.txt +++ /dev/null @@ -1,19 +0,0 @@ -The download includes the kernel source code, and a demo application for EVERY -RTOS port. See http://www.freertos.org/a00017.html for full details of the -directory structure and information on locating the files you require. - -The easiest way to use FreeRTOS is start start with one of the demo application -projects. Once this is running the project can be modified to include your own -source files. This way the correct files and compiler options will be -automatically included in your application. - -+ The Source directory contains the real time kernel source files for every -port. The kernel itself is only 3 files. - -+ The Demo directory contains the demo application source files for every -port. - -+ The TraceCon directory contains the trace visualisation exe file. - -See the readme files in the respective directories for further information. - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.mss b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.mss deleted file mode 100644 index 230dee3c4..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.mss +++ /dev/null @@ -1,9 +0,0 @@ - - PARAMETER VERSION = 2.2.0 - - -BEGIN OS - PARAMETER OS_NAME = freertos - PARAMETER STDIN = * - PARAMETER STDOUT = * -END diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.tcl b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.tcl deleted file mode 100644 index 7845d73a8..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/data/FreeRTOS_Hello_World.tcl +++ /dev/null @@ -1,127 +0,0 @@ -proc swapp_get_name {} { - return "FreeRTOS Hello World"; -} - -proc swapp_get_description {} { - return "Let's say 'Hello World' in FreeRTOS."; -} - -proc get_os {} { - set oslist [xget_sw_modules "type" "os"]; - set os [lindex $oslist 0]; - - if { $os == "" } { - error "No Operating System specified in the Board Support Package."; - } - - return $os; -} - -proc get_stdout {} { - set os [get_os]; - set stdout [xget_sw_module_parameter $os "STDOUT"]; - return $stdout; -} - -proc check_stdout_hw {} { - set uartlites [xget_ips "type" "uartlite"]; - set uart16550s [xget_ips "type" "uart16550"]; - if { ([llength $uartlites] == 0) && ([llength $uart16550s] == 0) } { - # Check for MDM-Uart peripheral. The MDM would be listed as a peripheral - # only if it has a UART interface. So no further check is required - set mdmlist [xget_ips "type" "mdm"] - if { [llength $mdmlist] == 0 } { - error "This application requires a Uart IP in the hardware." - } - } -} - -proc check_stdout_sw {} { - set stdout [get_stdout]; - if { $stdout == "none" } { - error "The STDOUT parameter is not set on the OS. Hello World requires stdout to be set." - } -} - -proc get_mem_size { memlist } { - return [lindex $memlist 4]; -} - -proc require_memory {memsize} { - set imemlist [xget_memory_ranges "access_type" "I"]; - set idmemlist [xget_memory_ranges "access_type" "ID"]; - set dmemlist [xget_memory_ranges "access_type" "D"]; - - set memlist [concat $imemlist $idmemlist $dmemlist]; - - while { [llength $memlist] > 3 } { - set mem [lrange $memlist 0 4]; - set memlist [lreplace $memlist 0 4]; - - if { [get_mem_size $mem] >= $memsize } { - return 1; - } - } - - error "This application requires atleast $memsize bytes of memory."; -} - -proc swapp_is_supported_hw {} { - # check for uart peripheral - check_stdout_hw; - - # require about 1M of memory - require_memory "1000000"; - - return 1; -} - -proc swapp_is_supported_sw {} { - # check for stdout being set - check_stdout_sw; - - return 1; -} - -proc generate_stdout_config { fid } { - set stdout [get_stdout]; - - # if stdout is uartlite, we don't have to generate anything - set stdout_type [xget_ip_attribute "type" $stdout]; - - if { [regexp -nocase "uartlite" $stdout_type] || [string match -nocase "mdm" $stdout_type] } { - return; - } elseif { [regexp -nocase "uart16550" $stdout_type] } { - # mention that we have a 16550 - puts $fid "#define STDOUT_IS_16550"; - - # and note down its base address - set prefix "XPAR_"; - set postfix "_BASEADDR"; - set stdout_baseaddr_macro $prefix$stdout$postfix; - set stdout_baseaddr_macro [string toupper $stdout_baseaddr_macro]; - puts $fid "#define STDOUT_BASEADDR $stdout_baseaddr_macro"; - } -} - -# depending on the type of os (standalone|xilkernel), choose -# the correct source files -proc swapp_generate {} { - - # cleanup this file for writing - set fid [open "platform_config.h" "w+"]; - puts $fid "#ifndef __PLATFORM_CONFIG_H_"; - puts $fid "#define __PLATFORM_CONFIG_H_\n"; - - # if we have a uart16550 as stdout, then generate some config for that - generate_stdout_config $fid; - - puts $fid "#endif"; - close $fid; -} - -proc swapp_get_linker_constraints {} { - - # we need a 4k heap - return "stack 40k heap 40k"; -} diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/src/FreeRTOS-main.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/src/FreeRTOS-main.c deleted file mode 100644 index 2ce33b77a..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/KernelAwareBSPRepository/sw_apps/FreeRTOS_Hello_World/src/FreeRTOS-main.c +++ /dev/null @@ -1,398 +0,0 @@ -/* - FreeRTOS V7.0.1 - Copyright (C) 2011 Real Time Engineers Ltd. - - *************************************************************************** - See http://www.FreeRTOS.org for full information on FreeRTOS, including - an API reference, pdf API reference manuals, and FreeRTOS tutorial books. - - See http://www.freertos.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html - for comprehensive standalone FreeRTOS for MicroBlaze demos. - *************************************************************************** - - *************************************************************************** - * * - * FreeRTOS tutorial books are available in pdf and paperback. * - * Complete, revised, and edited pdf reference manuals are also * - * available. * - * * - * Purchasing FreeRTOS documentation will not only help you, by * - * ensuring you get running as quickly as possible and with an * - * in-depth knowledge of how to use FreeRTOS, it will also help * - * the FreeRTOS project to continue with its mission of providing * - * professional grade, cross platform, de facto standard solutions * - * for microcontrollers - completely free of charge! * - * * - * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - -/* - * FreeRTOS-main.c (this file) defines a very simple demo that creates two tasks, - * one queue, and one timer. - * - * The main() Function: - * main() creates one software timer, one queue, and two tasks. It then starts - * the scheduler. - * - * The Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, increments the ulRecieved variable. - * The 'block time' parameter passed to the queue receive function specifies - * that the task should be held in the Blocked state indefinitely to wait for - * data to be available on the queue. The queue receive task will only leave - * the Blocked state when the queue send task writes to the queue. As the queue - * send task writes to the queue every 200 milliseconds, the queue receive task - * leaves the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The Software Timer: - * The software timer is configured to be an "auto reset" timer. Its callback - * function simply increments the ulCallback variable each time it executes. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* BSP includes. */ -#include "xtmrctr.h" - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_RATE_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_RATE_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added because it has the higher priority, meaning -the send task should always find the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* A block time of 0 simply means, "don't block". */ -#define mainDONT_BLOCK ( portTickType ) 0 - -/* The following constants describe the timer instance used in this application. -They are defined here such that a user can easily change all the needed parameters -in one place. */ -#define TIMER_DEVICE_ID XPAR_TMRCTR_0_DEVICE_ID -#define TIMER_FREQ_HZ XPAR_TMRCTR_0_CLOCK_FREQ_HZ -#define TIMER_INTR_ID XPAR_INTC_0_TMRCTR_0_VEC_ID - -/*-----------------------------------------------------------*/ - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but increment the - * ulCallback variable each time it executes. - */ -static void vSoftwareTimerCallback( xTimerHandle xTimer ); - -/*-----------------------------------------------------------*/ - -/* The queue used by the queue send and queue receive tasks. */ -static xQueueHandle xQueue = NULL; - -/* The LED software timer. This uses vSoftwareTimerCallback() as its callback -function. */ -static xTimerHandle xExampleSoftwareTimer = NULL; - -/*-----------------------------------------------------------*/ - -/* Structures that hold the state of the various peripherals used by this demo. -These are used by the Xilinx peripheral driver API functions. */ -static XTmrCtr xTimer0Instance; - -/* The variable that is incremented each time the receive task receives the -value 100. */ -static unsigned long ulReceived = 0UL; - -/* The variable that is incremented each time the software time callback function -executes. */ -static unsigned long ulCallback = 0UL; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /*************************************************************************** - See http://www.FreeRTOS.org for full information on FreeRTOS, including - an API reference, pdf API reference manuals, and FreeRTOS tutorial books. - - See http://www.freertos.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html - for comprehensive standalone FreeRTOS for MicroBlaze demos. - ***************************************************************************/ - - /* Create the queue used by the queue send and queue receive tasks as - described in the comments at the top of this file. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Sanity check that the queue was created. */ - configASSERT( xQueue ); - - /* Start the two tasks as described in the comments at the top of this - file. */ - xTaskCreate( prvQueueReceiveTask, ( signed char * ) "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Create the software timer */ - xExampleSoftwareTimer = xTimerCreate( ( const signed char * ) "SoftwareTimer", /* A text name, purely to help debugging. */ - ( 5000 / portTICK_RATE_MS ), /* The timer period, in this case 5000ms (5s). */ - pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - vSoftwareTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Start the software timer. */ - xTimerStart( xExampleSoftwareTimer, mainDONT_BLOCK ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* The callback is executed when the software timer expires. */ -static void vSoftwareTimerCallback( xTimerHandle xTimer ) -{ - /* Just increment the ulCallbac variable. */ - ulCallback++; -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -portTickType xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, increment the ulReceived variable. */ - if( ulReceivedValue == 100UL ) - { - ulReceived++; - } - } -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* vApplicationMallocFailedHook() will only be called if - configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - function that will get called if a call to pvPortMalloc() fails. - pvPortMalloc() is called internally by the kernel whenever a task, queue or - semaphore is created. It is also called by various parts of the demo - application. If heap_1.c or heap_2.c are used, then the size of the heap - available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in - FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used - to query the size of free heap space that remains (although it does not - provide information on how the remaining heap might be fragmented). */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* vApplicationStackOverflowHook() will only be called if - configCHECK_FOR_STACK_OVERFLOW is set to either 1 or 2. The handle and name - of the offending task will be passed into the hook function via its - parameters. However, when a stack has overflowed, it is possible that the - parameters will have been corrupted, in which case the pxCurrentTCB variable - can be inspected directly. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ - /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set - to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle - task. It is essential that code added to this hook function never attempts - to block in any way (for example, call xQueueReceive() with a block time - specified, or call vTaskDelay()). If the application makes use of the - vTaskDelete() API function (as this demo application does) then it is also - important that vApplicationIdleHook() is permitted to return to its calling - function, because it is the responsibility of the idle task to clean up - memory allocated by the kernel to any task that has since been deleted. */ -} -/*-----------------------------------------------------------*/ - -void vApplicationTickHook( void ) -{ - /* vApplicationTickHook() will only be called if configUSE_TICK_HOOK is set - to 1 in FreeRTOSConfig.h. It executes from an interrupt context so must - not use any FreeRTOS API functions that do not end in ...FromISR(). - - This simple blinky demo does not use the tick hook, but a tick hook is - required to be defined as the blinky and full demos share a - FreeRTOSConfig.h header file. */ -} -/*-----------------------------------------------------------*/ - -/* This is an application defined callback function used to install the tick -interrupt handler. It is provided as an application callback because the kernel -will run on lots of different MicroBlaze and FPGA configurations - there could -be multiple timer instances in the hardware platform and the users can chose to -use any one of them. This example uses Timer 0. If that is available in your -hardware platform then this example callback implementation should not require -modification. The definitions for the timer instance used are at the top of this -file so that users can change them at one place based on the timer instance they -use. The name of the interrupt handler that should be installed is vPortTickISR(), -which the function below declares as an extern. */ -void vApplicationSetupTimerInterrupt( void ) -{ -portBASE_TYPE xStatus; -const unsigned char ucTimerCounterNumber = ( unsigned char ) 0U; -const unsigned long ulCounterValue = ( ( TIMER_FREQ_HZ / configTICK_RATE_HZ ) - 1UL ); -extern void vPortTickISR( void *pvUnused ); - - /* Initialise the timer/counter. */ - xStatus = XTmrCtr_Initialize( &xTimer0Instance, TIMER_DEVICE_ID ); - - if( xStatus == XST_SUCCESS ) - { - /* Install the tick interrupt handler as the timer ISR. - *NOTE* The xPortInstallInterruptHandler() API function must be used for - this purpose. */ - xStatus = xPortInstallInterruptHandler( TIMER_INTR_ID, vPortTickISR, NULL ); - } - - if( xStatus == pdPASS ) - { - /* Enable the timer interrupt in the interrupt controller. - *NOTE* The vPortEnableInterrupt() API function must be used for this - purpose. */ - vPortEnableInterrupt( TIMER_INTR_ID ); - - /* Configure the timer interrupt handler. */ - XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vPortTickISR, NULL ); - - /* Set the correct period for the timer. */ - XTmrCtr_SetResetValue( &xTimer0Instance, ucTimerCounterNumber, ulCounterValue ); - - /* Enable the interrupts. Auto-reload mode is used to generate a - periodic tick. Note that interrupts are disabled when this function is - called, so interrupts will not start to be processed until the first - task has started to run. */ - XTmrCtr_SetOptions( &xTimer0Instance, ucTimerCounterNumber, ( XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION ) ); - - /* Start the timer. */ - XTmrCtr_Start( &xTimer0Instance, ucTimerCounterNumber ); - } - - /* Sanity check that the function executed as expected. */ - configASSERT( ( xStatus == pdPASS ) ); -} -/*-----------------------------------------------------------*/ - -/* This is an application defined callback function used to clear whichever -interrupt was installed by the the vApplicationSetupTimerInterrupt() callback -function - in this case the interrupt generated by the AXI timer. It is -provided as an application callback because the kernel will run on lots of -different MicroBlaze and FPGA configurations - not all of which will have the -same timer peripherals defined or available. This example uses the AXI Timer 0. -If that is available on your hardware platform then this example callback -implementation should not require modification provided the example definition -of vApplicationSetupTimerInterrupt() is also not modified. */ -void vApplicationClearTimerInterrupt( void ) -{ -unsigned long ulCSR; - - /* Clear the timer interrupt */ - ulCSR = XTmrCtr_GetControlStatusReg( XPAR_TMRCTR_0_BASEADDR, 0 ); - XTmrCtr_SetControlStatusReg( XPAR_TMRCTR_0_BASEADDR, 0, ulCSR ); -} -/*-----------------------------------------------------------*/ - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system.bit b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system.bit deleted file mode 100644 index e382363d7ff1bab71dd2f55f4e710ef49c4a07b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1484497 zcmeFaZ;T|#btm>RD|0q$ILpowhCUgl%t(SV=O{|-<&yN0ZgL`5qCtNkJhIg=u<+f^ z_)c>YAbZc0h~oiTO-xp`QLPWBDj8T{brP5*NC&!g@bUzGlEj@XHV7F8f!*_&Sm8c+ zMe_g=w+E}O)h^}baLd2ni_EO7Ki$)_%RhIAeN`EMUc88S@gg!ZUPNT1^mk7DPb9b@ zKk|$J@E3pSXaD=3_#ghx-~G?_fAMEO^I!bb$9F&XpVuJ&oxJ@czxWHE`_PAf>E_@2 zdmnn_L-KdzZ6Dly=%EknKJtMNJ|cft`VT$wu@8RmV;_E4epdd2fAUL64}Ccb-T%D%b$M=gF1L-`>-X^Oz5nf@+sW+@Wg;I80G`oACkvH+O+?z`y%C&9Jr^0xo#f1&S9 zLL!pl`T;_Lyu%-0{@=B%f9JcF()}i6>Ik$Oca2g^gQMNJ;jF71{>4AGc6$f z?uzRT$lL{QAkte=?pp$79fNk`u2DZwE4|O$M-9Dg9BCK7BKFP0{kDcTpW~Jke(=5b!4|H*Pbh~Wl=Qw&nQhI+ZpD5V zk^e3{alY3=_`$dFb5!W}S_tQ0;rVmWyhZXomB86e^`Y-+-c90{B-o;BG@<|Y*gbKA zNAU)%~bidDtXv@&$`^nb`rh=|BSD7| zax_|XM!I%vMetX^0HA3}&f|h8*mm30^bCqS_f?9%;H;4oXj$kT5(-F7sw ziA0-$fdS6p0yHvceBQoa)1DTgvfv=BvR3B_hY*HBRJefzu5bZbODk}8fm>MiQ9Kn{ z=C34@t*B{94N=F=5ygo+5OJlHbA${6BL%90Arcl6M!m=eF+vP3fYrpkdyDByl7QN1 z#VU0zMW(V26)LA2%vSDZ>3`1l)lClRnwu1rNEx@SRF-R4O zQ3)9tnF&b-6Wfh2_FgHY%h78?`9uI_rJ_9d+Ol63X1jX~w{v23avgLm3tf9~cR&^nzYaQ?eWl z(1osF#%LAbClubYsD;Q3x78?;U^F;IeuY3l;?!C-5=4t7t%G0z;SQV_S0<&Kqcq#W zNE)PRH3<>FN}~c2G@#6+qVR>i^;m-7FiK|TAV?90e^4Q46WCINlK3Q@Aesb|qDm#~ zWs#i+oAe%Ir$Lb(gs5gQ>1a?*(Flz3S@hu!5c5ESX&lLTlJ*B+)rN+3w*kz9mz89K zwgSf_oTQZ)i6orQH|T4GOYk_FO)0#A9A<9V@AuI*iv+hrj8EIjC?`Fscw566e7 zPgK>`Y9LpW zE?%TaxLiyQXnWsc0S2D>t9PC36u`q7BNOWt@Yh8_wYWob!Xc%kIKO)s}PQz`Z z)1>^E97;X~~$0w@ie2IiBlx@l2k*8FU&_*26M`*qzSc$71MKfpv zQYK~B(Fw4@fYsB$hz=d6^0|pW7+=XpSwbvF!azp~bO9WV4TgzS$Vk9oM3x{yqp*sn zL2Yk{kqfnIN*m)TO(;V818qJHX@?h0$ESu+sCz@`7cMwxNZ0M&q;Js{N0OM(lqQi; zZw&R!8az+)KxRo~C;ie|_@o!wo@T{NR!U{H$gwg{wN`&cG#bE#D3OVx4v*_RBw?5* zsSTMZhSe6jv=xi-eqQB;6m|mtI71*td-ypFW%Oyky8lKiQ;d>9XK+;`N)RJu&P$vM zQ~?}_3@D1aGJI`nGhlgV8W}WjW8CC8hF*~Yy#|-7FL2ucVwuLhw8N!SUE#>lHWUIz ztSC83pJQ&buoxS8-Iw zHdhRb%tX{ZjP=bTu5YY5rjO%IW?6)$S71yz=Dh$YXJHnG76rA@7(W?dP%q+up(18* zd04AoE7ZfSlreaLCTQakVvS4@+PH2Dwu#!YE4m#ngR6$fDF*ELn=4m*Sce9+yz;L@%(lTNDs-!AxRTUAUQZq~^v&k$BVd1tU|KSyl8J?t#D^xB)prhSbqy+1zKC;ElyBUpq>QhKTt*gJ`Poys=)wVI5?TwAkcm{=}UnBa8w~Z8(1;ISr*%~ zGtwi5nvK!;5LqTH4@xsdGYTeQk>|XJ01c7%(R7?2fy#_@`;&ayhe&!ZgWif}H=2pT zoJ2b8O;9cQU@#DaJ8~SGveFbVztn+LEGkRH^ak-TL4VRq;#u#|VU{Sd>D*JU-M&C3 zm@&-d0CR@DfpL9gsFdNn$iP|>r(g~ZGR%w}#I9$Dvtd?<^He_3+O)>xXvL|URw(cw zDW>B*i+k~SR?IN}Vo}=FmQcr=R#6#Y@+n{ijDXA-V5E;cP!&lKL7_&c6=Y~&7LSEF z3Riaf!a5;Z0scYN%V47g%cCPj{Hmc`Q z69UKcZ6w`0`T>3 z@zmny8NT?=ttUV9p;te2a{c5w{o8>GPxtysXyVs_`^`&}tr3pD>~$pSL#J{;ZUBqF zde>#r?V9`H;20bbPUAoWf1m~hO{uf|WQ2azo9P1cFMj^T&p-8)mjS~s?1a6=-qKH8 z7c>O%SdUb^PEPjrj{gLRMGt_%+D21c{D+IDcm85WYk(47=imcReBcS{@yx~1*x@~Y zpBx;2<}?57pOFK^-{8P`ojZWG9@N_U1J&P5LwnuDmDl2dSFJsgA3+M#-q~&$?-J}K z+>nn|aa#5My!WxMKJe?bANgwkw=4OF@}E{px!cmFtxE;9c`3 z!lQ2!ycpQ5HUTyAU4&#s|J%%Oa~^@u$?r0(CTZ)`N3chhIxHX_bMSznULCl_vUM9_ zP=(9jYM^W!r`ix};YDlF7l3TS4ip)W`qCR?2##9;ugfS7#-wq0n}f6U(H95)q_5Ly zB2?brc-8J{O=A(K0b4spE2ZGw2#rF+D4p#v@wx^ASqwteJPDQ=D1O~A4IRq|T3=cY zZ#5<8wT#j1CZ>B8wl~<8W=&=-zI8NZGOTG2nYRoqjjoNs(#*k+^FI&q7dq>kPRS&h4F$E0K?n9(Sp$ds7jn#6+p z3^Hl}G*QxU)F5j+57}-s1&@L3cwZXtd&_)F0&hv+EeX6Ofwv^^@00}ixHEdu^n(>! zJ1hdRrK29DnRY}~F}%j=Q`s2Bym7-Js>6>!la~arartMsH)Hr~SPoK%TjHDW^V$xC z%@_bI*a&{EDm7z@yyVJ7GXO%Mhh{vAZB;;2HCC+@3nmUja9j$uwrk6_Q87K2;Nq67 zW`K)f=e#b9A$>E@AzekpHn5vWBL+xbTYyq+AsJ=rc9zq~5P2DL#6}X1fun3Vi!w2l zv2~hNS(M;=+)53?87ZS!D6Qv@Ssd=QOB_k7n)RkIn%}CyENv+U7S|ui2*u>^JCMkX z$WSm1GP312K!V=W00U=Jg%JkVIZ=o?LR@Fma}NW$i6cqSvvLs4!daT76IV{Awkir& zI*GAPAQS+WT80VgH*@sYw}gWO9H2T43(|#UWp}ZwZtx6AOK4CaOZPOIMY9q1i%J{@ z*vrM%SXL#pHj>H!j3lfNX-BJ;x5GvwRe`(lx`xLzwnGTCL9)moGMGJwJF6Uq%Vp%E za*Qo@C8UbEcZ`OE*rK-4EK{t6Xboe962E1wu+dtF@|g2T0TDZZnh%`x$BHs&4@T@^ z)RfS8G*&_s0u>9KjqTBOA7!{y&K8w7XxLjgG6uyaNrd*qW`vmmoG+n)nl z#6gj`*kqACn6aTMF?Q@41VRdtZ;0wssbGO*OI{@21}*6np*Aw5ku)-rIh1`yTcf;WJSCbw#NLVU!p%tAHLQVJ{D{ zB0Z5ZEuc)Y-LQ)M48ce;$qyhfDKp{;shyw(C+oL|4_q;uE~GA+Ou@ZF^u}=UCK}~>jOPU6EmTe_Mi3*ucu(dVm=kO3= zQ<-L_H=MZmK$i@`UV1Q$X5;}sWKw{Gxy-R1H5?8LEROWF}36fsw%!J;68}XyY;ovteNilS^eL!MJ}I@F~aQ zOzcF8(#|8e&j!kxjXamwWm(^(F6?3HAIrU%ikez1;3qPTV&~8x`qSK5+dGJD#Y7zq z?y#Ln28Y2-bZ7sPjQT&8Bf!_9v*2k@SqSeK3PZL57r!!(0O9li1Nz zxCjVDDU!4t^BH1MSq?umWoNvDMCX7J8Z>TdR74Qu0c&v{M+uO{$c%(LyCoc3n1Vgt zmI;pQPG_oi5EPLek4o04K~0FAhPj;-=g7Jxd7iH8Tpg6+hpy@Bq2z_P**1Yk%hzx? zAQAdK(B)%XuQ9NY`I2IZKBw#9hVBTk_c^XroSb0A1#23M#qYz-a8BHNx+{Nuvy!p9`{b1?PadD_DP@z|d2M9+M-hlGU&d~~^5_|IKo(d>QS|!j4F}5|ljP-@ z<7bY!{Ni)j-TfTk=;Y|WIKYC)3yjZo*JgbUYb;m3_KvFZrC(g#|Jwf7nzfkUeXQAy z_>(y*{&;cx_}_Y5_mpBGYVpcfJ{^NijRdyz>%6=W3js{vcD(SF8|C58tbTC|GnIMa&?ET@DvVic@EH7Z*m~JA6x9~ zGiKdG_`KHr#Nw_YST$)FG1jCeh10TKiEn0f87YAo(@76tWJi38H4rzBH)XRQ&pO%q ztePa3?06TcmpB8mc1+Yn>DXn*eYSI1Dy0hyEQhNxnW@8%S}wMT=@n_XH&k|>y7Cy^ zU*?^ZYM1Q>+u9h0piZm`y8sqL;7CdTsO+0D`&{sv7(V6bQAOx z8Sl1GjH%g(iYUU~S4aW-*${y8S^OF>jYERgbuI^Q78PTdn8;K}Cz8NObYOwS`<>|w zJ`|btlgvQNM~lTZKt`5QM&+OgxD%2I6XILv@JX*;JtoDeU|9|T-UqY^W(KrXK;L5m zIbLxy5?3J!#wv3$C2>abig%0Wo7KWpK*u%DHv<;6tPG8{E|^r%Nssj(fJNWI1UA4O z3UD+?hZ@W2UIA9tSunt|K3;)q86P9{d=5YMd!h{?U2YUd4OBrg$6f`z=ZOwW`9s** zY5RQ1+F39~AkuLyO&A;8dM?VxVVFi794qRItOj}{E`513q_Dnd!X3M&mXdhYZMwmzI8@v#lLqJX&U7aFQ@Q^o- z);4Idw)L$$(h=H@nI}~fFfGzzmSkl#C=UxWq=;BU$r#o&txD_<0{|VA<5IhAcH!(K z(4P2A61v zsDlB!+E{NtI6Q>`8=L@z)!tbQlmu<@3L zg-)Z$`q6=ZJ}_M8UA&yV*~IepHr$fpcA-0Kiw1LD_u}6Eq2f`mD`WGm>de=b4n3oW z!)|nFX(;LxF3Rmyof+PFllrDT>3?SNnY~vpG#W4BKL6s2J3HZpJGZ|5t;OPQJMvxZ zo!orliL1NZvG?Wh%Mf-~civ3-{Fu)ie@0%ta0wcLhZkRb+w*jN=~tM;k^=z;*RLxF z(&6CsI@%kt*p|+&pf{50eZ?^ehlI!PUA%W^@e9AuMEy44?gg)RboGs!dyAbXp4h#* zxG8e`_VF?4U%hz~J_4q<(0{){c<YeKFdOhFO zZQitf1o+Yusd=Gl+gS%IvN7F>BJV7|gI%&8-}^Xpz@3kM%^-osPZ#}r7+Iy-+(t%dsRuC-*kL*1HJs2GLx0GM`+ACjc2={kn z@6x4h9K7(tpWH78O`ywS9dbyOkFwe&=jM(Cfty>@Tn>_ym(XEY?cN_~v{= zxoWRdu7;B zpA~z^^Fe-3GP^-R%;`CBQvtWZ^4(QlRXy|)ziY8h4UfbQ_*uLT0#4?j&#T%zJ;&8} zjW59%$2Oi)@6^WE+8B2rWCe;9AN7?{i@9GG@P@5zCB-ogXEq20WKu9`OP}dghJ%F2 zucOqtKq+AqJRj6NyHRGI=6ojZjB16lxm8w>UC-GAvJDyfs7q;eqj%kg<1hs?@it7j znwZP6oVKBsC#jMC1fs^PX2{6kCwXW`5;`0J zKmnmvh|MHGB*@I=AXy(_TcXZ}m64ZjJ=O#v0ksWcyRuCphYQE%AaiXo$W}@*^cl?i zY7BbL3nL7+Sm-VkttW97fn=~^xdAI%mZLy%#NP|R7|uivO0nydnT`lo$E=xWVT6KW z=!hA}ip6nl>=o)SemN(>AFK+=I#-!j1P<_*$Zw#cZ&G!@vOP`N~ghKYg_SoGLr z1{Tqwt4hrFBYY$*NeQP0h`~_2u1JG`HAq418)~^0a*DS^rFfC3R_(+=PsGKuAv0tK z2*CmG0LXzHk)nYu)zS%Vs8;OCNx$O$I+P7New_vyn3M`PgZBdDo8=H9ZraL76h?)B zlSnCH6yQi@&|(5$d3o@+v~Sex!T?5pbvWK`WRX!U1)oYC9c6@{K}3h6e$hLCK(q<8 zYYTXL(Fx`36K6Z%WpEL=BJO`oqrtq<0aVJUZZOO6B=2F##F?pc;N2l>%N`2rE?vMD zM2CH|083*9Y``*{t8NI_f>UzlVb#SE|Ffu~1&WKZ4P@W8Q_yb&y z%Q`od5{sil*LNe37O{rwrUOpD6oWZe!ZZbq)-|Gfwa;On@7S&0_@Ki}2vuprYK-n| zV$r2(g$9wT&{AUaDb?NzON)FLpelvhvo4yTeQ*U%4zVCU463OKBpPA2YBzIrBZUAL ztEOzus_GCS`lK2sc|I}YY7Ctm%{5|^1#5^|HZ20vG=pmHBbrWpb=o2J^@ah?x{4y@ zAVF(d5?S4YTZK61EGohH8sOxbVJ;>I+KEB4Pt76gmEOK_v=mC*GFcze?}Can;n_Me zbq1smGb#mJiw8`w28Uwg;t+a(tHCz5Yk1(x&C6?hqCZ6u}{O z&RXJpYS!ci?;`W~Xf$W10V_tm+BZin9=d~-AbP66SQZ@{OZrh^aWks`1L19rdO&?B z2g%&z6}y!Zi~bfiAyU(li2tI89U6*SH9T>J!t_pE`TW$Qx3P*R@~KA!4(@NgUGI?f zHjui?cU{Kyj@j$=svjtGzaDtohh(J0MOy)J=Wtxai9Pe7JX&M7TR3dmbVK~kSdYP( zqB!n}{mnMOc_ptE&lb;K#K9)p!ioF&r=Gs~^v#=k^2{pDzKS#eGKehY-oopE)^lhaCKT!ighz4|1!2QT)II`LPX$o=W{HHn(S!FB=`Qe)|E0mq2kqQ`TvgMOvq0H@!s z06F+^z_XX1#SY``fEu`oMbwSJ>t9FS4?_4n@8&@~Hn4IQKPV+_tdPxMe*`;bxl@)q zX}O~IA^3G=4L0G1JW{a_xPkL;bhS<%fUgU>)`r!(-8x1$Ox=yN=~?{r;-_E6in9+; zbH!NTl$cdm>|s^xJ6NLwaE~eNZ^=KQRRdz+zr7WDlEq&vg+mTr`K#?593OxAPr$+2 zEzk3C0Fs+7zWD5spwZfWJwXR;>+q2-TFJp7~x@bC4ybN|ucslb| za9!-Xb}q}8?kr`}4f{Wye+~B}f%k3$JYnkO%E^&LgQYsm);29yU*3H$Sy+;JFh~|asS~`Z&KTRE zpcMzXKoV4-0taS5nNc#Zp-sW|>!hd$bf`WpKHCYlzUV$3n1%=LLZgqR%#4qZZ2$qh zOwn*4%OM&>;Ip#ykY}SDp*||cHo)~)`*&c@fVlLTwj>pb$9V)xj1|k3Hn8CW3qAlP zei&`!U|5;W@Ny{S1juNB7A&ht*S(<7>5ExSX4S50A1v26SvfKIDPfne{dQI#ijk~$ zAcP~`Ghlm51LtituR*m*^bDO8eU1S-x$xk?LtA|%n}qj4)i`(Ao3voZ5GOiW1w>ECP|Z!=N4n8C+!6z%zj>izt@JNfyAa0g4G-4W_ZZ0GDEH z$ZJxNEl+ID+4M(^KaqHnTM6v|+t(lj54p)$dOW=$72X5bunDt?n&>%1jo#LI-*#s|}Mrb5ZNlJ=<0!Xv6EaM7T;-Pd^Qyck` z5_N9~L*saq@;cq5YsOOxt3sNBTTX41Z*>rSvdg< zeEIggVB^fk9%;9#+(|HD&JAki-L7s-CGjUH)?*0ry zFfxrB8QhbP{D5oHx(j)wE#%`KrjpS~<0j){%Hg{}c>9zBNtvh%l?%8AgHlSTC2$}k zsf9@d?R!FiO7wNGN{Zta8pJq2i>S(3e>wmMRx1o$PC1hivl$1biXtU0n6Ir$dfMn3 za)$9Kujy)KQ)h1AQx|KExYm)u1a{2k7o^@Hdt2@6Bv+leC`KzjCA24Bm6|OYq&?y?K>i!66~3a4IhL6;_o-d^5%h2gh>js?63>%7*E8$ooF}6)RtWPOjl4?5{kHj`wfs+pE;>y{<0uv+_Y< z3SQ5LHgDcu{TBNXP+$ROjNCmp#dP*cQLrg2O$%kExL*2hRbHkDq()&Z0SoyNR{&lip8-DHG5v{W#~ilkd}i+DK;xCp3xauz(@i-7-ynoF$!SMgaA=d4i7#9 zp9Ql^N??2_cFU%t2+am7W*CR$$Rx79xmd2rfUO=WagvIQ$R6D103%2U;4=xR+~^tr zmSpr-`h@gdPs+;bZzQEq+$53P34=pbMThgz_}C;O!Ea64Vtg zP8y{yf<{|O6kD_!yxOKba7l22g5VG>&=p7!lTQxL^8t>Q!7NOr#LB3~`~P5>^Ig#)&3EAv3I$O?W78WJ6`APFsUv7!g;y8=GE=4iMvVba*J4 zU+$A`aBFss87z-t-E(2g2#yXiNGG$}44ZIL;gvj8p=p{`E2ALDf?=Hw=~&2crglLu z{J{+RAL4KGG zjG$%JpY9oART)})BMytt0pRuKUhL4G9kBi<89wWDs41gqW~j2%rAg-CGKkCqPO~zh zUx{EuNrtBE{jNd69^ly+4st#0Cr9#q$J)RQfYQJZ@uH=xuQqbn4y_ToyK}_lcpuXq zrmlw!#>QHl;gs{R032%-kLx;SEpdKho-xJ>%pe+qA|Z0J579@B-%_k|F=QTpK)_l+ zT?Lp&^sI5JCCVll_{Ef$rWF`$y)JDKBYh9k>JTNH2dKwY26G|Q^oz=vcV1W6dF$gtr_^||n7umN=`sS*=7ZA3tSGP9f z5E?wbLPPCcarpAgZ8+dBVAZEd$#tK?1p(y{E8X;W=L0}`4&WI*)Q|P79_U{fGOGr^ zSp3tYf6Bv}j#6tJ6N1LPr~sa}S^vHGzkh6H<-2(H_kW+%=Z9?^_}C2x%e1y}Ak7D8 zYO?#~fafhyU#3j~kRSSSPSfIRUwg+pxURQ*vI`jj@QDk2?6ahkbpEWS1vCm`8u;ud zS5M~o=-x*`dpg{U1Fmhi=O2N~O%C?f=1xBQ$=#Lg_O@|geUE%4S1miN*rh|O=Gu9DLoUJ}G*N)(Tc~~w z9lCY{(E1kpiz~Wf`tr*sCx86TKYl0m2T6ilTs8UVb$Bc^t*ulqvb{gFmOwbJO{hGo`dcgW8`3Ww|JK6 ztaBii9NfKxub#@2`@Mba$Ip3MKgb$8f{EddNv8yr0T!VCO>5UHNrdvb4Q z=eg&&`rX8W{}NAaYW!XMI)EI2hZB6mrTDd9`@ogIc!?CdSMep6ec9jLy?V8Yk!GPB z{f3yv-`I=C(f(=Bp;DhGMpS2uZ z{Tsc%VLto5TTM*)8x;JP%r8w=`Y1Vyw zjX#&=HmLG-OaO%ONH+NzdW{3Nf5Jz2LevkNPS_dFWvQ$~t}*=y))SB*1ha$*oXgvh z>~sOQrK3M^-4Jz$Kx4&_)^>0$+J%*Oj~o|1e3ES_9pugfUCPfgLk*0gB~2?bjpBU7 z4HGLU&B^NXtr%d&`1(4&{k zkZxJ&_$Iv=CE-ROFCDIGP{Hp?fh6!_MU@icTE+$-R^n|Ds1 z&%vUDHSkrq3S0o}H*P=)8_&|lqRG-zyGUvxtG@wu|;^fVFd3OE8PZlLASOD zM+fQ{8YA93jUt?A8yo2vr*h0#jwr7M#ujA3((-<0R05VuOEJjU&__VL4AgYSxER&% z*398DxODJ{odW$zJt)m3o=sNd`^0O2xN9P8J05RKD1=xErLj*5(GeE>lY zq}56SYq6mpg*G|#sl-UxQDeeMz}Nc-aHUj*O6E=0>>DHlToxS=Cbwfi*tc z&`LBgT0?CF16S1eFsFfK@iv1Io;_h7tM%a&;{b3LO*t#Zxv>Utl3Gyqs#)W2?6E-F z{1Q{Q$`BZi(Knc0)zHyy^Mf0WsxZA?*@+k6kmp`73oPn&7C<}|=sG~1b~c-LFpbl} z0sU0HoiZBKM6%8Y$w#`BJi~`LkAOpxNcNF+F0hv zY*e@1PD*gL8g8TMs*NVp_?3Lke>;=;+xS7p7K-LHDYdUN?0MgPwj^5}&+Yuh6I%oB zfyDPE_ZA=Te_Z5W0UF|)CpS;%Ui|sqdm3D87dTt;n%6H|9302;=UB*H>PX$Nv)r#v z{@@Q@{g8YJx&13?Iat)^>K^~OY;cf6An~=|{oS)t?S}niYH<4v{--YPd*j9q=i~L1 zzX({zt^0fb`0AaTukPJl#lQLyuiFgoeE#zcdC!+Fs7?1DEf#--?v7_Ct;6wCPp#HM zS94t_Zv4IQ>VItsDEyd zDbKXhZwcTyO$%>maPU=|;^OU#w>S9H>}!i({^e!ZGmB^Bi+8?w=Q&IrrSJOUon^@R zU0CVX{)92k!+|{W{`W6arwr0}rSH0gh444Z!7?>=>8C+h2dqqzv-NHQl^p-;j4U?E z&cb9{0-fSaXw~+QU;k+Lh>jUZ^TQLYgFnTo55g$2n>Xw!5gK$Pu5pTOUDCm>x|L+q zA*`K=<6A1qX*6zdYI_ND$hDL;RV&|fgovY4FbvnFnmRJD96EcT8*gypcP?lJWEWoL`YG4CsNv)is4%93#;t#|alx8IYXZ{KZAMZsY zW4*-@UV>T5&N@hw^bWID67ngW7l4_xb1$qKVTV>Vjt`n922aX-WXI6rnR1z4j!%6<0`Zg4{&K4ng^Ur<5|$z zBuL_9E^!&yjAun7bFRg4Lam8aM`j&aTn_%#zMU`4S_ZE}gK@TY8JvHMW@k(l&RmY# zKJ3k0ADm9XYl!5j&0AC(r@YAO1|Sx4BO08jt!~|yPS-YYH4<@=Ip@yG%sB3$n59!^ zje(7-P6uvc@nvDo#;_GF8}c$yTVe&X995V^;R{WbuMUJqyw}&KE!udM-Y>#^2OuL< z*nB|u91Es_9LjuJOmeJ;lR_s{DB=KFj7Yr#Gkgz;i{=0>p*LYT3c!XotQvo7hw7?O z9@17dK4Py1rW0W*BxoT9=NjN(ci{?n4Gxv!d=Jy0 zyo~?=g2dp*5+#_un#84~CW+@*29MKfKE}QzW3eB8P@yM)GCe>I7({Z2unLY-pi{-6 z!7jmB;LiXD)t-H%gmc`hnKQkjFl7(#@|2c)FcRaiF9_2~7GGHdrq^>@a_0lcqBj{I zASKSFbXsbKxH7iecqoa4(CfWJb8s4rtjzmCk3sWchIfF1pc?o3L4t`z%LX8Ug#;4b zmn(n}z}tNDXtj9auIaw@>vWz4KO|V__H(`0{mQpA_O;r7t=8(dCxbDCOU-X=`Mk-I zEbu)dp4_?$T%TNErzj4<-Jy+9wfeXcP7HR8LxGl^i{+F1#g!wue5DirJso%J#Lbf& zZRG&!1y&8$K^Zuc11y2c#b@GcmnFaa?3KLeqyTYsAf-D6$2&V0-+lDk^zBv?h|a^~ zkKeuYETHkXHdx?FIEw6T3IUSx7|u^z&aXWC6k6D2{4ZSi=l{Hkc|j(PQ*F%qYP<6s zc=w51YdN@f?e3+^fR#w}G&wi6V&GAp$ibBY`twtZ{7SL^^X^(kbKcuS(>W*H`Mo>8_wvifkbe(TAju=pqw&3{mloeV`SB-z{0djV zU)XtJr+fzIVpErXX6yUV=?~Yr`TU{TF0NcWCj;`1;2i1R&c$NtsxW_SkOXT=CkK|Z-ZAQ@ zrBXJA?Oku2=d(-ns@tIgn%DOZ(BNChai{Y~$i%A6=gapFR(p~4eDsO7j=W!g=U&&S zyf6L5QC+Pm;c+{v6J8D9mK#&##qm%RYa3k`$AO%|FT!QJ0cF>->c;rG>R<{)9K+9x zc%StO4Gzl14`ExOm4qKL^B!-ZXkE3#A~!ONw}XN4F|dwjVyt=kH9!=pF2D70?kNk3 zb}Qs-SnK^vkXugaEpefi&{xwg>Gn*)y9UIc7S@m&pOAVZjF{=D@KBp*`ZYpBmqyjC z4nMrM%g{|1x$Q#cyH#y{UHrP+ED?UvrqbrN#L`7swiUV>be1nd3F~M}5qb3{Ikocj#<1B`9ew)tpbg+!VZHQ&7@_2yd?46&${FqmRmZq z%A`6h`#8MEJkW2n#ncFI8BfRMDi2j{vn@{|)-g(hBMd#XCGgT}y;=zD3pY(+pd{2$ zI@V+mnU41@=UWnZO9F36;4KNfC4qk%CEy>8%31BKHrV77ko!-uj-#eH{sKHsn+NJf zl>0_l#!#a+>F+QH4<6&-#AvRZR@ZNSx^|uvZ<^RnT*f~yn0oNXf^vXinQ>(6g#qH= zzE3bp@6AqBj$pO`h7`JD;+I#jYsrBH=Z6<~HwFVAAJWLAIf1H8Dktxr{~DJE>hNYu zhg3W6ZO(DeihlI6!)irB<1e;@ZlVG7M*1fb8|Vrqg2r%|VO|mRbFBO53J6Tmp>zq` z>JN@h=;XN>sFBCr+(4viB$a86v1Fa5wcQrsI->@>zKtukUj zUUKE-aRPK{(9MzAcn393p;egqNO8{oi*!(_Q9@+QTyk&*^^vd9%0 zQC}^BD?(C)i7_fjICDkNaJaB?V7*uz7FQ!9Bkb;l1whouih+FSs{zNAHqI4W7n}1^ zaYcWGce5m}cy6t!uqvWoGesepl2w|f%0f5x-9d(}lro6}7s){hI;RV2j%+lv8u1K+ zHB6{KnF)!g<_eplY%h{@0m(N#5?UcniE?6l4&`>7mN!_sQCT!mu-vm%1}Jd`W{Qvym>SA}=sy6(L%l)=mdFecwn0Y+!SD}$=Ug0I@2^!^?@kxjmKMzcwyC&e9aIbG# z;S6YY5mjA&G$tWuHAKt@D_V`ev7KvNSZszQ$~>My;Gvm2e7iIs%pEC^R7>ZymAEd**VVL*Ej5se*9JJ;@vg-hP+_O1JHWnMi5%5kQzr%aIWa2F+!;wG zI6MmkhQh&$R8LB{=TlH|MF$~3b+QCP_k6-;Bty#sdZQpI8y`ZjLK9SJWOG|p2BOVi zqgh&zR6>O|l!Gdr#MNLts~B&{kcpI#l%7t-X)j8<2!OXhDwL?Oa$F_Wds`C}<4H6d zd4z9BR=7$ev9ZZ~j*nfNB&sxgVrX;KaL(7{t3y0Tkc(s`HmoC(MA*5htzZ(85-p^* z;l#RgDa9dL(i%8%&V@A+osq$oV;SUS%u|_1^W2BHn!rIuSm6!9nQ<;fem!CwQ}5@! zc?9lA>zt3#*mZQ_oxTQc;E8zKBWaiSBM5aI&EtMCJwQ^i@C2WD zch-mfD96&aMGT90j0t-MHp`FTFenQf&e9e&o%(!G=ORwCZnal!PBnyaVln z%&JwoN8trMPK3s`$T|g7nC{-aUHcoGQ8xg4zH8tLQTlYd*a0l}2;RKegg16o9Ung} zPy6$kv9e+;J_Qgp8=6lT4;P~`KHapti-phaE+ld(Yi$ManMgSw2RNIziHU@xFbQnv z>h!uCkcb?t!;5Bt;@!xT6;c!Dd2HNdr52M9ZU z^wD1LQP#U)3Gg!Rz8H4`{#Zf6!qNq_hSp|faE~VJK3=3to_-xNmsZkE@U0jw3)OO6XWYk4|VY~>4OU_L4q;{-8}&_-Xu zjyaL*@&G=W;N!pxxY7H>r3Zh#>V2cOi{2xb1b(%@T#>}XwZ^ge+6+R_);0VJmK@pc zkL2RTqNu7SQr8Cd81Fmp9kneE2XHT*{4|#NPPpuSPl(uKt-~q@c+2{}IFQ$6@jvEx zwo>3=*efET(+pS zSoicUIY7HF3Z9d7e;n|g-#5d7=^5c~LoEzF@0sYY6wmKvSNIgbCVD&Vvy{3qv^Q%!-Y#kN{Mohv z=W4h;i|b5CtYR4RVyPK7im>f2DkYC{U^u?at6tfwJQd9bkT;663V!u!6-Qr1!$4D= z)3E|Me7d#HD4O?51^pm$EI(ela(F}-s#nacLNmo)Rk%Dr`zJUx4a`VgG`6)&Y^%fT zdP@?E1i5HCkx`1mI}I^vkBl=8E{9P9+rdb{jU@qBTzeQWLy9BRz_^Y?n=GCJNj||B zJSrp?xaE6nbp(t(E#~n2c5mwWXbq7uWQ}LsS)>^y26dB-3#O0bk+kkjX-25W(84Q5 ztTA*fAzC`UD~#|uS`eXZNLY|Gik3m`fGR*AlC=|StH?y-dS+%Y?vG7%0E%HS1I}bJ zLiq#4W*pudNX4lM6!8-XY9nXTk1cB2*BA-|zq(N$d_kKrd>EJ@bqW>MjEt)?R8YS{ zX80#TQjAAv1856QLaxKJ84q1379XD#0|t0nHxr;97<$KsISM&Oz)@cy8HK2SXs~Sl zE##QBaY)R?&a_Ah3inaZ^rGGbR~T1p6x^SYU<2!v(-Ma)NH{hy+aWUC>rk#ER{ZH4 zZxA1jAuuWw_+&_k_0R|=`hZD?by=XLb;Gj$?wX!I;{Za#R#0TM>$d5c0DP zoS1Fs8fWIcG{&pHWsa8=G3z;WnIk~fP_)AX7mKs-E#c6WLWIMB5`@OFIVrf>UbU>` z&e$Bf_jcfhV22y_09Q4bL$+?{IRN96sB}`I>d^w6#y8${wGY&;C+zDoq@sX!vIb~% z(AtM<*w&kjGqfbGKwIc^(+aa+m9>*f2~hKu!2!=`Vo_N~i41ru3kwEI3~Wn`4d*Du z6nrQIHQkCeQs4H5im&R-Y#L-}4byNMOa@phuh0^3tJo~E)3C63FMcxe(*q?^!WBif zSB*lM;TWd~#ZO8wg`llKp*YFa+)98>sf2^@ia6BVIRu0bUdN(A z9sm|X>lh7_1P*Ur8+D16zwQ)Bx(cioUZ(-V3NfHTEr>-&5flkdm%sV*WYoX_I_PMKBW;b4^W^lZRP`j zyWZec%O9$b#!`E4QRi@cauMrTocakjhr)!7&&Sj*p5;{POal{JEPfxKV0rAZFZ|xo zQ3xvHc!m(|HwybW$4KKsKe0&D!WLGEgz8cbS~>5LgPkLAP(D+*XYVkkIr{8EJEpd- zh&>;mm@W5o!S6hV8Yy?kE^fJ%q^Onu&wS}cC*r_90_hT`K{Ic>}s)it!Y$9?2Wh~u3eeXqZcmZD&;z}l+4A06GB1HnmP z;2>)9`+8n#s!I;uzxOZJIFL&u3B!g1jS#V;+6EQp1x|wvp9 zPWs~6X$mi&ymYh-@vcSZgsJz)?e*Xl|2;TBJ&*$oIR5Oh$CeRsNLb6k?#bq!>+VbC zw{;0&8J8{tiNM5o*8_*&ILJf{e;THE^m7;v^2q>T7zd$&3myG6H0?HoKMWe|IqW9l zy-8g~JCL_eqVw92s>zhBa_^^b0?a7OCO2qtRX!4jb?oW)~MGWCOyV`zq;8F?U= zz%~6S6CPs}X?^ILnRormC`E_2m6m%^EMewb}<6uVh#jH)(qE{R!RnJGHFvp9!YzBM$9j$;Y+OBrXnQ8jS*E zpkj0ZQ*gLCC9=RIu5?t}AgdmBLGT+V21UWu0Mgh7RR37COD?3KH(``7O05@!UhH? zZ>$p!z@dXlpa=IU+}u-yj`ql)zbL^GJ*NY?LCMt=14Tl!9+)N?P(G|}Zv=5=CV{3fgBSsH6`BgToQKEH;Gi8|`luirDu!_bCREN;c zN~*3t(xlYy&*dJTLqwfkbgDmc!Skc6r+N_gO~kphziz|DyU9MYIdmQCfb=jEu) zDbsiiR5-v%(S@65uD(M`+^ChzOAUXDhu;*FbF3x6TA?qw^Azo)x%APj2qW$xz%gRe+)d&MTBN@h zeUl*pqcmXplU~*@F*3)yu0!L>bT-Hi><|evZPYPtRS0Me5E9`cSQ-bh;2=BX8#`pr zEbxmRI>bAO-qf9&742=g@LM#*pPYPgcRjq<>uQO| z$Nx3nLH_2+;=S*E?_%NP?w8OpTYg6eU&#gR{MgRJzL~71!*#{8IQYM64t96{{>if4 zQ)g$qZd%OgIlMV6;6UWo;?jE<8V>L5{qdd!K+Au)(`?$PSTEqsh*PRAUj530QkKTA zc!L0MjskA%>bH{J4U4{!ez_nI@b32UltzuxpF$No)#7m%s@;ZrKec&0TqiAhn`3{U zE8nXj51=18UgW{$pYeFkSgZqYn#Emzw@_Dn`OkOXBm2v@#=jl0?Is2WT9<=$8jyq4 zu$`Ucfq!%a4u1M_-7>dxuyfLI!2A2T=Pq5U{?BjTZPN0$b(A*#vuvz;ugQSazxh!C zCv@@4=CoH~vGbh={T3~c|KoS=@9%uIt7VJ4_fP-yPgi4Y`tVhzz3m))^rOMsb#I6K z;U8{0EBZwK5+nEJjsC~)#4ekY$9|)m2m7k7pY9PZLx(X&B3yv7mNnh%)D@h8#Y?Nu z!Hz)IeatU`OSq?M7AUJ@p(lDdu{TmKta_iA--Cq1t zvw0m}pOY9f(N+l8<8}O+Lc^?QnQYfly6w?Gv_@lc!IUt8pjk2q#WU9>Cw>K1dZm?+ z+T+up>3@pW^jqp2s)32LPBp-_QPpA9y zXjO>keEajb+*??g96)h0BY3SxVG#|)_)Ai7fdqvOyb$eLCR!(C-rx$nP`IMxV_PI> zHOsp0JQ|@jgx(Gi9fNfM*79hDT<~lFe0VyDY8?y_E&}yrEvVj2sOlFPBs8}7d6T6C z`;m(b9b&nl48VR(F(tXm;OC73U;+iM5*JiznhK`2S1dyb)*%h+uzgupC~-S^MZyUP zGQ5&HWklo)zrH&hqJ(DJlmH9JNCymS>LJE|qng3BWa(8JY@-D?T!gkjjjUEKTrG@6 z9CI{Swi@AFqcp7C2>U523A}{F%&?{2f54dcrYmB;RO5RB+JLN5t2MY2psjge(+P(C zg=IK;k&L!N(o1rD2}nhY#cK?*?Es=5Sl~(&)vw->6d5rZWC(OmjQW5u`iFyHP>Zx% z0IhRPK3 zNSK*mL_s+tO}4QPRB%tgU4^1y-z6KF(O~P70|tOOhG00Fqn6-g&7^}gwF&kood+g0 z(WHbUFvwu+%L%U*h^BQS#*sNrop`8)VPm$ODl`@KDTISmrt^O4bcc$kJ=0_af}@eq z=5Gnm+u?<_HHbZ0gSjE3=l$Y=8e|Jo$+KjDhm!}R7E9nfV#Vy@=te$E6a<8c&q{lf z097#&gG#PohETC8khj2lqkxZus6$xH}(haU^p5R9dWVTZ-%?Hd9q6jP$(diUBH58hb)z}`pG%e^5Gk_f+b7W8~ z1L;zspep(XN-~-QPZm=^UT`uS*AI=gd7k!BkpszH+Dit94r$@9a9ZvRMA}Re8z>Od z=caKqjM_HBT{tc2M|%jx!NwU^^w#DwBRwn;=}l8J!yN$%P9A&M&V;E$IZx@C0n_TH zpJGo#V5$K62j*}A8O02t*|vDZ25cRb3X|T!EKPG9v%LZk^cEm?j4Lp-F&ktuV;ac; zf7|QU{`*Vts`lQo>$9dn_B^OBumahsT)!Z5?Ob?!`flbzZ6kCA>KKR%y6Y=J-oueM z6=AH2@l2glVDaMO#cq&l#jj%x{Cq&V`uhCmUww5Ku#Cuc#uIwM!RdQ_*XIsS{s80d zdTwEv)~T)z2d}>R`6s#@P&4K(d(IBzx!1Y=#035W0JO`}xzyS_E*?#4>8?eRQMD(`( zxmCs0@9ow--dMjbD!E~=R+n&x@q0`U>Ye7#X@(9Bzd*9k7@c6YaP5csVeSb8Q0fHL}>)6?4)ayAFc74&Z0t2_A45@4}-XBUlQ+4it^ zzG!vxmB2UX+0H?42fOqEtL+d7av*3o-xV17o62#;A~gaVKLvEp7G1GXf(GvpWHs0u z5v&m|W6;sPV$baXWvQ zPryZp)NBn07g;n^@Eq9rGTR(_30ld0<|)7qfDRXIBHn>6QkAOPiGn^PfEBn zuw1A=VyY#YZOZm+X3@8eGT;sBQWJ&)P%M4UZT*lIZ1{ekFRy2`xDWF>9X4cS9K>vZ0l#JC#F;wKTS&(P zg+OMO!l?YMfhhRZP{8h4d~-(EAfp8Dl<9!fO8{Wx{ayW zbpw@W6cl8C`VB2xMw@X+uvb|y{F(C@id1yw~m6N`2=$m zsIF@D#tG{Ds#2`@w}orWx`h{XfO0AfCj)R`=I$_YXdT#rKS9AD8aF745VI_7g9uT; ztHGG|!s)zja=?j`244rGiou|QtL-x_B#ebu@Bu{zE8P{cF9)GU1tShhR}xO9Tz?{t zbRi}c27}oQ%d*lNOqJA!fPfIAJXT#pnW?RY^G*Yc7bOZX5Ni^oNs9ensT@E#EwT7K zm{(|sRS?BEX}^MMm6IG2(KoyKzJdgJ+Z-EsVAm-@<~11bI7EkJ#LUgC95r~pS|~wl`OgL`|94lJ?tJ2HQmM-;U7v^ zEe!0jl0aiqQYiXyr+O&|PGCY4L<2>HiGBNr2Btt*N&pKqpcQNS^%MF50n}~8i;O@+ z_XSvh7%5r75Q0QjmbWz^6c|KEATSs}5M;+e7>I!Rq}7u2YRS&$TXlc+ulL@}4oyj( z^Iq4FQ>Us~Stk z8zLuTy)2}wO0xxc8xPP*j~6Et$s2U)oY+3+AxHkVyPrB?QT-eO;;p*NeQ2TAN=*t;{N z9_)lx&>eDdhNrtCv;p1gB1ES6yI^i3*3uQ}x#hD=Q}#b}=vb(d!W}r|1}Td# z1=sUUoVJIUARcS{E z8-LJ^#{oaSLieaI7Mtlv_y?hK^p$lT`jCZB$k0v&(`ePER=}mENM+^3 zCQ91bADis&-S3$7h+mCY2Svz2Gfj*3#nK^3I0%dS+`5^kECh+SIl%Dj(W`pG#k6PHw}1)J2&I%X}n z@>DC~mH%1VZsgIo zWh;#Qsj_*Y0YpD>LRdH zaUhI1Scmt&|N5tIa8?}-)MVBGo%#jo)JEF6+7cVxgZZ-gk%C&vjlEO+Z5~p-nXK^q zW&78J@1*f$H?Dux`H?Sl!K{}#huQb zPW~??gZQs_@4S<(t`q69GSzU(xwf3mC#NG$>92I={ zTijg&?{{9mZL)(uZiQ47du31&?6k!J9nB67{^RTa(ZSER@_9BKOnDPq!;sf&go(>o zR4kk06i{CcSOb=qjjT45uY&l*5RmY*vOR`=`(Yk}vQzEr$g~&P6B9*l#L~vXWxO<< zD69-8Lj%9E>Cz>QN~nk6iey9Ngt5lhbSM^I=4 z>t$D*=`5JTEKO~qWmJ!j=pt8EjxuvnDZ!CN37z>!F54q}YfYfRscbgD z%daP@ZxYN51_}>diZ4hRWMD7YZ6gf5M{Udww+-d-VaAGJWw8lag%E?3+>Wdfj?Vrv zpd{52O6p`VU<2*xWH2gh&YJ9;wx1*+GA<6Q%2F{%@l*xoCUCa6KIZl#a408 zB@v`{0dO@KFFebJ2ib0%o0ERm4?Dn54B*evHF&bF2 z&=-&{0jg`-?qINB+K^2_gF!JXP#5{GtKJG+(8${X$kgC>0F|%)h=SN8NmBIe#VnoY zr#y+ayC+U78J;eSe?V>0!7pg#9u7>Qxx(`w2FdDW zJqE!JIy3&;1%1RIey2&g^N$o`lW?Ef2fM6ehfLOuCWR`czreGrl&=SSoqEf6aB%1L zqg#)@x_XO}-zip`U#C)gqGDRw+GY}*bEnKJJ}~xMQhT*!Vm0}r)#^{MAHDkM)lK?M zzqHXuKv>-+{*4=Azk!Q6pi80W`Wzg5@4?`6Y++|AKpY4z!@>3IcRHrH!~DSC`8%?I z{Dz|n8f`vY&$sKNW;K)I{oupQbYV-spQQKR`qm#Z>i`GE;|tmWsl+)4ogmkaj8&|K z@GQkFF2TXKOmgr+IQSf#{}XsmS8$MikK*%g{ZkBSW{l-;9cJs^%lb$Qpj!?F<ri@A4T42kw zH=spRIz20RT>sb~4~xMmDPI7`!`z$k(sw;-{*Y&4KaBSWwL>Tm3h0Q(PYUR=AIFH^ zw`tn$f~hH+ENL^8KS`GDunqSmD`H^h$pVcLr9T>W1Dmw-(RLOMhEwQ`XRqrp z>}Ve=9Ibu2aZ}sgXwNXd5bdFZAt07(#@4FFhSATW&$!nkd%mM1!58MoT=)Yw)tof^&`+$RkcPb9t z1EXhRH&})fj#KC6>W|PHzw!aD-MEeNhXspybf&z0m#( zc-mgT`NZQ-1J2U4EG|hcD>3qKf~^rTUhUoEV5q$QSJ7Frvq0sCr8sC*?ix`=w(H>9 zAv(e3^551{T!`H=!WtwUqc+SM>=5Kz1Z^kbK|BiA?|j&N%HvvpHRP`H+MR|4z3bhN zT)bka{FjnJWMY7tW6jLu`~?Vun`Rj~A}dp6w55j?N&V5YxvoJxU7OiHBh>(7nL8EB z7>*e)Qj@s!w+Y}Tn>dwgn^HMy0YsPIut#vbWVM7T-OE9cR08)lQ(t<@JJuZA(aWhimkJ(U`p(lnXyOS8G zQS>jm9N@*81{7P~dNnLQCuK|?gvdD__w7unQoQ)BrF|G`(HuCOz=wthVFlqfl zJf=SqA6(H4PLn$4QkSOD*O)dq3p21M^I2{u?3m~4*v&dMHvr5Lr>kSkNMpuLhdloS zt#qU5ov@!9J_;nkj7e`a7|kq8tz)||{cs;%9eKaQBmNUlxaZ#XoCl-sDU0FgsM|ao zO%lESDdbddZ`e!6ER_zG2++$$EHhK9OZNTud@U-4?E@bJSmdAK@?HETO7$@w6^jCV z1hOGlZ&F`$vfk;GoX9Tib&e{E)K7<*KRIQOJCj4pafRP+=M-AdOD2eIGH3UYHei=v z9b9y3ulf!6oS1>@CpJ~?AS`vErXnB5E#@c2Esqic7TODO5lG_tOUx1LvmNGi(mB_7 z*U_BmaGJzbekz{Tc+}&>WP`Lg6@HIjfM>vRp{rp<(7I@=(-j5fw<^H(8>}GjDU&8QuAiX!I zo!O~vy>bV`g2g>HLeu~y|I`D5g8}1wI;PjLI8_T~3^zxfFX|nQtYzbYaF+pY>&VTN zyW!Y{8#;(G(kQV!$0ljg$OkE#A{>=a4AglgaVwc90u_6KP8V~WX`)WDiFm&2Dus$` z>tor6HT85<;w#K34$jK8`M+q&o%7>HOAkBfUz8v1eFFXEVDjh<)*4@5Y1NZ+w#^9l z>RT%tSKLEFQ3qMAkeJrs8@f81x8FufdFNILNqgSb0p~eZZl%>u!*eNnjRRKx+8ogH z6*?cD{}$`7t8j7LM#_Q5lD8yttroOF*z#)M{_1N3^ZNDf^)Fu2Zr~5co64a1i67U! zRp?bEu`m~N6Z5ifQeA_(wC)+aMwgj!PziG@{*SgoZy`h#8sjPl$ z^;^GX%rAZJ(=W7=zl1Z+Hmvh-Sq{SVL&!s77Y9G<#DQO4lyMwOt7GMl*Gft6Lw}0D zvYT}B##y;+<*4l}xM&SE*xI$>h?#n0`QtQcjLGXJI6+qSMzqG8jCeh}Fl+~zh4rc? zv~eYkbBC+5fvflk8plT1`QD}nlqMnY!K@5dIriEyg*Lyjn)XI$y~stgSr)pcwW#fs zTLBccDm8EY)a#AA@krFvY8QGZH$YT!v7XWn_yq{pjj>yh!50H2#}IlZ-ZEpUr$|zp z402)I!JFfrGAn$>Mc)kjbd-0yNGx8&fe7E|A;ltyIUT3gIwI@WXIHH=z=>DW)=p*4 z8VdpQp}d|Lh;k1+fFQa~sarFhP!TYkV^Ddt0y);9X&0VxI0qm& zCOXZEOec7$HKLW7glHow#OFrm6d2BQ87_xRU6#Upj>K#rn>lLUsl|3&kOA@bwE|_q zSMb!K^g5Gn56;J)JECW_D(00!dKe8C8%>FTrVJ4JARo@l2F^Hs0k=TPA^lMPCLy6~ zaHWgk`qa`5_QUdh9lYj<-DdratfyG$VJ3xHH@4NJ8}e5Ih(E#7Zv#3UEk_ILrAyc6 zV_*x%8S+k^pK{jRBI^mFU?4xq>u7WbY{;J1{+2^qXj?3e7Gq-0DuU!R9~aAfS@|n_ z>9qoodYzcg3f3N%9a?}t1zkbQ2}&1H?3ohTcnXG{UT@Mw9xX?d%GXkJ3YhCLjelY^jabyR>V!*VgB{;5{q2 zePhvCjEdBmNzxyQ1FB#m9eTo5iFqycIeO5bGtW&M9QA9NIkDCZY!k3xHivTqC9uIk zK+5YdniFX-E0`CZXN%KiezM@cg?vhdW`-}((GJ|a-45u)lX=>tlPJAV`$I#cYI4X~ z0k@01mO5;5az3Y#uESX3^VSdC$a22B;A`Z^!{d&JieLSYw*=PJyS`XdUX$41cFOHN}xF!9{`fcflK_gyEW)ih&110HWMwpJ$GL)4tfZTLG+pqv19PJ|3kl)GbUC)^-hiFZmjJ(i#US z1{IAsc+;RJ?1Z9)4IH$-_x$+aF&fM^1L0KpZ1{_n-AdxS()2J z+436McG$|p^hG`IA>70J_aDCYv5&o0g>Tvw2gEafa?Wb;g&fogi-XW3mKZ)vaQ|bk zz4o!1V8bCD*$lq6di;1iKI6c_KF}1^jaL7#kItCaUw^%O`_7#^6~+CBpLq4Pk3GC! z`8Vx~0|vU|uuFcEp!Dm$#i!%o;r&-X@v+zLKio<<^nf)sZNG&oEUzNLl%JQwn1UX@ zdL0BrShh@fodpV4;>w7@x1LW)u*1^1wl-ufk4F0zzi>GZi+)*PB@$U{2^UqQsaPyR za1x2OO#;gO#oJ*FvtlVKJCcldP=aC{-^?CVG#6>!#0y2%M0o>~#@TWSyDOw_?u_FX zezT+->P0KP#_5ZGZk)-v?p(;J=aJxd9w-}Y^(%1k>d!1a8B1g*$9~=^XeHK+X*P^O z>DnNSN(QvMz@}Z2I95V)-RskL42e<_+z+`fLRuP=`!FDJkbRx$oFc7bx6n-W&ckb;zv#ysyc8zBO5UcCdmFgR-Yk8E z=VCA##Hd}iDyXt~93WT9rFscV{BilWvBOb8-ZVaMI26%2>g01(L0}kbA0(#Hu}vl_ z)x{R5U25-1Vn|k!P4&@8nrlkI33Q1gA~i3}q{vArAI-baD~@9Ch7+0&$CB&7nD;IY zCYgd=Vp04$T`X28G8?0MYm-i8@Lqn5o|V~ie2rm@YrLy z{m{?7979gD%Z_goPwzCaTvcV`4w+CFvl+|wxVFoqXf=!gKql>8g8LsUAqm3rC$HwK@1_~ zKrtQ3e$Xb}azA?Y;PDo65903Ici(1>c2&INSxwua3h#+`KAN?>ZKZlol)G=6M};XO z2m94{VqfKN=Tp5i<;$1le(qP-`vQ~v!J`)bVK_&V5>0Juy2e9ZngT?zgM9yZ~t$<^K`nK>_4TtKpm{$X2VeLlqATyJr>a1~DV-t@ZUaQzUfYmbTrEV=~((-9ZRGF4(D2t5De3=;`g2Ay&iD6D}B+hBIPNSD!v27U2Y zxl)tW5mZ`KGt;+n>8~0TP6JI+Qijd#rTfD2Ye|^ho}D9~*`?2|WsFy#vP^1bn(}Zb zx8cLv)ttcC1Qw>qEn`7TujHc71=!TWF_i48@PRR#S!@ypd@$Dyoy6lspSoF+*|i<6 zJ*!u7)w+TsV>dL~iWM3&mqmlmSsoK@7;E%dxVC|Wf{B0~#4_a!=-}8gd?6Aa2EQTD zLae_Me6*b!iq?O!=+D51a^gK^5Ou6nz`zP2O&HGL7j6eo4N8%;ZSJaYPZa%8&YV1L zz!w2S`wkg_@)3_~#5!jV83+c^AV@Aq0B3-#a%|aS$h*C9>W|2)o3Dr4=*>#on$DD3 zW(AGR&61tjg!hOxm7AQlaWfJ zzX)Y1l7_rXmZ1`C-}+Mv`^2XWWST|EsQ50KK+hM*__`UI4{qjFMs;O1NmZ_np=4+~ z>2T4psU<0a%)X?FgG{lqWE{+qi<)?MI*y$mcUd79Nu7S;nAFBh1rb&@79D3GC@?CU zH1|Par)sq#54S``Iv*|YR%J`LeLHFC(h60Kkcmlb-C0Yo^aKDIMNEe_xOW&_tUa3) zz3E9Ynw`wq1RQyYDMFv*^K`+Th$tZxZemW0**xL)s9`bB&_k&83I@qMCpo;T9q1>M>`~tGY&n4o)C{o;=^Ah{KKFU1%{06jM{r4HXe@*n9&6C;hbaKe9gY^yJEm3UO55&_=ss8=Ui@W*JKXtDBvBXQwnO| zYF!&pB-767nQP{552}C#Fg(WAiwk%eBk;^BKTWj@*4X^X}%l@FEwIj{i4o1 z3Oe*vNJ-+zm=~k2d?@cyDNyD>S;h=cNNbJ84ruoK#gVy)Y?nhr^e(rz%fxmokw%Wos6wxIPRvR~j zE9CkoP2k{<{`zmHIzRibtnQ#f2sPac(Yo}%3o`4;mYTDH1JBoABAx52umz`z zb?2qqFIDc!o_v){{MX>l>NZa(waA)zZdR|~{%}+JU1eH}-16uN*y7;s?Yk|K;N0dw z-xQBjjGW)LW?_)*y15Zp3R#1#UBSUsMsuEES8~4|sFEf`=C7-qlrG1Kh2;ufzC>mh#KVR$P*F-Rs_e)w^#_6+MuvLQ5z^hew_N15T|yeV2hnRVC8N_GD%ML zc}KWn778?CIoPV-^I&Q+hS|rEsQv}wM!y|k*Koe}Wg{eEy`ohlu?}mBa~-PlF+WQJ zZX#0U?-+wyEf`lom5h+N5KQGvM8t3y!<%k*UNAPxhdHgPaLI7U_Ru4vBf1qNI7D4b zD7an5Y^ZwJmQTn?I*DYXkAr~ zF`kZsuR|1+1DPa&K^B1rz6kH|P=2PK_#<|B ziKrKvBB2SozFJknPu(T)bR_1qsImdG1yQD299INGz9|XlKTnf9CL_Nx6jb!M67WdQ zI?n4CQ#`J`C|oQk%qcvzaEGF~52&UwWspkS5UM{xxIC5?paOTn~aNU|}l-eN=svEHEL8JI|IkC_Lu zDq33P!z?YG5vY4ORc>0PokDSHHT~AlMQ;PRqCLnA66^h)z0=SL94$Kwf6_g z&3a)w z1-Wk(UoFW0sW|wFAMb1?7yKXp_@;ik`scTA$L6;)f=O2K!QCCYAN%7!zB_CO2mjse z+q-Eaw!7-KJL*kReM!uq;cC4)51OxZ=R@{*^AzIW)S)Z?3!g_b4vD>|_zW-Tm#=CWbhwcy{fsro$#qgpW1$|V}BdyE4{ZJ zdBydM)mupTZ+`Z_ihXR0==S8ziM)}6_j7MSD{#&EDf6kFXBPsI+UUljN!hPAX_Q)W zi70uWH{s9DmG4MuJ@+u;*+EskLRymDMfKFU@+G_#Ur+0^g}h9TmrV`vfvLSlrIcLe z6uW#iHi1v$%K3Z?pLVZGDFs7s_}J6dnxNx>?E%CAq=+y{B-^?20E)-y-yXzkB#t9 z1IW(?$1YAj8fluSWtc6BFGCTJ!oU!!>O5vhI!1|9~`YQ`g*_)-^_#b#@cq6>Rf}Fo@MV5f@X>t28TAB%&`pn zoY&#p`LT$mUW*`LNk>!Dp_Rl|lZkaPt4&X_IpEm@3&MtoRmik*Fk9<99!Ij1%(Ev> zAzp@(otccWBYb)c{lo_U8{qN#5TOiE+&1{Or*W4R8A1oN{S24o@5C5>@$()%o8VLC zR<=nryBQ!4jWoIg4Pkp>TR5RkeT)$JmHWslt0nRt>GtXvnt%)=>R80!6J`x!2HV** zL?eeg6!}y=L0CzildjzK3A8lUR$Q3zw{cExPUR$?TU=uM8zu^tM&T{d1#!oBlI6jt z+|T1c>jF_o^aNF#&P`%LTjbAzV%YwRI1+pXqGpF)rj<8U31BnDC%os2t~e>d9*;r7 zn3^m09$-4W$`*=INhK6+EIn)549uQ%R`a@K#TnlmC1{>G<3iNL*ki>j%*4r-48*++ zww%O@(6CowRQfu&L9V&9*bL2Bw4u6&Y?b7Z*yD{0Yk^X2$J!(r1UUw8?Rd;eyI*ugt9$pLa8P(WU}6f`4eYA_GIUU!47gQU z>8pr(Dnn7@Bmu(4hX~_Jp!&fX;!Kk9Ael}%KRLl;i6bE=h=2zZPfS7R2wHk`m1ol? z588<~);1AC11H53A+dEPI^l7kmjF848!dW{--K{S>|>t61R>xKG|`BRDDF5$ZG|OET#PS;Ud@u|<4PrISJN?nnsRBF`Fo@iZJN@3!kwWU5_zK}C zv9fUM>vRLIZH)Y|f8&+HIh;bBgtfWQogG0v zW(`kfv~g9dfziHtSgq;NNo%$5t~o5vwN_ajh7`<&w^Q9(#k-iRc;5kAD+}AJ3w1_z zWzPw%$=;3Q0uEx*Pj&-v#ZFc^F0ca&=a;kCzqWco;spQZAbv-BKjrzEvo`lbJk_tU zHg_94FKuJ2>GD3V?P?7V{D;Ad?#}0RzwtUn#6)Jwb;7^&^7r5Q{721aBXZj;Zr{y6 zVg8$~fNx~q$R0iV(1%vP^WiRQVgFx6@QpwI_imh>eTqHflq?iZm`7)Cyd#QTD^^v^ zeYQAw)%-tO!K)Rcpw;cwpFI8`OUDfdVGS-kKNSbUa0_*zB%X$Y$Hn79*F$Z>V{^y+ z;IHTRI-Tp+zW;+~tjb3C!0nGa_sz+xjSN0^^~3gOKX_~JTG~bJ^)X<7ze>NcZ`^oq zVt+k1H*S2?*bkbTgO2(4jrm{9jfR7}VC)BPHBq01YqNjX06^gREll0ZC&KLlPrtnj zzaMvguU*IEzE=$j^`aIO!78&_d$qYRb__(%$nbm8IcMavC&oqSD2uj4VreT(JRnxA zB@@PfZVmNR9=|WvGz4h0W5XCuI}Z85*;I#q1nd+n>m|Ofr8u^|KVI8HsVad%n%Qhbwa*yIP8&UE6heb+q|j>AJ?Byu#|`4Pl-NM% zec4Z0?Td6hkpZmd20OPdm21j7aB6juG&{kWPeZ5%akxgX6B_BPkMFb$DpePq8Vx)h z9hU*;S>vto^) zP$n*t<+6%oL7Cf+6rzPiufQM;IlM8s8eiVakGZznSdO3zzq#2%xC;S=Eyj+N=tnvP zNtH?w%gg8?`O=LJJK*l9`GCuW=V}kjB(d3Gjie&2>~7`QVbhRxMs%P?BtfG+*&`bF z1fLHj?}2T<$}GFJ3lDO<80DzB^W|vZmR@8}1(wt~;~Af|vGTG#d*ZC+i6;z9Xg#t^ z=$X-IZcdoxKxH2;J1L(~&;5y1ucrg@PO2u3BjKzu71K%VDd{C@5MWy{AI(n5vp7lF zYisyq@q92(m>ONDYDFlW`@_|-h0d*PX1Iq^ojDVl4fQm}I%pC|1HH^-kaUw}Ve|Q- zw>VD%Y6koI3dvZL8FhR+7~0&TQ>%~Q*snP7{94tl`4TR5FoSMyuo%ucM%_K`oXdd{ z*$X2sbf%+dIN-_W0JPIZWa%lD+|E3(G3KKL6TXfFBbLLly=8cu_kK=cZ_ZUf{PuJs zQO+XcaEA8k?d(;5cpD;Pn?O6`Nma`!>)tci=YrdVHvGSxa+!8ko z`(pKS(EE?Qa1TlyS#B^$Y<=f!)VdFMru%M@w|{Q;+0pxT!mobf6Q8)pmc`%ur~mZ# zYUI0i_$Gz>yE$m|mX-O$Cm!+HobUV5AN{^2+Mj=yZYI8Yvk0y0wb$N$`~Lk`U;Vxx z{k?zsohW%9*iQE)zLItGX6!*;d#&4j`0&+NfAss#X$R=oYcJc)B%9l-sy(_t@_Eg5 za~BooVH3zpEgct1ZU}i#p-UNc|CR2He);Yl{O7{{-JOc&3?Eqvdb)h88!z3s)j4nO z=>uQj7Uzenhrha7{i<1UqwuTu?)~s*KJ&why${akfLvP~m>XAb++r^}Y5Cm+`@#pf z#rgi~{!gq{KVeq)se?z4KJ&vr{F!~ZUxdHIj@b`>u-VbfsnvVtR}X%*jAwVpU)^6l zT>b9DhrjYGhrjZH)d#-7sp;)|m3K$o!it02Ee?XbK6~)lEy8ugL!|Hv_wOGb!odf= z@PUJeYv;DtX)p5mK){;`nU~|u#2Op0ZNs-c=ek9?D}{ZLTnHe0n6L($p|M5)Ku1P| zDdUC9f`zb5;j&Rec9Ga$HqJAlbEKjlMX$ltuFBC8M1^{{wuTw{mEfZtcO^)7MtiOEmRNTqFoZQLhh6tWr9W%W%q^)s7Aa$Q88hla8dy@`F1s~ZWB zh>wcwMg++qooLyuq=cD{g`u?e*H7?9)HQFL!4q@JQwF9mgMx>OZSkB^pIW9GqLB+{C7Ny@3^hB`mr{-jIiaK0I>(E&-NhDpa zJ3Iwh@ew*wnDJt1;mvV>=D9F!JoF>Wgof|=ky$!hCUbdf;AnY?Ey@_PoHF)$Q!WnS zPnQoE-6GZ&?Fx_G&UV$54`C`|&chsBBts{cx zcS-QwVz{(i0pKNWV)_B16!>6LS^zX=&9%?vr4g#wbeo;rdP5zgoGa+1aA*m>ENDV( zky!0E&;zLpBWBAYpDKeHWlcgtO0|X=b9g;w9iZSDy(pcgd z$`2m=<{KQOJ5!w1>T9JY^XPT1qbWgOeR=rswb$g8{gvPS-LKq#$d{1-eHBLblL8BQ zH3ue}{G#Ct$V%g@4F_K{U#wEqJvjI8M-J}a|JcXgck|}^Dh~8zoQm#AY_7d^*GxRy z`pUh(>sEK*3246G^R3mlYQ0Y7{5SvR>tDbBaJ71P{r>ge{mNH`NYn5VzW~(lU%4WA-@pFw`px&f@1|<;r+)G$e@gCMsjlIqE4SZY zFSF9^pg;rue2*uwy4hJbLH(ofEJ%x1j7o>rSCVzE^=0!nxP3~tbm-{k*{RRJg4zq$ zo70;AL+=rBXx_lrzBZ_3Eq_z;yX*pKgK9#*U-_Az`IYNud>iWiBYdyEDvh>Hx7Xd` z;1M6}y=v-3-*pbYw)$F?##%u57L#~5oX-yf2M-_J4;-M?S23Q%zF~fJCpo(U+|Gc2 zRLiTMK6Gh`<>pu3_f#$Mh8DVaz?nOb1GPNKAw+zLKF=flzTdt1l^qGKp)9^~1C}Wi z;>$m|4L!R2MN$M`7EFwpr{5;TP4I|9W&`8Kd9lkwqF)VYKH)DSG^d`~Zq^N6T6Xzn zu$l3U;k*V6mOq*6AisVWLUIm;&Gdc(d@$DyTgJ5O=qLA`mw-=vOt4L)QVW>Gjy7*Z z)x|T0N-~K_duT&cMT8v7`XYMhu6SL0c^n;2k~wU4u$gJZDBuY}+OQ3AsvNUoMir!U zuX1KRma&Xs7-Bk%160i;V-*3cnOhd=M{~ZnW4fqp4itkJF|!j|V)G)X%FJ`Ypy-r= zR?c6+Pf#u%Hp1@aR(Mu6N>(MO5tz#iM-+1nLKklNlp_LZ-cH@8Tq1h{?nnJ_DoZiN~NF zz(Q!Ly)0lr?u3%>80O1zZBZ6rhJMP20i0%WEQy<;+JVywe>Tjl28)W#s1a7#3+{|t z&>rUfqT995pyQP1UZL6m8dHG0w4)^%D5u2RfGGNj>>hcsl&qysOqwCHMJ9w~xjGEE z2x@$Z1H*821i!%*4Vb+wc;m_Hv?PxLIs!-X@sALE$~NLcMzNEy5hpV|9>K9~XtRQ3 zRzjk}gaSo`^y11TN%2MqcZoY=Ayc#{Kkdl1`1Cu4L{P)E=V&v?&_nh)ajP7$dRf22pv(@&<}a(! zjGfNR$%S}i%QdHzhEl4o6AqUMVl+8=a@JmjZNXnKhix3XaRY}z^KCTXX{AHgyT*wd zV%)8CC{c48?N79AL?&}ZhHCHEn4(hKsOqTnu1WP)z`lsf}Y5*PeiS} z8xFo*a{t>U2jBko({S)a4E$*z=Kh_VH}BsUD@`rX6Boinyj+(D|LM5%`qD9&E4g_y zQhyp2qRX0pQONZ)92oOG@#%?4NypX=&w1so_ot(i7t9dSJ>Mz*w&4Uzy>I={yr+T)DtjGHiI%CewedgB!=upMhGg9!a; z*LOijSA>w=#<)heS+No8LNA%)VT~XHW1-T;IEW#UPkhdJTA4;*Rn*OffykX#ttELo zSD_{)UV2Bk&$gE+ZJJuRE3?()+O%~f4OW$;^dW%{=DRZzt3h{CCWd_hj6~}+i7RNt z6}+29v5CN6$si43B}MRX_%`5_s9ah?N_^(0xU*Q#9*qJYO#@@juyrQilY!Lc2H4q- zCmS+@AQ@yuhtHRIp^&uiSnJ}=%4RvI$kVaSChUM9PQm@qVFpJl-@sbs1q_DD6$@Hn z+V)xqS7yoYc?$Riz(2IcI6PYw!}Brr#DJ!Z8KOL`Q9S{~M-ExF;)Zuh);^-eUkeb~ z&O*0Hp1^r>vX~c>G^ALTb{?WrKN4_Ywx*C&u*ro(=Rp-^c2V%gXQ}QL@6JPYZgp45)}vz8-qMpTyG=*T}`q zyMxhy4*>JYq1XV5P~$u>LH>!E@)Rij3L`t=OyAy+<2a%VCnyqH5PdFsqVME0v6UNL4=ezACjjN|?k zZCsD~{0MjxAXixf$mvw@aWNM_0mVo_ikiddJDkZYWAX3R9{@Z^pf1)G+(MvPi=>}gFX2( zI4MYY2M6IHAxIK@TF5SpXfLGrw?Yuc3;$Mf`c7nmKEdB^sNSr*L(j)f&JTXNP-(!^ zR@6MWr5;vbaajIbKxl=d0%3~E^F+1=8+;iwNU0pAYA{e`iO1@p*7D?%B%C{X>V)~3CEnTJISpBBGFjy^O=&0bJB|B6dE4q$Y`{lNt z+NFG{n%pK-xXRuP-|ruUAn8_ZXw{o-f#(ucSPcD5fK+RKy*ljaSuO0Xib`9{$)s*$vX%$20wp)HcsV3R3kQm-JwS~?HX}UJL zac6#8`s|f!2#jsHOQ#mwY+~GYNDFhxVSI+#BnGXb21UAJsM*OLmNGoy{=~ENjmjtv zIFzS2`(auI#p)VW-j?026kp>{OIKKRFWuxN#;mm_$(jH6#+zx+m!aEM;h0$%6oZK~ zF6TkevoP@mrWOwZYvr^7TZ{s>2&N1d!-H8Ei<+pb4S_N~F1%b9ra$3#gMyAZkxO&o z7kLdL8wdJP8LLlzg32E}YsM))OL>9jkxpR3W-fIBRXy^esX?48)Us-m^PAwv#rilb zpqNScW)l|yv6yybPQ58%iex6GRD`nGNj9a{bMo&ErY?1-q**9ksnuCx_JJ=0Dm!}D zeE~-kWUr@{dlV2GMq;Z>Iv#m?9>5$DAAa3M5G(F&m>TCDr4dXdB}j83Mhx8Zy|Rp5 z*lujRC73Wu3BH~fVMhebl!LCGtC3KydoFdoxh_CP0;CfdbIFvH_uSX!ol|)l}SRs&FZg@+nf>H4AFf84{BpVc&7RaZ|Vh0Jy0BYto zvACEaqn0bsJ7)mHMX$*1Vw^9N!c2O6%h)EW8p^@s!jk)*B+3BfY@P6lS>}iR^e$QGCklUlyg$Q+`rDNWi6*2QZzom%szxbeB5ii%uNozN7_;U?*Q$_6RPvWW}t6patbn}2o+Sm_s@;dru*DKX+ zlHgv;9?up*3lY}a@UPCcIEWv&ZPA+6O!E00d}Lq^pI5n3*=vbh>dto(l~E7`FR}tz$OQ#%-Fv9 zW|dEAUpf2w&%i<(`%Bk<=~5gR_NlYmTu*n(S@EtpG(W)FdO=#ce@(m5U*Ma`vab|+ zrkigi^R5n{ed+OZ`QIq$JMx$BzE>&cI(1IWaNqjae72)gx)fr%^%TDSGRtkqI&BaZ@tBa_up>@j#bF{_GXQWS{&@lUwgF!2Vu`R9KdS? zaj+}3DqQwzH6F{pEu)0hfv=qF_M@|pts~k#J~v%H|81->cMjfvV;!^Z`>~pXqUmLx zl7r8QgGS(XEvL2KsvROSI&Nnf*0=szBzokt;I~lf&xBt6$L*lQ?|zyp{>aUrkZA*R5X{j6-6(;09jd@jp$?`CgR^l*j}&S8?q6Q;jb6r z+p2J&bHSV-fv(>AmcI(hUb6CT*>(%Fi5SrrjTlqMlu$UNbnv$ULR7zvpweq4L2rYv zsQGf4$;EKQm!xZ!_Hn{OIyRIowq#oKIs@^uzcCtgz^MEMPw;89FqjXmpT^b!3t5LG zM^n>1zuFk(qMedsmV{OMWj4u1=%F!faWbKcw(z7S|J2KG@K5+sRRi&r(1A56x;E;>qo^t4PEPg-8%RFV-m z{q2Fw6rN$;7~2$95kd`c7nGo?jd^tY37DScw>9omOu#z~ZqKv2BFSZmPKR1sbtr^w z!_mBBeKwr26W4XCZK$SeD@yTD@_{s^t&FxyGbL+9D0*Cv5Snq)n-zsQ8YCG?I+k4yU=6e+9~*<8+8$d4@k^$r-wh|oVs@vI)rT) zA9Xca`aF|H%Prr=qD)R$K^~GNqQw2jQB1LwCk~sJm33vOC8A{o2;GKhFf}{ z8k2)6G2J7Yu%nZ1z{;8SktCX@Z4CTOr7f$U7u2eH8@Hun1`L$U3`;}qzkzy#2G8A=Q`b?=N`;b zG9%w}me&)9<40oXeBe18i-Kw($Hc8sC&9-Br6n&XRJ1^SOoTuY3?|KtcB)J8&g4?s z^@Qrxv=5?g{i3OK><3ZzZpbSg9Qz7MKN!n4R}6%uWJ}irQKm1}djH)p4=}wFQ$B1` z+;CMI_6B;lm))`o_+|5j5Pt1{iZ_@w#MOS(M{m6GhOnVFfBnbSw7G^lx}Jyw8##Dn zqGGVU6Z>p@7LtAY+ush~dQOil4BZw7WqGdOd#Orc_371}%Du}*v;ARo z-L{m9EEDQM6&X!m&^%~yAp>w(q%YagYp$J@?N16_5?`3H(?wcnUg_^O#P z|F!u~q(h$v@2uWgtzLO_>-yEz+wc6HU%U3HPu+TDo&Hwv9zeH_U-xw$udY9OyTaW# z3+ke;{O8%?;LGIw*+|_PgR>-utcherxr`vtr-w_+QIkf4z#W z3fYFMK!tr9d9^k93ct@@F$2;2X78JKuHR-fQnu&~;{03=*x7H^ImpaQt+|Aa#MZpF z9G_K4TRHaH)4d^28xVSqr;XgiD;npY1DD=y4e;vRfc>w!4Z_QKmAvY;pgX##etBX` zu$5!YZm?3p1rd|Wc@Ah5FVeaeRX_&+sD(Y>87P&t2CZqgHPpg?QSnNis~l1snQ`)F z4KMOu4lc;fwo`G+Oj-@gEjkg(D3>l>3x5tCqNLj7`D(fC_8~7owmKrQo zV{2b7)uh&ZV~0tQe3N~3iTNJsiv#mqdZbs(WGeY z`V-p)y>@{zGqoW!ETsn5ZX=X^ps;l*RQ0bUD|bx6MXNTWtZHxVu$3#+V(F=o(Ql__ zA{0Mvp2IQYDu&e2l39DDHJfytj!oA}n;VrGp-$*Rh4q$B)Cgl)0~y3FVTV+!py&2; z2|Sm;a|t|`z;g-wDV0D1U$%UwX(|Y4UTyMy$DtR-Q8r|)NvJ1;{0Zqd$V0Z{Fq<~s z2-0wM9sIiY+4vmei8%7I?F8fSu#`$2;A&TNR7186bm=Xy^{b$$94*@#M1N!h#xo2& zwX}j!@RE5m6lBfHg13E^ZyNBy*{#`RN|otpKMJBNh|W^7X!H||qqSxx>=k06E#Mf< z^)gQ@;GR-I{DpJoHh5HMx8qPI93f`D%unkenTnpm&{3lH48 z#fVi?N^#_Bu@iG@Vxm2Sn%H)Nx>;B>h8Q{PX2u`+qmbpqAOlapxo||NM>BBTsKg4+ zG2Uc^A6osJy-2ns#FKq2o)T$5^bxswlQAwVzbWBXzxjs>=5;vDfCXJa+v#2a=6Lg5nl z;?D|eT%jGj>o8>TgvD7x6Js%pVvC3+SE5%f09JNbx3n?c`pEYj=b-a+KqKHEL< zx$i8B!F=kx%f0d7jbC&}*cK1z$&|P=T-*RW@;rV+;ua#z$0Ht2G9>~q9*#$87MyE_ zwm~8-nq1nqzBsb|BJVO$kek7x$41%09Op-qBYQM<`KVu@F7`W<-h56LWjcI}iAQCL zKm7S6zM-z6)<>nFVGk-fbQfcv85>m7GGb#PN;4VR5tWu^=&h64Y&psD&cu$Ey)g$1 ztSyQ`GMnhOu+Ds*93@LW6s$G0l&B8Z3^{0lZOSf)lNx2>v?Zd6l7R%&9$nZ z>dqxJ0FE>>&-P%}m&8EI!n^X-AM%5rz>a7uNKY&uKqCIQliIE=#;m&iF?dpDIQ;VN1YL zon`FJs_bPi5Th~9`kcqV($%Zr$j6_QuegAN zBG_@FNEjDVgot*CH)l7qrGO)69m{j#XdRZMF@w%!i`*_v(YH%JZNDr=<7ID|ofdh2 z=}u^ae5iSTV(E)gCbmKnS;$GTbsJTLELfpV3R>6PF&D)pYp#|))w2mNvTB!LlyJyu zAA5GM$XnX-Pw)o&Fz(fzi0;Td0L>3qfM7q+svo<430NLwV-ZBWNtb~-(yo~wU>9eO z7(QUk2R8R?Zu+%ub^rbsWBeD3hV``+<$3(LC|F_m_V&i!EmHEmf4@ryb14p3{`gP- z)5t;k;%}E6oSp4j{t*XS)MR7S!_@ES@@;M*4Lzr91;_lxaYnhL$ z?Yzpd)A@fd!9n*QTz#SY(Tw#(ntrt>S9^Blk9I9QjE`Gi5j%l1QMiZ2kKk5tiLb}WurkGw&75+!2T6W}X(>$)g+2`JP|BbV^&#HictPDsVymamE zwOjcsxo{scAG$6M9>ALNw&7nP5jsHSF6|8tn$S0hA9)Z5rd+*m!r4jt%AK*fX>Pu8 zgTLa9ux|aSd!M4@SGbw$;9!-lupj+qi1WbQTZR+y@f*Lf_1Jb^>5O5(y!6u5tCM09IWV7kqzheGHAMug3=aN4>A-*q9DI9| z1Ns9vXeAB@-_DwT;NUlI+_=YA*LQKClw)U(!}8`3VjDat{dPbZ!|n)rDpc3*OiIX| z0pKGfmE${T`&Qa*cMJVgPVW05o_=8zVcgzSY@mw4wx-&AD(Zkej(iUuG~IdmiLjPH zeWXtclwiYO>EBl)nHd>Z(fH7EY)oOl$@)nsJcB|;5z;aktBM=hMaSu8SVpAd{vew% z?9-@L&|TAOoZFC%y<_a!`dB~s_IdmIq!Oh>ed(V#n}Wej>O zice;vX=e(LV?Nvrp=fI$zELLpyvb4=MRc32r{Qsj>aB;fgl<4=c|vM+w`UynACeF% zV6gclZ)gvxQ)OEP5yt2rf*`pZn?2f!8*~C`eClNd;gQ$UZxu75L)dO($3vb3N=M1U zW4SxtR>Fy2Csf?0g2Etxpw6a6xTdygu@XT5lAZ?+in;EZPUu6}ON#Kuiy)3d;>skL zeNa8>d&0f(g!m(`&n|hnH^7=KqL2J3^=>U>4w^-Alq3JXCpLdi1g!{)xj-qV$6I!m zi_>BwAs79`@N!`-uiUFiNDUQEA-~%2xT65~HFLsb=GG;QI>fxVC;N;8^>B66Mz3UcT4^FTn z=0&JX1R-y1=3|!Z-=;pcpsQL!jqMsIhwoA**~bAdeo~To5^$lT(T3QG`lnu!Nl2MH zS!C%s=@dvmC%m%f^CHhw3QbN|uRXk%hAZWsT=v`@5vkhS+lo&Q2$7kUS~>&TK)LCU z_`9u$PvE?6&f>R~`4$e*?jCk`)j~{=0dv@ySlefBzqOkD(Hmjs?A@P#JJ?TgZsZgkarL79_~$}&bj7j;-{yzxf-+K^btu7uWPCX-Km!kpzhs&gL)D{klh z@|SPic;((JC@qin=UeH{HH9l(F6_k3&3`UC@h{)icbeAQ^ld`e<=c7T3-PY$7wWsF z`;)@_19tnq7h(2vayAIHOnKYtTq~5;xe)Yd=D2qgo&C`nPi_keUqoO0&UY*1shx1} z>HR&6_ER@|Wyz%E;MwJ0G5*c7%5|}QWlopxd-h_=%Tw^N^>a8-_qPsL=84M&>$puH zql-<{n%@RryDy%tg+D9Lj?v+>O8U=2I^P+gK5@zO5JRRO>OA}jHNh3Tp!J76SKzaU zvdwO`iB12WjHhkd&z&{c~KlXI8XsOvyd71ph216dtJW zYIE@tTQKB!_Hc3G+_TU0&s>TRqHg_Xj_+s5@W6O)2LEg;$$y7l9L5~lt@1xdd{-p! z-~RRQO13dm|6RZzgWo7Rndyf9@N+2hD{hk7<8xN`)uIznDT@=1A-gEqO2|Sm; za|t|`z;g-wyCi`QbI|R9`=-B=MT2i#F>KSn9pikuivGF%-IqX|^3``oB3P_~pKQ5Y zFe6TwCe#IYf%)#hhv=SG8DY~d(XyUofxQ)Nhm-8WR$fm*`9n|avK??>BdIgKaISJk zTc&NCVg23*e>9n1YC@xngTFqyYBMUN5;h4aYwWOJ)C+}6wwZF6moM(%p5p5Y1>FQQ z32yBI{{Pu~zYy7y`_41Y$&;bnTiHQ!?)b@}yjuV$}u+}fe7H>pyp-Z&*0 z(`YpDBbtSTVIak2uxzk(!hu0a#02TZ0lhGsm_Rahwb%^e zAhP4Sa*N5-L$4Pr3KdJ*alat-v;{WFyKWrS45B>k@*g{^CsurVKV)1J2DJ46muH(V z#E`cIqn9~6=XMtZKXtxONN<`?3U=dUqSGkWfdvhZT zgl|9{eBn7>9%ecLd*r#P_>FLLhGUo?4@%VrK9ue%D%vc}=T%h@5@_S9_buqi3fE+F z@5<)b1<$J*xbxaOZDu*)^4uv};1zBTtgshk3=^mkp=%K>jffAMlOAt)qhQtV=uT$i z(-?WR=Hx_Y3modkw1ya+zU(yM*npCArwx2-yD~_U5_(1H9havNM^#LNNt;6Fw|i46 ziyrAmy;MFS$4D{eLx_A#%n!;5pUwlot)e;Sj@qB(7(0>@(r^9&dA72Nvz>7NhAu10p z1dkjRqQj*fKV=o$QGtNNW-3d-i3>%Zxgz-zMwHEvx9iJ%LDIc)lr;kg=ksZA&_lRt zhE{+~905eZ$hmK1&8*-(7tfnZ!Fd9_!l6Tq4v0SwhliaPk>>^P@~`~npcqKM=JqOsXk~!ZbHM6xf$!e^*xkFkyFbSP0$0Nqfb%c>^%t%VU1Ql4 z{wklQdRCZ&<-v0D%CEfi^&66agA8u!o#HjHTOSFufBN&EzkAp1$^BY72z^boa-IL5 z=Sc8{EeTddu%dGA*FOI7U&}u{us8Xayd-^tk1s9V>sy=tc?)3q8jzyxKC%0RbTe?v z@BDGGvlICEhCg|8Y zlQNw>u6Q4zz0|ZX#r#QQn%+8pF0`izbT*uxApBE@AAap0|MNdHN?KF@xqtC=|0l)a zGVJfC-TvpxuYEm*_T4K_AStbO15#_${m%1v%gs)~G$${Yk22@x zQ7_j!g%m75Hjz;TKRwTN*BzUC>tU;?TcCS$0;Q$LLONY2;hc+|0~>cDRuU~lvoW)% zE+)N0{ZbiA7KM8=acn_bGhKixK{QM8aV0AT!(o6j5dOIJB^usYq*Or$7gpp4z!Z==mI%9{G_0)@(2)v9a?M zgx+1&ao7Mou}Hz_$7gF&LMwAahJ=%_=_kQ~^!QfJ0s28seJvpG)m0r_oDL>q`Qem@ zhy&7L!4XBHtgKT;i}A?!d||(yPon|LBpK;jB1A)6RT{EMEM<#sAf~H9$0BlZPFaIz z!1H~gRKQQHdet%Hp$Z^I)QcM1p)f%?RA(U2Hyp$)Z}^@q{5|obraNlFG(sNOn3+1^ zr(oy_LnV0@sTBo017TSXHOcF&x zn37@&T4_W6sQd#eawR?B71GAzBpx@_VNo@`I-htYfuj7x^U>a-ec@NB^6n}luEKeW zu_*Ws>?9UFs`4RN`tpshE5%es1T{j{E<`1e%AiN~4r4gUz%l3~ho~sSfkd(9Hx-_K z9N=}{Tow?k9EMsLMvMb%Xp<89qKL%|ZABLy=cw(v)jFmNp9w;dzlI_E(=%mwp zo^w*%AP^9AaN>;mUr&kH^R6CyT12B$3CD!HL%w`maE4iZ%5ioKX834YbiVe%*Cu1l zT{A>q6N7`-2E$2S7aDnLQbf%=r~${B4J0`t{1lB01JaNP>l3)NX!)!acqU25Nd9KS+%;EwfaHZL}IVRfKmMGz}Q5HaUaJ-+Y+&0K@*f?kB$ zV*zT&I7!NbzdPba=$c;OMu4&yterYkH0X!%U~xpf=tu5TWgJ!WeAx5xbgoZ5_nC62 zibYh%q(`dZzj*&xC-I$q~sX4Q9VC(9H*Df=HtofNq#sSyQY|D1&J&uxf+`~m?}U)W+_ZJ zY255&!2Pets|6g@7|N4*4^DPmCzBzeCgu#4<@F#o~k7}Qd5A`ANx$70m{)`(&ohrgyasZMIToVwXDrVz`S`f?8aK_1W zx>IOCh<^CVmSc*p+=vf>&x$6W^1_U6Xm2VbQ)uMI%aI#jIwdj^tr2y${ufvoeaymD7+fu>DbL@ zMKOex++pOaG4P#s%$)41^;hne;ivlA zw$a_HWKVQt6=P>?S4}Kr%&7oIk?dOvO7K`a%I<8iq=?VW-^&Sq@69=bZMp9LKL#wn z9$zea?fm@p*Z1}g_V^-HPLJ36=bi1A@dxL-bcFZM-2Pb_lcatz zW%)OohiA1CU9kTA8J$R$#smsNfd3{*aO>9oZC;=T&OdYh8A*`F%8U`0#rIvwo7c;r z(LCsLvT){>47OGh*eL^l!-tK<;Xg0vzQWzvNEerXvwS^CNeL{!VB@pBgXf=joRp~i zq5gyAatBofkwwPkXF6T)#U-~yx3}}g>y*y&1K0li8@F%o9f+hWh5rkX{~^#UZzokL z-g5cX{eMOy+B={W_VuOirTgx8heJkOZ|v>{c)z$j`5>EodrED8 z|DcuRQ6$*Q8rl?J3OnG7VH%wuG>o+wwYOgcyRkh;^aOez{y7K9G>tI7}TWjbf0gM)$RtZ!1ehWx19~R zyt%)-+`nrz4&g7s3kT$ex~4CvH4H{M$H5e4CV1%x_JBUKo$hAB{Xhq1Y{A8Et0j%Y z2MOH6BzQAPz_ij+z1_1j-C&llV7$uDeW&2|QrG(?!EPGYf5koZ@vY?X{O*OXyCK1g z%uOvn^r7YX`Tp|m`T4i5)B~yR@Ba~#Sit#PCilVeuW0=H`~S5j(470d-}}AS-E#1K z=810ZxE)LQrhD01<368Z>m*q&chzCs0x|s1hdAkD-yy-p`He(+kCQEv1pS-m%&7q@ z2|j=K^GJXgq%s)nKf8bPC(2HOr|wz&Ju4)0-cN!pk<8;eR9U#rJ#TR{H(lWzt~Q+G zlz~DJDpcPQ{txB(!OQ^bby>d=IXP*hDqU~xd=A)&?w0d9XAjlnJQOH z2{8uLhm@)jbVf~rq4QKwq@Q7GGuM&U4{ZwwW~y_>D%h%0tXF<#EW}QYA3e;9Q*KqD zEo@ZVCZP~KK`H?CmJJdsITNdd?dnDHT{4Yy9dkQ;&8LQEmjT(HYop8(!XmHZpt{^p zTSiFY1|c^U?wp~7z8cnyLrcKmwQ)7&&0q=X(hO9MO>5vwa#KbL))ETUhbaRriiRHM zl#ynEI~CllSGXywixgVNcbq~jmCf?EDc%`_WO$4%`$n=hx&ld<6jkM?5he35xI`hP zXyvg|<$|4{Ra9v02`DQR{AL?bD%dtgi@~bRxk1K?DJWXKY~^L@srjpVDdt-cwtQE3 z-~^x{%DLRk?2Hw@cf7Tk{`JWZO7117RPSeiYGGFi#m~9g{ zf5Cszd+9;DCLlSV#kC)ocm84m8$F~Xjo*s#Ha(GfxFh-lk={tOxaDOI1D|>s7LuO( za`w%ijL2jp*QK9@4n!%w+kLwfQ=^CiUIkuFu}Qd~xHTd$N?{VU;-()e z+xi(ZGen(0X^q|Z6qD)Ts#a=j?4vuTmBeAw_x)~8q9{V&9}ywxrF26+K$1`4G-a1k zgK417Rg&2p7-Q?#C48VSH#UxA_3D_EcAD6B2dH#YAyd3~?I|?3zma}`LCwY9rYMWO$ z%J4l-d}L8qflO>uZZPj>vp)NIwPGeBmV8|aH(O3s*~U!R737q$*P`yg=j22Z$<&T- zm1OSXinMh=C#12#F1+w1e&tN-@>5^b!pU#oMXet&h9=1I=&;$&$F7)kT04RT>_X){ zHoE{d3@X^rDsaVgnn{8|riD&l7UVLvi4v=Ym5fMRG+Y^+_zc&A+nM&q_n{NDY=PXV zrQitb*d&o4S|XUr@0h}(jd)v!?PoMq-;!OnRBcbWj>;)9YERm*XDP*?k-0f`L8aN0 zLMH~zm8CtlW6rZ#(p9G+Yx9d@#`5`$%F}@gb}hQFN&GZ#O- zqlHyj>L7YPu{dFWK{cJ9u>M?Dd|*oIkL}e)X|1F(wU7o(<8mgtwGhsa?Uf5~$jI&h z7ND}s1*9x(;m{V#Elv&1Wf+w6ah9`)S(Y=_GKb>SaBV8Tjg@psAlwZy3Q!K_%W3s9 zr7vHW=^ip;NxCe{nhjWr({z^Jy6$*qWEwBtI_IeoS$R4s(VyD|uLh z%k%jp=WAiZF$u8VPa({QqoGxVsCrWRLZ5z@E@LllR8kMN?#ct%RpPdMI_mY0%At$Z zd^$h|i;A%ZIN@nCo)7Z|4d<+|d+Ne4Kf#W}G8S+LNQPP7!GL;zRt&1vc6x-OAD{dK z618eKEQiNzCa)&dkSbid&{1^pF4*a98Rw2D?ODdcG4|Ao4R&m)oly=%8D#ZfhJpck zSFrYUE=sAKPG|18oX>JT1^|5*w2CFi9o8GoPV0(~@r5r|4X66j7xpt_5okSfl2#Sn z)aa^qm67ljtT?qCZ?%+Z_iy#S#Hm`*Uvy~NUNii%JGguE?oAf(w7KrAqu*cNTWX!5 z^C$Z+uUH#+Yv-+dFVuW*X?gc9)(hJ)lJBBgB*7-#RT8lF#>a{tMS{n79=~_JzW(O^ z{`oo9^-a#5ds71CTk9wSxzE{N$y$z9lE?$QXIof4_0&@@9z09f!{C)yo_+j<>n~it zxAW|?-~Uff{mjGY6`s;hsYwFmR3dCiz+T4}_E!QufbEk{KKr=7xpZ&m#*P1b@kDlC z(sqyT#+qHXc9(3|`v@yH4Qq8D{i-@{?P_4VI#|QEJEeTR+gIN&6#k=TyJUB(e)p4v z{QsI(uCylieHFuU`Te_pxZcxg3wtV+OTgChSHHLX-YP_tY>ZyM{^aXVp5Hyc`%?df z7u@;7KO2VxAHVw_CBf7GG^SLtyI)*O@M2hUPknWj&Lu%s2wMhc9en4>9qkidzSQTO z`bUsp|KA?>ihfuGZOsT$JHvO6Ja_^*8H=pT74J3wmS*5_$djfx!2vwHf-Xmhq4M4 zoo+eZPXSwT2YSq^i{};8LhKxuY^8J&Vv7i{iS9BaoF!w4$)9jIkUQx+-543I3W+qG zS~hwQMy(;LV#yRtiQ&z~mQWabp1uKp7hgeM24;b&oO<(N03BW8R~e1Q^wMQz6e&fc z%!DWtjg~s}tJ$U4&l`pG=)s90<8AFrHArO=l1Iq{WAkYoqTG!cmobj8{#Q-N)cO?S z!VX2FbmXX&GiS^s*+dih0yn>+H{%7+923ZoTpl&B?eZn0Lr8&A8^jt@T-cgvST?Oi zC<+%-ob9>*aSM^oThL~$0qp9AD7}F=Brd{5d_a-1*=a8!H_QgNS3z6!jeyRX>O$uu zpDhH&jQI2e)Xz#oR4W#tTw$gR;Tk!vgjJ?CLWR@C>y)WqDgIUutkzcu>?sNMmGUZN zV1lWM3#!Nj1<;)(Uf$LWVkHPzYi+j0TB}~6L{DlyCtO|1KH7xX&A1;_*b6F2Lm45D zpZX~nN{rbRVUEm)kvku>+jz0p+?sLAccn*+ zTgW=chRq9$!4>rK8y{R?*)dCHMKxpNd`%%}pmKlE@WM4EpWdqnd~R)odh@c^ ztP^VjEngEf&V?)3bd7)wv{Avyj_e|BP6sg}p0{ez=g5sjb2^uwYmmi?pNQCA5F<8&1ijWV;{}1!BJ$E_jVKWIFs|T`uq42yQl>%6 zJod)EU>E5Mj6Y=PYRw^4BSVB?VK146VaS?1cVS#pGlWfY?TM2MQ2AC${qh8ajVSqN7VUKe+3D`OBeDIO)1taa* zyk=gBa=j|PQdErMm3T z*{E7`i#lWq4GAKVS6N#z5*8t%tHR`HcwFGfbAM788YA)-N1Q4JL1&wX1arp8N`4SM zW{EwI4gvgpW}iBb5Sj!QVbci7qxWN}2h-#6ar9-Gd*)oqRi!1Yi2W#1a$(Tf=4rSO zOpnVMcE;#`##_*C%G=-#RhO@D&mp2*Ft=h^)Yh0$0j4VBlEye#fbHdOI$Mz#=TOXV zb?>b{-tMSfQOI9CBQIm;*1q-39oyTBZDVVNR)&$Q1?19bTk^p{??h@8KAPBA`Ucn* z#tOe>oIBLpwdqMq7x#fTmV0M>-`Oqi?cQ5{`*WXJetP-o+t1&A{yyYC6nfp4zbg70 z``VaC$Db{OpSs1<^aJh#w{P9PbrtPZxNaxy{p_paygeK*Zt#SmmA@mPG0sIsXFJQ+ zhtFU8%45Iv?caLr+mC(wHt_uN`9~P{UF39se_RD!C4t-7UrFG0&zJg!_s~%q7hq!) zuJ>f?E_k)0w%b|T+0WhRHUE~!;&blj+0&arpGNI+bDdiU1Imv@~ubE#l1Io-h65ArGtb1LEqiozf@x%lHjG_<^IyW zO$qut{d%uH*z51zSAvpsbak+PM0ufxGIi-ev<<%X%I@4Ps7QbjJ3v|f>d{v<8`iu zS2uGTBkV(=UQ?(%!rJ@JyQ=yE&nYjE*6jYifNs4jMXrJwy{o9M0F`40p>u57sX7>D zlW(U-X|Hs(ud&6e9Ltqp#(RbHVm@TmZ^Y7bfR*019U(izV2vL_Ua#m=J?P@5nx(RD z3Z*;2wXP3qs?H_esm@;>Hgq&A+md3@?GYhdMb{~AhKvX};J}}B6H+|7{7GTOcoICrHNw~34kFeOoMzd1|12{bGq%6E z>@2cORn=Oxl+39I_K=eHJKO#uW9uMXszORZRSzzsf*kM(JWCjDc#G z4{!w0_s)ARQf$V@boeKs;AoAB_RgvfB*;1k_Pk%{jlV!WDSY9ngh`-85;iC^KRfBX z#God@Clw3670>9>Poxrf<3>WwCqg=fC!O`20>`2?@L7#*8o{>8gR#NFn2%X>gGR~g z$Q-K=mBk-h`)~zOn_0u@FE!D%s7cYSQ?Ze;(aRtRMi9w%nQ!U5d=}OURI7bd?A!AN z>OCq5qc*q#rK$D_I>DWbb+kK$p;rd0I4tZ=Tdphg%5gNE*REc9uW+#bu0~~=>4LM) zVJexMZ&0(^nNONL6k&2&hmoIoSNU3jqbPHu?2^~aA?u0{2I@e}FOXQXEh$^OKSc|T zQPnxRI2p1j+_4ijx_m~EZV+N1Th|pptShh`isaL6rb9>@?99Z}C5Za7O4Mshu#SBW z$MNnE9MQSYP9@6Kpc^J9U)`U8)bqhSA52FDEAaD% z8o6LF-Aux)sacRM^RiBg*eE|D8w7Vcuk+1%--Wa`Ygp`JX=-_uBu_!JrhT7##Z<3GZe$dP&NFAX%mH`Aaw~Xk9Xz+Locfk{*H(i{PzLv2n_cLGc+9Lv(n4m6=G*wI9M-5SbbpIa>Jv;&-zF3Yov00|L@ZI7;Vr$a_%2Vg1x_&1e{dzND^q*>-Fn@ z_jh`rsF+waS4A1U_`<>d@{`M*ZF$$en>XKN$MAzz7RBMkgBMo&2-k79T^wig?289C zS4fVP^N(@+c=qP5`{XBg9xTC!A0&Y|JiEK*yh>u*5np`q*=O55wviytI}FiDgm&jE z_Ip@6y9}FW(OwP}rrSHaKL181?5xhgVTbHq-{E)v;=^D430L3xe@OQUYklu&c67IR zI9y)Me0ZFzC~i`otd%|WRR8)HRdd-9{m}Y*6`vm-*GbSvg6m)W(Mv!ByO2Zey;h5O z^2wBo-Q5S(uOB|AT}-u+&YkQe!3UqbBtcghu6X{b-8$MWc1N|%blbOmb0=O4oy(pR z)_)Y!4mO+}YHeE}$(P)5fyT^j;|jT30uz6mSiaPMj21u}xf-I=Zxf_}23);~Y~9{@ zo?XoqA?gr!keh=w0cXix5KlQ&8rry`IDwx|14;2yk9p4Ho}MKkn;?pe=WIr(#@-hp zX=rZfZfu#eH^mhyF~v@4Xb_b~pJV!t%0J;b%J(xQ4m@0=$Eg?i8kdcyW2+gsjI%}> zE1c(wMp}GkY;f)B?I}nDm_NSG$mt|2%Wf>-fbGh}+C!5y9v( zd}|i+>gi$-#p4uCttO@uL(?^L1z1Grv#!K%(D#gEClZsBbMqAYfo9wY4d|y;oL{5E zBzaCXloy3v3Xh%3t5DhW>&UnUzezl0-JrlEDo~rb?V_W*!e&xUg1CuAJE3;Pu;%`+ z680^THy2uoLO>;mTzsnlsAPmrYi&)E)P3oev9YSmBJa&(6SLs;mJ>CEsGfMt5b)X< z4!!4QU>!MBR?R3SpFhuECK0 zT^xA%l#gtTfgH@hNE9?zqu3*=^ATl~fjxw4ja@?krH-&EJR^Cw6OL+XfiI?GaKi~J zx~UZ@Z9!)zA8#pYGdEGSRtJ#(FfFp+rcyX~lFt;U;?F)29rsDHt5Z~+U;x|>!dk7s&%eu&inzJVcl#}XAHv_ z#n{(O)|8LtvMq^Zk0R!W>Z;xVdHms`cX~wGYWUIJ0g^pBKJ?*`Q*EIS#1uBEmNA-U zM;-)Avvgt6 zXG1F|Z@aX9E&EuBp?Z)NBs)JU7HpiJ z%^SAgq6A}^g;Q77p>F1RP7RsYffrkgSwpkW+C;aL=tS7Yu6^V=y2y@LOxZ9Q^!sHM zYZN>?S%8eva3D%_1$l~LIEh1dXb9?$fTD;)-y0s5JrM%lOd0phd`rQx$GLXI#v!g6 z8T7U;H^N0Z@71~?meDJ1BpX{44i?V)!{`f_Ll4A0;ze3%pZgedT*3*|GYP674*?3n zO@r-_#cpznpvZ``$Y>I!XL`EMJvTfnPw~nY!#Rpya9^k!wx+AT@a8h_rLJjKX^PXM zfbEP;J7;ZYtm51mr!#9S8!1mFs}Zuh)9$tXB@3xsvfbl%+V@h4{I#uApJ{i}ZXqA; z`JLZc?tk~YU%952OqbvK*0?9O(6JN?#N zuYIG}`@jbt`<&ZlH}vh@=P8m;yW9JpUQ@h1SGPlU;6mEx%KfmRU6sy%v*eLWv&#=IpZxNdzq~3h?XkU@!$Yw-Zo;)IA*w z-2$&E|8Np;>aLPz_DSD7NRo6+&3^IOgWbEYY}U;b%MZS_k*|!$mPoX z=0l}e1$G^>HDWW&o=wrhYD~F|o8j?n!9^Vyxlxq#y2*+dM3cN_Vu9O6WnQQ(cD<31 z-*6Lr304{;M51U6ufd(%lc=eC9AHH^zo_p(@PP9VYd3U z8DDqvpcytRN3^49;Zqq7nn=J=Vecv8s(8PZ@m=Pj8e3k+i4c{0=X`%W7}J>@_p9-7 zkF`!1T6cRCG-`3K!Jhy*aVV#JkkZenMRS%ReRQP{w8kNa>zvHVmPQ712OhHpdgl|r zz%wO9NA=1qpm9eP9sk;X>LY1!e+>brE+E3dG}f#re3Up;G(}X2Xmt{(xf&%fmQPS~ zsi*|C3ND(npz3yfi_Q5=a$6V_{NAUD*_|5`j_(%DVw-1mKEd5rzna*Pv2((<;0kfe+CP539)VF?gb5lk&D0`}Vc{T2}^BIX@z$%i{WQ@^K zK`<6>PNiODa$V+pbVl@$T!iQpJ3+*0{$aztE;54TJFR&&EKgvWkDHDTMoc+aZZsg1 zuzadFQd{CMGX86EDR~H0`L*GKvKPH!giTPpxnda1=M!?GmrQA7C{s~z=pGD>&4~)* zm0xbOdWSU0!9iYSHki(M$DT+G#fc=j5Zrrg+!=P3Qd((4 zU=}f|$fQ@`#IK53ru-yl3=38v22rUf^`u%X+8NpAI*BO_O}(TTv?$ut2$q6mn)8xj zUtV_64@@t7xXW>S;|#??k&pVy?n?X^+Q?>;WQgM2kBwC<)n9>?BX)!lT8jOM&=Kc- z!D5tI=5@=^#EmsjWi`t-A{C6*XN8zT0OS-$*=SCuMloHoDb#$8(NVCP7FcCNHO$tn z#lxUVqxD*j(RyX0_*?HwwtHWPU&S!GsS`(gAGS*o+i$qn zPFBR+-r9S~b$$7F%X{~JVBefj;482E;0OEk-uIWUY^`W()pB!fjdQQgE-||g;^7jU zpTG517kPjG-aR`-YI#><`Bg9eQ6#vyK={GkCutrJ6Lk5(4}MT1w@w0$V03BJCcDFH zrO{S7JA{43qw^&DY6+;+{rj(s!$1bRz^;IA|tzeI;Oez&2MV2f_6=8N&mJzyYDS7HUs0K z&*OH?E=j>M_-TLx2UcNuLY8v1&S&K;$+;ozFR<=VaY_zfaMsp96p#5}l7dhgHdRW^X zQVzh&hzx$^2y_C*Lg3*q@MdnhLc-YXxeZ*k50|j=^RS2CHt1$u%rN3MUdiw%AUNyd zK#^S_N_~$tayxueo;8ggrE4GorM?3E2GPu-6)W0PNhskp0)eiSKS37@pG1(@35D57 z!B*kUxfZ|#p0!*wDwa6YO3`hk=G5C4tATg?aD{*`t#xaZmEtz^I#WhO!G&zN$3V=?Vh7Jbh!b~e|87pR;# z3b1{2-owCmxD;Y$P%2ckfMFsG%w=_Mh;)cxvFO=l@~Ogj?=zpV*y?gvM?H;AZr?;| z#fXh<5KUQ5Mh@d#DrTc)#p-E36s6afEJ@rD!1mrC`8)Hog z%~?Z*tXGtQIx;9`oMY-J%~{S6HrBCO(Q2x#i=Wp zk0GWiT?l^KAii^+m9da9dro<$|5@>k3voKg6%=E#riwn!^!?5{yN($T(dVA@)ge@=qw^1hrWwG}g># z#3iYif$O`>V{L%2D`;!P%AXvu^V_V|sEFS34OSH}bfK~vmiAaVtrjOU7Wf$r&jJK~ z0p3nM%PhIAG{ptzaGfn2kT*!rp*qP28MSz*x4%IP^wL2zS8LR4A*Mx~EU2K|g}KG4 zapV)(5z49;@Tc-x#S3y(j?ywam5XoykY0FKN<6sgxTTkcKo_&I5sK3UfPtz&KLu55ig^||`n{>asD_k7N+3f; z`C!JNeK8EPFt2n#6V+fwLe6K9Wt$REH$gRAYbe&vfQU4gRVi4=y6D9Yh5(jC$o1LL z*`Q%OPn@F#`L1lSN4$8wCinSA(EuV#u2zDwt z8^as6sG`cO!fB;4NbG+aqez?-~(yOcgJn0;r3&Xt!Un!<9~C9 zdwU;Q4W`e}@3)G(Vtb2c#=z}gyLM56Y(?_69jaL?XeD4>y5XKsYkit+l-;PDvGqrq zN~>(x+_3Qv&HtSL`R2d1yTGbJCYGzyrrMQm)4jy2XEbfx5%4F;Q!M9^)aralqLsSdJ|TZnX91vIJXklE-v*1%3;qUPk(Obc@!l z(c9&*$6juO_UYpB=#rU!g&tI5V<4MKYbOMDT@~H4#mk;wg!^^`MBTg1L(1-7qcx zX@-)H8`B@zOIk zSWIzBV`6#L4-t>G@D>g)WonY_DEhJe6sOnpeC5;(wca0dh>ED5QNevG*C<1>MmP4- zygGb_sgaijB>}5YW|IMf*1|oO-(wO>q52xpun3k%=dg{pt6(4W;UyR~MI@O0knFqD ztC$Sd=#=rfp5SUils{F!1l~H&iOHnJwX)!w3Pa+xYy*iwIP(x%KQT(!3-YY!*GR{v zhZZW?jdCs$=3(TYkc%wOaOqk@5=n|u7dWZRF+riim>8MD*s@qr*EF6RPO7es$5snI ztH&a$WdP=pV=!j84C6M*=sZ7Xmx2M3h~^M0-?}y}^;-+BafnRb_%`j(k|Zr!o+bs) zBhVV!j#)5^BFU6@4Xeg!$S9nsQqH8MLX$C`1WbKAQx)R@;FG{9VefMMKsCemu~FWu zoRP8*)84=b2G0EeHWajIt8#mQbRD z$v9E_UJ`xcLfdx8rJAj%B}5B3NwK8fau-sohOG|l`!z;rX+(*c3UgMO8VO@G zl^F>}A$uy_+Vos>Jma5Qf?K1B5c7rN@khLwT6jo&UwrKU^qT?e5i;U z)Q|wKwRY2OM_NPeT!gFxxlQyUNT6$B$#>DD@{I$?k?~oDT1Ap?7>|)@lt-)j3u=#U zhE+6iJp{;RQCUDASyBT6{b}QB-#V78=i@ zac%}uUZ=ohXY5NLlzN0l8e?Oskt=g`LTqZO#aOVpJ*F-V*^U1U2kX;H8oXf*PbhW+ zT0o*k9#n}8lavx@Y+eiCDYy%2DK@QO6cCUFBjelUoC{E)LqF=r<00Tq`bA*Yr>rcC zp{v%Ns#N@uT2O5;jw7D1Y*e5GF07$%5Oq$TiIwKEt5A+Pv71{`7s7L?M1WpZa!bC}gVONX4pH;Lmi$q{rNV+h@fE^5j`Ei!7C9Q!|eY%xwqYyXE16%~iQ}{&Tw=M>|HHa8-Bz9g#p&7Q4OOo+R4efB*YC$sTOqb^V)Fb@pJQM-0`MWH^@k5ve;e zBzPfxO|8Sc4LglwS+90Bvc=wOR9S=jnMPGRxP5Ger+30-|D^H%`KA+euMcIdQMfST z^td+?jJk7d*u3k_jr+OBKdiCyO?^Mhz6C{F2AEg)l5_XibzlX-aGo0W#(KQC=EGq3 z(#W}KQusIBw=RWU74vs*{O*mfe}^WumVg!__&ygB?Cz^Zp1fl+z`LPN3Lp}-I!k#Zx6P$r?)~jVRyIx9+FNHv;l+k9>FFV?srN8 zW814+?#;@cnk$)hOi>%s-FDS^EGkbGOiQ(ivLiB^p-u}iqXX>ptHDgL8@j85Se9Y3FB{+;wm?d%{;OqmoAu-ie(}+f+LlixkazLaJaB{DeWx>yGpSI=ZAWg~BY< zSb4jpTMY0EPZmw1F^|T`xyXb=%;F$IaKeHa?+|-YJ_7hhpt(dcm*ilTEnT&Vc8M&K zv)Lu=MY+h!w%)f0{Dt^if$OmT+PQY+-kWE%$XCy^$!6H?!XIH z?53F;9iKKT@M$x#l-JLWAEhAGg7Mg5R?+_R!w{POg1I0{hhqS8)Wg0Ea1^Y}6d8 z?KI#3MEeJU$VQGNK|bhD579@p(6bK>47$Pik5rHaAG?l}0$UfV#VqeFiWpTYnmu+g z?FRdi3gE)RXOo~bST$#AKa4{&K?0X?qY1XJOo2ag;M_HXUwVA{K8?;h|BpQ3cM~uT z{7?V-L5lbffBc}(cP8xie@IOaZa?#vEz54m>zaRkn;Ht1j)1-Fz>KyYrv}H#B8m5G}aB^8#XD}z&If=dQDhFYC8s^Y*TiSw%FJ@aPk#?{dqFHXn8j*)f z#I!L;N7vdN_saaD+=PJN9!*V)^_!vNE#GE{xx0nBO92-Uaiz#Xmc-eLX-ZB{q{x%0 z&0jG6@B~jVZS7aE^;PR6LDm8HCIEsU9J! zcHTu*ymgj4uFjSp6}4`EID`D^h3f~5QLb#I5tR+s^OBxzdi0dmvOvL}158I>V#ZZv zW5`%G<3Jb!e31tWw%)tw60~|qX;|YRiIjjA#m4N1H9`m~)0$@vA(9H%EUh<7h&h*n zEwW$aF4lSDy-r#x=0$x}=xC?4xZ3Sar#ZJ+77-(5W}T&Ap}sGxwqT$5r`@Y=S_X(s zORXu&f*rcU6Zm^P-8uyth@YuLTpl^K9En#o*YnUe1Cui(K$;@@ap{4%B&K z!`hT;=h!1FE2bPoT(bpuIy@cLvEfkaI@H8ERe9)zJNETbBt_Dj$IV6b30G(G`fo(6 zSQO$|j?se8d^R}tv*_In5m@k_Pi2`ZK?LW#$FHm1zdm$DU3uqguSJW94AJQN(tvGK zfD~NB52l4G+0)z?wezh{I8L-FvJ$3p3qdUuboUAz%2QdL&e@~OvF@kya6BEH4r)eC zb54I9drIBsimSaAi<7{NkjHm_V97{X6f`N(nyN|k>6OOlv zhx2%H5?L~5%HxQ%$|;^m{7Cno_`ZKUiUSYAfaB<{fC1YwiD4m8%QRyn1EH$nQAVIy z=_{+FQME9#fEj5iWjtc6J?qVnPW=hv=h5j2TS-p`#ZjCTD%$TAtyO$Oq$v2`Qf zRXz6e;~C3H^JYvd^0KL<+H9<*46fq*<=%0Rlc3A8H|vl3Rp{~gfr0ONsE^<^49C6NE#MVhT}5S}SH(_; z@aiC_YR%v%O4jX^j_Xkj^1{sPK`_nBqvy2lH6egOd=^T93dj0W2w)NlyZ{(WFFuI=hZSG<@wmHs2lAH;Pep3v<_; z>imiMyc`|Rc<9%MjYnL6;<;1JDK1K3LOWv3{>T;U1^JEvGKp{NW$h5qW^F;2idPMp zHK>5C9#vZHdmPHIy|;ksj;+y+lKsr+j)mW{FS=^&j^M9hnT`LMHAYy2#9_6|x8-x|F9!M&%AY1YoYH+rAB{h7~x?$)hapS$(B&%JhbzWnvu9MAK{8*hB(_RpP( z=&BWoO&*JzyStzI)HgnG?ay!D z{?wQ8t_QYyHmuOyg)s7&@EE_U__*j=QxutYHu5;K!c(se`ZnEB8g* zA0ZMCug4F*y5nm19PjQvL3?fA#3kH!x_aXc?SH-bi_7J!oD9ZGuS@BB`JImackt{w z7AVi%zSd^RC0e%khpD`40oJbb^UZIUs#w-xa$U3ky0l!SJ-}&yD*~wb8*~!Lv+J&} zC9u#3NpP1B$r_OvmnFEv?PQmm<{y9OzyCivIFC@XQ4%QNMalZN2-~8*=9h0_`Z&y3X-$@Bd-zC}F z4R&DnTVwUDy`MV`ozgEoiGxw+W^#we=E>3i64JXAirF3)+lI$B64Z)!8G=wee)QT3 zpl4>ov$cpW{Tz0>umrtiT{b6%iWdWn?G{pV?UBbE$+qBedrN35sWw!&xN;YAHJca@ zLJ#YjOJjCY^hSk0qL@f`5vS(@6e6$o912&sDJE|b1v)f(hzIYAiqU#dn5dO8O^Xb$ z1IZxEgxwF^W%S6~=mZB~jt-gtbXZO~eXY>1je zAR(0%&oxmLJOjL3OdhS5vgq>;J>>85s@f>^-VD~q8P8;R35tYw=qgVrKZ|1@P* z6ANg84)wsz83y}~oi(6oY3u7YK`>?AtqG$_deBkbCgd3X!tO%(E4}D?Y5~e)qMZs0 z6tV8tQal5|qp0@5YUQ}-TdDMrhUMs!%pdc{S_>#EYi8* zT2ix^Y|-+!SCt5^Kn!@#NSR?4=n472T)3I|nmU>a=IJwg|Xdg$s@ObW!g z0d~`Hne^p6{rM4@D&28Io(f6OePC!K3e*he$-0Mfu{fE}^7{0sVHo0TzoMIsCiR@% z@~z~2$*N#1Sg3Mrg4HDu8gL0B6^KN`NyLu)@L+5}z+G`2yHg`LIi8=!!{gIBI^+S= zxKO;qDDe7lJRYM?PP99O=^@24D60zU1l%HGaN|e>c&Z&RU<-Y{2kIkCbz`qxT??Ne zwl+s|xs%bNw_pO|aCCZV$*&m)V)YqtLVe7J;Mi;Wi>f&}ja1q!JI<6~;F68t={(_@ z7vt47hS`LQqe5sVv!GWOnxr6z6$KQa-5#eI^MJ==zPZz90iUrSC1`vJ*ZE5J8h1E` zMnmvCn+|y|f?CtDqll147)QNzlQ2N!(w!b1W{0zZCJv5aIL{!v0PXa&gk6Lz3n$ZK z-qCFs0PCQv78+M8J8CS-c4KLkdUge}r->W`t%l*Bp=@eNnBeneY7K{Ob~tAk-rmdG z2(p456{0s+k4C34j3%=q$tnm@EkbuZxKa>SVQB=MQq^Pjravi}>KRk?xi3A#aB5r9 z+Uk|)aXpUgh%O@YNs+)Rj)vo?$Mp(4RS+1R3`e~<9<$d5+s;&*k`Jrt1Idt6`jIuq zajC)&QRkTvJUgn<3eS?YZsl6}cp`fnt@B(cYM#|T>t&NwFr)xaS zLAN6}`3P#?n6(&pgoR?V9=&gm_uFub4Chmp1AAIn~p@hnmrya?fF;bmXXmED#6Z`wiPb7(6J-Bf}Z_ff9 zmxlYDbn*W8fBi|$s$!FAf}RG%-_OtF>py;@{=?-T{^4Es5`(`7f=TcfNU(zh?h}dj zr++%_-CW1~6`=J+HWx$$cyV|4>reJ}IU=Y9lVF*S-I4^oWv}YH0NQGTiZdt9jVO#TgED7{=B z9B{<&3cAoQ0-gJ%m-he2Dpkv1x%}I|?ZVJb)4A{cpp(F)d4o76fx_Q-V}Jjj0Ud2? zCkejt6fqAD4!*M7;853V+PdEVBkklpONBxH{x;RLRh|>=b?t%`EYB=Qnp8+3$$Vvh zCD0}sH@)s+d9d92EK<9QV3Z&G7@^BEcLVr!_l$eFZ4a+7WZz`9Ey2OTW|-WYa{}98 z+z652#aBPNgv5z@UxJnW@M0ok-d-no2-6>a*;`DtR7i?a|;AYc0)^udr=Vvs# z7mTW-O;N^X&ES>cnsMXLoaY0VM=r-7x)cZ(jKT6Nd~w2ULYOFH8?strsZ&gk(Sjsy z3#$iY4@50wkO4$E>lGj-pC|I`C6mh_*47olobzNsj!hs<2T9sds(?Jo1Y&zx4$^Z^ zXrL&S@m53}cx@5L21@Y4PhM!(%De02WvmRA&JW4a8xSKNDHF1gW~>RprPm|9g$=OP zV`xVWbbl?E#xjfQ`c9)#YN1izSntBZFp4sRR~t?U(ZP)AsLRbKPhrl^Z4S*yvpfhC2@FW_&ocxfX_ zHQiVik^1}&2Od!fBhKN3eHW&M!?6k-uns+%UO)Wh7L>k06$5&Vcq-2FA*LH64r@mW z7tp0EYJ7yiiD@YkK^+|^W%85Qhx z3Auoy=NE9hX=La@p|e|}EBD}Lz2HJp#VX0b;!PM^dMN%BUVUFU8gCi}taU~Kt|BP~ z8#!i24Z@iay=h^BunA4L#;DCLKVcIH8LZ9*tndW~40<)^-{k$81ReRd^7GV^=}|R} zCv(r!4?s8rOTB45Eq10|JyYpsLF|4;!nzpL_gT3ToOTiPh%JwjcAR&RsjNm*;%Z2* zESIs?m#W60s1@1Ir2IU!=ym47ssbCR=&btTYm#Pl)H*yFD-lLQx&xuv(6*kS=@dwj zk;B3W5G2ZcPAxWn-Qv}rfymEbnk+MCYj;j8ZpVm1Jd2^Q(STL&m0wHvm2#;dWnMk& z9$OFQVS$orH$7Q^qKY+HM(13&A^LZdNx@LZlOyufiX#p!Flk}DPTFKM_1G~wU>w>y zE3-A<1lY_9X3w8Wil}iKgPeNNE00SynWWF+@O%-(IFqKA@#U;YX3WLM6>N+=exJW#_6_1VRafeOdAK05zyMB6X0l9~FEBFsgPuHWd;j z8S^lhETiWvFhrpV7NmEIWGBBPVNdDT+6r)-LE)8TQ!@`z*Dec5eeBWSgVAe;o0Kh4N2~}MGvB%JH6@~aO<{L55-y&R)J-s}JZb#*J%&y*-SnxI}P`av+ceg`aISs{XHNa!>rebARP{v-bBaLZcSz+@3tO^JY86OZTJ1!Eq}nMB)DN+sPVF=+TLE|W6=n@h6^%V>;mz+n`xkNx9tULG6vTg2JGcV2bZ~a| z@BjUB_obH--7Bx$y*s&kaKKWzB6sogH0C@w@Go}!7;7KMEeYQG-b;Ve;Uz)9(@M~x zA7C$$V7Havqnx^)B+z`)T7t8)rC#FYYg20pI+g*)=RU`b*}XKwb&g-_@b<3n^74FJ z7jJD#n+*5QmuKJnrm*sU{p)YOxhcV#ddn5%lkx3un*>T+TMTRt!6Xpkp}^D;1u6+r zT}6Ob`A+#mCE#Ap>|Y` zwcHF}^1d8HOz*0`_wvz`jAS(OLq))_5bwy(nF>IezYt~%jK;8pq~xbDfSo90$^~9# zkdN_2oKBVCq%Qg-*G!{2!qdp8KThc_`YD)r5@%6zDslB99T<9|Q0gqqG*6(ehKd0S zEDgWW0Au6(R_G1(m1Ds z21zGK#sC-58Yv4u*u$xnL0#BLTlqBcE&oIgCIfR=j`H;&On9s)_gZ+#xRN&)OMKH= zHo{SfFcF~8&VMqExB-z$dfOFgYz%Gq z46^JQVZ^MOpFq&>A2E{w3zMHEFzjLG8%I}KF%>Hd6{j^M%u{)C<0q9~1fXiN{z2N###|vDx>g(_$Z^0=@2@$5pboJW*vb-q0ZH2 zI-hEVd4lwSNNZ4Ir8-NP1X4w#3yubelzZ>I=i4pwlX6jKkE%hjXdf+5o1S%cU%<%~u}pPMYs+sRf;UGp$R7}+3}R^%h^yv~EC;w)U}OG5cC!M-eknIK6&v0-1{g3J*+ z3=5_#ImTPJXj8e%lTC3@G>bI3L{Y$tvSKBA-fN~LuhXfHju+xLQ!+iq?Z}GPc4F}P zY!-jTOMF!iG#pO#fe2&hBppWWNJxNM-AmLV;9*gbHT_ zvEK)eznu(JI9}_MH6`;lS?xo?L#uMqnXbl7%|ZLrX7%}CP_EMo6ol>1O0Q4-;Tl4 z_`XZs>@Eb-_qu1?ol0-k0_MkR!_&TX1?=qH{XENgtWm3fEldYObZ$ER%P)WL%UW(U zc;%J1-g^1vS6}V?+crJsbNbuFzRRUv_bad9#;)H4PuL!#RE595)?XwrIKQ{QF^3?I zn-b^@+wxb-U+q$Q^2r-FVmv(T{1@!BbC%J{T?LR5^PwvVB#}u#(DmzxV`I_f&a=;6 z)WN3z=FR>6ufPB6t5d6%d?{%8q2-5^z-7=#Nn3DCa>8}?P5duZ8krD6I^lQUp?>u2PDYo{`?>CAw@B=TKjTXx{-+Z%QFJGeM01kJyoeU4z z51qc?WHB(VUvC&QcD`iy+%GKe)_3{-@b(vo-+04wMiuw7m`B-?p#NsSUvs{+!4ECL z>#rvUYx84ERrgnbHBP1R|FZYCp^|Oqo!{EK_P(yVYUxy&*2o_;@+#+o8z+N1Gm%F! zNA9(+9S~%Udcd6_M&|ZqhC2idnlJVk##eWBoqe1-CXhOWF$gluJ~oD-Gx!chpM>1n zH9g9U9gvt1^dS&C*kBWV@FCZdoI7n*e*b6fUA3#u>6dHCNg#Tv_Ii2Nv(|dn>t4@# z+x}axIH!XN26Fq#hWpZho-UboYwtaNsFUD>G*9o|yf>tHmYHti!GHmGgRCEa7dUuU zocnGyeWqTEh4XaTqmnlm=hf`(NEe(jUi19s^r*NqWt`q<7!ByQdnkGX-T+m4fj9L! zW#>1#*by+Dz9mg230Hz0eoN3B`lzxV5zXLx>vei!a_15WKW?pN@;m$1;XN2Mwp#7e zH&}_sV8;M#M^HtStgF8YLu7UEycc;X+e4RXf(+IHq&4h%fH5NjByH4_s;Lf*4fbKr zu4s!QlQK;&{-&dD_^=JL1+Ewsb5wEVt!R@3ORc~I@7F8gcbJ8R)1@`CfDfngVIa=B zg(C+^%nJ53UYuGUNM357QgzheRu5f8%<>?Nfd=y_g1yubK`X=%8I=qh{8viNrruY1QM1Ei#U2%erxViF&-d`*DDygB$d7q2&6V1& zEGXgMm`M163QOLssL>1qCBv*IxzPIfX0~(W2*=MuhRc>fL|J2q%z4=obUS*?Vj-pQ z%uZta=0(T=k{_ypto$o2TjJctzWWmHO(umbLV|eExD2(0t|V!g}60o?l7cM z=yAP(n}}#;y~9?g$`PL6)C>XBDw3znXwt?Im#WxhGcJHoDrqZi+D_-&+^#6jda!!m;UbKgpnnpy?C+fR=}T zBc}{nYOcrBs&T9BB5zHZu$cNnJ;Dj_#7;-+&YSfJ zvC8qF8SN$IKRK>WbjyJiB_WfgkyJ(iN-cg1(Z;Hrg)Xh8X#tJDehhFM!zh4MFUD7pQaR^Is z4XFJo3WH^~XbXy>WsbN2(`L(NJX?gV1Y310+FbY`NjFKj?EQWz$kN&7PU(w%i zm#@A`X1pN$Qg&1#M zOMB;9>s-7X(Fa(6Aq?0TDX#dlIRc|PQ4N~wK%(urDc~Dbr7flbCC!x1I zL)S~W18w%+jby8Vxnn#e!fi5=HN8=%iwHCNJqwa+^v|LxwlBkHQ4QUAn{xuICR5Tc zl|+)=Ya^7(6MCVjh@weuE2BvEv~)oxlYPB==L~i3ir#|W&94j7P$DkO$BlfA+cKMr z5!)<1Y8kF%Rz6Ivmo?K0wesBabmg^F(F>=X^esy7a%I$z@>&$IlC}*n1nKq$VA)^e&>1DAR!3CreWEp#?fE#|9yDnMtZ;I9fdMVuZN8Co2oT z@N9R`#)2^`p}=BBY0MeicXK(QIz}bCcLhy=nTYrEC1H{pdkbX{(<&7yU4kt<0^mre zEwV=XDXz6wu`%YXdT)!VBIqI!GH66v@B!QexWHEKJF98pza}A8yMpg~uE-jcU-12; zO4}_&8KlgYvxYok?VFD~k7ordT`NB8+`wbtB0e&Gn%N4si2Fh!bn_jAi#)-kFxd{F zB9s8KW5Xu{q7*Hp&qtg`8mp5*?6vJfP4V*twPS6 z6)je6Ct(E~!Hz8oE$gerv}J*mN|zT!dp;e9)ndH}b5|@DSw?1bvV=k!LMLCg;1V8T_q8% zrhraqQw#D9>#3$-F5G!@qU?7dzS?B>Bj8B(rMp%^NQ*ChRcADWnfV``S9LO4AuNrgb zg{(@-R|X1?vgPzuo(CEljd2nRiQRr$*m|}1d~QBJX-{oFw7U)}lh*^tXiOxqB|Xz? zS?uV$wk)j+23h*9yNi_0Tj}Lax8Ba)QZIEKyvf>&>VZk`i-X8zeb7tokX#+@4m|AK zzuIFTZvK~+#jTe&oBx<~*Q5U=>5tc){$Ff1-*?2i?WTRwvU>YGXd1hv>+*SY`|iL0 z6*zcpv-t&az^Ps7kAJVzIqdqQN64?6#iPaEYTxncQ`0~f-4rzaVQ+OKXKK|$fM>gj~ZrnWPt4aH=z3t)V_yy`}qJH`1hip$u zdz-U9fKI>8{_@ewHXE|}K}oJp<-i>?N(^L()%{PE@yIY1S=yu9`2 z&!c})_ilgp(dPLa{60r0zOdPh-lxfq?*<1OyYDV>@S^%+L=mUUn^AWJWfSWDmVC-}Afh^&K!FtIfBpF(u%GOKlj(0ve7KAs5Rdmru?{c%^<~8VJ>mPPK;13eE zAmRG$V#g?`71tG5fYFl++FZsI@p-5d^jzjFM+p5-=C-^GGn`w6|%gR|#iVkLwSfxsj!6K-J zrdpafwVV{Y2CN}Uyqa+Gm}GGkctZDT;L0HLUV<^uD zk)~Wx7I2@eO5E8+ZPOuLw$j)FSfX2~l2FF!8>QgL0|Fdd6rn#tJ42i@Hz~nIhOB~= zA~T}I-XMKRoOy(|STH>#7727^T2hGEz~hlhnkWV#Zo@YDGq8n|5q8lkdVrJ3sI9GO zqBGc2l@4H9Trd|aYVLX_(X@@p&)jt-T35Bg0FvH1U(jr|yS=JCRl*fkPa2WfI1)WN zmX5rYc#E};&Z7a|)J};z%UZNHwdGw{=H`&p9gStHCEZ+na;YqlDzbS4>%p*%@+neS zB4;mwu*%P@;R#|7X$*Upk(fMru!!UwcxFs}4r-QHVmJ>@l&TpD4OZKtSZ2z>`S!Y*JR{0`Zh&)2ZbF%K4 zG72O>MO9vXKk(wrJ2-M^jiEf_gp1=0q2aqI%-o`HM8&7UrUb3y$;Lm`aTW|Wyt(y0~ z5B1GwC9CXUbHpa*%f}t!Ti^QDUl|AAjeFI1d=E{}T6-VTU1xq{bLY+v|L`CGG54~+ z(Yx>G(9zLHKBBd6mBV#FulA?c;a?Q@#v8}SKm5b5yu!`wUCF%R-uUL8Z`}?53=W{( zm1%!wd@q2Vg_ZITINkh)z--vp-QQ;IUH1NKzX`*+b@vi3TAjCfgb&`|-nVWZS%d!x z-Aadh*=DY6y0!Ps<)=SA8lC)CM)VZrupL|>i-(xce}3}~;U4bYx1Okuj{esFG%T|t z_vug5tNxdVVGQkD0JqDtp~F+npZ`2*1>oRHP59a0{Mp~UCcM5`T^r_e^8jDhPaQpc z_%HuuA7tzd%-S8@yZ4)WJL}u_PyVE*yH0<89@riD*Lm%}Rv@Rhx|}@v;iIEp1A20A z+2wg#Gk|u*sO9Co%)O2Fa)+*$0D72t`?2K3;LhU!US5o5VX8(90IwXqE|Lpxh_2@s z7TCQ9geVO+P(m`}y>gv-;5slWf&`=3n@q2G2S$AJY9g-6&7stIRIe(5>{sC2#e~CA zrf7rfrb}YPp1em5eLQHdvr$?x3HG0EWhmv?yf&tiNA~J)j|Ncw|Y{ zdD&SmtyDQ!vRh*n!}Geyv%)i8WMSWH3&Vm@ZrRKN17N=>76lx8?~$3pEV#O^1Dtnj z?;)j=pn%3ya+PAyH+H(g85{tmr7bpR#D38^Dc6k~#^RGI^Z6VO&q3*HJb^@$ZCRO( zkgjybe3q$5IN;(TS@E>cFI>PRXe=l*GCT|sQ>v-~)2J!%!c_pdW_XalQf{_fuDj&Y zDb|iM*90whF)X}F9H`zaQerif>gqcYrqHgLK2#bt~W7|MmD;^SQSGF0MFfI9v{}ACYp1~FC+0^ugBIFZNk2xtahFapv)6y$TDrgD< zD?F)y5m#Xdbi5obD3~T#kIwTl5B%yP^Q8}=aDXY4i_BXf;?(=$N`;Eb_>2^!dLzeG zKB;tTJ&Bvt<3)ekVpg2`d|ZT?Cqy>Swt-I07c1m2rJggztig&2!d*@SxqIpkAZtwc z++n#?3`=G_?Xb$bW@zoq7p%3Hm@i;k*%K2!hS7Y);^wGzF@lWnl?Mlxg`WoXFIxz+ z)jSqkD~6RymRf9mt7=MulG?eGta>a*6XxgRQDEsCL4F$P`d2PcJaln$32VR{9*Fvc zr}4H0pzu_QEktgi&n;3z717ghs%ea)X&KjXOV=9$=}}^PXfoX#dgj?>L$^!=5!2^z zK|<^E5M0wv7c^L3x}q6t7l^X6>u@ZPz}kJby66Msju~nIpDD|8w{F+N+{vL~YLdXI zkUf1-_;EhT1KoSUZRSNI5j&>~4B4_M+u#FtN94qIYBig2rTLCH)r3u8}VH9lmu+q&qkA@%m_EcXk}Q*2>NvBj9-K_`t@ zNq@2W4D#`L|4hG)9KY-C}7~Y18%PoMIXYV$CI|NstG;l^d7&tJbt+N?Y8A= zrQ`nAxOce={TTR@Ke_dFcY_~$Wf^sEIKcg|_xE(&Bn0G(uYcXYm~3bqD7?$dN1a^4 zZiLOo`YMrUW|h*`wD54l>3eHD_>!a|MulwNi@1+ z{mnP4YUKXSzmfaqLz@rX1Z2JnmwOj!DIrNJdhPC=+gGXgFv@uFdX^=v`J~x_9sS95mdP{$(WIrvGvn`_!$+ zlbzbTT`7OveOz|;y34-2|B88?wj-IjgAaxzGt&w_-s%n6fyvJ7^pQ@CO^?5Kv^oC6 zKjd{Vfa9M?yUxkm%O3sc(MLXV`?qi3)~WQ%<9`0AcOB}R8{BEIVVX(%5Dr%9DVw*3 zv@&x7|JeKMIdBhmTPZ&O`I|Ry13Hz?g#tr~_+|1yxzoWruB!Bnvg(F{xfE4|I#$flR(}y0>6g_=NEAVe|IQn|OZMG{cylW`?sp z4mKNc;0`#bD&>LZ&<;4@b7yb&w*_=jXb$HJ2O)&(IN*ileCg@aTAV$DqJo~AX;Uw& zdOEx0YUU&F8CUa)_KfU&firpmag8s`S3oFRQt4bI>`C0~JJitOJ^mxV&~^y4iO86C zEi;b+M)XS2NO}i5GcV7lfd&y3@0aARl`VeQiacRL()LvHgI6n$Vyufek7o2rj}1#Y zzk^05|CN*kb#EBzacH^5EKg(BXvgK)*KrYjY@!BB^V6dCMC{Jb;?fo4)k67@+PB1@ zG|I^-2H~_AW5e~%PMI0hyo<&66!~Szy=BmjLUJ-ZT@C>S1oS>Pkw@Cy7>vZHRN*m& zuZSzm(6`Rs_&5m|n<)$}BM9b36)~-~{M_aavu`tot16GYDq`WU)_4GOwKnF`xO$Y#BS|tjEz4R$w_{JOpIJG z(Gxjj+vF6vZsB5Gw&jChTKh!EX&PVIfM?~4Vj=&8Kst27T#t=kgd4fkIX5_qsWI$8 z>=n~e{@huyBJ~Wy9nr2y4mMXz*#XVgNT}L^Y=!9wg1VC10SyL6obixV@^(UOo!>VxZ^cOrG>GZFh;7C**>(Yb7SH6vC8sB_%6Cs46z9`#7zMjSK^74U%I! z7a4rG46P}fqCt1+N#@KI5#=&PG|8eIb|CsKh-O}oizs~}Rk=fPvpQ!M(qAa1f`A27 z8yrfHk)%m;dF!Gw9QjEtz%|`Cw;y|JAy}}Dm>kN?tLj37%Zl_bMqVNEIby3k5#wwg z$+-gI*raCKH&P0`1&^O43|*)d3A|8&P*|m2%~m76^$l&uGEQ9{BtA$;rsfeB@(Kg> z1cykFQEKbj6P3N)EjCq8V%|KY06q^vhgV=Wr`2WoXsJ+Fi^WAVE0(&&5ieF9+ng}l zUG3Af$_Lp< zZBXEFGKw%Ts@?g>7flo85^$q@%&Sb5;*J$R**b`{_E@duBDd&r`tuMS)-m)*Yp0={ ztii-O7OD<#pqm(!YkhAob6_cwj$pF#T)S2>54Xa)XgH3}zV>d)Gjl~?_Nmo1>{|$Q z9Ne$o5&(MJPO}C~%hbtARXZE4!uhgAN~B{9b?a4g&R4jpsvE#EKy+CJCoRX5v#eM* z3)iSt)TgePOq&ZMfr=2kZ;1ff4%Tjg__yw@R(0i?XROoC*4%7&LO-iZG8OF;Z#pi1U;S)xrBy4-%lLXgB5g;v!kb%%3~5li!YmGd>izss567o~!6^;5p}R`Kdq0ya#+Mk+&BISc1>F&W$%~EafBpcccWAbIw7T*1@Eu z;!!wQ>D*9DUD(bmg}Vz05j_+Y35FJjohG6P|y1ftC1;wC$IA;=+uhppzgoVqQ zM$u;-d!P<5uA2HC2RdE?s9+tXL*cSl#lwNZTb{dhwY;eF;=Ik8avbVroSmJ8RW_=+ z^=iC-RbC%-vNNv6h<6jsEHQB=ajShS1vj z6Xc!^yLR-QYsG&(<@2#m;edVGy1DEx3mn98uAcwOf&Y4*8z%as51jjz?p_}_U2A;x z@n<(Gh0lIg>w`x}pZ)A-$%CC7d99}_$m2IQ-+bkjmtN92??XpTtvhX4e;PbE{vDk} ze)U!P7B5tZ_>V51Mt(j1_zm}xIJnOB2iy<916;iB`a9rEN4Dyb9b7V8cR$nH2D)+ZCuz=T7akl8Xr5-=Z!4)3G@~K< z8#f-4wgCsX^}2(DqOjo9!Fzs^-VqYj*6Dh)=)f(@LTX3XNw#J)rS$gl^wC8N0%W#x z?M+c{48wbbX$e}5FnG6D zYCb>(jcA9kG@2xj$v9oqTOJEcdgOygIgl5U(w+&?Tw^Vbg_G8-WURs{I*T+9Ymx^T z9+Sxv#8XH}REdk?kVMX9UbsqbZ}r3?_L;2UC0j{X@TK?c<(Sp4J}&8uMCDP;11!k^u{E33 zo-|?sS@ZQTISOEMK8*#2$~cOKO^OZO8c#-yYu063h_cRkEMckQ;Y#3vkG)bc+HukC zMx+}A!h{qF=5xYpWNKhL_!H+m=lD2QyD}jXJkhsGO=&9oiNSGEG+rVJkLZj&ldi#{ zpfT0*FQhC{7WEMFP_tsH)s|^JD_7v<>=zyt@R>(VFvktqLO{{bde{QsRigS$ok#Wj z1O>FkES0kh{9Iy6ORS94Do?U801Xc@28v*E;Z@=bFiK`dLTTg|IM*FY1kh37wba;GOt$?&xl~#d6=E13J;P1r@eN7~Nfh2aY8o`?@ zf~4j;xH6PTJJWHIVw@`7eGRax*84-(L{dz7VT`tNJDo0|Tb4C9Keg4YI8POpHS@e- zb&8|ZZs9py9(5(SVC^%Q;sH=5zR5JQuNz7tV-v(_#6izqCP3r5?gSTazLleDT}v>_ zac(<9@abVw;0r>emgzT-l&|Ciov+u{5bq049Qy_gx#a!CL zwBUt^E2%&`siSo4(tSY^vUxGdCq8J)gQi(eLmO7Esas9Pfyoppv<~)>aY%v^%ckx& z?X78SUYj(etIU>fk}m|O-3$c>3~WX zy_>H}@A8u#S&YV^gug2=B_!35k|)SDN}&zMiJ2y>LE~m-IZ(Em7?ii@@<_M9mK{F| z5P(3{wiz!E0nKhVn1cmu!}*pWL-h(2cvd-ALdEWZDU6X#%FLtm$Vm6ltY*^{rQXsi zR;qg$KG51Afm0{0N;)bGYje`%Y)zR`R4JiQ4?%@ruUc(vagdS(U831060eXKAZ-H+ z1&%WxKReB)tEO;a!9BT6{fh6|>%H3wF<;0PA6J@Izh146K z=0wl>`W4{3da;M>-rH0~!^f00A~6$JCst)M)}qG=vAQgnZ}}?`pgrK8V4AJYXMxp}2a=`ltMY!;Tsk}Z z$&u3Uy9eFMc%r*2Ez$J>?etfZoPW2cu#j-JkX#p1ttnm-?cDvB2GaZgF#5e+K#~p_ z^J>`_IKF*+M|Ms_Z+`u^e*L$GbO&b6O1sUiTMzjST`o6Yu+{2I7rE{GoyWbKM*ok= z8-wwvo22MnT@_<88wYkb`=xsx2l%*#19$YRzpAhaoHWO&DZ@;xUtvT z`rmH<8&T`&>clXhkWPkMN z^4%dms>ko)&(teig*!*L-Epc!=J@6E%X|R+>Ws)$pF_;uyT4_v=;qDKT`9ObbjUjn z9zA-y{KJD?01D%+UwG>m9&%w?AKqI(`OD$mcL&AYJG^&&?Xnv$@4Vf-`F82)es`E; z`Vs#l-rc>ol?w%GgftRe}Jb&Wnfz_y7L7gTFQ^5^^eU*n0 z4-s3tcEAZdZ57FdaHkSEy~5{-t2iF<{)WpnchV@^3X-y{$U0!f6L>t&5cKj-(DS0i zJ{w3~tpOvWafB2LA5STyK&%p?7ez6LU(a3%>{=^hriJ`4CNlI?u6n`lKujiR&_uP+ zqjBUYjFxj(u|2*7Uq~PXFjhDQjOy~V%IVRq!4@%VT319xs`&)v2gTuRG$&-@2g3l^ zKG3R97mQL^GD1!Yx6indU;QrfE*(@FGN33TWRYLs!M=z!Hfr*?ar_E!&J-GO5+&v^ zriF0_Mg_c3VdB<9NCvTF9#tdd8oQrwy+l@pR(S31VGl+n*3NmH&jQZ+6(tdP1(usC zlOqhph`52tW3G855QMH^Ml0V&MW@-0+GQkydWJuJzStq21r@u;(L*!#PJ83$in$)q zHoSgk1cy%NHHsBu2^v(k_K6dYzPqxfmv*ZFH({*lgfz~E0Ld; z;3L^Xd8JG=iB^pMXU5n5HHw(!J@m9y$Y?Lc<=Sa>&k_qAe9&72Hv)=d01O1gEr1{HX{Tamby6OOdfEfaxM9VxOja$S9{m2otL1y*TdCNE7ndxfisB;8r zJ|9inUl!}u&D|M2KVoJ!ZpR!v4s1hi@E3Rl>z1!uF&JN4Pmu{_3hF85N$ZO&Z}ZWb z+Y`77u38s!$L@r(^(+E%PNoC;Ko!neps0|cN%hDxUoxc%FK5gM1{bZuvZp1^m(hpb zqthB^LDS-UR~MAFg_vBe@DY^6Y!uzHJZ+lwNj#mGr=toy=mde>CSN#1a7Kk}i?~?e zaKZQHBS{=B!-~cNg`15|=$I!27E7!KlFer&Y_Lrn<*Y;RG-{Mf!XaX0EJu+^3(roU zzz-o2khI&L=ZMekwB;D|Iu9K1L3&$_*Hb3)vT@nACXyn?hUI!rhSNrZ`~vf~31@um zthSlV_B>&?Dzih(LM>aaADoU?Bc@gI$w_rW>vGHUeAyz4ryi2yD~q-*rgOGEtc$#1 z7sQecLM>Al`Dl#5wp2A*wv1BO=Wv%RYsr3>Wq!G=Sn;NAF4Fv`+5xE&&^XA#v1by7 z3EAnKeK{9(HlF(RnlEBZxy_i(OMm}ZF6I>p7`$W3hb3E`{M5opc#9Xzn zuy=Mr$2hBDIjE0{?7N<7`;XPJWjUQhz7d8Ostk~=Pg&sxxt^Wl9io1RO;=M0c|i`k z(|mm9SF?C>F)vQ}2zt~E<%vR2Fa(!1q2Y!$B5F>EdO>Z`UZs}#6qA~>cA{NZYcMVC zFUXHPvghGUJ0FU5HfO6uy$w;00;aIIz)h!vW_~&;iuS@^OwQ_2>*)Myx&Znl35^eu z#QSQ})2--ysmvuAx^n%!>~gmi?<)CAKJA|Mm-S`w-o6ddLdM7U<0PNopF;fP%b!ek z&|KK0~gMTO~eoM~`N4krBhtUf8 zfMVD*%M}T2yha9~3o8cAOR+j$zEA|)BnqPMV z{a1B6x~*4(|G0Ww>=S#@ZqIzvRZUuYj%kIouG8Vn1AJKn9nA+YPtv@8_xsv^=1TOJ z+&}Z^{u6{?cHv>dKr7w1*l+$JfN$$4v!*T+AL!B@RKPca?J?f zLv5pj&>NC&eT5m*=x6I18D1VjMT4-&du|eez1TWhNHkOu5Vxkq8I53(AhCJ*g{>{Z72A=e*pBRB!%in6gynF$ZxpYCWpuh^87C zT1K3DP^d$&g7D7I{ahaaC;G?;ouS=aLz}?J1V{0*8Z&|yuph8$MCihF=}}r2r$`DK z$<}j~OIzr;+6fohh;LGuhb{$JfkPh1qsVCH+|78RE5lMLK3$%Ylc$w-8z6Y{E+#aw zP*70>R`}(3x!|JVW{g*jP9<4Ib9S9xSq_3~5;`PJs)r^ss|riWHL!UGOlcbyk#9o; zY0S5x>zpO3$|(6(cl0WtqD!I|-4)nRf8QDt3nESpYHSQIugJduUVrogcMI(3NsyiH#d$qghl_lUX7#B_5bqS%9+!=d!cZGF*97po~3TeVfD?T~!% zI?tlTG(uYnw_P3P4jvNOh$e^E~;ua_bb+^*DTf2-7N9Jbr@3>hTe78 zryzG;Ax9}dSdI-a)mALayf}7bI|K}Q+Yr_#EM7%=3A3|LML6O=9JBRrWl4U0hiYqBCQR#nD?+L`SzAV*&iI?9&N zG!vK+cPa$=SEeTTBvVzrSvvNwqP@B>eJ8~~=vKfV7`_^Kx$hkRSGB@z^8kH_iITPQ z0lJW=KlY>~@0o=rE1`KH;(r(bEO|knntQnGyNzJ2JmFNUM`Oc~YjG6hX+% z)$qvpG0k?8aB=4pR6}=io5@8`P#(`2Q3oB|YT>XM*3nSH1mqSsv0q-!2K` z2CLvZN@SpCNH@1zn}2!WV1bf+pnTB$rZ_P9X&2CYFzJhHJJ{!->2Epf37FYzQ=gLb z*Ck8;sx#R+gGls!&zicPJ_MZ>Pxqnq_ojVc``788?z3y0d)VFFy+k{6A9O!*yA1AM zScEBrK5o+=J$mhB?Q7mV{^_4yJbLFH$?|Ir<^fmFVWnlR2-`>1~ z_1?Ym&G!$`*BWo$eC=iJYd&`30BPCjmpH%!C1~I~{Xly<2LzJ4zjyCm+P{6^ZO^KG z3%9=hn(&^mEvQZr^(2@jr!G|q?UUB2bhdjy0DE>n=z)6&_0D9- z*hLLB_vzz#ax_|d7YB@bwh*=^8R$RuAu8BsLo+4BvHa!(!Wm{g4uOpay*9N=w;cAE z4Tjk%eGA=TUfd+fHZ7aV54Na52CHp(l6%CbD7vvOwwmA4^fWjnIk@Y$z*O+;KsHId z3&w&{(`&Kb5wxL6`KWW|gu&VJNchf2f}Q(36kIK?&vUbft{!vX)OxFNmmN(Xkk)Jj z;$@!6G;ijr{Oz1&I~Lp)NYM+{8x|#lrI=S1YlXXU#0ZkXTaJ9e*~-Z*a5YlkMswtx zh^*@+tV7@v_X>SCELV&{h)RmVZV*$+kGa6i7FrHmM{L3=gIM8H(vyYU@ZbOw*3nfn z_IplwdKQEgp*64-%wx*<1wQm7@Vx2%5?{pO03p0xva0y&{-#;L1pLdj_?^Kd}M24XjyA( zN36(_XYC@($c0=H@3~Lbau4RtY*zP4sY=x(LSK!}bO!}SM|SyAhUY@Ht{f7Mt728L zipNqpfkhp$o=mGq(0lGD>v1zDmm)I_|#AG6#^3`;2SH?p?kFsC%893b+&Exf^XgU#03)0^Bw?dV;L{&6Yh?O z>&~7j5ejkZz98`}c5v50tl|mzHd{63>dU<*aGejsMM^rAR<&*kfxPbQqj6QJVf6ND zeeROG@{Dd}R+*j}&s0^zxn>=6z#Wmchytexzi2EYYW;+JJ`y=bj`7M+%p`e!vzK-yiN(N&lUj}rsx7qEpS=eLLm?Y zJ=6Kny^{NR(+1oX1ydOow@J*P&|h8HS?~TV_b1hyUkJ87Uai01t#_xvclZwFP$-{8dzsQPT!^k-}gY`p%O}QhjGp zw9qj)>Y(+`W8~q_TY7~>FTVqb7XAV9yJ4kQyBbWU5k_e|rmdJFi99`R!2Ci$NJC)8 zkXM8j#F8#I$tOM7h*6fYweHuyQ01?uO#vqg(e|)23B&j|*Owku7E7KkM2z!o zNEI`P+@M*^^^FhT6wyaNchNJs?wyP5W||O2f~M1-rioLHN5y60)UJ;jl2@v7mXCQ; zxxl3Ue7tt+V!4P+gVwrbweZt+>3pO@#@ZF&$I*NcPO3n|0FzmO$aFUMIdj`{E0J%O`)Nw%6fW^q%jYauDN=Cz5k}nf>>yQ=lzwHKo`Am` zHd0s=4pMWQpR>9*W;G{_n&qNqoHuW0jl0l&DY@tSr= z03@hZq7bRuc_7A2J0Rz!FFeycfiM7Lq)6sHm7b%scj;F8jSut-u^NdY;MEh;+L2kY zg;{^5z59jFV!@=5LauRlGfVO~!%tmT3&g1em1{cFRjsFyiw{;47K9aK4<5ltCPFM3 z+omd^n`5V=>DlU{Vab)$F8#`%Frs&?xvRBMU)Vy;3hI2tcpijH)lmim_RxB&Ri9>X zAvqkV2rSBz)kjJb`SU%Z*9+P=mnxHPDhltFYwdqy>|o}mv^uKZ&}>p{lABfWo_Vr2VmB|>)Ps#;a63p$2;ww&ej zoJ|4i!iC@_!G##)cUi2cF8D9;rm$u_7AA^}L(rVeRmk^It8ud+W5LE&B(f_Gb1-c`IX;!!q;rqHPo?{gt!L z{G_eH-B<3WwYu&usk{B^p6U0yH9I77=(QvFK3`*&K7hr(uuqn)<=X25N{b1*g>ZS9 z?sb0n=;5PBTm;1?x6S_nI6mLX{ViH$KefMK*QnWB0$Dh1)>*aD7-p<@S94u(< z(0iux<-3iobm?7nFMN zmjF~hBlEA*@qeN(5h1p4eB-uzbo0eHc=*sb*gU4sjnw;=Q0)HYbno)VWp~|;&;6ZI zr`vO{Ui)4%+<&YcHgfs-7^`?Y*sTJl)xXXq>U&G?r`5dvfg`#JrhIO))0$NvE^Yqv zci(-t)Y;!#X=iHFY&LIh$fi4Os)f7IzXQ`3Ztr%fzEn)!Ck`BgrMF%?cDLAIs8jiUE-Mc;ExVHaB>y%*xvrV#`EIWhDjhb=Ec$y;9M9vw#X zV*}1uzr>_y40gUozC%4#Q)D}OkrA#jC>LWz$eznAIFBvx^uT*^NZ6yFs>f?wdYtrR z?lB-b=(uEDnmChGEU1%vu}Hd;-W6MiIn=x%B#-Z)HwRFXmYt8PrxgP`AKq{SfxK>s^T;56Lno>FQAP;0?iO zgb@f37cP%vQZ#&_*JlEP?DMflp@)Gv8FRG8gfen#2fN-oFY*AM1Vpp}1ZUoe#Uc-6 zR&W^^&&rQ)8D49Qjuf-?vNLT_2L{3d8dFKJfbF+x+L-)aiW)HP0-oxV2ybkPY+NyS zO$!;~T2#&;SEq8W2u!AF7pVLWU~w>5UvzHDO^>Kna8+>;r^{t5YxO?{q|h@<0Kr^4 zHyN5DP+Y922^XAf6R)(2RIw?&7C*IX?5jx0|GwJnTS<&1Ki0yN7}SOvVkX6^oRHiO z=58MHd7+G7j*F=dw~jc~*oM$h0*oM$PRJ8&YJ>wo038< zdczW4pA$3)5skA*R1Njg<2Wg!*7H|#;Z|IYIeSP2+uNS0hplUriH(XRYGr2SiE_f8 zY@N*(Cv1^jXY+PCt=l!iZO36E(7p)+E6`+oAvLvMH)W$Nr#7eg1&J*eYen3kkhOuF zU>9b!%=5^G(9y~CG!|v0YkC?|L>aY!paezM5yygo`^wX2|l9O$CJJ-G5MP|$> zL!0ecriGGjBN}{uB5BadEqmoXnTGLm=KvWQ7|i(%9vA%t*4$W*R;VBY$Z0L zmeTpQQBm2^c`(lhdG4WtX+q(kvMbxT&S$YY?Drf_fY@b=eV->8hHGe z@&A`xKrMcV;@_+`pSgxi_c_0E`}SvFg7L_!1zV-uTQL+x!}Td(3^; zgUhI1oN4AJMEnPTz%0e*9{;a0x1-x8oxk#ToKDr+{YOlOXl6;cSAKM#1C`Kw z2me)f`Nn^G`z!K!^v}QY``ZwZv5}=II?l5OEqEjy_m8(IoP)jdSo4-mq*47b%?HH~7P_@0VF0L`t&+_`*%nV93Uym909ZSGlS zI!AxO7au*^%9RQ8Ue(dj=!nAL@T>NmA~M^|RUe8t=!&98nZDzIE$&IW-*bO27R?c< zGB6p{ali~wxv?(1ERUS`uDPMScqsiQ8Kt_TJ-T!rU;E1AhfKGwg^Z+@z39)9sJ!vP7N@&UFkI4ZV# zU>u~T;XH$5+zOA0j;fZK*D?DOd402C5-hA~Aj3j~%su$zrL(d$4OvIwU1lcV)20!( z*&v&N_dL-Mhsrb|cpqh*6Yo$0#ADp|qQgC+>Bd8`BbOG5e`p^#CA{8;4x&Q{hlqi_ zz#Iqm@1~K#2N^6?d?~+VPf(*Rc_@vbE<+$SxhK{7EOQwu@|Eb4gfMj5nH7RQiIhO{ zSQRYr;2M`#IqRNUa7#ZCdvUZ6iHm*Qb8I6*q-difmh@fvDrNFt*rO%1&%my^?4eA9$z?dXt^Vu!j!N$UPT7YfLC8gbrC@QF~nsz7~WSY4_ zZO!yNrP>k1JwMyB49@X4XjuViVrLn|-5FUJ<+p?97l&fsMzm*C`hZiV-AszQrdqPS zEsJs@CKK6g{4NBb1=Ixlakm|IsHJ$x#VA^~J48gUxTR<@wb1bQxoc+aTtW*A-Od-& z;7gV~v1n`hmE;#<2HYPXJHs--W z*!4L|H<5ReBU?;e*MRpk0qk{PL@~MKXhlFNmF|5|&Jtn0&0=##-X^+gKq|38kko<0 zQ;o)Wmv51HBl%e#P-kK&Yg|UUTjDER7}W5#fv>vRM#)0Q3IbgQ{G!lUo2Se(w@eLh z-zQxVEabt`8VQ{C&o6XTF?NPd^A5-N20eYupW;shkz0m2M_96}*0~T;tQ^ZsgeMa0Sj3 z9^VL<%wnk%2XmuPlMtN73Uyn)QMkVZMENNq3ZM{&pl@BP-!i$6ENJt*Ri~4QXw^~z zYN{R36oaS8UK|wcA{AT4RL)g+$+?#pPTqI=zxw^1l>XBF2kyS4^#`^BzTESNmjvtH zAidUP#8cp;!<+n%_uhU;{_x$0w$iQj#@>x_{pSCCC;!0E{_RI;)x5_&Tff~2K0gaE zR(~e(tv`nYR=Ty`xFv*x#pA_xw9cJbPrmycy#4lLi}AJBUi&%4{N|heZ91~?mEfbD zU3s$k(pz`r@`BK%=I&h%O+E$QetTrAoQPH?N5A=rd*zPw-p{aTZtL&Du`Yk(JK%r? z)m_M)iIwcM9_?(M+E&8<`ru2%ufP0b?LWP?@^{krHpD~OxpRm~Z=zPdxl4+~U6H~s zzs*5b=^u3EzhM-8E=1aveM(bCDx&e<5+OT?xOA_B+Ex=MMweY<9IO?MFGJ zK<3`OvuhhyoxelOR=l=wB(GlsZ(jbzHQ4VE<>lWL84|R-61*9gJ0}J(ZE{BSuGpHd zH~0gz*W%G3#4X}V=h*5c)q~#TywBowefi*B)stVZ$LrAfb;vF5z)OZh_mb*J!k2OaNsU$a^h?NEosIevFuMQt5^=>-3BGvC`BO-sk#I>&rbs#g&|*hs%shvXrN3{%4k(E%G5!H zt`#&%LL)+TjWB|NuY@o)iF)&%J#bp&F=2H;1PDhkf~YXGdrKmtDr+ONg9ts;y@uVbYJ0sS@HuWR zHV!`Re(eg;3nIGvnxB&GFBr&sBYS1@$3O4`lh3$K{-vWkM@OHF>9-5yjW>Sm$K2%l zJq110rx5wMh4}WX+>?;MSLp{1bZ?MxFuI-t*31z+``E72HR?X{#y7Vuyr{4-QQ&bXmf`TcDZKr_7=Z2Y}oG4RaSS7?@*_2K0gm$ zTH%%Xi+-jCTVK7mVKxH}E;qmXyCJZ7{;3>TbLJ{52xzODuWy67#_+`UPQU}xG`eT` z8WKajd+=3pda=!ijy}Y_XTxtr^}aWpHv#%pd36>~g%5nd={{&C0&K?msdOxiA8xXE z1_vGKLsgdNfjF@Gx5q)@TDtq9Eu3dEn?m7TSQM&agjx8esD0xLy)HbD>t0${iq6&M z+9?_>9f0rct&6O-E5HODWt>O&;L)g+_!>+&WwFF%5;KqeTF9@(9w7Ic$b_VDbnbv; z-x_6ADrsiX(q@<}8so4C2%~2UqVKZFaE+<^iqQxad%uR!l19z=IYp{G@fs3DGJzqr zX5DHqkb02^cGRKCZqG;-Wm%MdD&^@Adnex&X7bfzL)H|Gq@2R^_KTvx9REr&h95t9JGj*rb-Pf1Bp~y+yQdN_M`a*|Vg_zMi z#fnc1FQzBKIX@nk7hqaGCDL#VReQKyY@suse2lo5u>P1giWR23^HBR_GgO~MSz4>$ zM5WRm0-NRYZC1k=naJ=d(>Hly*6rd1L&eCLRC8%qH^-nsR%EOf%`D}_%sczmp*LiN zp57#eS-_0g;j=tG6Nlu&!ndyQ!q<^h!|;M|xp-x)z{hzQaReAD7sw5_;3G1N0sNH$k|&53AIP;@kB-0(?) zRP>6T1o5!?4?`n`t1qeI-Gc>!!i1|1mehbT&)hJvN28A#Swx*mGn$!zp;YZ56k|(v zGjCPd)qcEleqpZWE6a7bB+FYI0}?<%IUs^_3^*WREx3muU!CM<+HI_2O5u_}>{8-N zwHc9~^Py-ujj?Y=MViG6h&R)sbrOM#fG0-%sq*S|KsLLH#O<|lJVw?bTgG{Wj3-7^ z6wfo4xjKoHWt26&HY&U!JS~^p5m4Fth0CF4XT&ubT|`x1KPzWv>@JpXXAj!Iu;yb* zr;_d_R9}TUB3DLpjCtI8iqwoam-Un&*vFm%D#0g^6gP_TA}Hti*iBwl)Gn|Wxa+H0 z=QA0iMU0AnsY%aAf$su&!nNs7<*dsxwghD%DC5-FSJY)>@xrf6h+UpH_AbacCavs4 z_@zv;F(M#oXfo;mbt2?!X44f1K1kJ&vmxN7 z*CFu-H;E-((u&RRI$W`i6&26tquj#-lLXG6Gs`rMoC!+-ZdFUwda@vRM_HrN zaLCeL*T@U(t&wMFf&Dsb@AD>*eamI;8@UHH-}P$7PTmDxtI#&%aYnpj-v+h1hL0D7 ztmV9bPLTtBQ&h=vZP)ptCZkA-!2{>+C(}?WckYwmUrG+>Msi@(>3P8WAqNc3 z+V?wZuphfXuik^cX#^giz5}o06L}MzL(0&r7hDlO(3b7;TwA-c! z|9&d6zM^yod*e!-gMa*ZpLA#2+~HngpvRCsCZ@gl=B>YR^n-s2{w^PGzWk-ly~hu^ z0h+zZDizhl-p3XFp3^*p!O{DQ_rU?|{N6J;P|$riaA57>&0k_q`}7Yk#la1C`Aeh% zvU_SC(CW+Jy^kyUfCC0X?{k+Q{piMT{=F-714LD+`6tM84#*oE--vbx_{ToBdH49? zr91i*rATYs+;~SE^s;p4Z>Rl~b3a8MST2mePx?nc>b-v|2URs1;d{tImmezBoF@A* zzLAYse<=>g`{!~%hsr;3fZCPEjziv8W)YE0$>!3#a7#vyYvy8$85rOS@TOj)1hOhz zgTDr~xCZzC9Lh#Gd(rJBH|#lGYf%XMpwd(~d*G4^*qh@{u@~{qno3U1W{(f|qPaN? zY2UofXX}Upj%GM~udgOc-upUgzJf$c8%dXW2hgwzr26wr2)%2g1Xz_I(k9>XQd%lg zhUGo+_7YrqpLmALp0&3o<(~xgQJ62}r+X}9Gp7{wp*Qq^4P=XL1;>&=>kK_4PmGB8 z_1Hket04%`DKCPGW1>gFC6K?+nY&_>ZN5c4&9FRlNGTI`+B;dks6isG3Ad8VD3@^u zVQ0i-bbYDrxeP5~XrY#k4-os#vMIevYr}Ib_#WHkWN(#zz;PaggxA&zz|J|~s}oUi zNakG^eL42krDa z!mx+zCE{V8)O!@2MU`?3ecdty3|3t6TPbsabfDvE{slKHwsj(r4pd`2U*Z|<-qrH;Cngny&U*n4ty^MzLx{v%Ypw-R`4_*UcR=!Yb zSIo5!u=TZY8Z@_z|78eF2YNq#fOyqnrV7HGPtyA)>dpcP{mYkV0S^6g>9 zvt%gq5CWD)7dOekX;S6=)i=r)9z$;jN;fbYn19C~B+qzGFM>@sSN zS$UUY5Z?`Vd6LW|k_DnQQ`xw#ydv~7qB%*cn^Yux`HHk%INX|30<^sGuJF)~8lSRX zW++$aJ?wIa>B$E6dIyyiaR3DZZh@cqc*YkqE%yP+{5tg9@$Yf1ILn~PZ z*Cxdu;uUZ8GL+~bgjbNSWe^hHZY-~*#1N%FC|H1&uXgTSW3CV(bL~j51S;wgEPz-i zet{4e2_Zf9XiXT12~Y?T@DKk%0W?BG48SXqkEEYgZ}Rz`>YiWs-rao^0ZGW7nXVtF zPMtdSqr2$!Z+RMdhd11InfH z72&9CxU8ZayfJ|Sw$Ut=3?S7Pk6FP!7m@0Js*u$rLQ&+A>_-!7_3&9Ur0nLKSG}*OFYE2fzYgoKCb<-3e(YE)`P8E|f9GS!WQLYV1d&=HzTj0tE&|6$CRe3g`J1 zt#=ydQ&WH7gm2iiXg7)Fs2E0$MIVsK1$e0|bgAi4Z*p>SM4I|h;OHpiWxrD|m|~j_ z?90Ckbfed-TApe?)`S{Fne0J698dYK9m1o0QRgjrpQ7xKcmoIaA3I544ZG_3EUWq_ z)57N=q+K~I9&`K_3!;3KYI;KTvFcsaN-J=Uxe{bpx>{)5%;0&nu@}sX@vG}}GZT44 zsgL>3w+^%)>iAy^+v^Am8W@r>6bWw`PAJv55{?%+OYHNmcF%Hn!DuCB-lfOy^nsh z#W&4o<#q0teu+iSQy~JsS1&=Uf8N^S^k;)t%c<2rZ|yequYK*SU*EgCcUS)Bpa1A; z&GjzFx4Ca$rZPd3nnR}mQQf`!5C5T7#CJI<>~YZ2w{}Z==~D5Uz1w>qMq9qWEx~Q1 zYSy8b91HK>^1rnb{KQY7jr^HiPA$g^?K>{7Pq;S)Ne?}d-eCooyJg_KZbq$?b2Ad8 zbJnrD|KRfXf9iE^?p)Pi2zh(`9VxOnv2XpIiK4-^yU{oF*tNP}mbYFGR+&4gUqAvN$vgse7uCb|Lz+rL^ z8ZLRu?F!JkH|>{S(N_+(LF!uP!J`)+z4(By1Z+z1Qg?3;`W*?>OW1u6oS#0r36E%D zyWn}Y7LNXT>blTh;2jqF!G{&)m?q;1r0B-8k_YAI9cz|2;qXGMF zD8M8T7pQxgc}Y?r4_B2%FRx%ABN5?fM{4PoQBV`MqA=XrI9faDDe= zy4vJ?Cpgc~#!4wfq4p+Sb)<#J6)(soz}JA6U6?0szd;PQYec1$=>5b3vx)9|M&A`( z-!+H6EewkoP-kDJm&c%pZK^IRmdZfNh?&_K4QR;N{t`+9Q0JlweQXRT$`(DeftyiW zS$ZY+#)&%AN|zP^<6a%WLJWt3Wl(!j=im7<>xhf_+r19OzWIcxFejxxVWabxh+-R}JUQDAu`Fef*L>195jb1L8l0+{nO78C-J+CgIq(31j zB5$(i&Sys57~<~XXrS2@^!{T@F*Z?rw7}pYRDM<$&i<^x9Q6u0Rhw0Q1(}Q}L+vwg(Z3~nSH+X}Y6db&G@Zcjo%c1BQ*;OVyqL{f&D?l2 zW1s*TWg#Qz>J_69Gu(5=fUZ-cx*V#p55ZBCDDCFZj4FNzsBD#r1(-a^sfTJr&}!<4 zH@Do7O#@gIjdR25d4=cRks8&Zdr`40W^7U#t>{q$4p|?`s#J&s)Rbeu zCdQG`XU2-g%Hx$Xm8OQu(vJrmCC1iTG}=*4M)R=&zD3pvM52|$cakelqIZav<%3>c zQD2PFP<+pr^~k1OZarGX(DLcHE1}ngqAt%CkHg*y45MS8OJQVA6wy2`;4TaS4j5F! zdE};#3m#{>`6I}5MeaHIlzJhbDJ(U&bmN4d)|JiIRXRI~x#y?6|0}A5Uqfy=gxijA;C7KGZ>) zSgTz|YE(oGPWVt{p4ov)O6dcx%2R&hKx085KFwaW;t;Fmnsu{0^q|p`4|?Om6j;V* zsYtoXr#u9PZm!s+^WCDJs{!bCV){sTl(Zv(Uxw$)Wp-a4J@OjQG z4v`HGQJBvHn($$kpXBp7{mKB7x(-Ff7+nVi&zsb&%HIDBIXoMVX;h=4TQywY zRVQIX0>=ox;72LTY4R>YHp1;3!$6pplDBdo+;iwpjDM%%( zUFCnpxz8>K%Qt`W&2P4l4TEhF2QR;z%JYXm`}2RIyzOd&KVnF|5v6ffFH|qwdw9=1 z{CCo|UYE^TN?Om$k6!*PG7kP%-mp86BuHrv{^`3u@$?dCp932p_Ws?|NO1Yl)g5>5BhH#$5JOH_8J+6ry zhEH~Fv7iu@xt*)cbn{=|)Y5``;-M4cK^A_i4(Bs&2knS)XL43W)Ztf*4`@*onJ zcv|CV{GinDmamIzBpSh139kj45)>3Jfm+DTjaZ>jc-_QZ$8uh=(wHTcp;B#O+&Wez zq&u+%+hUwVC$mbwCz0gDrg8@RR# z0KWl6oJ3no?_9MZ?U`C`BFgfuyLrOMD?VOaX-SB-34xr|Y~FTVq-2}KIzCi^u~}y# zMkCGqAgs<|YG4wQBUux|>b6AqTrUFK(AUaTL)6p~i~?E%#8PQ!8|pUrjf#`(x&X@& zYW4X}x#8ac`Bs>)3TSvV{>Ha~9JQ2ngKVUdW_g&Vz#*mMNt{bLq)lKqVK@!)G+V-y zNPkxPVJ%Sx4YlaYbPt&;aHmkHc`+?k5)<$Yo|V9}5_nbu&r0A~3H${q0lnl-+{r*w zMvPE;W9HpiU7(}KjE~QGC2G2{;O$tmB(q=^aunrjU)|n?loRju3XOOaEzm0|w_l)I zEetlAfrb}m=Dc2;28ya*iO(mLnK6qtr!B@23^X;p>YfE=MP+ttWW0bg(oXYVS&QDb zW9ub6IG-8Y6*A3qv?SPc22?WXhhGvWQ6jF?^}%6y*)th1j+VEGd%PAT;1z^5KY2YJ zphAuWURKH>j*`m`cER+x4H#sQP5uUr6h8R^)|3Q#Q3=Z@{iFtBQzelE0>36|f717! zJOs#?N|=NyRD+4uWky_-K{3iCV&S{qjqr0ElYx?0$szX$#|t&WlvmBU{# zu0g88rn9LW6_c{2Pi_R#X(|Q`5M+3Apr3{{%1;$Wj6u4%$~=<3$Wj%Ndv=^EhBs3d zGhT&Kk$JQlPswS<`BDIL`Wpe?N$*!9?giC!1On_>i(w!~bI z=!%Iulvud+tf+*5rAwc|S#r$vo(!dNk8QKUOT-@A5`$l%n~BiziR z_R#npD@_AqoUgp#P7o|wSg;iaoa6+iYsgkkb4BxZydxf>t5u~oW_TIB&FCrLn%ypp zz-#uL7KF+rzfRGqDTRp}1+O0m7bl=`F^`TqEN55gl-X2QlSo;?fX3H5EZM3(8TXlQ zFM`dcpOE`;_sC6(c>!)zcNb{5t9*#gv*U5m%jjvr(syuD z4tpo8KMu=zQTO_u?-pxKHU{E}i?5)rqMsh2VyQ3e>QpW7Iwc1r6^A1lY_vt(s1>Yk zj5ZBGJnAV@){)fg2^l@F#%WZD0M-aHB$yf)ps8C9(B0(7tTC^K$TCx$JFO&BY4!AI zF`QO>2eGa?b`6S(-Sgw>IP2skPYierYILDzOA#E)w*_2WeFWRFXV#$wS^&;LuRvFq6Q+6oaHDiFPo&=L>xDg$ zDfW}zVUHuFNt-g2S}KC^&$umS1vd(*MdW1f5SH`NV+we1@S_kFjGZc=CVWH%0VY8? zAle|Hm~c||2lIXy@Fiv)+STFtWHHBX#8T^mB|v}Fr4+}9Oo(*5g=4vX8u}=F6Fk;x zY%FMQtS*vRYJi230g`5IT=c8?U{plP5&}rFfx1^T2)>FuT*T5BLm!|IiyXy;vW|}P zuf*Vl0nY({H*(Ww1{24KpwP;3YtM+9kMtshTUq>@r&+Jx5q76 z)YYt6?Ms@o(%HT5Y^`qWa9kpZ`?lKWE(w2#f8yK%y44h{NwH7}(Au{Z6Ttq!O)_)a zxtofK|MpD<2rqjDEHJd1vaP)evsDtlsH#P)}P_|2i8ktR&Fd-gy#y<0t=lPkeR+ z_|->msS$e(t%hxDuS2$7PYPdC?^3q@)@~^|%;)qS`#0X*>bJIb8?I#;t!L?&tbfn% zOgO5t%P(H~+NH0#yUV+mmY32p&hqZvmU930{)feFw+w`P%ZGpW!*_uj?|!@lqD2BC zxVN-?g=+u_kTXg8pWJ^E_A2KPx0E+--?&(U{_pl(v)+h(ss45DdaVLt^HpWeJ#y6> z?tITXKlMTPaq#*!vQ`mWx^!~1Fgkr&&j!2iS)qJg_jT^Kz;|8CaW`hd8;8#F;NbG* zmoLNnsbGKqB|RYB*Z=K1Uy~y2@9*tBc=5rDr_1l#`^@qee^KpL+Ow$n?w>wbe+@gG zZAR#u4&GF~u)qJNH!UB0?_2-hFLzkQ`+nf5l8303;H&@U?L~@ngR`X{j310SZHkYj zCkdoM%*wPRSTVl3chx)(-sF(r#*H_<>A?B_;t#%%p4uz2r*^#YjhqW+u+QP=%CEb+ z#|di>F5fG0FYB#UJ`sNXo&WYVX!I^0y>#WJ2YU}#2)ugrH~;k)zMi2ky#wZC-!?RP%nR}>o#8kKXtx$?+! zD96LoouBv4bLEkztmoo=nyN!2bObyWarG14ytoP+qRuPBL;L_E)F6lHkap;nd~T!0dX4Fu2t_MF7Rh5fz~`r70;r!Fl!Mmq6`f^ z{pF3Alh#eJij*REIJdy+XN8q^nF@Lr+G1&oX*)djB8YbRO>S3l^@=Km;G_)DN7Mq= zp$&)ZE!_cWka=0qsQm=4g5Ip76O}G3b;fu;DSr{~E`&%-*i}Rr!(q&6L5?oVoZg>! zQW61nWz}J@@2xDvoH%2%q+SQ_yds%ubXZPYhITKp1ZjnlmM9Kf;)u!5hN+c$qqPVD zjYj47{6-`sDvikJq+gLe@3q6NvY*7vp`LLughKv6ERFI7aEc_!B97eY5?r(!6LCzZmKdXS(ewAU^R7Vcgida+DCQ1zR*Jo#z!iZijcxn1HrMF4DourV zCafVlPx16PuiDp)h>s}rEW)5BTr+nu?{sUL1&K<5QNJ}Tx)~IcLpP}>)nqcwJmqyb z8nI8!O{~Tp0(#YdG0~c3#}|ycNBnR%d?bw!lE~9q7{3&_p%W&sbXy{(<}$}(wE~4| zb_ANT9(9=e&>m;<4Uh`7 zvH~Lz&a_BHxt&y5$O7sYwJIUhgaVnAFi)%n)}H5>Ucg8e*e*R*ISag*>9#j#MG|9Z zd6-liXl{ovZ4ysWvLGA9-AR~K?vO$Lq{z#v<^e#HuDA%Ltz@(e#P^F{&*OqWrIk-Q zb4B+ub|Ir75EF>@H>dgVcX155)DLKr(FU4N@G0fJ>gYmpU zYuh;AU2aD6u(0sfPPAJlb364W;wyms>Ga}t$ll%$>{Tx$|KNuQKTM5Be7&`vBwzb| zw7kl>&cFTOw~_uWREkgZk2iNExB)1}SqU1A%NzA+;%Jih)+f`_7iXN1BvATPzHaZw zL+;$4eB&z($3*(M&!quy8}Z(~^;W{G&ymW(m4oF=dwZW;e&T^>F58%IzXKg3m*@C; z@*9EofAIb9|1WtiJP!6h*ZG{nU)yZWX=$&aVz~)h5?p4mgLb7uJNFF-YG(|a8wtwt z>ec;yoh;2r`|A4v=N>P^{(gH~f@Crw&xjhTC0fB8M#A@_~KH4Qn8-+unx~;epwEJCK|BkIQn%lA0<(D5ldg-P8 z8+@;9yKpQHUz&Cg#-|)K%|sKQDQX#^YfG9-Ytt=m*S`GdX~-8wjU@L>F+<(bpo z+gSUI>d(_tZ^QrefBErLn=N9;zHwtm0%m61VzxYv86n1AYUu>E1x^IJbGO19xLzM7NHioctw*^;1+`bv<%~*~D6> z1YEFCWmQzV5`@%$mB6zScvb?>O5j-u{6#APY1sV#9liy1 zLVuiPqd!m3fFun{{ye4l7Nq?zz6CtKITpT&CcAYvD8sZk*{vIA10GwKz&DrNYw%AD zU(-HwH6^fpR~5}PUkX%MJM3)fngMPTTcNuYDM{cw3A1X=402 z(_HjQY4B&tVnu(ZK35@aj?Tnw1J2lIqMo66GGZe&HN>_dKRKdSc59b~#flW4xt|uV zImYv2tXMw5QMx!P7i$S@g`GH0i+5>F{+t+3NO&W7RB|Ji7zrZcm?z;EE}n~D(Idik zjE#_nC8Y*xW!$6$!v@;zuUUSv=hH^J6?Q-8BK) zD64uDmfO($Pm8}e#yX9saDCwB{rhXO|9rK-;pym=yu>DdNm7!xD(-tUjHx3L2vw5&-5M#lm9+uS)*#X z!Q~=)=PnM}i2g)p_Wztuk~Mo@&W2tT<1FPxm`=DAhrRqva3}nJyml`B*134zF>rbV zF*q{QI^?@{n?#Fm{n)Sn_5b5{|MiBybzb=^|NF0>hrfvaVooi`i|va#7Oxin>bfYc zJlXN=*K{u98R(ynzmVQt9CC*DCSvm@m~IA`+n>Q~57#yq|Id&aGIySEC#btwkWpfHJzCmm?4XJxVz@ zAtsMvkGZVZYldRTKjF$ym(;?(Haky}&_z-nhoa|>wbq-Kg0&<}bPvJ|)aV28qQcqt zRAyk6P77nClKPEr5jOT~1TYEmRftxgrJtDE_Bm|UT@lfqMSMdWV)GQ!H7?oJ?2;@@GvSW|2G9ock zNKDz96kcRNqQ?>CGbqhuyMfvWP}qGnS?#g6;2_U*C)1f zoK+_ypdO92*VxtGYb4$0V?tm74+kKLCl?ZB(df zm9xhG(nc^&(Y%|0#4BocyBN97E3n*Rj4P>h^+0UUWuiF!)nNEtiI zM!6J#?2gpFm{381N_(HrXBoBE#)KVE2%NEe==)Jov0Y~}^)TleiP(ya4MkF+raeT7 zD>kYD&t+oZp-zI_6?8|ot%5Nr6i~BGSuxNBWiK|QWVynhK+l3|##RM3Igc%|gs;O4 z=|LzeNp-4OnZbkI32rhQWZGRa)+wl*GCs%#buX(qZG#?Nwm{{2Hl}gRh(8`2FWkwb zKbwk+l&=y$`4WVP*fApZ2rIT|_Rp9HgtE$0b}?Jn85k@2=)BQD$Ih$BmI96x;1GlU zVm=toV)r=C#W@ZZ-6>@e(x=6uN_z{~Y0h4Abm395@~FBK*j@uY+~pAr2%8QUy6v^4 zB4Uq{#r_?ab5wYsY}wGk5H6?jFF3NWS9TU?ncL69f!+5hg%Pn=z~=O9;s�E;eoF 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

il^)|cCqt>Sm=2PB4$Wder;_9q!bxN_M>0nB@ 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 z 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�`9aL{me@NvRGFC9a!hp&im_7HFwS!W@8Ef* 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 M9;@1|=rJo_0E)T%=>Px# diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system.xml b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system.xml deleted file mode 100644 index e11627904..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system.xml +++ /dev/null @@ -1,7098 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Interconnect - AXI4 Memory-Mapped Interconnect - - - - - - - Family - - - Base Family - - - Number of Slave Slots - - - Number of Master Slots - - - AXI ID Widgth - - - AXI Address Widgth - - - AXI Data Maximum Width - - - Slave AXI Data Width - - - Master AXI Data Width - - - Interconnect Crossbar Data Width - - - AXI Protocol - - - Master AXI Protocol - - - Master AXI Base Address - - - Master AXI High Address - - - Slave AXI Base ID - - - Slave AXI Thread ID Width - - - Slave AXI Is Interconnect - - - Slave AXI ACLK Ratio - - - Slvave AXI Is ACLK ASYNC - - - Master AXI ACLK Ratio - - - Master AXI Is ACLK ASYNC - - - Interconnect Crossbar ACLK Frequency Ratio - - - Slave AXI Supports Write - - - Slave AXI Supports Read - - - Master AXI Supports Write - - - Master AXI Supports Read - - - Propagate USER Signals - - - AWUSER Signal Width - - - ARUSER Signal Width - - - WUSER Signal Width - - - RUSER Signal Width - - - BUSER Signal Width - - - AXI Connectivity - - - Slave AXI Single Thread - - - Master AXI Supports Reordering - - - Master generates narrow bursts - - - Slave accepts narrow bursts - - - Slave AXI Write Acceptance - - - Slave AXI Read Acceptance - - - Master AXI Write Issuing - - - Master AXI Read Issuing - - - Slave AXI ARB Priority - - - Master AXI Secure - - - Master AXI Write FIFO Depth - - - Slave AXI Write FIFO Type - - - Slave AXI Write FIFO Delay - - - Slave AXI Read FIFO Depth - - - Slave AXI Read FIFO Type - - - Slave AXI Read FIFO Delay - - - Master AXI Write FIFO Depth - - - Master AXI Write FIFO Type - - - Master AXI Write FIFO Delay - - - Master AXI Read FIFO Depth - - - Master AXI Read FIFO Type - - - Master AXI Read FIFO Delay - - - Slave AXI AW Register - - - Slave AXI AR Register - - - Slave AXI W Register - - - Slave AXI R Register - - - Slave AXI B Register - - - Master AXI AW Register - - - Master AXI AR Register - - - Master AXI W Register - - - Master AXI R Register - - - Master AXI B Register - - - C_INTERCONNECT_R_REGISTER - - - Interconnect Architecture - - - Use Diagnostic Slave Port - - - Generate Interrupts - - - Check for transaction errors (DECERR) - - - Slave AXI CTRL Protocol - - - Slave AXI CTRL Address Width - - - Slave AXI CTRL Data Width - - - Diagnostic Slave Port Base Address - - - Diagnostic Slave Port High Address - - - Simulation debug - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Interconnect - AXI4 Memory-Mapped Interconnect - - - - - - - Family - - - Base Family - - - Number of Slave Slots - - - Number of Master Slots - - - AXI ID Widgth - - - AXI Address Widgth - - - AXI Data Maximum Width - - - Slave AXI Data Width - - - Master AXI Data Width - - - Interconnect Crossbar Data Width - - - AXI Protocol - - - Master AXI Protocol - - - Master AXI Base Address - - - Master AXI High Address - - - Slave AXI Base ID - - - Slave AXI Thread ID Width - - - Slave AXI Is Interconnect - - - Slave AXI ACLK Ratio - - - Slvave AXI Is ACLK ASYNC - - - Master AXI ACLK Ratio - - - Master AXI Is ACLK ASYNC - - - Interconnect Crossbar ACLK Frequency Ratio - - - Slave AXI Supports Write - - - Slave AXI Supports Read - - - Master AXI Supports Write - - - Master AXI Supports Read - - - Propagate USER Signals - - - AWUSER Signal Width - - - ARUSER Signal Width - - - WUSER Signal Width - - - RUSER Signal Width - - - BUSER Signal Width - - - AXI Connectivity - - - Slave AXI Single Thread - - - Master AXI Supports Reordering - - - Master generates narrow bursts - - - Slave accepts narrow bursts - - - Slave AXI Write Acceptance - - - Slave AXI Read Acceptance - - - Master AXI Write Issuing - - - Master AXI Read Issuing - - - Slave AXI ARB Priority - - - Master AXI Secure - - - Master AXI Write FIFO Depth - - - Slave AXI Write FIFO Type - - - Slave AXI Write FIFO Delay - - - Slave AXI Read FIFO Depth - - - Slave AXI Read FIFO Type - - - Slave AXI Read FIFO Delay - - - Master AXI Write FIFO Depth - - - Master AXI Write FIFO Type - - - Master AXI Write FIFO Delay - - - Master AXI Read FIFO Depth - - - Master AXI Read FIFO Type - - - Master AXI Read FIFO Delay - - - Slave AXI AW Register - - - Slave AXI AR Register - - - Slave AXI W Register - - - Slave AXI R Register - - - Slave AXI B Register - - - Master AXI AW Register - - - Master AXI AR Register - - - Master AXI W Register - - - Master AXI R Register - - - Master AXI B Register - - - C_INTERCONNECT_R_REGISTER - - - Interconnect Architecture - - - Use Diagnostic Slave Port - - - Generate Interrupts - - - Check for transaction errors (DECERR) - - - Slave AXI CTRL Protocol - - - Slave AXI CTRL Address Width - - - Slave AXI CTRL Data Width - - - Diagnostic Slave Port Base Address - - - Diagnostic Slave Port High Address - - - Simulation debug - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MicroBlaze - The MicroBlaze 32 bit soft processor - - - - - - - - - - - - - Enable Fault Tolerance Support - - - - - Select implementation to optimize area (with lower instruction throughput) - - - - Select Bus Interfaces - - - Select Stream Interfaces - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Enable Additional Machine Status Register Instructions - - - Enable Pattern Comparator - - - Enable Barrel Shifter - - - Enable Integer Divider - - - Enable Integer Multiplier - - - Enable Floating Point Unit - - - Enable Unaligned Data Exception - - - Enable Illegal Instruction Exception - - - Enable Instruction-side AXI Exception - - - Enable Data-side AXI Exception - - - Enable Instruction-side PLB Exception - - - Enable Data-side PLB Exception - - - Enable Integer Divide Exception - - - Enable Floating Point Unit Exceptions - - - Enable Stream Exception - - - <qt>Enable stack protection</qt> - - - Specifies Processor Version Register - - - Specify USER1 Bits in Processor Version Register - - - Specify USER2 Bits in Processor Version Registers - - - Enable MicroBlaze Debug Module Interface - - - Number of PC Breakpoints - - - Number of Read Address Watchpoints - - - Number of Write Address Watchpoints - - - Sense Interrupt on Edge vs. Level - - - Sense Interrupt on Rising vs. Falling Edge - - - Specify Reset Value for Select MSR Bits - - - <qt>Generate Illegal Instruction Exception for NULL Instruction</qt> - - - Number of Stream Links - - - - Enable Additional Stream Instructions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - I-Cache Base Address - - - I-Cache High Address - - - Enable Instruction Cache - - - Enable I-Cache Writes - - - - Size of the I-Cache in Bytes - - - - Instruction Cache Line Length - - - Use Cache Links for All I-Cache Memory Accesses - - - - Number of I-Cache Victims - - - Number of I-Cache Streams - - - Use Distributed RAM for I-Cache Tags - - - - - - - - - - - - - - - - - - - - D-Cache Base Address - - - D-Cache High Address - - - Enable Data Cache - - - Enable D-Cache Writes - - - - Size of D-Cache in Bytes - - - - Data Cache Line Length - - - Use Cache Links for All D-Cache Memory Accesses - - - - Enable Write-back Storage Policy - - - Number of D-Cache Victims - - - Use Distributed RAM for D-Cache Tags - - - - - - - - - - - - - - - - - - - - - - Memory Management - - - Data Shadow Translation Look-Aside Buffer Size - - - Instruction Shadow Translation Look-Aside Buffer Size - - - Enable Access to Memory Management Special Registers - - - Number of Memory Protection Zones - - - Privileged Instructions - - - - - - Enable Branch Target Cache - - - Branch Target Cache Size - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Local Memory Bus (LMB) 1.0 - 'The LMB is a fast, local bus for connecting MicroBlaze I and D ports to peripherals and BRAM' - - - - - - - Number of Bus Slaves - - - LMB Address Bus Width - - - LMB Data Bus Width - - - Active High External Reset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Local Memory Bus (LMB) 1.0 - 'The LMB is a fast, local bus for connecting MicroBlaze I and D ports to peripherals and BRAM' - - - - - - - Number of Bus Slaves - - - LMB Address Bus Width - - - LMB Data Bus Width - - - Active High External Reset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMB BRAM Controller - Local Memory Bus (LMB) Block RAM (BRAM) Interface Controller connects to an lmb bus - - - - - - - LMB BRAM Base Address - - - LMB BRAM High Address - - - - LMB Address Decode Mask - - - LMB Address Bus Width - - - LMB Data Bus Width - - - Error Correction Code - - - Select Interconnect - - - Fault Inject Registers - - - Correctable Error First Failing Register - - - Uncorrectable Error First Failing Register - - - ECC Status and Control Register - - - ECC On/Off Register - - - ECC On/Off Reset Value - - - Correctable Error Counter Register Width - - - Write Access setting - - - Base Address for PLB Interface - - - High Address for PLB Interface - - - PLB Address Bus Width - - - PLB Data Bus Width - - - PLB Slave Uses P2P Topology - - - Master ID Bus Width of PLB - - - Number of PLB Masters - - - PLB Slave is Capable of Bursts - - - Native Data Bus Width of PLB Slave - - - Frequency of PLB Slave - - - S_AXI_CTRL Clock Frequency - - - S_AXI_CTRL Base Address - - - S_AXI_CTRL High Address - - - S_AXI_CTRL Address Width - - - S_AXI_CTRL Data Width - - - S_AXI_CTRL Protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMB BRAM Controller - Local Memory Bus (LMB) Block RAM (BRAM) Interface Controller connects to an lmb bus - - - - - - - LMB BRAM Base Address - - - LMB BRAM High Address - - - - LMB Address Decode Mask - - - LMB Address Bus Width - - - LMB Data Bus Width - - - Error Correction Code - - - Select Interconnect - - - Fault Inject Registers - - - Correctable Error First Failing Register - - - Uncorrectable Error First Failing Register - - - ECC Status and Control Register - - - ECC On/Off Register - - - ECC On/Off Reset Value - - - Correctable Error Counter Register Width - - - Write Access setting - - - Base Address for PLB Interface - - - High Address for PLB Interface - - - PLB Address Bus Width - - - PLB Data Bus Width - - - PLB Slave Uses P2P Topology - - - Master ID Bus Width of PLB - - - Number of PLB Masters - - - PLB Slave is Capable of Bursts - - - Native Data Bus Width of PLB Slave - - - Frequency of PLB Slave - - - S_AXI_CTRL Clock Frequency - - - S_AXI_CTRL Base Address - - - S_AXI_CTRL High Address - - - S_AXI_CTRL Address Width - - - S_AXI_CTRL Data Width - - - S_AXI_CTRL Protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Block RAM (BRAM) Block - The BRAM Block is a configurable memory module that attaches to a variety of BRAM Interface Controllers. - - - - - - - Size of BRAM(s) in Bytes - - - Data Width of Port A and B - - - Address Width of Port A and B - - - Number of Byte Write Enables - - - Device Family - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processor System Reset Module - Reset management module - - - - - - - Device Subfamily - - - Number of Clocks Before Input Change is Recognized On The External Reset Input - - - Number of Clocks Before Input Change is Recognized On The Auxiliary Reset Input - - - External Reset Active High - - - Auxiliary Reset Active High - - - Number of Bus Structure Reset Registered Outputs - - - Number of Peripheral Reset Registered Outputs - - - Number of Active Low Interconnect Reset Registered Outputs - - - Number of Active Low Peripheral Reset Registered Outputs - - - Device Family - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Clock Generator - Clock generator for processor system. - - - - - - - Family - - - Device - - - Package - - - Speed Grade - - - Input Clock Frequency (Hz) - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Varaible Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Varaible Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Clock Deskew - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase Shift - - - - Clock Primitive Feedback Buffer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MicroBlaze Debug Module (MDM) - Debug module for MicroBlaze Soft Processor. - - - - - - - Device Family - - - Specifies the JTAG user-defined register used - - - Specifies the Bus Interface for the JTAG UART - - - Base Address - - - High Address - - - PLB Address Bus Width - - - PLB Data Bus Width - - - PLB Slave Uses P2P Topology - - - Master ID Bus Width of PLB - - - Number of PLB Masters - - - Native Data Bus Width of PLB Slave - - - PLB Slave is Capable of Bursts - - - Number of MicroBlaze debug ports - - - Enable JTAG UART - - - AXI Address Width - - - AXI Data Width - - - AXI4LITE protocal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI UART (Lite) - Generic UART (Universal Asynchronous Receiver/Transmitter) for AXI. - - - - - - - Device Family - - - AXI Clock Frequency - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - UART Lite Baud Rate - Baud Rate - - - Number of Data Bits in a Serial Frame - Data Bits - - - Use Parity - - - Parity Type - - - AXI4LITE protocol - - - - - - - - - - Serial Data Out - - - Serial Data In - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI General Purpose IO - General Purpose Input/Output (GPIO) core for the AXI bus. - - - - - - - Device Family - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - GPIO Data Channel Width - GPIO Data Width - - - GPIO2 Data Channel Width - - - Channel 1 is Input Only - - - Channel 2 is Input Only - - - GPIO Supports Interrupts - - - Channel 1 Data Out Default Value - - - Channel 1 Tri-state Default Value - - - Enable Channel 2 - - - Channel 2 Data Out Default Value - - - Channel 2 Tri-state Default Value - - - AXI4LITE protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPIO1 Data IO - - - GPIO2 Data IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI General Purpose IO - General Purpose Input/Output (GPIO) core for the AXI bus. - - - - - - - Device Family - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - GPIO Data Channel Width - GPIO Data Width - - - GPIO2 Data Channel Width - - - Channel 1 is Input Only - - - Channel 2 is Input Only - - - GPIO Supports Interrupts - - - Channel 1 Data Out Default Value - - - Channel 1 Tri-state Default Value - - - Enable Channel 2 - - - Channel 2 Data Out Default Value - - - Channel 2 Tri-state Default Value - - - AXI4LITE protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPIO1 Data IO - - - GPIO2 Data IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI General Purpose IO - General Purpose Input/Output (GPIO) core for the AXI bus. - - - - - - - Device Family - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - GPIO Data Channel Width - GPIO Data Width - - - GPIO2 Data Channel Width - - - Channel 1 is Input Only - - - Channel 2 is Input Only - - - GPIO Supports Interrupts - - - Channel 1 Data Out Default Value - - - Channel 1 Tri-state Default Value - - - Enable Channel 2 - - - Channel 2 Data Out Default Value - - - Channel 2 Tri-state Default Value - - - AXI4LITE protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPIO1 Data IO - - - GPIO2 Data IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI S6 Memory Controller(DDR/DDR2/DDR3) - Spartan-6 memory controller - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Ethernet - AXI Ethernet MAC - - - - - - - AXI Protocol - - - AXI Stream Bus Width - - - AXI Stream Bus Width - - - AXI Stream Bus Width - - - AXI Stream Bus Width - - - AXI Stream Protocol - - - AXI Stream Protocol - - - AXI Stream Protocol - - - AXI Stream Protocol - - - AXI Stream Protocol - - - AXI Stream Protocol - - - Device Family - - - AXI Clock Freq in HZ - - - Base Address - - - High Address - - - AXI Address Width - - - AXI Data Width - - - AXI ID Width - - - Spartan 6 Transceiver Side - - - PHY Address - - - Include IO and BUFG as Needed for the PHY Interface Selected - - - Type of TEMAC - - - Physical Interface Type - - - Enable Half Duplex mode - - - TX Memory Depth - - - RX Memory Depth - - - Enable TX Checksum Offload - - - Enable RX Checksum Offload - - - Transmit VLAN translation - - - Receive VLAN translation - - - Transmit VLAN tagging - - - Receive VLAN tagging - - - Transmit VLAN stripping - - - Receive VLAN stripping - - - Receive Extended Multicast Address Filtering - - - Statistics Counters - - - Audio Video Bridging (AVB) - license required - - - Simulation Mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Timer/Counter - Timer counter with AXI interface - - - - - - - AXI4LITE protocol - - - Device Family - - - The Width of Counter in Timer - Count Width - - - Only One Timer is present - - - TRIG0 Active Level - - - TRIG1 Active Level - - - GEN0 Active Level - - - GEN1 Active Level - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - - - - - - - - - - Capture Trig 0 - - - Capture Trig 1 - - - Generate Out 0 - - - Generate Out 1 - - - Pulse Width Modulation 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI DMA Engine - AXI MemoryMap to/from AXI Stream Direct Memory Access Engine - - - - - - - AXI Lite Address Width - - - AXI Lite Data Width - - - Delay Timer Counter Resolution - - - Primary clock Is Asynchronous - - - Include Scatter Gather Descriptor Queuing - - - Include AXI Status and Control Streams - - - Use Status Stream App Length - - - Buffer Length Field Width - - - AXI SG Address Width - - - AXI SG Data Width - - - AXI Control Stream Width - - - AXI Status Stream Width - - - Include MM2S Channel - - - Include MM2S Data Realignment Engine - - - Maximum Memory Map Burst Size for MM2S - - - MM2S Address Width - - - MM2S Memory Map Data Width - - - MM2S Stream Data Width - - - Include S2MM Channel - - - Include S2MM Data Realignment Engine - - - Maximum Memory Map Burst Size for S2MM (data beats) - - - S2MM Address Width - - - S2MM Memory Map Data Width - - - S2MM Stream Data Width - - - Device Family - - - Base Address - - - High Address - - - AXI Lite Clock Frequency - - - AXI Scatter Gather Clock Frequency - - - AXI MM2S Clock Frequency - - - AXI S2MM Clock Frequency - - - AXI Lite Protocol - - - AXI Lite Supports Read Access - - - AXI Lite Supports Write Access - - - AXI SG Protocol - - - AXI SG Support Threads - - - Base Address - - - AXI SG Supports Narrow Bursts - - - AXI SG Generates Read Accesses - - - AXI SG Generates Write Accesses - - - AXI MM2S Protocol - - - AXI MM2S Support Threads - - - AXI MM2S Thread ID Width - - - AXI MM2S Supports Narrow Bursts - - - AXI MM2S Generates Read Accesses - - - AXI MM2S Generates Write Accesses - - - AXI MM2S Interface Read Issuing - - - AXI MM2S Interface Read FIFO Depth - - - AXI S2MM Protocol - - - AXI S2MM Support Threads - - - AXI S2MM Thread ID Width - - - AXI S2MM Supports Narrow Bursts - - - AXI S2MM Generates Write Accesses - - - AXI S2MM Generates Read Accesses - - - AXI S2MM Interface Write Issuing - - - AXI S2MM Interface Write FIFO Depth - - - AXI MM2S Stream Interface Protocol - - - AXI S2MM Stream Interface Protocol - - - AXI MM2S Control Stream Interface Protocol - - - AXI S2MM Status Stream Interface Protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Interrupt Controller - intc core attached to the AXI - - - - - - - Device Family - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - Number of Interrupt Inputs - - - Type of Interrupt for Each Input - - - Type of Each Edge Senstive Interrupt - - - Type of Each Level Sensitive Interrupt - - - Support IPR - - - Support SIE - - - Support CIE - - - Support IVR - - - IRQ Output Use Level - - - The Sense of IRQ Output - - - AXI4LITE protocol - - - - - - - - - - Interrupt Request Output - - - - - - - - - - - - - Interrupt Inputs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system_bd.bmm b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system_bd.bmm deleted file mode 100644 index 6571731fa..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/SDK/SDK_Export/hw/system_bd.bmm +++ /dev/null @@ -1,32 +0,0 @@ -// BMM LOC annotation file. -// -// Release 13.1 - Data2MEM O.40d, build 1.9 Aug 19, 2010 -// Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. - - -/////////////////////////////////////////////////////////////////////////////// -// -// Processor 'microblaze_0', ID 100, memory map. -// -/////////////////////////////////////////////////////////////////////////////// - -ADDRESS_MAP microblaze_0 MICROBLAZE-LE 100 - - - /////////////////////////////////////////////////////////////////////////////// - // - // Processor 'microblaze_0' address space 'microblaze_0_bram_block_combined' 0x00000000:0x00001FFF (8 KBytes). - // - /////////////////////////////////////////////////////////////////////////////// - - ADDRESS_SPACE microblaze_0_bram_block_combined RAMB16 [0x00000000:0x00001FFF] - BUS_BLOCK - microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_0 [31:24] INPUT = microblaze_0_bram_block_combined_0.mem PLACED = X3Y34; - microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_1 [23:16] INPUT = microblaze_0_bram_block_combined_1.mem PLACED = X3Y36; - microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_2 [15:8] INPUT = microblaze_0_bram_block_combined_2.mem PLACED = X2Y32; - microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_3 [7:0] INPUT = microblaze_0_bram_block_combined_3.mem PLACED = X2Y30; - END_BUS_BLOCK; - END_ADDRESS_SPACE; - -END_ADDRESS_MAP; - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl deleted file mode 100644 index 31625c0c4..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_Colors.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_Colors.xsl deleted file mode 100644 index 1c97a4dee..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_Colors.xsl +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_Globals.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_Globals.xsl deleted file mode 100644 index c066fad3a..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_Globals.xsl +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_StyleDefs.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_StyleDefs.xsl deleted file mode 100644 index 88282dee5..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtSvgDiag_StyleDefs.xsl +++ /dev/null @@ -1,584 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNKNOWN Text style class - - - - - - - - - - \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_BusLaneSpaces.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_BusLaneSpaces.xsl deleted file mode 100644 index 89b61569f..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_BusLaneSpaces.xsl +++ /dev/null @@ -1,2758 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NONE - - - - - - - - NONE - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _unknown_ - - - - - - - - - - - - - - - _unknown_ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NONE - - - - - - - - NONE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Busses.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Busses.xsl deleted file mode 100644 index b95ad1144..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Busses.xsl +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BusArrowInitiator - BusArrowSouth - - - - - - BusArrowInitiator - BusArrowNorth - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BusArrowHInitiator - BusArrowWest - - - - - - BusArrowHInitiator - BusArrowEast - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BusArrowHInitiator - BusArrowEast - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Functions.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Functions.xsl deleted file mode 100644 index 5b091aba5..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Functions.xsl +++ /dev/null @@ -1,1112 +0,0 @@ - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'NONE' - - - - - - - NONE - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'NONE' - - - - - - - NONE - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - 0 - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Globals.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Globals.xsl deleted file mode 100644 index 87bd7f399..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Globals.xsl +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - Generating Blkdiagram in TestMode - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_IOPorts.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_IOPorts.xsl deleted file mode 100644 index 4a9d67142..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_IOPorts.xsl +++ /dev/null @@ -1,495 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - I - O - B - I - - - - - - W - E - D - - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - - 0 - -90 - 180 - 90 - - 180 - 90 - 0 - -90 - - 0 - 0 - 0 - 0 - 0 - - - - - - - -10 - 6 - - 6 - 0 - - - - - - - - - -2 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - I - O - B - I - - - - - - W - S - E - N - D - - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - 0 - -90 - 180 - 90 - - 180 - 90 - 0 - -90 - - 0 - 0 - 0 - 0 - 0 - - - - - - -14 - 8 - - 8 - 0 - - - - - - - - - -2 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Main.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Main.xsl deleted file mode 100644 index 7fe3adb35..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Main.xsl +++ /dev/null @@ -1,1566 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ERROT: Project is missing BLKDIAGRAM Element. Cannot generate. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 0> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NONE - - - - - - - - NONE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Peripherals.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Peripherals.xsl deleted file mode 100644 index b676156c8..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Peripherals.xsl +++ /dev/null @@ -1,1582 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - symbol_ - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'UNK' - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4.5 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - -symbol_STACK_ - - - - -symbol_GROUP_ - - - -symbol_SPACE_WEST__EAST_ -symbol_STACK_ -symbol_STACK__SHAPE_ - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Processors.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Processors.xsl deleted file mode 100644 index 11ab1be08..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgBLKD_Processors.xsl +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SLAVES OF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "_no_interrupt_cntlr_" - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgDiag_BifShapes.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgDiag_BifShapes.xsl deleted file mode 100644 index 160f2d8be..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/.dswkshop/MdtTinySvgDiag_BifShapes.xsl +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig.prj b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig.prj deleted file mode 100644 index b03847d6c..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig.prj +++ /dev/null @@ -1,173 +0,0 @@ - - - axi_s6_ddrx_0 - xc6slx45t-fgg484/-2 - 3.6 - - DDR3_SDRAM/Components/MT41J256M8XX-187E - 3200 - 0 - 1 - FALSE - - 15 - 10 - 3 - - - - 8(00) - 6 - Enable - RZQ/6 - RZQ/4 - 0 - Disabled - Disabled - Full Array - 5 - Enabled - Normal - AXI,AXI,AXI,AXI,AXI,AXI - - 0 - 0 - 0 - microblaze_0.M_AXI_DC - 4 - 0 - 1 - 0 - 4 - 0 - 1 - 0 - 0 - 0 - microblaze_0.M_AXI_IC - 4 - 0 - 1 - 0 - 4 - 0 - 0 - 0 - 0 - 0 - none - 4 - 0 - 0 - 0 - 4 - 0 - 0 - 0 - 0 - 0 - none - 4 - 0 - 0 - 0 - 4 - 0 - 0 - 0 - 0 - 0 - none - 4 - 0 - 0 - 0 - 4 - 0 - 0 - 0 - 0 - 0 - none - 4 - 0 - 0 - 0 - 4 - 0 - 0 - 32 - 0x80000000 - 32 - 0 - 0x87FFFFFF - 1 - Auto - 32 - 0x80000000 - 32 - 0 - 0x87FFFFFF - 1 - Auto - 32 - 0xffffffff - 32 - 0 - 0x00000000 - 0 - 0 - 32 - 0xffffffff - 32 - 0 - 0x00000000 - 0 - 0 - 32 - 0xffffffff - 32 - 0 - 0x00000000 - 0 - 0 - 32 - 0xffffffff - 32 - 0 - 0x00000000 - 0 - 0 - - Class II - Class II - CALIB_TERM - 25 Ohms - - - - 0 - 1 - Disable - Differential - Two 32-bit bi-directional and four 32-bit unidirectional ports - K7 - M7 - Port0,Port1,Port2,Port3,Port4,Port5 - Bi-directional,Read,Read,Read,Read,Read - ROW_BANK_COLUMN - Round Robin - 012345 - 123450 - 234501 - 345012 - 450123 - 501234 - 012345 - 123450 - 234501 - 345012 - 450123 - 501234 - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig.ucf b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig.ucf deleted file mode 100644 index 8850a67aa..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig.ucf +++ /dev/null @@ -1,159 +0,0 @@ -############################################################################ -## -## Xilinx, Inc. 2006 www.xilinx.com -## Sun 28. Aug 17:46:56 2011 -## Generated by MIG Version 3.7 -## -############################################################################ -## File name : MCB_DDR3.ucf -## -## Details : Constraints file -## FPGA family: spartan6 -## FPGA: xc6slx45t-fgg484 -## Speedgrade: -3 -## Design Entry: VERILOG -## Design: without Test bench -## DCM Used: Enable -## No.Of Memory Controllers: 1 -## -############################################################################ -############################################################################ -# VCC AUX VOLTAGE -############################################################################ -CONFIG VCCAUX=2.5; # Valid values are 2.5 and 3.3 - -############################################################################ -# Extended MCB performance mode requires a different Vccint specification to -# achieve higher maximum frequencies for DDR2 and DDR3.Consult the Spartan-6 -#datasheet (DS162) table 2 and 24 for more information -############################################################################ -CONFIG MCB_PERFORMANCE= STANDARD; - - -################################################################################## -# Timing Ignore constraints for paths crossing the clock domain -################################################################################## -NET "memc?_wrapper_inst/mcb_ui_top_inst/mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG; -NET "c?_pll_lock" TIG; - - -############################################################################ -## Memory Controller 3 -## Memory Device: DDR3_SDRAM->MT41J64M16XX-187E -## Frequency: 400 MHz -## Time Period: 2500 ps -## Supported Part Numbers: MT41J64M16LA-187E -############################################################################ - -############################################################################ -## Clock constraints -############################################################################ -NET "memc3_infrastructure_inst/sys_clk_ibufg" TNM_NET = "SYS_CLK3"; -TIMESPEC "TS_SYS_CLK3" = PERIOD "SYS_CLK3" 2.5 ns HIGH 50 %; -############################################################################ - -############################################################################ -## I/O TERMINATION -############################################################################ -NET "mcb3_dram_dq[*]" IN_TERM = NONE; -NET "mcb3_dram_dqs" IN_TERM = NONE; -NET "mcb3_dram_dqs_n" IN_TERM = NONE; -NET "mcb3_dram_udqs" IN_TERM = NONE; -NET "mcb3_dram_udqs_n" IN_TERM = NONE; - -############################################################################ -# I/O STANDARDS -############################################################################ - -NET "mcb3_dram_dq[*]" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_a[*]" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_ba[*]" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_dqs" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_udqs" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_dqs_n" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_udqs_n" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_ck" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_ck_n" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_cke" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_ras_n" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_cas_n" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_we_n" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_odt" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_reset_n" IOSTANDARD = LVCMOS15 ; -NET "mcb3_dram_dm" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_dram_udm" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_rzq" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "mcb3_zio" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50; -NET "c3_sys_clk_p" IOSTANDARD = LVDS_25 ; -NET "c3_sys_clk_n" IOSTANDARD = LVDS_25 ; -NET "c3_sys_rst_n" IOSTANDARD = LVCMOS15 ; -############################################################################ -# MCB 3 -# Pin Location Constraints for Clock, Masks, Address, and Controls -############################################################################ - -NET "mcb3_dram_a[0]" LOC = "K2" ; -NET "mcb3_dram_a[10]" LOC = "J4" ; -NET "mcb3_dram_a[11]" LOC = "E1" ; -NET "mcb3_dram_a[12]" LOC = "F1" ; -NET "mcb3_dram_a[1]" LOC = "K1" ; -NET "mcb3_dram_a[2]" LOC = "K5" ; -NET "mcb3_dram_a[3]" LOC = "M6" ; -NET "mcb3_dram_a[4]" LOC = "H3" ; -NET "mcb3_dram_a[5]" LOC = "M3" ; -NET "mcb3_dram_a[6]" LOC = "L4" ; -NET "mcb3_dram_a[7]" LOC = "K6" ; -NET "mcb3_dram_a[8]" LOC = "G3" ; -NET "mcb3_dram_a[9]" LOC = "G1" ; -NET "mcb3_dram_ba[0]" LOC = "J3" ; -NET "mcb3_dram_ba[1]" LOC = "J1" ; -NET "mcb3_dram_ba[2]" LOC = "H1" ; -NET "mcb3_dram_cas_n" LOC = "M4" ; -NET "mcb3_dram_ck" LOC = "K4" ; -NET "mcb3_dram_ck_n" LOC = "K3" ; -NET "mcb3_dram_cke" LOC = "F2" ; -NET "mcb3_dram_dm" LOC = "N4" ; -NET "mcb3_dram_dq[0]" LOC = "R3" ; -NET "mcb3_dram_dq[10]" LOC = "U3" ; -NET "mcb3_dram_dq[11]" LOC = "U1" ; -NET "mcb3_dram_dq[12]" LOC = "W3" ; -NET "mcb3_dram_dq[13]" LOC = "W1" ; -NET "mcb3_dram_dq[14]" LOC = "Y2" ; -NET "mcb3_dram_dq[15]" LOC = "Y1" ; -NET "mcb3_dram_dq[1]" LOC = "R1" ; -NET "mcb3_dram_dq[2]" LOC = "P2" ; -NET "mcb3_dram_dq[3]" LOC = "P1" ; -NET "mcb3_dram_dq[4]" LOC = "L3" ; -NET "mcb3_dram_dq[5]" LOC = "L1" ; -NET "mcb3_dram_dq[6]" LOC = "M2" ; -NET "mcb3_dram_dq[7]" LOC = "M1" ; -NET "mcb3_dram_dq[8]" LOC = "T2" ; -NET "mcb3_dram_dq[9]" LOC = "T1" ; -NET "mcb3_dram_dqs" LOC = "N3" ; -NET "mcb3_dram_dqs_n" LOC = "N1" ; -NET "mcb3_dram_odt" LOC = "L6" ; -NET "mcb3_dram_ras_n" LOC = "M5" ; -NET "mcb3_dram_reset_n" LOC = "E3" ; -NET "c3_sys_clk_n" LOC = "U12" ; -NET "c3_sys_clk_p" LOC = "T12" ; -NET "c3_sys_rst_n" LOC = "W12" ; -NET "mcb3_dram_udm" LOC = "P3" ; -NET "mcb3_dram_udqs" LOC = "V2" ; -NET "mcb3_dram_udqs_n" LOC = "V1" ; -NET "mcb3_dram_we_n" LOC = "H2" ; - -################################################################################## -#RZQ is required for all MCB designs. Do not move the location # -#of this pin for ES devices.For production devices, RZQ can be moved to any # -#valid package pin within the MCB bank.For designs using Calibrated Input Termination, # -#a 2R resistor should be connected between RZQand ground, where R is the desired# -#input termination value. Otherwise, RZQ should be left as a no-connect (NC) pin.# -################################################################################## -NET "mcb3_rzq" LOC = "K7" ; -################################################################################## -#ZIO is only required for MCB designs using Calibrated Input Termination.# -#ZIO can be moved to any valid package pin (i.e. bonded IO) within the# -#MCB bank but must be left as a no-connect (NC) pin.# -################################################################################## -NET "mcb3_zio" LOC = "R7" ; - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig_input.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig_input.txt deleted file mode 100644 index afb0f0de5..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig_input.txt +++ /dev/null @@ -1,16 +0,0 @@ -SET_FLAG FLOW SOCKETABLE -SET_FLAG MODE BATCH -SET_FLAG DRCMODE ERROR -SET_FLAG COMPONENT_NAME MCB_DDR3 -SET_PREFERENCE projectname MCB_DDR3 -SET_PREFERENCE devicefamily spartan6 -SET_PREFERENCE devicesubfamily t -SET_PREFERENCE partname xc6slx45tfgg484-3 -SET_PREFERENCE device xc6slx45t -SET_PREFERENCE package fgg484 -SET_PREFERENCE speedgrade -3 -SET_PREFERENCE outputdirectory ./ -SET_PREFERENCE workingdirectory ./ -SET_PREFERENCE subworkingdirectory ./ -SET_PREFERENCE InputParamsFile param_input.xml -SET_PREFERENCE OutputParamsFile param_output.xml diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig_output.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig_output.txt deleted file mode 100644 index ed2bda49c..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/mig_output.txt +++ /dev/null @@ -1,4 +0,0 @@ -SET_ERROR_CODE 0 -SET_XMDF_PATH ./MCB_DDR3_xmdf.tcl -SET_PARAMETER component_name MCB_DDR3 -SET_PARAMETER xml_input_file ./MCB_DDR3/user_design/mig.prj diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/param_input.xml b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/param_input.xml deleted file mode 100644 index a453ebb4e..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/param_input.xml +++ /dev/null @@ -1,953 +0,0 @@ - - - - - - - - - - - - - - - C_ARB_ALGORITHM - "0" - - - C_ARB_NUM_TIME_SLOTS - "12" - - - C_ARB_TIME_SLOT_0 - "0b000000000001010011" - - - C_ARB_TIME_SLOT_1 - "0b000000001010011000" - - - C_ARB_TIME_SLOT_2 - "0b000000010011000001" - - - C_ARB_TIME_SLOT_3 - "0b000000011000001010" - - - C_ARB_TIME_SLOT_4 - "0b000000000001010011" - - - C_ARB_TIME_SLOT_5 - "0b000000001010011000" - - - C_ARB_TIME_SLOT_6 - "0b000000010011000001" - - - C_ARB_TIME_SLOT_7 - "0b000000011000001010" - - - C_ARB_TIME_SLOT_8 - "0b000000000001010011" - - - C_ARB_TIME_SLOT_9 - "0b000000001010011000" - - - C_ARB_TIME_SLOT_10 - "0b000000010011000001" - - - C_ARB_TIME_SLOT_11 - "0b000000011000001010" - - - C_BYPASS_CORE_UCF - "0" - - - C_INTERCONNECT_S0_AXI_ACLK_RATIO - "100000000" - - - C_INTERCONNECT_S0_AXI_AR_REGISTER - "1" - - - C_INTERCONNECT_S0_AXI_AW_REGISTER - "1" - - - C_INTERCONNECT_S0_AXI_B_REGISTER - "1" - - - C_INTERCONNECT_S0_AXI_IS_ACLK_ASYNC - "0" - - - C_INTERCONNECT_S0_AXI_MASTERS - "microblaze_0.M_AXI_DC & microblaze_0.M_AXI_IC & ETHERNET_dma.M_AXI_SG & ETHERNET_dma.M_AXI_MM2S & ETHERNET_dma.M_AXI_S2MM" - - - C_INTERCONNECT_S0_AXI_R_REGISTER - "1" - - - C_INTERCONNECT_S0_AXI_READ_ACCEPTANCE - "4" - - - C_INTERCONNECT_S0_AXI_READ_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S0_AXI_SECURE - "0" - - - C_INTERCONNECT_S0_AXI_W_REGISTER - "1" - - - C_INTERCONNECT_S0_AXI_WRITE_ACCEPTANCE - "4" - - - C_INTERCONNECT_S0_AXI_WRITE_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S1_AXI_ACLK_RATIO - "1" - - - C_INTERCONNECT_S1_AXI_AR_REGISTER - "0" - - - C_INTERCONNECT_S1_AXI_AW_REGISTER - "0" - - - C_INTERCONNECT_S1_AXI_B_REGISTER - "0" - - - C_INTERCONNECT_S1_AXI_IS_ACLK_ASYNC - "0" - - - C_INTERCONNECT_S1_AXI_MASTERS - "none" - - - C_INTERCONNECT_S1_AXI_R_REGISTER - "0" - - - C_INTERCONNECT_S1_AXI_READ_ACCEPTANCE - "4" - - - C_INTERCONNECT_S1_AXI_READ_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S1_AXI_SECURE - "0" - - - C_INTERCONNECT_S1_AXI_W_REGISTER - "0" - - - C_INTERCONNECT_S1_AXI_WRITE_ACCEPTANCE - "4" - - - C_INTERCONNECT_S1_AXI_WRITE_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S2_AXI_ACLK_RATIO - "1" - - - C_INTERCONNECT_S2_AXI_AR_REGISTER - "0" - - - C_INTERCONNECT_S2_AXI_AW_REGISTER - "0" - - - C_INTERCONNECT_S2_AXI_B_REGISTER - "0" - - - C_INTERCONNECT_S2_AXI_IS_ACLK_ASYNC - "0" - - - C_INTERCONNECT_S2_AXI_MASTERS - "none" - - - C_INTERCONNECT_S2_AXI_R_REGISTER - "0" - - - C_INTERCONNECT_S2_AXI_READ_ACCEPTANCE - "4" - - - C_INTERCONNECT_S2_AXI_READ_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S2_AXI_SECURE - "0" - - - C_INTERCONNECT_S2_AXI_W_REGISTER - "0" - - - C_INTERCONNECT_S2_AXI_WRITE_ACCEPTANCE - "4" - - - C_INTERCONNECT_S2_AXI_WRITE_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S3_AXI_ACLK_RATIO - "1" - - - C_INTERCONNECT_S3_AXI_AR_REGISTER - "0" - - - C_INTERCONNECT_S3_AXI_AW_REGISTER - "0" - - - C_INTERCONNECT_S3_AXI_B_REGISTER - "0" - - - C_INTERCONNECT_S3_AXI_IS_ACLK_ASYNC - "0" - - - C_INTERCONNECT_S3_AXI_MASTERS - "none" - - - C_INTERCONNECT_S3_AXI_R_REGISTER - "0" - - - C_INTERCONNECT_S3_AXI_READ_ACCEPTANCE - "4" - - - C_INTERCONNECT_S3_AXI_READ_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S3_AXI_SECURE - "0" - - - C_INTERCONNECT_S3_AXI_W_REGISTER - "0" - - - C_INTERCONNECT_S3_AXI_WRITE_ACCEPTANCE - "4" - - - C_INTERCONNECT_S3_AXI_WRITE_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S4_AXI_ACLK_RATIO - "1" - - - C_INTERCONNECT_S4_AXI_AR_REGISTER - "0" - - - C_INTERCONNECT_S4_AXI_AW_REGISTER - "0" - - - C_INTERCONNECT_S4_AXI_B_REGISTER - "0" - - - C_INTERCONNECT_S4_AXI_IS_ACLK_ASYNC - "0" - - - C_INTERCONNECT_S4_AXI_MASTERS - "none" - - - C_INTERCONNECT_S4_AXI_R_REGISTER - "0" - - - C_INTERCONNECT_S4_AXI_READ_ACCEPTANCE - "4" - - - C_INTERCONNECT_S4_AXI_READ_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S4_AXI_SECURE - "0" - - - C_INTERCONNECT_S4_AXI_W_REGISTER - "0" - - - C_INTERCONNECT_S4_AXI_WRITE_ACCEPTANCE - "4" - - - C_INTERCONNECT_S4_AXI_WRITE_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S5_AXI_ACLK_RATIO - "1" - - - C_INTERCONNECT_S5_AXI_AR_REGISTER - "0" - - - C_INTERCONNECT_S5_AXI_AW_REGISTER - "0" - - - C_INTERCONNECT_S5_AXI_B_REGISTER - "0" - - - C_INTERCONNECT_S5_AXI_IS_ACLK_ASYNC - "0" - - - C_INTERCONNECT_S5_AXI_MASTERS - "none" - - - C_INTERCONNECT_S5_AXI_R_REGISTER - "0" - - - C_INTERCONNECT_S5_AXI_READ_ACCEPTANCE - "4" - - - C_INTERCONNECT_S5_AXI_READ_FIFO_DEPTH - "0" - - - C_INTERCONNECT_S5_AXI_SECURE - "0" - - - C_INTERCONNECT_S5_AXI_W_REGISTER - "0" - - - C_INTERCONNECT_S5_AXI_WRITE_ACCEPTANCE - "4" - - - C_INTERCONNECT_S5_AXI_WRITE_FIFO_DEPTH - "0" - - - C_MCB_LOC - "MEMC3" - - - C_MCB_PERFORMANCE - "STANDARD" - - - C_MCB_RZQ_LOC - "K7" - - - C_MCB_USE_EXTERNAL_BUFPLL - "0" - - - C_MCB_ZIO_LOC - "R7" - - - C_MEM_ADDR_ORDER - "ROW_BANK_COLUMN" - - - C_MEM_ADDR_WIDTH - "13" - - - C_MEM_BANKADDR_WIDTH - "3" - - - C_MEM_BASEPARTNO - "" - - - C_MEM_CAS_LATENCY - "6" - - - C_MEM_DDR1_2_ADDR_CONTROL_SSTL_ODS - "CLASS_II" - - - C_MEM_DDR1_2_DATA_CONTROL_SSTL_ODS - "CLASS_II" - - - C_MEM_DDR1_2_ODS - "FULL" - - - C_MEM_DDR2_3_HIGH_TEMP_SR - "NORMAL" - - - C_MEM_DDR2_3_PA_SR - "FULL" - - - C_MEM_DDR2_DIFF_DQS_EN - "YES" - - - C_MEM_DDR2_RTT - "150OHMS" - - - C_MEM_DDR3_AUTO_SR - "ENABLED" - - - C_MEM_DDR3_CAS_LATENCY - "6" - - - C_MEM_DDR3_CAS_WR_LATENCY - "5" - - - C_MEM_DDR3_ODS - "DIV6" - - - C_MEM_DDR3_RTT - "DIV4" - - - C_MEM_MDDR_ODS - "FULL" - - - C_MEM_MOBILE_PA_SR - "FULL" - - - C_MEM_NUM_COL_BITS - "10" - - - C_MEM_PARTNO - "MT41J64M16XX-187E" - - - C_MEM_TRAS - "-1" - - - C_MEM_TRCD - "-1" - - - C_MEM_TREFI - "-1" - - - C_MEM_TRFC - "-1" - - - C_MEM_TRP - "-1" - - - C_MEM_TRTP - "-1" - - - C_MEM_TWR - "-1" - - - C_MEM_TWTR - "-1" - - - C_MEM_TYPE - "DDR3" - - - C_MEM_TZQINIT_MAXCNT - "512" - - - C_MEMCLK_PERIOD - "0" - - - C_NUM_DQ_PINS - "16" - - - C_PORT_CONFIG - "B32_B32_B32_B32" - - - C_S0_AXI_ADDED_AXI_PARAMS - "TRUE" - - - C_S0_AXI_ADDR_WIDTH - "32" - - - C_S0_AXI_AXI_VER - "1.02.a" - - - C_S0_AXI_BASEADDR - "0xc0000000" - - - C_S0_AXI_DATA_WIDTH - "32" - - - C_S0_AXI_ENABLE - "1" - - - C_S0_AXI_ENABLE_AP - "0" - - - C_S0_AXI_HIGHADDR - "0xc7ffffff" - - - C_S0_AXI_ID_WIDTH - "3" - - - C_S0_AXI_PROTOCOL - "AXI4" - - - C_S0_AXI_REG_EN0 - "0x00000" - - - C_S0_AXI_REG_EN1 - "0x01000" - - - C_S0_AXI_STRICT_COHERENCY - "1" - - - C_S0_AXI_SUPPORTS_NARROW_BURST - "Auto" - - - C_S0_AXI_SUPPORTS_READ - "1" - - - C_S0_AXI_SUPPORTS_WRITE - "1" - - - C_S1_AXI_ADDED_AXI_PARAMS - "TRUE" - - - C_S1_AXI_ADDR_WIDTH - "32" - - - C_S1_AXI_AXI_VER - "1.01.a" - - - C_S1_AXI_BASEADDR - "0xFFFFFFFF" - - - C_S1_AXI_DATA_WIDTH - "32" - - - C_S1_AXI_ENABLE - "0" - - - C_S1_AXI_ENABLE_AP - "0" - - - C_S1_AXI_HIGHADDR - "0x00000000" - - - C_S1_AXI_ID_WIDTH - "4" - - - C_S1_AXI_PROTOCOL - "AXI4" - - - C_S1_AXI_REG_EN0 - "0x00000" - - - C_S1_AXI_REG_EN1 - "0x01000" - - - C_S1_AXI_STRICT_COHERENCY - "1" - - - C_S1_AXI_SUPPORTS_NARROW_BURST - "Auto" - - - C_S1_AXI_SUPPORTS_READ - "1" - - - C_S1_AXI_SUPPORTS_WRITE - "1" - - - C_S2_AXI_ADDED_AXI_PARAMS - "TRUE" - - - C_S2_AXI_ADDR_WIDTH - "32" - - - C_S2_AXI_AXI_VER - "1.01.a" - - - C_S2_AXI_BASEADDR - "0xFFFFFFFF" - - - C_S2_AXI_DATA_WIDTH - "32" - - - C_S2_AXI_ENABLE - "0" - - - C_S2_AXI_ENABLE_AP - "0" - - - C_S2_AXI_HIGHADDR - "0x00000000" - - - C_S2_AXI_ID_WIDTH - "4" - - - C_S2_AXI_PROTOCOL - "AXI4" - - - C_S2_AXI_REG_EN0 - "0x00000" - - - C_S2_AXI_REG_EN1 - "0x01000" - - - C_S2_AXI_STRICT_COHERENCY - "1" - - - C_S2_AXI_SUPPORTS_NARROW_BURST - "Auto" - - - C_S2_AXI_SUPPORTS_READ - "1" - - - C_S2_AXI_SUPPORTS_WRITE - "1" - - - C_S3_AXI_ADDED_AXI_PARAMS - "TRUE" - - - C_S3_AXI_ADDR_WIDTH - "32" - - - C_S3_AXI_AXI_VER - "1.01.a" - - - C_S3_AXI_BASEADDR - "0xFFFFFFFF" - - - C_S3_AXI_DATA_WIDTH - "32" - - - C_S3_AXI_ENABLE - "0" - - - C_S3_AXI_ENABLE_AP - "0" - - - C_S3_AXI_HIGHADDR - "0x00000000" - - - C_S3_AXI_ID_WIDTH - "4" - - - C_S3_AXI_PROTOCOL - "AXI4" - - - C_S3_AXI_REG_EN0 - "0x00000" - - - C_S3_AXI_REG_EN1 - "0x01000" - - - C_S3_AXI_STRICT_COHERENCY - "1" - - - C_S3_AXI_SUPPORTS_NARROW_BURST - "Auto" - - - C_S3_AXI_SUPPORTS_READ - "1" - - - C_S3_AXI_SUPPORTS_WRITE - "1" - - - C_S4_AXI_ADDED_AXI_PARAMS - "TRUE" - - - C_S4_AXI_ADDR_WIDTH - "32" - - - C_S4_AXI_AXI_VER - "1.01.a" - - - C_S4_AXI_BASEADDR - "0xFFFFFFFF" - - - C_S4_AXI_DATA_WIDTH - "32" - - - C_S4_AXI_ENABLE - "0" - - - C_S4_AXI_ENABLE_AP - "0" - - - C_S4_AXI_HIGHADDR - "0x00000000" - - - C_S4_AXI_ID_WIDTH - "4" - - - C_S4_AXI_PROTOCOL - "AXI4" - - - C_S4_AXI_REG_EN0 - "0x00000" - - - C_S4_AXI_REG_EN1 - "0x01000" - - - C_S4_AXI_STRICT_COHERENCY - "1" - - - C_S4_AXI_SUPPORTS_NARROW_BURST - "Auto" - - - C_S4_AXI_SUPPORTS_READ - "1" - - - C_S4_AXI_SUPPORTS_WRITE - "1" - - - C_S5_AXI_ADDED_AXI_PARAMS - "TRUE" - - - C_S5_AXI_ADDR_WIDTH - "32" - - - C_S5_AXI_AXI_VER - "1.01.a" - - - C_S5_AXI_BASEADDR - "0xFFFFFFFF" - - - C_S5_AXI_DATA_WIDTH - "32" - - - C_S5_AXI_ENABLE - "0" - - - C_S5_AXI_ENABLE_AP - "0" - - - C_S5_AXI_HIGHADDR - "0x00000000" - - - C_S5_AXI_ID_WIDTH - "4" - - - C_S5_AXI_PROTOCOL - "AXI4" - - - C_S5_AXI_REG_EN0 - "0x00000" - - - C_S5_AXI_REG_EN1 - "0x01000" - - - C_S5_AXI_STRICT_COHERENCY - "1" - - - C_S5_AXI_SUPPORTS_NARROW_BURST - "Auto" - - - C_S5_AXI_SUPPORTS_READ - "1" - - - C_S5_AXI_SUPPORTS_WRITE - "1" - - - C_SIMULATION - "FALSE" - - - C_SKIP_IN_TERM_CAL - "0" - - - C_SKIP_IN_TERM_CAL_VALUE - "NONE" - - - C_SYS_RST_PRESENT - "1" - - - HW_VER - "1.02.a" - - - INSTANCE - "MCB_DDR3" - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/param_output.xml b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/param_output.xml deleted file mode 100644 index 06ce1a98c..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/MCB_DDR3/param_output.xml +++ /dev/null @@ -1,598 +0,0 @@ - - - - - - - - - - - - - C_ARB_ALGORITHM - 0 - - - C_ARB_NUM_TIME_SLOTS - 12 - - - C_ARB_TIME_SLOT_0 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_1 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_10 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_11 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_2 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_3 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_4 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_5 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_6 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_7 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_8 - 0b000000000000000000 - - - C_ARB_TIME_SLOT_9 - 0b000000000000000000 - - - C_AXI_NBURST_SUPPORT - 1 - - - C_BEGIN_ADDRESS - 32'h01000000:32'h00000700 - - - C_CALIB_SOFT_IP - TRUE - - - C_CLKFBOUT_MULT - 2 - - - C_CLKOUT0_DIVIDE - 1 - - - C_CLKOUT1_DIVIDE - 1 - - - C_CLKOUT2_DIVIDE - 16 - - - C_CLKOUT3_DIVIDE - 8 - - - C_DIVCLK_DIVIDE - 1 - - - C_DQ0_TAP_DELAY_VAL - 0 - - - C_DQ10_TAP_DELAY_VAL - 0 - - - C_DQ11_TAP_DELAY_VAL - 0 - - - C_DQ12_TAP_DELAY_VAL - 0 - - - C_DQ13_TAP_DELAY_VAL - 0 - - - C_DQ14_TAP_DELAY_VAL - 0 - - - C_DQ15_TAP_DELAY_VAL - 0 - - - C_DQ1_TAP_DELAY_VAL - 0 - - - C_DQ2_TAP_DELAY_VAL - 0 - - - C_DQ3_TAP_DELAY_VAL - 0 - - - C_DQ4_TAP_DELAY_VAL - 0 - - - C_DQ5_TAP_DELAY_VAL - 0 - - - C_DQ6_TAP_DELAY_VAL - 0 - - - C_DQ7_TAP_DELAY_VAL - 0 - - - C_DQ8_TAP_DELAY_VAL - 0 - - - C_DQ9_TAP_DELAY_VAL - 0 - - - C_END_ADDRESS - 32'h02ffffff:32'h000008ff - - - C_ENFORCE_RD_WR - 0 - - - C_ENFORCE_RD_WR_CMD - 8'h11 - - - C_ENFORCE_RD_WR_PATTERN - 3'b000 - - - C_EN_WRAP_TRANS - 0 - - - C_HW_TESTING - FALSE - - - C_INCLK_PERIOD - 2)) - - - C_INPUT_CLK_TYPE - DIFFERENTIAL - - - C_INTERCONNECT_S0_AXI_AR_REGISTER - 1 - - - C_INTERCONNECT_S0_AXI_AW_REGISTER - 1 - - - C_INTERCONNECT_S0_AXI_B_REGISTER - 1 - - - C_INTERCONNECT_S0_AXI_MASTERS - microblaze_0.M_AXI_DC & microblaze_0.M_AXI_IC & ETHERNET_dma.M_AXI_SG & ETHERNET_dma.M_AXI_MM2S & ETHERNET_dma.M_AXI_S2MM - - - C_INTERCONNECT_S0_AXI_READ_ACCEPTANCE - 4 - - - C_INTERCONNECT_S0_AXI_READ_FIFO_DEPTH - 0 - - - C_INTERCONNECT_S0_AXI_R_REGISTER - 1 - - - C_INTERCONNECT_S0_AXI_SECURE - 0 - - - C_INTERCONNECT_S0_AXI_WRITE_ACCEPTANCE - 4 - - - C_INTERCONNECT_S0_AXI_WRITE_FIFO_DEPTH - 0 - - - C_INTERCONNECT_S0_AXI_W_REGISTER - 1 - - - C_LDQSN_TAP_DELAY_VAL - 0 - - - C_LDQSP_TAP_DELAY_VAL - 0 - - - C_MCB_LOC - MEMC3 - - - C_MCB_PERFORMANCE - STANDARD - - - C_MCB_RZQ_LOC - K7 - - - C_MCB_USE_EXTERNAL_BUFPLL - 0 - - - C_MCB_ZIO_LOC - R7 - - - C_MC_CALIBRATION_DELAY - HALF - - - C_MC_CALIBRATION_MODE - CALIBRATION - - - C_MC_CALIB_BYPASS - NO - - - C_MEMCLK_PERIOD - 0 - - - C_MEM_ADDR_ORDER - ROW_BANK_COLUMN - - - C_MEM_ADDR_WIDTH - 13 - - - C_MEM_BANKADDR_WIDTH - 3 - - - C_MEM_BURST_LEN - 8 - - - C_MEM_CAS_LATENCY - 6 - - - C_MEM_DDR1_2_ADDR_CONTROL_SSTL_ODS - CLASS_II - - - C_MEM_DDR1_2_DATA_CONTROL_SSTL_ODS - CLASS_II - - - C_MEM_DDR1_2_ODS - FULL - - - C_MEM_DDR2_3_HIGH_TEMP_SR - NORMAL - - - C_MEM_DDR2_3_PA_SR - FULL - - - C_MEM_DDR2_DIFF_DQS_EN - YES - - - C_MEM_DDR2_RTT - 150OHMS - - - C_MEM_DDR3_AUTO_SR - ENABLED - - - C_MEM_DDR3_CAS_LATENCY - 6 - - - C_MEM_DDR3_CAS_WR_LATENCY - 5 - - - C_MEM_DDR3_ODS - DIV6 - - - C_MEM_DDR3_RTT - DIV4 - - - C_MEM_DENSITY - 1Gb - - - C_MEM_MDDR_ODS - FULL - - - C_MEM_MOBILE_PA_SR - FULL - - - C_MEM_NUM_COL_BITS - 10 - - - C_MEM_PARTNO - MT41J64M16XX-187E - - - C_MEM_TRAS - 37500 - - - C_MEM_TRCD - 13130 - - - C_MEM_TREFI - 7800000 - - - C_MEM_TRFC - 160000 - - - C_MEM_TRP - 13130 - - - C_MEM_TRTP - 7500 - - - C_MEM_TWR - 15000 - - - C_MEM_TWTR - 7500 - - - C_MEM_TYPE - DDR3 - - - C_NUM_DQ_PINS - 16 - - - C_P0_MASK_SIZE - 32 - - - C_P0_PORT_MODE - BI_MODE - - - C_P1_PORT_MODE - NONE - - - C_P2_PORT_MODE - NONE - - - C_P3_PORT_MODE - NONE - - - C_P4_PORT_MODE - NONE - - - C_P5_PORT_MODE - NONE - - - C_PORT_CONFIG - B32_B32_B32_B32 - - - C_PORT_ENABLE - 6'b000001 - - - C_PRBS_EADDR_MASK_POS - 32'hfc000000:32'hfffff000 - - - C_PRBS_SADDR_MASK_POS - 32'h01000000:32'h00000700 - - - C_RST_ACT_LOW - 0 - - - C_S0_AXI_ADDR_WIDTH - 32 - - - C_S0_AXI_BASEADDR - 0xc0000000 - - - C_S0_AXI_DATA_WIDTH - 32 - - - C_S0_AXI_ENABLE - 1 - - - C_S0_AXI_ENABLE_AP - 0 - - - C_S0_AXI_HIGHADDR - 0xc7ffffff - - - C_S0_AXI_STRICT_COHERENCY - 1 - - - C_S0_AXI_SUPPORTS_NARROW_BURST - Auto - - - C_S0_AXI_SUPPORTS_READ - 1 - - - C_S0_AXI_SUPPORTS_WRITE - 1 - - - C_S1_AXI_ENABLE - 0 - - - C_S1_AXI_SUPPORTS_READ - 0 - - - C_S1_AXI_SUPPORTS_WRITE - 0 - - - C_S2_AXI_ENABLE - 0 - - - C_S2_AXI_SUPPORTS_READ - 0 - - - C_S2_AXI_SUPPORTS_WRITE - 0 - - - C_S3_AXI_ENABLE - 0 - - - C_S3_AXI_SUPPORTS_READ - 0 - - - C_S3_AXI_SUPPORTS_WRITE - 0 - - - C_S4_AXI_ENABLE - 0 - - - C_S4_AXI_SUPPORTS_READ - 0 - - - C_S4_AXI_SUPPORTS_WRITE - 0 - - - C_S5_AXI_ENABLE - 0 - - - C_S5_AXI_SUPPORTS_READ - 0 - - - C_S5_AXI_SUPPORTS_WRITE - 0 - - - C_SIMULATION - FALSE - - - C_SKIP_DYNAMIC_CAL - 0 - - - C_SKIP_IN_TERM_CAL - 0 - - - C_SKIP_IN_TERM_CAL_VALUE - NONE - - - C_SMALL_DEVICE - - - - C_UDQSN_TAP_DELAY_VAL - 0 - - - C_UDQSP_TAP_DELAY_VAL - 0 - - - DEBUG_EN - 0 - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/bitinit.opt b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/bitinit.opt deleted file mode 100644 index 7d88d37d7..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/bitinit.opt +++ /dev/null @@ -1 +0,0 @@ - -p xc6slx45tfgg484-3 diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_globals.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_globals.xsl deleted file mode 100644 index 9249c08a9..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_globals.xsl +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - - - - - - - - document($P_SYSTEM_XML) - / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - document($P_GROUPS_XML) - / - - - - - - - - - - - - - - - - - - - FOCUSED MASTERS SPECIFIED - - - - - FOCUSED MASTER BIF . = - - - - - - - - - - FOCUSED PERIPHERAL BRIDGE - - - - - - FOCUSED PERIPHERAL BRIDGE - - - - - - - - - - - FOCUSED PERIPHERAL has memory ranges - - - - FOCUSED PERIPHERAL BUS - - - - - - - - - - FOCUSED BUSSES SPECIFIED - - - - - - FOCUSED BUS - - - - - - - - TRUE - FALSE - - - - - - - - Bus - Debug - Memory - Memory Controller - Interrupt Controller - Peripheral - Processor - Bus Bridge - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TRUE - FALSE - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view.xsl deleted file mode 100644 index b0fee7aa9..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view.xsl +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - SAV VIEW - SAV MODE - SAV SCOPE - - - - - EDW2SAV XTELLER ERROR: UNDEFINED VIEW - - - - EDW2SAV XTELLER ERROR: UNDEFINED MODE - - - - EDW2SAV XTELLER ERROR: UNDEFINED SCOPE - - - - EDW2SAV XTELLER ERROR: SYSTEM XML UNDEFINED - - - - EDW2SAV XTELLER ERROR: EDKSYSTEM MISSING in SYSTEM XML - - - - EDW2SAV XTELLER ERROR: GROUP XML UNDEFINED for FOCUS - - - - EDW2SAV XTELLER ERROR: GROUP XML UNDEFINED for SCOPE - - - - - - SYSTEM XML - GROUPS XML - - - - - TREE - - - - - - - - - PROJECT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ERROR during SAV XTeller generation with panel and display mode - - - - - - - - - - - - - - - - TRUE - FALSE - - - - - - - - TREE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ERROR during SAV XTeller generation with panel and display mode - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_addr.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_addr.xsl deleted file mode 100644 index 5e8d06cb4..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_addr.xsl +++ /dev/null @@ -1,894 +0,0 @@ - - - - - - - - - - - - -]> - - - - - - - - - - - - - - - - - 's Address Map - - - - - - - MODULE - - - - - - INSTANCE - - Instance - STATIC - - - - - - : - - - - - - - - .: - - - : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Connected - - - - - - TRUE - FALSE - - - - - STATIC - TEXTBOX - - - - - - - - - - - - - - - - - - - - - - - - - - - DROPDOWN - STATIC - DROPDOWN - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : - - - - - - - : - - - - - - - - - - - - Not Applicable - Not Connected - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : - : - - - - - - - - - - - - - - - TRUE - FALSE - - - - - STATIC - TEXTBOX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DROPDOWN - STATIC - DROPDOWN - - - - - - - - - - - - - - - : - - - - - - - - - - : - - - - - - - - - Not Connected - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 's Address Map - - - - - - - - - - - : - - - - - ADDRESS ID - - - - - .: - - - : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Connected - - - - - - TRUE - FALSE - - - - - STATIC - TEXTBOX - - - - - - - - - - - - - - - - - - - - - - - - - - - - DROPDOWN - STATIC - DROPDOWN - - - - - - - - - - - - - - - - - - : - - - - - - - - - - : - - - - - - - - - - - - - - Not Applicable - Not Connected - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : - : - - - - - - - - - - - - - - - TRUE - FALSE - - - - - STATIC - TEXTBOX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DROPDOWN - STATIC - DROPDOWN - - - - - - - - - - - - - - - : - - - - - - - - - - : - - - - - - - - - Not Connected - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_busif.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_busif.xsl deleted file mode 100644 index 97adb0df8..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_busif.xsl +++ /dev/null @@ -1,631 +0,0 @@ - - - - - - - - - - - - -]> - - - - - - - - - - - - - - - - MODULE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BUSINTERFACE - - - - - TRUE - - - TRUE - - - - - - - - STATIC - Bus Standard - BUSSTD - - - - - - - - - - - - USER - - - - - - - - TEXTBOX - Bus Name - BUSNAME - - - _ - - - - - - - - - - - - - - - - - - - - - - BUTTON - - - DROPDOWN - - - Bus Name - BUSNAME - No Connection - - - - - - - - - - - - - - - - DROPDOWN - Bus Name - BUSNAME - - - - - - - - - - - - - - - BUTTON - - - DROPDOWN - - - BUSNAME - Bus Name - - - & - - - - - - - - - - - - - - - - - - - DROPDOWN - Bus Name - BUSNAME - - - - - - - - - - - - - - - - - - - - - - - - - - - $moduleRef_/BUSINTERFACES - $moduleRef_ - - - - - - - - - - - - - - - - - - - - - - - - - BUSINTERFACE - - - - - TRUE - - - TRUE - - - - - - - - - - - - - - - - - - - - - - STATIC - Bus Standard - BUSSTD - - - - - - - - - USER - - - - - - - - TEXTBOX - Bus Name - BUSNAME - - - _ - - - - - - - - - - - - - - - - - - - - - - BUTTON - - - DROPDOWN - - - Bus Name - BUSNAME - No Connection - - - - - - - - - - - - - - - - - DROPDOWN - Bus Name - BUSNAME - - - - - - - - - - - - - - - BUTTON - - - DROPDOWN - - - BUSNAME - Bus Name - - - & - - - - - - - - - - - - - - - - - - - DROPDOWN - Bus Name - BUSNAME - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_groups.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_groups.xsl deleted file mode 100644 index e302f3a23..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_groups.xsl +++ /dev/null @@ -1,1447 +0,0 @@ - - - - - - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - -Focusing on busses - - - - - - MODULES WITH POTENTIAL CONNECTIONS TO FOCUSED BUS - SEPARATOR - - Name - STATIC - Name - POTENTIAL MODULES BELOW HERE - - - IP Type - STATIC - MODTYPE - - - - IP Version - STATIC - HWVERSION - - - - IP Classification - STATIC - IPCLASS - - - - Bus Name - - BUSNAME - - - - Type - STATIC - TYPE - - - - Bus Standard - STATIC - BUSSTD - - - - - - - - - - - - - - - - - MODULES WITH POTENTIAL CONNECTIONS TO THIS SUBSYSTEM - SEPARATOR - - Name - STATIC - Name - POTENTIAL MODULES BELOW HERE - - - IP Type - STATIC - MODTYPE - - - - IP Version - STATIC - HWVERSION - - - - IP Classification - STATIC - IPCLASS - - - - Bus Name - - BUSNAME - - - - Type - STATIC - TYPE - - - - Bus Standard - - STATIC - BUSSTD - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PLACING BUS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONNECTED MASTER GROUP - - - - - - - POTENTIAL MASTER GROUP - - - - - - - - - SHARED GROUP - - - - - - - - - - - - - - - - - - - - - MEMORY GROUP - - - - - - - - - - PERIPHERAL GROUP - - - - - - - - SLAVE GROUP - - - - - - - - IP GROUP - - - - - - - FLOATING GROUP - - - - - - - IGNORING - - - - - - - - - - - - - - - - PLACING BUS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PERI PROCESSOR - - - - - - - PLACING MEMORY - - - - - - - - - - PLACING POTENTIAL GROUP OF PERIPHERALS - - - - - - - - PLACING POTENTIAL GROUP OF SLAVES - - - - - - - IGNORING - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PLACING MODULE ON BUS - - - - - - - MODULE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __NONE__ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EXAMINING CONNECTED MODULE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONNECTED BIFS - POTENTIAL BIFS - IS PERIPHERAL - - PLACING MODULE - - - - - - MODULE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EXAMINING POTENTIAL MODULE - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BUS has bifs - - - - - - - - - - - - - - - - - - - - - connected BIFS - potential bifs - unfocused bifs - is a peripheral - - - PLACING POTENTIAL MODULE - - - - - - MODULE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EXAMINING CONNECTED INTERFACE . - - - - - - - - - - - - - - - . - PROC CONNECTIONS - MAST CONNECTIONS - PERI CONNECTIONS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CONNECTED SCOPE - POTENTIAL SCOPE - - - - TRUE - TRUE - TRUE - FALSE - - - - - PLACING CONNECTED INTERFACE . - - - - - __NONE__ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EXAMINING POTENTIAL INTERFACE . - - - - - - - - - - - - - - - PROC CONNECTIONS - MAST CONNECTIONS - PERI CONNECTIONS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TRUE - TRUE - TRUE - FALSE - - - - - - - __NONE__ - - - - - PLACING POTENTIAL INTERFACE . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PROJECT - BUSINTERFACE - TREE - - - - - - - - - - PLACING BUS - - - - - - - - - - - - MODULE - - Name - TEXTBOX - INSTANCE - - - - IP Type - STATIC - MODTYPE - - - - IP Version - STATIC - HWVERSION - - - - IP Classification - STATIC - IPCLASS - BUS - - - - - - - - - - - - - - - - - - MODULE - - - Name - TEXTBOX - INSTANCE - - - - IP Type - STATIC - MODTYPE - - - - IP Version - STATIC - HWVERSION - - - - IP Classification - STATIC - IPCLASS - - - - - - - - - - PLACING BIF - TYPE - BUS - - - - TEXTBOX - BUTTON - BUTTON - BUTTON - DROPDOWN - - - - - - & - - - - - - - VIEWTYPE - BUSNAME - - - BUSINTERFACE - - NAME - STATIC - NAME - - - - Bus Name - - BUSNAME - - - - Type - STATIC - TYPE - - - - Bus Standard - STATIC - BUSSTD - - - - - - - - - - PROCESSOR GROUP - - - - - GROUP - - NAME - STATIC - INSTANCE - Subsystem of - - - - - - - - - - MASTER GROUP - - - - - GROUP - - NAME - STATIC - INSTANCE - Subsystem of - - - - - - - - - - - PLACING SHARED PERIPHERALS - - - GROUP - - NAME - STATIC - INSTANCE - Peripherals shared by - - - - - - - - - PLACING MEMORY - - - - GROUP - - NAME - STATIC - INSTANCE - (Memory) - - - - - - - - - PLACING PERIPHERAL - - - - - - - PLACING SLAVES - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_port.xsl b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_port.xsl deleted file mode 100644 index 5cfc3be61..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/edw2xtl_sav_view_port.xsl +++ /dev/null @@ -1,771 +0,0 @@ - - - - - - - - - - - - -]> - - - - - - - - - - - - - WRITING PORT in MODE : - - - - - - - - - - - - - - - - - - - - - - - - ExternalPorts - MODULE - - - - - Name - External Ports - Name - STATIC - - - - - - - - - PORT - - - - - - - - - - - - - - - - [:] - - - - [:] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TRUE - TRUE - FALSE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __NONE__ - - - - - - - - __NONE__ - - - - - - - __NONE__ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __NONE__ - - - - - - - - __NONE__ - - - - - - - __NONE__ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Connected to BUS - Connected to External Ports - Not connected to BUS or External Ports - - - - - - - - BUSINTERFACE.PORTS - - - TRUE - - - - - - - - - - - - - - - - - - - __NONE__ - - - - - - - - __NONE__ - - - - - - - __NONE__ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Connected to External Ports - Not connected to External Ports - - - - - - - IOINTERFACE.PORTS - - - TRUE - - - - - - - - - - - - - - - - - - - - - __NONE__ - - - - - - - - __NONE__ - - - - - - - __NONE__ - - - - - - - - - - - - - - - - - - - - - - - - - WRITING PORT MODE - - - - - - - - - - - - - - - - - - - - - - - - - - - TRUE - FALSE - - - - - - - - - - [:] - - - - [:] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TRUE - TRUE - FALSE - - - - - - - - - - has valid ports - - - - - - - - - - - - FALSE - TRUE - TRUE - FALSE - - - - - - - - - - - - - - - - - - - - - - - - - - - - TRUE - FALSE - - - - - TRUE - TRUE - TRUE - FALSE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TRUE - FALSE - - - - - TRUE - TRUE - TRUE - FALSE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/gensav_cmd.xml b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/gensav_cmd.xml deleted file mode 100644 index 42f1efa6c..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/gensav_cmd.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/system.xreport b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/system.xreport deleted file mode 100644 index cd98be2fd..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/system.xreport +++ /dev/null @@ -1,218 +0,0 @@ - - -

- 2011-08-29T16:09:42 - system - 2011-08-29T16:09:42 - C:/E/Dev/FreeRTOS/WorkingCopy/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/system.xreport - filter.filter - C:/E/Dev/FreeRTOS/WorkingCopy/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise - 2011-08-28T16:20:32 - false -
- - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/xmsgprops.lst b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/xmsgprops.lst deleted file mode 100644 index 10c9bb7ac..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/xmsgprops.lst +++ /dev/null @@ -1,3 +0,0 @@ -MessageCaptureEnabled: TRUE -MessageFilteringEnabled: FALSE -IncrementalMessagingEnabled: TRUE diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/platgen.opt b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/platgen.opt deleted file mode 100644 index 14ffabbc8..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/platgen.opt +++ /dev/null @@ -1,2 +0,0 @@ - -p xc6slx45tfgg484-3 -lang vhdl$(PROJECT_SEARCHPATHOPT) $(GLOBAL_SEARCHPATHOPT) -msg __xps/ise/xmsgprops.lst -ethernet Hardware_Evaluation diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/simgen.opt b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/simgen.opt deleted file mode 100644 index 9fbb0051c..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/simgen.opt +++ /dev/null @@ -1 +0,0 @@ - -p spartan6 -lang vhdl$(PROJECT_SEARCHPATHOPT) $(GLOBAL_SEARCHPATHOPT) -msg __xps/ise/xmsgprops.lst -s isim diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/system.xml b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/system.xml deleted file mode 100644 index 54d28c89b..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/system.xml +++ /dev/null @@ -1,5885 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Interconnect - AXI4 Memory-Mapped Interconnect - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Interconnect - AXI4 Memory-Mapped Interconnect - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MicroBlaze - The MicroBlaze 32 bit soft processor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Local Memory Bus (LMB) 1.0 - 'The LMB is a fast, local bus for connecting MicroBlaze I and D ports to peripherals and BRAM' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Local Memory Bus (LMB) 1.0 - 'The LMB is a fast, local bus for connecting MicroBlaze I and D ports to peripherals and BRAM' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMB BRAM Controller - Local Memory Bus (LMB) Block RAM (BRAM) Interface Controller connects to an lmb bus - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMB BRAM Controller - Local Memory Bus (LMB) Block RAM (BRAM) Interface Controller connects to an lmb bus - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Block RAM (BRAM) Block - The BRAM Block is a configurable memory module that attaches to a variety of BRAM Interface Controllers. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processor System Reset Module - Reset management module - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Clock Generator - Clock generator for processor system. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MicroBlaze Debug Module (MDM) - Debug module for MicroBlaze Soft Processor. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI UART (Lite) - Generic UART (Universal Asynchronous Receiver/Transmitter) for AXI. - - - - - - - - - - - - - - - - - - - - - - - - - Serial Data Out - - - Serial Data In - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI General Purpose IO - General Purpose Input/Output (GPIO) core for the AXI bus. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPIO1 Data IO - - - GPIO2 Data IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI General Purpose IO - General Purpose Input/Output (GPIO) core for the AXI bus. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPIO1 Data IO - - - GPIO2 Data IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI General Purpose IO - General Purpose Input/Output (GPIO) core for the AXI bus. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPIO1 Data IO - - - GPIO2 Data IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI S6 Memory Controller(DDR/DDR2/DDR3) - Spartan-6 memory controller - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Ethernet - AXI Ethernet MAC - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Timer/Counter - Timer counter with AXI interface - - - - - - - - - - - - - - - - - - - - - - - - - - - - Capture Trig 0 - - - Capture Trig 1 - - - Generate Out 0 - - - Generate Out 1 - - - Pulse Width Modulation 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI DMA Engine - AXI MemoryMap to/from AXI Stream Direct Memory Access Engine - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Interrupt Controller - intc core attached to the AXI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Interrupt Request Output - - - - - - - - - - - - - Interrupt Inputs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/xplorer.opt b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/xplorer.opt deleted file mode 100644 index 1ba7dad07..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/xplorer.opt +++ /dev/null @@ -1 +0,0 @@ - -device xc6slx45tfgg484-3 data/system.ucf 7 0 diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/xpsxflow.opt b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/xpsxflow.opt deleted file mode 100644 index 51c612843..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/xpsxflow.opt +++ /dev/null @@ -1 +0,0 @@ - -device xc6slx45tfgg484-3 data/system.ucf 0 diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/data/system.ucf b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/data/system.ucf deleted file mode 100644 index dc026593b..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/data/system.ucf +++ /dev/null @@ -1,360 +0,0 @@ -# -# pin constraints -# -NET CLK_N LOC = "K22" | DIFF_TERM = "TRUE" | IOSTANDARD = "LVDS_25"; -NET CLK_P LOC = "K21" | DIFF_TERM = "TRUE" | IOSTANDARD = "LVDS_25"; -NET DIP_Switches_4Bits_TRI_I[0] LOC = "C18" | IOSTANDARD = "LVCMOS25"; -NET DIP_Switches_4Bits_TRI_I[1] LOC = "Y6" | IOSTANDARD = "LVCMOS25"; -NET DIP_Switches_4Bits_TRI_I[2] LOC = "W6" | IOSTANDARD = "LVCMOS25"; -NET DIP_Switches_4Bits_TRI_I[3] LOC = "E4" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_MDC LOC = "R19" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_MDIO LOC = "V20" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_MII_TX_CLK LOC = "L20" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_PHY_RST_N LOC = "J22" | IOSTANDARD = "LVCMOS25" | TIG; -NET ETHERNET_RXD[0] LOC = "P19" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RXD[1] LOC = "Y22" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RXD[2] LOC = "Y21" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RXD[3] LOC = "W22" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RXD[4] LOC = "W20" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RXD[5] LOC = "V22" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RXD[6] LOC = "V21" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RXD[7] LOC = "U22" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RX_CLK LOC = "P20" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RX_DV LOC = "T22" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_RX_ER LOC = "U20" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TXD[0] LOC = "U10" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TXD[1] LOC = "T10" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TXD[2] LOC = "AB8" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TXD[3] LOC = "AA8" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TXD[4] LOC = "AB9" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TXD[5] LOC = "Y9" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TXD[6] LOC = "Y12" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TXD[7] LOC = "W12" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TX_CLK LOC = "AB7" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TX_EN LOC = "T8" | IOSTANDARD = "LVCMOS25"; -NET ETHERNET_TX_ER LOC = "U8" | IOSTANDARD = "LVCMOS25"; -NET LEDs_4Bits_TRI_O[0] LOC = "D17" | IOSTANDARD = "LVCMOS25"; -NET LEDs_4Bits_TRI_O[1] LOC = "AB4" | IOSTANDARD = "LVCMOS25"; -NET LEDs_4Bits_TRI_O[2] LOC = "D21" | IOSTANDARD = "LVCMOS25"; -NET LEDs_4Bits_TRI_O[3] LOC = "W15" | IOSTANDARD = "LVCMOS25"; -NET Push_Buttons_4Bits_TRI_I[0] LOC = "F3" | IOSTANDARD = "LVCMOS25"; -NET Push_Buttons_4Bits_TRI_I[1] LOC = "G6" | IOSTANDARD = "LVCMOS25"; -NET Push_Buttons_4Bits_TRI_I[2] LOC = "F5" | IOSTANDARD = "LVCMOS25"; -NET Push_Buttons_4Bits_TRI_I[3] LOC = "C1" | IOSTANDARD = "LVCMOS25"; -NET RESET LOC = "H8" | IOSTANDARD = "LVCMOS15" | TIG; -NET RS232_Uart_1_sin LOC = "H17" | IOSTANDARD = "LVCMOS25"; -NET RS232_Uart_1_sout LOC = "B21" | IOSTANDARD = "LVCMOS25"; -# -# additional constraints -# - -NET "CLK" TNM_NET = sys_clk_pin; -TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 200000 kHz; -###### Soft ETHERNET -# This is a GMII system -# AXI_STR_*_ACLK is not the same as S_AXI_ACLK from clock generator -# Rx/Tx Client clocks are Rx/Tx PHY clocks so CORE Gen PHY clock constraints propagate to Rx/Tx client clock periods -# Time domain crossing constraints (DATAPATHONLY) are set for maximum bus frequency -# allowed by IP which is the maximum option in BSB. For lower bus frequency choice in BSB, -# the constraints are over constrained. Relaxing them for your system may reduce build time. - -NET "*ETHERNET*/S_AXI_ACLK" TNM_NET = "axi4lite_clk"; -NET "*ETHERNET*/AXI_STR_TXD_ACLK" TNM_NET = "axistream_clk"; -NET "*ETHERNET*/AXI_STR_TXC_ACLK" TNM_NET = "axistream_clk"; -NET "*ETHERNET*/AXI_STR_RXD_ACLK" TNM_NET = "axistream_clk"; -NET "*ETHERNET*/AXI_STR_RXS_ACLK" TNM_NET = "axistream_clk"; - -############################################################ -# Clock Period Constraints # -############################################################ - -############################################################ -# RX Clock period Constraints # -############################################################ -# Ethernet GMII PHY-side receive clock -# __________ -# | | -# --- GMII_RX_CLK-----| BUFR |---Rx_Client_Clk -# |__________| -# -# Receiver clock period constraints: please do not relax -# Changed NET name -# Changed TNM_NET name from CoreGen name to be consistent in -# EDK constraints -# NET "*/rx_gmii_clk_int" TNM_NET = "clk_rx"; -NET "*/GMII_RX_CLK" TNM_NET = "phy_clk_rx"; -# Added TIMEGRP for later DATAPATHONLY constraint -TIMEGRP "rx_clock" = "phy_clk_rx"; -TIMESPEC "TS_rx_clk" = PERIOD "rx_clock" 8000 ps HIGH 50 %; - -############################################################ -# TX Clock period Constraints # -############################################################ -############################################################ -# TIG for BUFGMUX SPEED CLK: please do not edit # -############################################################ -# Want to TIG any timing paths to the select of the TX clock BUFGMUXs -# at this point and subsequent constraints can override. MII_TX_CLK -# will remained TIG so that path is not used in any setup/hold timing -# analysis. -# Changed net name in synthesis of axi_ethernet -# PIN "*clock_inst*BUFGMUX*.I?" TNM="clk_bufgmux"; -PIN "*I_CLOCK_INST*/*BUFGMUX_SPEED_CLK.I?" TNM="clk_bufgmux"; -TIMESPEC "TS_bufgmux" = FROM "async_config" TO "clk_bufgmux" TIG; - -############################################################################### -# The following two TimeSpecs are from CoreGen Ethernet Core Example Design UCF -# file. In systems GTX_CLK is driven by clock generator core, then the derived -# period constraint will override these TimeSpecs. -############################################################################### -# Ethernet GTX_CLK high quality 125 MHz reference clock -# __________ -# -GTX_CLK------------| | -# | BUFGMUX |---Tx_Client_Clk -# -MII_TX_CLK---------|__________| -# -# Depending on system configuration, the analysis tool may use either gtx_clk -# or tx_client_clk so both nets are used in defining PERIOD constraint and -# TNM_NETS for subsequent constraints. -# The PERIOD constraints may not be analyzed if inferred clock generator -# constraints are generated for the system. - -# Transmitter clock period constraints: please do not relax -# Changed NET name -# NET "gtx_clk*" TNM_NET = "clk_gtx"; -NET "*/GTX_CLK" TNM_NET = "clk_gtx"; -# Added TIMEGRP for later DATAPATHONLY constraint -TIMEGRP "gtx_clock" = "clk_gtx"; -TIMESPEC "TS_gtx_clk" = PERIOD "gtx_clock" 8000 ps HIGH 50 %; - -# Changed NET name -# Changed TNM_NET name from CoreGen name to be consistent in -# EDK constraints -# NET "*tx_gmii_clk" TNM_NET = "clk_tx_gmii"; -NET "*/GMII.tx_gmii_clk_int" TNM_NET = "phy_clk_tx"; -TIMEGRP "tx_clock_gmii" = "phy_clk_tx"; -TIMESPEC "TS_tx_clk_gmii" = PERIOD "tx_clock_gmii" 8000 ps HIGH 50 %; - -############################################################ -# Host Clock period Constraint # -############################################################ -# Management Clock period constraints: relax as required -# Changed NET name -# NET "host_clk" TNM_NET = "host"; -NET "*/S_AXI_ACLK" TNM_NET = "host_clk"; -TIMEGRP "host" = "host_clk" EXCEPT "mdio_logic"; -TIMESPEC "TS_host_clk" = PERIOD "host" 10000 ps HIGH 50 % PRIORITY 10; - -############################################################ -# External GMII Constraints # -############################################################ -# GMII Transmitter Constraints: place flip-flops in IOB -# Changed 'true' to 'force' -# Shortened INST names to remove internal hierarchy -# INST "*trimac_block*gmii_interface*gmii_txd*" IOB = true; -# INST "*trimac_block*gmii_interface*gmii_tx_en" IOB = true; -# INST "*trimac_block*gmii_interface*gmii_tx_er" IOB = true; -INST "*gmii_txd*" IOB = force; -INST "*gmii_tx_en" IOB = force; -INST "*gmii_tx_er" IOB = force; - -# GMII Receiver Constraints: place flip-flops in IOB -# Changed 'true' to 'force' -# Shortened INST names to remove internal hierarchy -# INST "*trimac_block*gmii_interface*rxd_to_mac*" IOB = true; -# INST "*trimac_block*gmii_interface*rx_dv_to_mac" IOB = true; -# INST "*trimac_block*gmii_interface*rx_er_to_mac" IOB = true; -INST "*rxd_to_mac*" IOB = force; -INST "*rx_dv_to_mac" IOB = force; -INST "*rx_er_to_mac" IOB = force; - -############################################################ -# The following are required to maximize setup/hold # -############################################################ -# Changed to add Drive strength and INST Name -# INST "gmii_txd" SLEW = FAST; -# INST "gmii_tx_en" SLEW = FAST; -# INST "gmii_tx_er" SLEW = FAST; -# INST "gmii_tx_clk" SLEW = FAST; -INST "ETHERNET_TXD_?_OBUF" SLEW = FAST; -INST "ETHERNET_TX_EN_OBUF" SLEW = FAST; -INST "ETHERNET_TX_ER_OBUF" SLEW = FAST; -INST "ETHERNET_TX_CLK_OBUF" SLEW = FAST; - -############################################################ -# GMII: IODELAY Constraints # -############################################################ -# Please modify the value of the IDELAY_VALUE -# according to your design. -# For more information on IDELAYCTRL and IODELAY, please -# refer to the Spartan-6 User Guide. -# -INST "*delay_gmii_rx_dv" IDELAY_VALUE = 6; -INST "*delay_gmii_rx_er" IDELAY_VALUE = 6; -INST "*data_bus[0].delay_gmii_rxd" IDELAY_VALUE = 6; -INST "*data_bus[1].delay_gmii_rxd" IDELAY_VALUE = 6; -INST "*data_bus[2].delay_gmii_rxd" IDELAY_VALUE = 6; -INST "*data_bus[3].delay_gmii_rxd" IDELAY_VALUE = 6; -INST "*data_bus[4].delay_gmii_rxd" IDELAY_VALUE = 6; -INST "*data_bus[5].delay_gmii_rxd" IDELAY_VALUE = 6; -INST "*data_bus[6].delay_gmii_rxd" IDELAY_VALUE = 6; -INST "*data_bus[7].delay_gmii_rxd" IDELAY_VALUE = 6; - -# Group IODELAY and IDELAYCTRL components to aid placement -# INST "*delay_gmii_rx_clk" IODELAY_GROUP = "grp1"; -INST "*delay_gmii_rx_dv" IODELAY_GROUP = "grp1"; -INST "*delay_gmii_rx_er" IODELAY_GROUP = "grp1"; -INST "*delay_gmii_rxd" IODELAY_GROUP = "grp1"; -# INST "*dlyctrl" IODELAY_GROUP = "grp1"; - -# Changed to let the tools pick the LOC -# INST *trimac_block*clock_inst*BUFGMUX_SPEED_CLK LOC = BUFGMUX_X3Y13; - -############################################################ -# For Setup and Hold time analysis on GMII inputs # -############################################################ -# Identify GMII Rx Pads only. -# This prevents setup/hold analysis being performed on false inputs, -# eg, the configuration_vector inputs. -# Changed to remove TNM and changed INST Names -# INST "gmii_rxd" TNM = IN_GMII; -# INST "gmii_rx_er" TNM = IN_GMII; -# INST "gmii_rx_dv" TNM = IN_GMII; - -# Define data valid window with respect to the clock. -# The spec states that, worst case, the data is valid 2 ns before the clock edge. -# The worst case it to provide zero hold time (a 2ns window in total) -# Changed to remove TIMEGRP -# TIMEGRP "IN_GMII" OFFSET = IN 2 ns VALID 2 ns BEFORE "gmii_rx_clk"; -# Set to allow for 100ps setup/hold trace delay difference in relation to clock -OFFSET = IN 2.4 ns VALID 2.8 ns BEFORE "ETHERNET_RX_CLK"; - -############################################################ -# Crossing of Clock Domain Constraints: please do not edit # -############################################################ -# Flow Control logic reclocking - control signal is synchronised -# Changed net name in synthesis of axi_ethernet -# INST "*trimac_core*FLOW?RX_PAUSE?PAUSE_REQ_TO_TX" TNM="flow_rx_to_tx"; -# INST "*trimac_core*FLOW?RX_PAUSE?PAUSE_VALUE_TO_TX*" TNM="flow_rx_to_tx"; -INST "*/I_FLOW/I_RX_PAUSE/PAUSE_REQ_TO_TX" TNM="flow_rx_to_tx"; -INST "*/I_FLOW/I_RX_PAUSE/PAUSE_VALUE_TO_TX*" TNM="flow_rx_to_tx"; -TIMESPEC "TS_flow_rx_to_tx" = FROM "flow_rx_to_tx" TO phy_clk_tx 8000 ps DATAPATHONLY; - -# Generate a group of all flops NOT in the host clock domain -TIMEGRP "all_ffs" = FFS; -TIMEGRP "ffs_except_host" = "all_ffs" EXCEPT "host"; - -# Configuration Register reclocking -# Changed net name in synthesis of axi_ethernet -# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?RX0_OUT*" TNM="async_config"; -# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?RX1_OUT*" TNM="async_config"; -# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?FC_OUT_29" TNM="async_config"; -INST "*/MANIFGEN.I_MANAGEN/I_CONF/RX0_OUT*" TNM="async_config"; -INST "*/MANIFGEN.I_MANAGEN/I_CONF/RX1_OUT*" TNM="async_config"; -INST "*/MANIFGEN.I_MANAGEN/I_CONF/FC_OUT_29" TNM="async_config"; - -# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?TX_OUT*" TNM="async_config"; -# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?FC_OUT_30" TNM="async_config"; -INST "*/MANIFGEN.I_MANAGEN/I_CONF/TX_OUT*" TNM="async_config"; -INST "*/MANIFGEN.I_MANAGEN/I_CONF/FC_OUT_30" TNM="async_config"; - -# Speed change config -# Changed net name in synthesis of axi_ethernet -# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?CNFG_SPEED*" TNM="async_config"; -# INST "*trimac_core*SPEED_IS*" TNM="async_config"; -INST "*/MANIFGEN.I_MANAGEN/I_CONF/CNFG_SPEED*" TNM="async_config"; -INST "*/I_?XGEN/*SPEED*" TNM="async_config"; - -# Changed to comment out. -# In BSB systems the Host_clk = S_AXI_ACLK. Since the CORE Gen TIG'd constraints below -# are affecting axi_ethernet DATAPATHONLY constraints above (at start of Soft_Ethernet_MAC constraints) -# these paths are commented out in favor of using the DATAPATHONLY constraints. The constraints are: -# "TS_axi4lite_clk_clk_2_TX_CLIENT_CLK" and "TS_TX_CLIENT_CLK_2_axi4lite_clk_clk" -# TIMESPEC "TS_host_clk_to_rx_clk" = FROM "host" TO "rx_clock" TIG; -# TIMESPEC "TS_host_clk_to_tx_clk" = FROM "host" TO "tx_clock_gmii" TIG; - -TIMESPEC "TS_config_to_all" = FROM "async_config" TO "ffs_except_host" TIG; - -# Address filter specific cross clocking -# Changed net name in synthesis of axi_ethernet -# INST "*trimac_core*addr_filter_top/dynamic_af_gen.dynamic_config/unicast_addr_*" TNM="addr_config_to_rx"; -INST "*/I_ADDR_FILTER_TOP/dynamic_af_gen.I_DYNAMIC_CONFIG/unicast_addr_*" TNM="addr_config_to_rx"; -TIMESPEC "TS_addr_config_to_rx" = FROM "addr_config_to_rx" TO "ffs_except_host" TIG; - -############################################################ -# Ignore paths to resync flops # -############################################################ -# Changed to replace TIG with DATAPATHONLY constraints -# INST "*data_sync" TNM = "resync_reg"; -# TIMESPEC "ts_resync_flops" = TO "resync_reg" TIG; - -###################################################################### -# MDIO Constraints: please do not edit unless TS_host_clk is relaxed # -# in which case the multiplier needs to be adjusted to give the # -# required 400ns (or faster) # -###################################################################### - -# Place the MDIO logic in it's own timing groups -# Changed net name in synthesis of axi_ethernet -# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?ENABLE_REG" TNM = "mdio_logic"; -# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?READY_INT" TNM = "mdio_logic"; -# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?STATE_COUNT*" TNM = FFS "mdio_logic"; -# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?MDIO_TRISTATE" TNM = "mdio_logic"; -# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?MDIO_OUT" TNM = "mdio_logic"; -INST "*/I_RXGEN/ENABLE_REG" TNM = "mdio_logic"; -INST "*/MANIFGEN.I_MANAGEN/MIIM_READY_INT" TNM = "mdio_logic"; -INST "*/MANIFGEN.I_MANAGEN/I_PHY/STATE_COUNT*" TNM = FFS "mdio_logic"; -INST "*/MANIFGEN.I_MANAGEN/I_PHY/MDIO_TRISTATE" TNM = "mdio_logic"; -INST "*/MANIFGEN.I_MANAGEN/I_PHY/MDIO_OUT" TNM = "mdio_logic"; - -# The MDIO logic is constrained to a 400ns period. this is generated by relating the required -# period to that specified for host_clk. This ensures the two clocks are related timed -# correctly. -TIMESPEC "TS_mdio" = PERIOD "mdio_logic" "TS_host_clk" * 40 PRIORITY 0; - -############################################################ -# Crossing of Clock Domain Constraints: please do not edit # -# In addition to CoreGen constraints # -############################################################ - -# The following TimeSpecs are required only when AXILite clock differs from AXI-Stream clock -# Data path timing depends on the destination clock period -TIMESPEC "TS_axistreamclks_2_axi4liteclks" = FROM axistream_clk TO axi4lite_clk 20000 ps DATAPATHONLY; #assumes axi4lite_clk <= 50 MHz -TIMESPEC "TS_axi4liteclks_2_axistreamclks" = FROM axi4lite_clk TO axistream_clk 8333 ps DATAPATHONLY; #assumes axistream_clk <= 120 MHz - -# TNM_NET phy_clk_rx is rx_client_clk -# TIMESPECs for AXI streaming clock crossing to/from rx_client_clk -TIMESPEC "TS_axistreamclks_2_RX_CLIENT_CLK" = FROM axistream_clk TO phy_clk_rx 8000 ps DATAPATHONLY; #assumes phy_clk_rx <= 125 MHz -TIMESPEC "TS_RX_CLIENT_CLK_2_axistreamclks" = FROM phy_clk_rx TO axistream_clk 8333 ps DATAPATHONLY; #assumes axistream_clk <= 120 MHz -# TIMESPECs for AXI-Lite clock crossing to/from tx_client_clk -TIMESPEC "TS_axi4liteclks_2_RX_CLIENT_CLK" = FROM axi4lite_clk TO phy_clk_rx 8000 ps DATAPATHONLY; #assumes phy_clk_rx <= 125 MHz -TIMESPEC "TS_RX_CLIENT_CLK_2_axi4liteclks" = FROM phy_clk_rx TO axi4lite_clk 20000 ps DATAPATHONLY; #assumes axi4lite_clk <= 50 MHz - -# Depending on system configuration, the analysis tool may use either TNM_NET clk_gtx -# or TNM_NET phy_clk_tx so only one set will be analyzed -# TNM_NET phy_clk_tx is tx_client_clk -# TIMESPECs for AXI streaming clock crossing to/from tx_client_clk -TIMESPEC "TS_axistreamclks_2_TX_CLIENT_CLK" = FROM axistream_clk TO phy_clk_tx 8000 ps DATAPATHONLY; #assumes phy_clk_tx <= 125 MHz -TIMESPEC "TS_TX_CLIENT_CLK_2_axistreamclks" = FROM phy_clk_tx TO axistream_clk 8333 ps DATAPATHONLY; #assumes axistream_clk <= 120 MHz -# TIMESPECs for AXI-Lite clock crossing to/from tx_client_clk -TIMESPEC "TS_axi4liteclks_2_TX_CLIENT_CLK" = FROM axi4lite_clk TO phy_clk_tx 8000 ps DATAPATHONLY; #assumes phy_clk_tx <= 125 MHz -TIMESPEC "TS_TX_CLIENT_CLK_2_axi4liteclks" = FROM phy_clk_tx TO axi4lite_clk 20000 ps DATAPATHONLY; #assumes axi4lite_clk <= 50 MHz - -# TNM_NET clk_gtx is */GTX_CLK -# TIMESPECs for AXI Streaming clock crossing to/from */GTX_CLK -TIMESPEC "TS_axistreamclks_2_GTX_CLK" = FROM axistream_clk TO clk_gtx 8000 ps DATAPATHONLY; #assumes clk_gtx <= 125 MHz -TIMESPEC "TS_GTX_CLK_2_axistreamclks" = FROM clk_gtx TO axistream_clk 8333 ps DATAPATHONLY; #assumes axistream_clk <= 120 MHz -# TIMESPECs for AXI-Lite clock crossing to/from */GTX_CLK -TIMESPEC "TS_axi4lite_clk_2_GTX_CLK" = FROM axi4lite_clk TO clk_gtx 8000 ps DATAPATHONLY; #assumes clk_gtx <= 125 MHz -TIMESPEC "TS_GTX_CLK_2_axi4lite_clk" = FROM clk_gtx TO axi4lite_clk 20000 ps DATAPATHONLY; #assumes axi4lite_clk <= 50 MHz - -# Depending on system configuration, the analysis tool may use either TNM_NET clk_gtx -# or TNM_NET phy_clk_tx so only one set will be analyzed -# Rx Clock crossings - Some paths are analyzed by the TS_flow_rx_to_tx constraint also -# Needed since ts_resync_flops is commented out -TIMESPEC "TS_RX_CLIENT_CLK_2_TX_CLIENT_CLK" = FROM phy_clk_rx TO phy_clk_tx 8000 ps DATAPATHONLY; #assumes phy_clk_tx <= 125 MHz -TIMESPEC "TS_TX_CLIENT_CLK_2_RX_CLIENT_CLK" = FROM phy_clk_tx TO phy_clk_rx 8000 ps DATAPATHONLY; #assumes phy_clk_rx <= 125 MHz -TIMESPEC "TS_RX_CLIENT_CLK_2_GTX_CLK" = FROM phy_clk_rx TO clk_gtx 8000 ps DATAPATHONLY; #assumes phy_clk_tx <= 125 MHz -TIMESPEC "TS_GTX_CLK_2_RX_CLIENT_CLK" = FROM clk_gtx TO phy_clk_rx 8000 ps DATAPATHONLY; #assumes phy_clk_rx <= 125 MHz - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/bitgen.ut b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/bitgen.ut deleted file mode 100644 index bca21c81b..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/bitgen.ut +++ /dev/null @@ -1,3 +0,0 @@ --g TdoPin:PULLNONE --g StartUpClk:JTAGCLK -#add other options here. diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/download.cmd b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/download.cmd deleted file mode 100644 index da4d7717e..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/download.cmd +++ /dev/null @@ -1,6 +0,0 @@ -setMode -bscan -setCable -p auto -identify -assignfile -p 2 -file implementation/download.bit -program -p 2 -quit diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/fast_runtime.opt b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/fast_runtime.opt deleted file mode 100644 index 994a6d2f8..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/fast_runtime.opt +++ /dev/null @@ -1,84 +0,0 @@ -FLOWTYPE = FPGA; -############################################################### -## Filename: fast_runtime.opt -## -## Option File For Xilinx FPGA Implementation Flow for Fast -## Runtime. -## -## Version: 4.1.1 -############################################################### -# -# Options for Translator -# -# Type "ngdbuild -h" for a detailed list of ngdbuild command line options -# -Program ngdbuild --p ; # Partname to use - picked from xflow commandline --nt timestamp; # NGO File generation. Regenerate only when - # source netlist is newer than existing - # NGO file (default) --bm .bmm # Block RAM memory map file -; # User design - pick from xflow command line --uc .ucf; # ucf constraints -.ngd; # Name of NGD file. Filebase same as design filebase -End Program ngdbuild - -# -# Options for Mapper -# -# Type "map -h " for a detailed list of map command line options -# -Program map --o _map.ncd; # Output Mapped ncd file --w; # Overwrite output files. --pr b; # Pack internal FF/latches into IOBs -#-fp .mfp; # Floorplan file --ol high; --timing; --detail; -.ngd; # Input NGD file -.pcf; # Physical constraints file -END Program map - -# -# Options for Post Map Trace -# -# Type "trce -h" for a detailed list of trce command line options -# -Program post_map_trce --e 3; # Produce error report limited to 3 items per constraint -#-o _map.twr; # Output trace report file --xml _map.twx; # Output XML version of the timing report -#-tsi _map.tsi; # Produce Timing Specification Interaction report -_map.ncd; # Input mapped ncd -.pcf; # Physical constraints file -END Program post_map_trce - -# -# Options for Place and Route -# -# Type "par -h" for a detailed list of par command line options -# -Program par --w; # Overwrite existing placed and routed ncd --ol high; # Overall effort level -_map.ncd; # Input mapped NCD file -.ncd; # Output placed and routed NCD -.pcf; # Input physical constraints file -END Program par - -# -# Options for Post Par Trace -# -# Type "trce -h" for a detailed list of trce command line options -# -Program post_par_trce --e 3; # Produce error report limited to 3 items per constraint -#-o .twr; # Output trace report file --xml .twx; # Output XML version of the timing report -#-tsi .tsi; # Produce Timing Specification Interaction report -.ncd; # Input placed and routed ncd -.pcf; # Physical constraints file -END Program post_par_trce - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/system.filters b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/system.filters deleted file mode 100644 index d4000c0c3..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/system.filters +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/system.gui b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/system.gui deleted file mode 100644 index f625831a6..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/etc/system.gui +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/platgen.opt b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/platgen.opt deleted file mode 100644 index 6594c3faa..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/platgen.opt +++ /dev/null @@ -1,7 +0,0 @@ --p -xc6slx45tfgg484-3 --lang -vhdl --msg -__xps/ise/xmsgprops.lst -system.mhs diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.bsb b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.bsb deleted file mode 100644 index 040f3c6aa..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.bsb +++ /dev/null @@ -1 +0,0 @@ -„æÄ®Òôtt¦Êè¬ÊäæÒÞÜ@Dbb\b\`bDv*„æÄ®Òôtt¦Êè„ÞÂäÈ@DðÒØÒÜð\ÆÞÚD@Dæàl`jD@D†Dv.„æÄ®ÒôttªàÈÂèʄÞÂäÈ@D‚¤†’¨Š†¨ª¤ŠD@DæàÂäèÂÜlDv.„æÄ®ÒôttªàÈÂèʄÞÂäÈ@DˆŠ¬’†Š¾¦’´ŠD@DðÆlæØðhjèDv'„æÄ®ÒôttªàÈÂèʄÞÂäÈ@D ‚†–‚ŽŠD@DÌÎÎhphDv'„æÄ®ÒôttªàÈÂèʄÞÂäÈ@D¤¦¨¾ ž˜‚¤’¨²D@DbDv&„æÄ®ÒôttªàÈÂèʄÞÂäÈ@D¦ ŠŠˆŽ¤‚ˆŠD@DZfDv%„æÄ®Òôtt¦Êè¦òæèÊÚ@DÚľÂðÒ¾bêàD@Db\`Dv;„æÄ®ÒôttªàÈÂèʦòæèÊÚ@D†ØÖ¾ŒäÊâD@Dd````````D@DÚÒÆäÞÄØÂôʾ`Dv@„æÄ®Òôtt‚ÈÈ äÞÆÊææÞä@DÚÒÆäÞÄØÂôʾ`D@DÚÒÆäÞÄØÂôÊD@DÚÒÆäÞÄØÂôʾ`DvH„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DÚÒÆäÞÄØÂôʾ`D@DÈÂè¾ÆÂÆÐʾÚÊÚ¾ØÒæèD@Dš†„¾ˆˆ¤fDvA„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DÚÒÆäÞÄØÂôʾ`D@DÈÂè¾ÆÂÆÐʾæÒôÊD@DblfphDvI„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DÚÒÆäÞÄØÂôʾ`D@DÒÜæèä¾ÆÂÆÐʾÚÊÚ¾ØÒæèD@Dš†„¾ˆˆ¤fDvB„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DÚÒÆäÞÄØÂôʾ`D@DÒÜæèä¾ÆÂÆÐʾæÒôÊD@DblfphDvH„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DÚÒÆäÞÄØÂôʾ`D@DÚľÆØÞÆÖ¾ÌäÊâêÊÜÆòD@Db````````Dv?„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DÚÒÆäÞÄØÂôʾ`D@DÚľÌàê¾ÊÜÂÄØÊD@DŒ‚˜¦ŠDvE„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DÚÒÆäÞÄØÂôʾ`D@DÚľØÞÆÂؾÚÊÚÞäò¾æÒôÊD@DpbrdDvE„æÄ®Òôtt‚ÈÈ ÊäÒàÐÊäÂØ@Dˆ’ ¾¦îÒèÆÐÊæ¾h„ÒèæD@DÂðÒ¾ÎàÒÞD@DÚÒÆäÞÄØÂôʾ`DvG„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@Dˆ’ ¾¦îÒèÆÐÊæ¾h„ÒèæD@DêæʾÒÜèÊääêàè¾ÒÈD@D¨¤ªŠDv?„æÄ®Òôtt‚ÈÈ ÊäÒàÐÊäÂØ@DŠ¨Š¤œŠ¨D@DÂðÒ¾ÊèÐÊäÜÊèD@DÚÒÆäÞÄØÂôʾ`Dv;„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DŠ¨Š¤œŠ¨D@DÊèÐÊäÜÊè¾ÈÚ¾`D@D¨¤ªŠDv=„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DŠ¨Š¤œŠ¨D@DêæʾÒÜèÊääêàè¾ÒÈD@D¨¤ªŠDv=„æÄ®Òôtt‚ÈÈ ÊäÒàÐÊäÂØ@D˜Šˆæ¾h„ÒèæD@DÂðÒ¾ÎàÒÞD@DÚÒÆäÞÄØÂôʾ`Dv@„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@D˜Šˆæ¾h„ÒèæD@DêæʾÒÜèÊääêàè¾ÒÈD@DŒ‚˜¦ŠDv>„æÄ®Òôtt‚ÈÈ ÊäÒàÐÊäÂØ@Dš†„¾ˆˆ¤fD@DÂðÒ¾æl¾ÈÈäðD@DÚÒÆäÞÄØÂôʾ`DvE„æÄ®Òôtt‚ÈÈ ÊäÒàÐÊäÂØ@D êæо„êèèÞÜæ¾h„ÒèæD@DÂðÒ¾ÎàÒÞD@DÚÒÆäÞÄØÂôʾ`DvG„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@D êæо„êèèÞÜæ¾h„ÒèæD@DêæʾÒÜèÊääêàè¾ÒÈD@D¨¤ªŠDvC„æÄ®Òôtt‚ÈÈ ÊäÒàÐÊäÂØ@D¤¦dfd¾ªÂäè¾bD@DÂðÒ¾êÂäèØÒèÊD@DÚÒÆäÞÄØÂôʾ`DvC„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@D¤¦dfd¾ªÂäè¾bD@DêÂäè¾`¾ÄÂêȾäÂèÊD@Dbbjd``Dv>„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@D¤¦dfd¾ªÂäè¾bD@DêÂäè¾`¾ÈÂèÂîÒÈèÐD@DpDv>„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@D¤¦dfd¾ªÂäè¾bD@DêÂäè¾`¾àÂäÒèòD@DÜÞÜÊDvA„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@D¤¦dfd¾ªÂäè¾bD@DêæʾÒÜèÊääêàè¾ÒÈD@D¨¤ªŠDv?„æÄ®Òôtt‚ÈÈ ÊäÒàÐÊäÂØ@DÂðÒ¾èÒÚÊä¾`D@DÂðÒ¾èÒÚÊäD@DÚÒÆäÞÄØÂôʾ`Dv@„æÄ®ÒôttªàÈÂèʆÞÚàÞÜÊÜè@DÂðÒ¾èÒÚÊä¾`D@DêæʾÒÜèÊääêàè¾ÒÈD@D¨¤ªŠDv \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.make b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.make deleted file mode 100644 index 87c158c23..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.make +++ /dev/null @@ -1,216 +0,0 @@ -################################################################# -# Makefile generated by Xilinx Platform Studio -# Project:C:\E\Dev\FreeRTOS\WorkingCopy\Demo\MicroBlaze_Spartan-6_EthernetFull\PlatformStudioProject\system.xmp -# -# WARNING : This file will be re-generated every time a command -# to run a make target is invoked. So, any changes made to this -# file manually, will be lost when make is invoked next. -################################################################# - -# Name of the Microprocessor system -# The hardware specification of the system is in file : -# C:\E\Dev\FreeRTOS\WorkingCopy\Demo\MicroBlaze_Spartan-6_EthernetFull\PlatformStudioProject\system.mhs - -include system_incl.make - -################################################################# -# PHONY TARGETS -################################################################# -.PHONY: dummy -.PHONY: netlistclean -.PHONY: bitsclean -.PHONY: simclean -.PHONY: exporttosdk - -################################################################# -# EXTERNAL TARGETS -################################################################# -all: - @echo "Makefile to build a Microprocessor system :" - @echo "Run make with any of the following targets" - @echo " " - @echo " netlist : Generates the netlist for the given MHS " - @echo " bits : Runs Implementation tools to generate the bitstream" - @echo " exporttosdk: Export files to SDK" - @echo " " - @echo " init_bram: Initializes bitstream with BRAM data" - @echo " ace : Generate ace file from bitstream and elf" - @echo " download : Downloads the bitstream onto the board" - @echo " " - @echo " sim : Generates HDL simulation models and runs simulator for chosen simulation mode" - @echo " simmodel : Generates HDL simulation models for chosen simulation mode" - @echo " " - @echo " netlistclean: Deletes netlist" - @echo " bitsclean: Deletes bit, ncd, bmm files" - @echo " hwclean : Deletes implementation dir" - @echo " simclean : Deletes simulation dir" - @echo " clean : Deletes all generated files/directories" - @echo " " - -bits: $(SYSTEM_BIT) - -ace: $(SYSTEM_ACE) - -exporttosdk: $(SYSTEM_HW_HANDOFF_DEP) - -netlist: $(POSTSYN_NETLIST) - -download: $(DOWNLOAD_BIT) dummy - @echo "*********************************************" - @echo "Downloading Bitstream onto the target board" - @echo "*********************************************" - impact -batch etc/download.cmd - -init_bram: $(DOWNLOAD_BIT) - -sim: $(DEFAULT_SIM_SCRIPT) - cd simulation/behavioral & \ - system_fuse.cmd - cd simulation/behavioral & \ - start /B $(SIM_CMD) -gui -tclbatch system_setup.tcl - -simmodel: $(DEFAULT_SIM_SCRIPT) - -behavioral_model: $(BEHAVIORAL_SIM_SCRIPT) - -structural_model: $(STRUCTURAL_SIM_SCRIPT) - -clean: hwclean simclean - rm -f _impact.cmd - -hwclean: netlistclean bitsclean - rm -rf implementation synthesis xst hdl - rm -rf xst.srp $(SYSTEM).srp - rm -f __xps/ise/_xmsgs/bitinit.xmsgs - -netlistclean: - rm -f $(POSTSYN_NETLIST) - rm -f platgen.log - rm -f __xps/ise/_xmsgs/platgen.xmsgs - rm -f $(BMM_FILE) - -bitsclean: - rm -f $(SYSTEM_BIT) - rm -f implementation/$(SYSTEM).ncd - rm -f implementation/$(SYSTEM)_bd.bmm - rm -f implementation/$(SYSTEM)_map.ncd - rm -f implementation/download.bit - rm -f __xps/$(SYSTEM)_routed - -simclean: - rm -rf simulation/behavioral - rm -f simgen.log - rm -f __xps/ise/_xmsgs/simgen.xmsgs - -################################################################# -# BOOTLOOP ELF FILES -################################################################# - - -$(MICROBLAZE_0_BOOTLOOP): $(MICROBLAZE_BOOTLOOP_LE) - IF NOT EXIST "$(BOOTLOOP_DIR)" @mkdir "$(BOOTLOOP_DIR)" - cp -f $(MICROBLAZE_BOOTLOOP_LE) $(MICROBLAZE_0_BOOTLOOP) - -################################################################# -# HARDWARE IMPLEMENTATION FLOW -################################################################# - - -$(BMM_FILE) \ -$(WRAPPER_NGC_FILES): $(MHSFILE) __xps/platgen.opt \ - $(CORE_STATE_DEVELOPMENT_FILES) - @echo "****************************************************" - @echo "Creating system netlist for hardware specification.." - @echo "****************************************************" - platgen $(PLATGEN_OPTIONS) $(MHSFILE) - -$(POSTSYN_NETLIST): $(WRAPPER_NGC_FILES) - @echo "Running synthesis..." - cd synthesis & synthesis.cmd - -__xps/$(SYSTEM)_routed: $(FPGA_IMP_DEPENDENCY) - @echo "*********************************************" - @echo "Running Xilinx Implementation tools.." - @echo "*********************************************" - @cp -f $(UCF_FILE) implementation/$(SYSTEM).ucf - @cp -f etc/fast_runtime.opt implementation/xflow.opt - xflow -wd implementation -p $(DEVICE) -implement xflow.opt $(SYSTEM).ngc - touch __xps/$(SYSTEM)_routed - -$(SYSTEM_BIT): __xps/$(SYSTEM)_routed $(BITGEN_UT_FILE) - xilperl $(XILINX_EDK_DIR)/data/fpga_impl/observe_par.pl $(OBSERVE_PAR_OPTIONS) implementation/$(SYSTEM).par - @echo "*********************************************" - @echo "Running Bitgen.." - @echo "*********************************************" - @cp -f $(BITGEN_UT_FILE) implementation/bitgen.ut - cd implementation & bitgen -w -f bitgen.ut $(SYSTEM) & cd .. - -$(DOWNLOAD_BIT): $(SYSTEM_BIT) $(BRAMINIT_ELF_IMP_FILES) __xps/bitinit.opt - @cp -f implementation/$(SYSTEM)_bd.bmm . - @echo "*********************************************" - @echo "Initializing BRAM contents of the bitstream" - @echo "*********************************************" - bitinit -p $(DEVICE) $(MHSFILE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_IMP_FILE_ARGS) \ - -bt $(SYSTEM_BIT) -o $(DOWNLOAD_BIT) - @rm -f $(SYSTEM)_bd.bmm - -$(SYSTEM_ACE): - @echo "In order to generate ace file, you must have:-" - @echo "- exactly one processor." - @echo "- opb_mdm, if using microblaze." - -################################################################# -# EXPORT_TO_SDK FLOW -################################################################# - -$(SYSTEM_HW_HANDOFF): $(MHSFILE) __xps/platgen.opt - IF NOT EXIST "$(SDK_EXPORT_DIR)" @mkdir "$(SDK_EXPORT_DIR)" - psf2Edward -inp $(SYSTEM).xmp -exit_on_error -edwver 1.2 -xml $(SDK_EXPORT_DIR)/$(SYSTEM).xml $(GLOBAL_SEARCHPATHOPT) - xdsgen -inp $(SYSTEM).xmp -report $(SDK_EXPORT_DIR)/$(SYSTEM).html $(GLOBAL_SEARCHPATHOPT) -make_docs_local - -$(SYSTEM_HW_HANDOFF_BIT): $(SYSTEM_BIT) - @rm -rf $(SYSTEM_HW_HANDOFF_BIT) - @cp -f $(SYSTEM_BIT) $(SDK_EXPORT_DIR) - -$(SYSTEM_HW_HANDOFF_BMM): implementation/$(SYSTEM)_bd.bmm - @rm -rf $(SYSTEM_HW_HANDOFF_BMM) - @cp -f implementation/$(SYSTEM)_bd.bmm $(SDK_EXPORT_DIR) - -################################################################# -# SIMULATION FLOW -################################################################# - - -################## BEHAVIORAL SIMULATION ################## - -$(BEHAVIORAL_SIM_SCRIPT): $(MHSFILE) __xps/simgen.opt \ - $(BRAMINIT_ELF_SIM_FILES) - @echo "*********************************************" - @echo "Creating behavioral simulation models..." - @echo "*********************************************" - simgen $(SIMGEN_OPTIONS) -m behavioral $(MHSFILE) - -################## STRUCTURAL SIMULATION ################## - -$(STRUCTURAL_SIM_SCRIPT): $(WRAPPER_NGC_FILES) __xps/simgen.opt \ - $(BRAMINIT_ELF_SIM_FILES) - @echo "*********************************************" - @echo "Creating structural simulation models..." - @echo "*********************************************" - simgen $(SIMGEN_OPTIONS) -sd implementation -m structural $(MHSFILE) - - -################## TIMING SIMULATION ################## - -implementation/$(SYSTEM).ncd: __xps/$(SYSTEM)_routed - -$(TIMING_SIM_SCRIPT): implementation/$(SYSTEM).ncd __xps/simgen.opt \ - $(BRAMINIT_ELF_SIM_FILES) - @echo "*********************************************" - @echo "Creating timing simulation models..." - @echo "*********************************************" - simgen $(SIMGEN_OPTIONS) -sd implementation -m timing $(MHSFILE) - -dummy: - @echo "" - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.mhs b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.mhs deleted file mode 100644 index b2438cf18..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.mhs +++ /dev/null @@ -1,485 +0,0 @@ - -# ############################################################################## -# Created by Base System Builder Wizard for Xilinx EDK 13.1 Build EDK_O.40d -# Sun Aug 28 16:20:06 2011 -# Target Board: xilinx.com sp605 Rev C -# Family: spartan6 -# Device: xc6slx45t -# Package: fgg484 -# Speed Grade: -3 -# ############################################################################## - PARAMETER VERSION = 2.1.0 - - - PORT RESET = RESET, DIR = I, SIGIS = RST, RST_POLARITY = 1 - PORT CLK_P = CLK, DIR = I, DIFFERENTIAL_POLARITY = P, SIGIS = CLK, CLK_FREQ = 200000000 - PORT CLK_N = CLK, DIR = I, DIFFERENTIAL_POLARITY = N, SIGIS = CLK, CLK_FREQ = 200000000 - PORT RS232_Uart_1_sout = RS232_Uart_1_sout, DIR = O - PORT RS232_Uart_1_sin = RS232_Uart_1_sin, DIR = I - PORT DIP_Switches_4Bits_TRI_I = DIP_Switches_4Bits_TRI_I, DIR = I, VEC = [0:3] - PORT LEDs_4Bits_TRI_O = LEDs_4Bits_TRI_O, DIR = O, VEC = [0:3] - PORT Push_Buttons_4Bits_TRI_I = Push_Buttons_4Bits_TRI_I, DIR = I, VEC = [0:3] - PORT mcbx_dram_clk = mcbx_dram_clk, DIR = O - PORT mcbx_dram_clk_n = mcbx_dram_clk_n, DIR = O - PORT mcbx_dram_cke = mcbx_dram_cke, DIR = O - PORT mcbx_dram_odt = mcbx_dram_odt, DIR = O - PORT mcbx_dram_ras_n = mcbx_dram_ras_n, DIR = O - PORT mcbx_dram_cas_n = mcbx_dram_cas_n, DIR = O - PORT mcbx_dram_we_n = mcbx_dram_we_n, DIR = O - PORT mcbx_dram_udm = mcbx_dram_udm, DIR = O - PORT mcbx_dram_ldm = mcbx_dram_ldm, DIR = O - PORT mcbx_dram_ba = mcbx_dram_ba, DIR = O, VEC = [2:0] - PORT mcbx_dram_addr = mcbx_dram_addr, DIR = O, VEC = [12:0] - PORT mcbx_dram_ddr3_rst = mcbx_dram_ddr3_rst, DIR = O - PORT mcbx_dram_dq = mcbx_dram_dq, DIR = IO, VEC = [15:0] - PORT mcbx_dram_dqs = mcbx_dram_dqs, DIR = IO - PORT mcbx_dram_dqs_n = mcbx_dram_dqs_n, DIR = IO - PORT mcbx_dram_udqs = mcbx_dram_udqs, DIR = IO - PORT mcbx_dram_udqs_n = mcbx_dram_udqs_n, DIR = IO - PORT rzq = rzq, DIR = IO - PORT zio = zio, DIR = IO - PORT ETHERNET_MDIO = ETHERNET_MDIO, DIR = IO - PORT ETHERNET_MDC = ETHERNET_MDC, DIR = O - PORT ETHERNET_TX_ER = ETHERNET_TX_ER, DIR = O - PORT ETHERNET_TXD = ETHERNET_TXD, DIR = O, VEC = [7:0] - PORT ETHERNET_TX_EN = ETHERNET_TX_EN, DIR = O - PORT ETHERNET_MII_TX_CLK = ETHERNET_MII_TX_CLK, DIR = I - PORT ETHERNET_TX_CLK = ETHERNET_TX_CLK, DIR = O - PORT ETHERNET_RXD = ETHERNET_RXD, DIR = I, VEC = [7:0] - PORT ETHERNET_RX_ER = ETHERNET_RX_ER, DIR = I - PORT ETHERNET_RX_CLK = ETHERNET_RX_CLK, DIR = I - PORT ETHERNET_RX_DV = ETHERNET_RX_DV, DIR = I - PORT ETHERNET_PHY_RST_N = ETHERNET_PHY_RST_N, DIR = O - - -BEGIN axi_interconnect - PARAMETER INSTANCE = axi4_0 - PARAMETER HW_VER = 1.02.a - PORT interconnect_aclk = clk_100_0000MHzPLL0 - PORT INTERCONNECT_ARESETN = proc_sys_reset_0_Interconnect_aresetn -END - -BEGIN axi_interconnect - PARAMETER INSTANCE = axi4lite_0 - PARAMETER HW_VER = 1.02.a - PARAMETER C_INTERCONNECT_CONNECTIVITY_MODE = 0 - PORT INTERCONNECT_ARESETN = proc_sys_reset_0_Interconnect_aresetn - PORT INTERCONNECT_ACLK = clk_50_0000MHzPLL0 -END - -BEGIN microblaze - PARAMETER INSTANCE = microblaze_0 - PARAMETER HW_VER = 8.10.a - PARAMETER C_INTERCONNECT = 2 - PARAMETER C_USE_BARREL = 1 - PARAMETER C_USE_FPU = 0 - PARAMETER C_DEBUG_ENABLED = 1 - PARAMETER C_ICACHE_BASEADDR = 0xc0000000 - PARAMETER C_ICACHE_HIGHADDR = 0xc7ffffff - PARAMETER C_USE_ICACHE = 1 - PARAMETER C_ICACHE_ALWAYS_USED = 1 - PARAMETER C_DCACHE_BASEADDR = 0xc0000000 - PARAMETER C_DCACHE_HIGHADDR = 0xc7ffffff - PARAMETER C_USE_DCACHE = 1 - PARAMETER C_DCACHE_ALWAYS_USED = 1 - PARAMETER C_INTERCONNECT_M_AXI_DC_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_DC_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_DP_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_DP_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_DP_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_DP_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_DP_B_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_DC_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_DC_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_DC_B_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_IC_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_IC_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_IC_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_IC_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_IC_B_REGISTER = 1 - BUS_INTERFACE ILMB = microblaze_0_ilmb - BUS_INTERFACE DLMB = microblaze_0_dlmb - BUS_INTERFACE M_AXI_DP = axi4lite_0 - BUS_INTERFACE M_AXI_DC = axi4_0 - BUS_INTERFACE M_AXI_IC = axi4_0 - BUS_INTERFACE DEBUG = microblaze_0_debug - PORT MB_RESET = proc_sys_reset_0_MB_Reset - PORT CLK = clk_100_0000MHzPLL0 - PORT INTERRUPT = microblaze_0_interrupt -END - -BEGIN lmb_v10 - PARAMETER INSTANCE = microblaze_0_ilmb - PARAMETER HW_VER = 2.00.a - PORT SYS_RST = proc_sys_reset_0_BUS_STRUCT_RESET - PORT LMB_CLK = clk_100_0000MHzPLL0 -END - -BEGIN lmb_v10 - PARAMETER INSTANCE = microblaze_0_dlmb - PARAMETER HW_VER = 2.00.a - PORT SYS_RST = proc_sys_reset_0_BUS_STRUCT_RESET - PORT LMB_CLK = clk_100_0000MHzPLL0 -END - -BEGIN lmb_bram_if_cntlr - PARAMETER INSTANCE = microblaze_0_i_bram_ctrl - PARAMETER HW_VER = 3.00.a - PARAMETER C_BASEADDR = 0x00000000 - PARAMETER C_HIGHADDR = 0x00001fff - BUS_INTERFACE SLMB = microblaze_0_ilmb - BUS_INTERFACE BRAM_PORT = microblaze_0_i_bram_ctrl_2_microblaze_0_bram_block -END - -BEGIN lmb_bram_if_cntlr - PARAMETER INSTANCE = microblaze_0_d_bram_ctrl - PARAMETER HW_VER = 3.00.a - PARAMETER C_BASEADDR = 0x00000000 - PARAMETER C_HIGHADDR = 0x00001fff - BUS_INTERFACE SLMB = microblaze_0_dlmb - BUS_INTERFACE BRAM_PORT = microblaze_0_d_bram_ctrl_2_microblaze_0_bram_block -END - -BEGIN bram_block - PARAMETER INSTANCE = microblaze_0_bram_block - PARAMETER HW_VER = 1.00.a - BUS_INTERFACE PORTA = microblaze_0_i_bram_ctrl_2_microblaze_0_bram_block - BUS_INTERFACE PORTB = microblaze_0_d_bram_ctrl_2_microblaze_0_bram_block -END - -BEGIN proc_sys_reset - PARAMETER INSTANCE = proc_sys_reset_0 - PARAMETER HW_VER = 3.00.a - PARAMETER C_EXT_RESET_HIGH = 1 - PORT Ext_Reset_In = RESET - PORT MB_Reset = proc_sys_reset_0_MB_Reset - PORT Slowest_sync_clk = clk_50_0000MHzPLL0 - PORT Interconnect_aresetn = proc_sys_reset_0_Interconnect_aresetn - PORT Dcm_locked = proc_sys_reset_0_Dcm_locked - PORT MB_Debug_Sys_Rst = proc_sys_reset_0_MB_Debug_Sys_Rst - PORT BUS_STRUCT_RESET = proc_sys_reset_0_BUS_STRUCT_RESET -END - -BEGIN clock_generator - PARAMETER INSTANCE = clock_generator_0 - PARAMETER HW_VER = 4.01.a - PARAMETER C_CLKIN_FREQ = 200000000 - PARAMETER C_CLKOUT0_FREQ = 600000000 - PARAMETER C_CLKOUT0_GROUP = PLL0 - PARAMETER C_CLKOUT0_BUF = FALSE - PARAMETER C_CLKOUT1_FREQ = 600000000 - PARAMETER C_CLKOUT1_PHASE = 180 - PARAMETER C_CLKOUT1_GROUP = PLL0 - PARAMETER C_CLKOUT1_BUF = FALSE - PARAMETER C_CLKOUT2_FREQ = 100000000 - PARAMETER C_CLKOUT2_GROUP = PLL0 - PARAMETER C_CLKOUT3_FREQ = 125000000 - PARAMETER C_CLKOUT3_GROUP = NONE - PARAMETER C_CLKOUT4_FREQ = 200000000 - PARAMETER C_CLKOUT4_GROUP = PLL0 - PARAMETER C_CLKOUT5_FREQ = 50000000 - PARAMETER C_CLKOUT5_GROUP = PLL0 - PORT RST = RESET - PORT CLKIN = CLK - PORT CLKOUT2 = clk_100_0000MHzPLL0 - PORT CLKOUT5 = clk_50_0000MHzPLL0 - PORT CLKOUT3 = clk_125_0000MHz - PORT CLKOUT4 = clk_200_0000MHzPLL0 - PORT CLKOUT0 = clk_600_0000MHzPLL0_nobuf - PORT CLKOUT1 = clk_600_0000MHz180PLL0_nobuf - PORT LOCKED = proc_sys_reset_0_Dcm_locked -END - -BEGIN mdm - PARAMETER INSTANCE = debug_module - PARAMETER HW_VER = 2.00.b - PARAMETER C_INTERCONNECT = 2 - PARAMETER C_USE_UART = 1 - PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1 - PARAMETER C_BASEADDR = 0x74800000 - PARAMETER C_HIGHADDR = 0x7480ffff - BUS_INTERFACE S_AXI = axi4lite_0 - BUS_INTERFACE MBDEBUG_0 = microblaze_0_debug - PORT S_AXI_ACLK = clk_50_0000MHzPLL0 - PORT Debug_SYS_Rst = proc_sys_reset_0_MB_Debug_Sys_Rst -END - -BEGIN axi_uartlite - PARAMETER INSTANCE = RS232_Uart_1 - PARAMETER HW_VER = 1.01.a - PARAMETER C_BAUDRATE = 115200 - PARAMETER C_DATA_BITS = 8 - PARAMETER C_USE_PARITY = 0 - PARAMETER C_ODD_PARITY = 1 - PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1 - PARAMETER C_BASEADDR = 0x40600000 - PARAMETER C_HIGHADDR = 0x4060ffff - BUS_INTERFACE S_AXI = axi4lite_0 - PORT TX = RS232_Uart_1_sout - PORT RX = RS232_Uart_1_sin - PORT S_AXI_ACLK = clk_50_0000MHzPLL0 - PORT Interrupt = RS232_Uart_1_Interrupt -END - -BEGIN axi_gpio - PARAMETER INSTANCE = DIP_Switches_4Bits - PARAMETER HW_VER = 1.01.a - PARAMETER C_GPIO_WIDTH = 4 - PARAMETER C_ALL_INPUTS = 1 - PARAMETER C_INTERRUPT_PRESENT = 1 - PARAMETER C_IS_DUAL = 0 - PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1 - PARAMETER C_BASEADDR = 0x40040000 - PARAMETER C_HIGHADDR = 0x4004ffff - BUS_INTERFACE S_AXI = axi4lite_0 - PORT GPIO_IO_I = DIP_Switches_4Bits_TRI_I - PORT S_AXI_ACLK = clk_50_0000MHzPLL0 - PORT IP2INTC_Irpt = DIP_Switches_4Bits_IP2INTC_Irpt -END - -BEGIN axi_gpio - PARAMETER INSTANCE = LEDs_4Bits - PARAMETER HW_VER = 1.01.a - PARAMETER C_GPIO_WIDTH = 4 - PARAMETER C_ALL_INPUTS = 0 - PARAMETER C_INTERRUPT_PRESENT = 0 - PARAMETER C_IS_DUAL = 0 - PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1 - PARAMETER C_BASEADDR = 0x40020000 - PARAMETER C_HIGHADDR = 0x4002ffff - BUS_INTERFACE S_AXI = axi4lite_0 - PORT GPIO_IO_O = LEDs_4Bits_TRI_O - PORT S_AXI_ACLK = clk_50_0000MHzPLL0 -END - -BEGIN axi_gpio - PARAMETER INSTANCE = Push_Buttons_4Bits - PARAMETER HW_VER = 1.01.a - PARAMETER C_GPIO_WIDTH = 4 - PARAMETER C_ALL_INPUTS = 1 - PARAMETER C_INTERRUPT_PRESENT = 1 - PARAMETER C_IS_DUAL = 0 - PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1 - PARAMETER C_BASEADDR = 0x40000000 - PARAMETER C_HIGHADDR = 0x4000ffff - BUS_INTERFACE S_AXI = axi4lite_0 - PORT GPIO_IO_I = Push_Buttons_4Bits_TRI_I - PORT S_AXI_ACLK = clk_50_0000MHzPLL0 - PORT IP2INTC_Irpt = Push_Buttons_4Bits_IP2INTC_Irpt -END - -BEGIN axi_s6_ddrx - PARAMETER INSTANCE = MCB_DDR3 - PARAMETER HW_VER = 1.02.a - PARAMETER C_MCB_RZQ_LOC = K7 - PARAMETER C_MCB_ZIO_LOC = R7 - PARAMETER C_MEM_TYPE = DDR3 - PARAMETER C_MEM_PARTNO = MT41J64M16XX-187E - PARAMETER C_MEM_BANKADDR_WIDTH = 3 - PARAMETER C_MEM_NUM_COL_BITS = 10 - PARAMETER C_SKIP_IN_TERM_CAL = 0 - PARAMETER C_S0_AXI_ENABLE = 1 - PARAMETER C_INTERCONNECT_S0_AXI_MASTERS = microblaze_0.M_AXI_DC & microblaze_0.M_AXI_IC & ETHERNET_dma.M_AXI_SG & ETHERNET_dma.M_AXI_MM2S & ETHERNET_dma.M_AXI_S2MM - PARAMETER C_INTERCONNECT_S0_AXI_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S0_AXI_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S0_AXI_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S0_AXI_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S0_AXI_B_REGISTER = 1 - PARAMETER C_S0_AXI_BASEADDR = 0xc0000000 - PARAMETER C_S0_AXI_HIGHADDR = 0xc7ffffff - BUS_INTERFACE S0_AXI = axi4_0 - PORT mcbx_dram_clk = mcbx_dram_clk - PORT mcbx_dram_clk_n = mcbx_dram_clk_n - PORT mcbx_dram_cke = mcbx_dram_cke - PORT mcbx_dram_odt = mcbx_dram_odt - PORT mcbx_dram_ras_n = mcbx_dram_ras_n - PORT mcbx_dram_cas_n = mcbx_dram_cas_n - PORT mcbx_dram_we_n = mcbx_dram_we_n - PORT mcbx_dram_udm = mcbx_dram_udm - PORT mcbx_dram_ldm = mcbx_dram_ldm - PORT mcbx_dram_ba = mcbx_dram_ba - PORT mcbx_dram_addr = mcbx_dram_addr - PORT mcbx_dram_ddr3_rst = mcbx_dram_ddr3_rst - PORT mcbx_dram_dq = mcbx_dram_dq - PORT mcbx_dram_dqs = mcbx_dram_dqs - PORT mcbx_dram_dqs_n = mcbx_dram_dqs_n - PORT mcbx_dram_udqs = mcbx_dram_udqs - PORT mcbx_dram_udqs_n = mcbx_dram_udqs_n - PORT rzq = rzq - PORT zio = zio - PORT s0_axi_aclk = clk_100_0000MHzPLL0 - PORT ui_clk = clk_100_0000MHzPLL0 - PORT sysclk_2x = clk_600_0000MHzPLL0_nobuf - PORT sysclk_2x_180 = clk_600_0000MHz180PLL0_nobuf - PORT SYS_RST = proc_sys_reset_0_BUS_STRUCT_RESET - PORT PLL_LOCK = proc_sys_reset_0_Dcm_locked -END - -BEGIN axi_ethernet - PARAMETER INSTANCE = ETHERNET - PARAMETER HW_VER = 2.01.a - PARAMETER C_PHYADDR = 0B00001 - PARAMETER C_INCLUDE_IO = 1 - PARAMETER C_TYPE = 1 - PARAMETER C_PHY_TYPE = 1 - PARAMETER C_HALFDUP = 0 - PARAMETER C_TXMEM = 4096 - PARAMETER C_RXMEM = 4096 - PARAMETER C_TXCSUM = 0 - PARAMETER C_RXCSUM = 0 - PARAMETER C_TXVLAN_TRAN = 0 - PARAMETER C_RXVLAN_TRAN = 0 - PARAMETER C_TXVLAN_TAG = 0 - PARAMETER C_RXVLAN_TAG = 0 - PARAMETER C_TXVLAN_STRP = 0 - PARAMETER C_RXVLAN_STRP = 0 - PARAMETER C_MCAST_EXTEND = 0 - PARAMETER C_STATS = 0 - PARAMETER C_AVB = 0 - PARAMETER C_INTERCONNECT_S_AXI_IS_ACLK_ASYNC = 0 - PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1 - PARAMETER C_BASEADDR = 0x41240000 - PARAMETER C_HIGHADDR = 0x4127ffff - BUS_INTERFACE S_AXI = axi4lite_0 - BUS_INTERFACE AXI_STR_TXD = ETHERNET_dma_txd - BUS_INTERFACE AXI_STR_TXC = ETHERNET_dma_txc - BUS_INTERFACE AXI_STR_RXS = ETHERNET_dma_rxs - BUS_INTERFACE AXI_STR_RXD = ETHERNET_dma_rxd - PORT MDIO = ETHERNET_MDIO - PORT MDC = ETHERNET_MDC - PORT GMII_TX_ER = ETHERNET_TX_ER - PORT GMII_TXD = ETHERNET_TXD - PORT GMII_TX_EN = ETHERNET_TX_EN - PORT MII_TX_CLK = ETHERNET_MII_TX_CLK - PORT GMII_TX_CLK = ETHERNET_TX_CLK - PORT GMII_RXD = ETHERNET_RXD - PORT GMII_RX_ER = ETHERNET_RX_ER - PORT GMII_RX_CLK = ETHERNET_RX_CLK - PORT GMII_RX_DV = ETHERNET_RX_DV - PORT PHY_RST_N = ETHERNET_PHY_RST_N - PORT S_AXI_ACLK = clk_50_0000MHzPLL0 - PORT GTX_CLK = clk_125_0000MHz - PORT REF_CLK = clk_200_0000MHzPLL0 - PORT AXI_STR_TXD_ACLK = clk_100_0000MHzPLL0 - PORT AXI_STR_TXC_ACLK = clk_100_0000MHzPLL0 - PORT AXI_STR_RXD_ACLK = clk_100_0000MHzPLL0 - PORT AXI_STR_RXS_ACLK = clk_100_0000MHzPLL0 - PORT AXI_STR_TXD_ARESETN = AXI_STR_TXD_ARESETN - PORT AXI_STR_TXC_ARESETN = AXI_STR_TXC_ARESETN - PORT AXI_STR_RXD_ARESETN = AXI_STR_RXD_ARESETN - PORT AXI_STR_RXS_ARESETN = AXI_STR_RXS_ARESETN - PORT INTERRUPT = ETHERNET_INTERRUPT -END - -BEGIN axi_timer - PARAMETER INSTANCE = axi_timer_0 - PARAMETER HW_VER = 1.01.a - PARAMETER C_COUNT_WIDTH = 32 - PARAMETER C_ONE_TIMER_ONLY = 0 - PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1 - PARAMETER C_BASEADDR = 0x41c00000 - PARAMETER C_HIGHADDR = 0x41c0ffff - BUS_INTERFACE S_AXI = axi4lite_0 - PORT S_AXI_ACLK = clk_50_0000MHzPLL0 - PORT Interrupt = axi_timer_0_Interrupt -END - -BEGIN axi_dma - PARAMETER INSTANCE = ETHERNET_dma - PARAMETER HW_VER = 3.00.a - PARAMETER C_SG_INCLUDE_DESC_QUEUE = 1 - PARAMETER C_SG_USE_STSAPP_LENGTH = 1 - PARAMETER C_INCLUDE_MM2S_DRE = 1 - PARAMETER C_INCLUDE_S2MM_DRE = 1 - PARAMETER C_DLYTMR_RESOLUTION = 1250 - PARAMETER C_PRMRY_IS_ACLK_ASYNC = 0 - PARAMETER C_SG_INCLUDE_STSCNTRL_STRM = 1 - PARAMETER C_SG_LENGTH_WIDTH = 16 - PARAMETER C_INCLUDE_MM2S = 1 - PARAMETER C_INCLUDE_S2MM = 1 - PARAMETER C_INTERCONNECT_S_AXI_LITE_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_LITE_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_LITE_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_LITE_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_LITE_B_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_SG_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_SG_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_SG_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_SG_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_SG_B_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_MM2S_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_MM2S_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_MM2S_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_MM2S_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_MM2S_B_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_S2MM_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_S2MM_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_S2MM_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_S2MM_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_M_AXI_S2MM_B_REGISTER = 1 - PARAMETER C_BASEADDR = 0x41e00000 - PARAMETER C_HIGHADDR = 0x41e0ffff - BUS_INTERFACE S_AXI_LITE = axi4lite_0 - BUS_INTERFACE M_AXI_SG = axi4_0 - BUS_INTERFACE M_AXI_MM2S = axi4_0 - BUS_INTERFACE M_AXI_S2MM = axi4_0 - BUS_INTERFACE M_AXIS_MM2S = ETHERNET_dma_txd - BUS_INTERFACE M_AXIS_CNTRL = ETHERNET_dma_txc - BUS_INTERFACE S_AXIS_STS = ETHERNET_dma_rxs - BUS_INTERFACE S_AXIS_S2MM = ETHERNET_dma_rxd - PORT s_axi_lite_aclk = clk_100_0000MHzPLL0 - PORT m_axi_sg_aclk = clk_100_0000MHzPLL0 - PORT m_axi_mm2s_aclk = clk_100_0000MHzPLL0 - PORT m_axi_s2mm_aclk = clk_100_0000MHzPLL0 - PORT mm2s_prmry_reset_out_n = AXI_STR_TXD_ARESETN - PORT mm2s_cntrl_reset_out_n = AXI_STR_TXC_ARESETN - PORT s2mm_prmry_reset_out_n = AXI_STR_RXD_ARESETN - PORT s2mm_sts_reset_out_n = AXI_STR_RXS_ARESETN - PORT mm2s_introut = ETHERNET_dma_mm2s_introut - PORT s2mm_introut = ETHERNET_dma_s2mm_introut -END - -BEGIN axi_intc - PARAMETER INSTANCE = microblaze_0_intc - PARAMETER HW_VER = 1.01.a - PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1 - PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1 - PARAMETER C_BASEADDR = 0x41200000 - PARAMETER C_HIGHADDR = 0x4120ffff - BUS_INTERFACE S_AXI = axi4lite_0 - PORT IRQ = microblaze_0_interrupt - PORT S_AXI_ACLK = clk_50_0000MHzPLL0 - PORT INTR = RS232_Uart_1_Interrupt & DIP_Switches_4Bits_IP2INTC_Irpt & Push_Buttons_4Bits_IP2INTC_Irpt & ETHERNET_INTERRUPT & axi_timer_0_Interrupt & ETHERNET_dma_mm2s_introut & ETHERNET_dma_s2mm_introut -END - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.xmp b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.xmp deleted file mode 100644 index 3862cd3d6..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system.xmp +++ /dev/null @@ -1,38 +0,0 @@ -#Please do not modify this file by hand -XmpVersion: 13.1 -VerMgmt: 13.1 -IntStyle: default -MHS File: system.mhs -Architecture: spartan6 -Device: xc6slx45t -Package: fgg484 -SpeedGrade: -3 -UserCmd1: -UserCmd1Type: 0 -UserCmd2: -UserCmd2Type: 0 -GenSimTB: 0 -SdkExportBmmBit: 1 -SdkExportDir: SDK/SDK_Export -InsertNoPads: 0 -WarnForEAArch: 1 -HdlLang: VHDL -SimModel: BEHAVIORAL -UcfFile: data/system.ucf -EnableParTimingError: 1 -ShowLicenseDialog: 1 -ICacheAddr: MCB_DDR3,C_S0_AXI_BASEADDR -ICacheAddr: MCB_DDR3,C_S1_AXI_BASEADDR -ICacheAddr: MCB_DDR3,C_S2_AXI_BASEADDR -ICacheAddr: MCB_DDR3,C_S3_AXI_BASEADDR -ICacheAddr: MCB_DDR3,C_S4_AXI_BASEADDR -ICacheAddr: MCB_DDR3,C_S5_AXI_BASEADDR -DCacheAddr: MCB_DDR3,C_S0_AXI_BASEADDR -DCacheAddr: MCB_DDR3,C_S1_AXI_BASEADDR -DCacheAddr: MCB_DDR3,C_S2_AXI_BASEADDR -DCacheAddr: MCB_DDR3,C_S3_AXI_BASEADDR -DCacheAddr: MCB_DDR3,C_S4_AXI_BASEADDR -DCacheAddr: MCB_DDR3,C_S5_AXI_BASEADDR -Processor: microblaze_0 -ElfImp: -ElfSim: diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system_incl.make b/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system_incl.make deleted file mode 100644 index a21b49949..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/system_incl.make +++ /dev/null @@ -1,112 +0,0 @@ -################################################################# -# Makefile generated by Xilinx Platform Studio -# Project:C:\E\Dev\FreeRTOS\WorkingCopy\Demo\MicroBlaze_Spartan-6_EthernetFull\PlatformStudioProject\system.xmp -# -# WARNING : This file will be re-generated every time a command -# to run a make target is invoked. So, any changes made to this -# file manually, will be lost when make is invoked next. -################################################################# - -SHELL = CMD - -XILINX_EDK_DIR = C:/devtools/Xilinx/13.1/ISE_DS/EDK - -SYSTEM = system - -MHSFILE = system.mhs - -FPGA_ARCH = spartan6 - -DEVICE = xc6slx45tfgg484-3 - -LANGUAGE = vhdl -GLOBAL_SEARCHPATHOPT = -PROJECT_SEARCHPATHOPT = - -SEARCHPATHOPT = $(PROJECT_SEARCHPATHOPT) $(GLOBAL_SEARCHPATHOPT) - -SUBMODULE_OPT = - -PLATGEN_OPTIONS = -p $(DEVICE) -lang $(LANGUAGE) $(SEARCHPATHOPT) $(SUBMODULE_OPT) -msg __xps/ise/xmsgprops.lst - -OBSERVE_PAR_OPTIONS = -error yes - -MICROBLAZE_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/microblaze/mb_bootloop.elf -MICROBLAZE_BOOTLOOP_LE = $(XILINX_EDK_DIR)/sw/lib/microblaze/mb_bootloop_le.elf -PPC405_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/ppc405/ppc_bootloop.elf -PPC440_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/ppc440/ppc440_bootloop.elf -BOOTLOOP_DIR = bootloops - -MICROBLAZE_0_BOOTLOOP = $(BOOTLOOP_DIR)/microblaze_0.elf - -BRAMINIT_ELF_IMP_FILES = $(MICROBLAZE_0_BOOTLOOP) -BRAMINIT_ELF_IMP_FILE_ARGS = -pe microblaze_0 $(MICROBLAZE_0_BOOTLOOP) - -BRAMINIT_ELF_SIM_FILES = $(MICROBLAZE_0_BOOTLOOP) -BRAMINIT_ELF_SIM_FILE_ARGS = -pe microblaze_0 $(MICROBLAZE_0_BOOTLOOP) - -SIM_CMD = isim_system - -BEHAVIORAL_SIM_SCRIPT = simulation/behavioral/$(SYSTEM)_setup.tcl - -STRUCTURAL_SIM_SCRIPT = simulation/structural/$(SYSTEM)_setup.tcl - -TIMING_SIM_SCRIPT = simulation/timing/$(SYSTEM)_setup.tcl - -DEFAULT_SIM_SCRIPT = $(BEHAVIORAL_SIM_SCRIPT) - -MIX_LANG_SIM_OPT = -mixed yes - -SIMGEN_OPTIONS = -p $(DEVICE) -lang $(LANGUAGE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_SIM_FILE_ARGS) $(MIX_LANG_SIM_OPT) -msg __xps/ise/xmsgprops.lst -s isim - - -CORE_STATE_DEVELOPMENT_FILES = - -WRAPPER_NGC_FILES = implementation/axi4_0_wrapper.ngc \ -implementation/axi4lite_0_wrapper.ngc \ -implementation/microblaze_0_wrapper.ngc \ -implementation/microblaze_0_ilmb_wrapper.ngc \ -implementation/microblaze_0_dlmb_wrapper.ngc \ -implementation/microblaze_0_i_bram_ctrl_wrapper.ngc \ -implementation/microblaze_0_d_bram_ctrl_wrapper.ngc \ -implementation/microblaze_0_bram_block_wrapper.ngc \ -implementation/proc_sys_reset_0_wrapper.ngc \ -implementation/clock_generator_0_wrapper.ngc \ -implementation/debug_module_wrapper.ngc \ -implementation/rs232_uart_1_wrapper.ngc \ -implementation/dip_switches_4bits_wrapper.ngc \ -implementation/leds_4bits_wrapper.ngc \ -implementation/push_buttons_4bits_wrapper.ngc \ -implementation/mcb_ddr3_wrapper.ngc \ -implementation/ethernet_wrapper.ngc \ -implementation/axi_timer_0_wrapper.ngc \ -implementation/ethernet_dma_wrapper.ngc \ -implementation/microblaze_0_intc_wrapper.ngc - -POSTSYN_NETLIST = implementation/$(SYSTEM).ngc - -SYSTEM_BIT = implementation/$(SYSTEM).bit - -DOWNLOAD_BIT = implementation/download.bit - -SYSTEM_ACE = implementation/$(SYSTEM).ace - -UCF_FILE = data/system.ucf - -BMM_FILE = implementation/$(SYSTEM).bmm - -BITGEN_UT_FILE = etc/bitgen.ut - -XFLOW_OPT_FILE = etc/fast_runtime.opt -XFLOW_DEPENDENCY = __xps/xpsxflow.opt $(XFLOW_OPT_FILE) - -XPLORER_DEPENDENCY = __xps/xplorer.opt -XPLORER_OPTIONS = -p $(DEVICE) -uc $(SYSTEM).ucf -bm $(SYSTEM).bmm -max_runs 7 - -FPGA_IMP_DEPENDENCY = $(BMM_FILE) $(POSTSYN_NETLIST) $(UCF_FILE) $(XFLOW_DEPENDENCY) - -SDK_EXPORT_DIR = SDK\SDK_Export\hw -SYSTEM_HW_HANDOFF = $(SDK_EXPORT_DIR)/$(SYSTEM).xml -SYSTEM_HW_HANDOFF_BIT = $(SDK_EXPORT_DIR)/$(SYSTEM).bit -SYSTEM_HW_HANDOFF_BMM = $(SDK_EXPORT_DIR)/$(SYSTEM)_bd.bmm -SYSTEM_HW_HANDOFF_DEP = $(SYSTEM_HW_HANDOFF) $(SYSTEM_HW_HANDOFF_BIT) $(SYSTEM_HW_HANDOFF_BMM) diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/.project b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/.project deleted file mode 100644 index c526d75b3..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/.project +++ /dev/null @@ -1,12 +0,0 @@ - - - HardwareWithEthernetFull - - - - - - - com.xilinx.sdk.hw.HwProject - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.bit b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.bit deleted file mode 100644 index e382363d7ff1bab71dd2f55f4e710ef49c4a07b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1484497 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
T)DtjGHiI%CewedgB!=upMhGg9!a; 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�E;eoF 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

il^)|cCqt>Sm=2PB4$Wder;_9q!bxN_M>0nB@ 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 z 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�`9aL{me@NvRGFC9a!hp&im_7HFwS!W@8Ef* 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 M9;@1|=rJo_0E)T%=>Px# diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.xml b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.xml deleted file mode 100644 index e11627904..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system.xml +++ /dev/null @@ -1,7098 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Interconnect - AXI4 Memory-Mapped Interconnect - - - - - - - Family - - - Base Family - - - Number of Slave Slots - - - Number of Master Slots - - - AXI ID Widgth - - - AXI Address Widgth - - - AXI Data Maximum Width - - - Slave AXI Data Width - - - Master AXI Data Width - - - Interconnect Crossbar Data Width - - - AXI Protocol - - - Master AXI Protocol - - - Master AXI Base Address - - - Master AXI High Address - - - Slave AXI Base ID - - - Slave AXI Thread ID Width - - - Slave AXI Is Interconnect - - - Slave AXI ACLK Ratio - - - Slvave AXI Is ACLK ASYNC - - - Master AXI ACLK Ratio - - - Master AXI Is ACLK ASYNC - - - Interconnect Crossbar ACLK Frequency Ratio - - - Slave AXI Supports Write - - - Slave AXI Supports Read - - - Master AXI Supports Write - - - Master AXI Supports Read - - - Propagate USER Signals - - - AWUSER Signal Width - - - ARUSER Signal Width - - - WUSER Signal Width - - - RUSER Signal Width - - - BUSER Signal Width - - - AXI Connectivity - - - Slave AXI Single Thread - - - Master AXI Supports Reordering - - - Master generates narrow bursts - - - Slave accepts narrow bursts - - - Slave AXI Write Acceptance - - - Slave AXI Read Acceptance - - - Master AXI Write Issuing - - - Master AXI Read Issuing - - - Slave AXI ARB Priority - - - Master AXI Secure - - - Master AXI Write FIFO Depth - - - Slave AXI Write FIFO Type - - - Slave AXI Write FIFO Delay - - - Slave AXI Read FIFO Depth - - - Slave AXI Read FIFO Type - - - Slave AXI Read FIFO Delay - - - Master AXI Write FIFO Depth - - - Master AXI Write FIFO Type - - - Master AXI Write FIFO Delay - - - Master AXI Read FIFO Depth - - - Master AXI Read FIFO Type - - - Master AXI Read FIFO Delay - - - Slave AXI AW Register - - - Slave AXI AR Register - - - Slave AXI W Register - - - Slave AXI R Register - - - Slave AXI B Register - - - Master AXI AW Register - - - Master AXI AR Register - - - Master AXI W Register - - - Master AXI R Register - - - Master AXI B Register - - - C_INTERCONNECT_R_REGISTER - - - Interconnect Architecture - - - Use Diagnostic Slave Port - - - Generate Interrupts - - - Check for transaction errors (DECERR) - - - Slave AXI CTRL Protocol - - - Slave AXI CTRL Address Width - - - Slave AXI CTRL Data Width - - - Diagnostic Slave Port Base Address - - - Diagnostic Slave Port High Address - - - Simulation debug - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Interconnect - AXI4 Memory-Mapped Interconnect - - - - - - - Family - - - Base Family - - - Number of Slave Slots - - - Number of Master Slots - - - AXI ID Widgth - - - AXI Address Widgth - - - AXI Data Maximum Width - - - Slave AXI Data Width - - - Master AXI Data Width - - - Interconnect Crossbar Data Width - - - AXI Protocol - - - Master AXI Protocol - - - Master AXI Base Address - - - Master AXI High Address - - - Slave AXI Base ID - - - Slave AXI Thread ID Width - - - Slave AXI Is Interconnect - - - Slave AXI ACLK Ratio - - - Slvave AXI Is ACLK ASYNC - - - Master AXI ACLK Ratio - - - Master AXI Is ACLK ASYNC - - - Interconnect Crossbar ACLK Frequency Ratio - - - Slave AXI Supports Write - - - Slave AXI Supports Read - - - Master AXI Supports Write - - - Master AXI Supports Read - - - Propagate USER Signals - - - AWUSER Signal Width - - - ARUSER Signal Width - - - WUSER Signal Width - - - RUSER Signal Width - - - BUSER Signal Width - - - AXI Connectivity - - - Slave AXI Single Thread - - - Master AXI Supports Reordering - - - Master generates narrow bursts - - - Slave accepts narrow bursts - - - Slave AXI Write Acceptance - - - Slave AXI Read Acceptance - - - Master AXI Write Issuing - - - Master AXI Read Issuing - - - Slave AXI ARB Priority - - - Master AXI Secure - - - Master AXI Write FIFO Depth - - - Slave AXI Write FIFO Type - - - Slave AXI Write FIFO Delay - - - Slave AXI Read FIFO Depth - - - Slave AXI Read FIFO Type - - - Slave AXI Read FIFO Delay - - - Master AXI Write FIFO Depth - - - Master AXI Write FIFO Type - - - Master AXI Write FIFO Delay - - - Master AXI Read FIFO Depth - - - Master AXI Read FIFO Type - - - Master AXI Read FIFO Delay - - - Slave AXI AW Register - - - Slave AXI AR Register - - - Slave AXI W Register - - - Slave AXI R Register - - - Slave AXI B Register - - - Master AXI AW Register - - - Master AXI AR Register - - - Master AXI W Register - - - Master AXI R Register - - - Master AXI B Register - - - C_INTERCONNECT_R_REGISTER - - - Interconnect Architecture - - - Use Diagnostic Slave Port - - - Generate Interrupts - - - Check for transaction errors (DECERR) - - - Slave AXI CTRL Protocol - - - Slave AXI CTRL Address Width - - - Slave AXI CTRL Data Width - - - Diagnostic Slave Port Base Address - - - Diagnostic Slave Port High Address - - - Simulation debug - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MicroBlaze - The MicroBlaze 32 bit soft processor - - - - - - - - - - - - - Enable Fault Tolerance Support - - - - - Select implementation to optimize area (with lower instruction throughput) - - - - Select Bus Interfaces - - - Select Stream Interfaces - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Enable Additional Machine Status Register Instructions - - - Enable Pattern Comparator - - - Enable Barrel Shifter - - - Enable Integer Divider - - - Enable Integer Multiplier - - - Enable Floating Point Unit - - - Enable Unaligned Data Exception - - - Enable Illegal Instruction Exception - - - Enable Instruction-side AXI Exception - - - Enable Data-side AXI Exception - - - Enable Instruction-side PLB Exception - - - Enable Data-side PLB Exception - - - Enable Integer Divide Exception - - - Enable Floating Point Unit Exceptions - - - Enable Stream Exception - - - <qt>Enable stack protection</qt> - - - Specifies Processor Version Register - - - Specify USER1 Bits in Processor Version Register - - - Specify USER2 Bits in Processor Version Registers - - - Enable MicroBlaze Debug Module Interface - - - Number of PC Breakpoints - - - Number of Read Address Watchpoints - - - Number of Write Address Watchpoints - - - Sense Interrupt on Edge vs. Level - - - Sense Interrupt on Rising vs. Falling Edge - - - Specify Reset Value for Select MSR Bits - - - <qt>Generate Illegal Instruction Exception for NULL Instruction</qt> - - - Number of Stream Links - - - - Enable Additional Stream Instructions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - I-Cache Base Address - - - I-Cache High Address - - - Enable Instruction Cache - - - Enable I-Cache Writes - - - - Size of the I-Cache in Bytes - - - - Instruction Cache Line Length - - - Use Cache Links for All I-Cache Memory Accesses - - - - Number of I-Cache Victims - - - Number of I-Cache Streams - - - Use Distributed RAM for I-Cache Tags - - - - - - - - - - - - - - - - - - - - D-Cache Base Address - - - D-Cache High Address - - - Enable Data Cache - - - Enable D-Cache Writes - - - - Size of D-Cache in Bytes - - - - Data Cache Line Length - - - Use Cache Links for All D-Cache Memory Accesses - - - - Enable Write-back Storage Policy - - - Number of D-Cache Victims - - - Use Distributed RAM for D-Cache Tags - - - - - - - - - - - - - - - - - - - - - - Memory Management - - - Data Shadow Translation Look-Aside Buffer Size - - - Instruction Shadow Translation Look-Aside Buffer Size - - - Enable Access to Memory Management Special Registers - - - Number of Memory Protection Zones - - - Privileged Instructions - - - - - - Enable Branch Target Cache - - - Branch Target Cache Size - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Local Memory Bus (LMB) 1.0 - 'The LMB is a fast, local bus for connecting MicroBlaze I and D ports to peripherals and BRAM' - - - - - - - Number of Bus Slaves - - - LMB Address Bus Width - - - LMB Data Bus Width - - - Active High External Reset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Local Memory Bus (LMB) 1.0 - 'The LMB is a fast, local bus for connecting MicroBlaze I and D ports to peripherals and BRAM' - - - - - - - Number of Bus Slaves - - - LMB Address Bus Width - - - LMB Data Bus Width - - - Active High External Reset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMB BRAM Controller - Local Memory Bus (LMB) Block RAM (BRAM) Interface Controller connects to an lmb bus - - - - - - - LMB BRAM Base Address - - - LMB BRAM High Address - - - - LMB Address Decode Mask - - - LMB Address Bus Width - - - LMB Data Bus Width - - - Error Correction Code - - - Select Interconnect - - - Fault Inject Registers - - - Correctable Error First Failing Register - - - Uncorrectable Error First Failing Register - - - ECC Status and Control Register - - - ECC On/Off Register - - - ECC On/Off Reset Value - - - Correctable Error Counter Register Width - - - Write Access setting - - - Base Address for PLB Interface - - - High Address for PLB Interface - - - PLB Address Bus Width - - - PLB Data Bus Width - - - PLB Slave Uses P2P Topology - - - Master ID Bus Width of PLB - - - Number of PLB Masters - - - PLB Slave is Capable of Bursts - - - Native Data Bus Width of PLB Slave - - - Frequency of PLB Slave - - - S_AXI_CTRL Clock Frequency - - - S_AXI_CTRL Base Address - - - S_AXI_CTRL High Address - - - S_AXI_CTRL Address Width - - - S_AXI_CTRL Data Width - - - S_AXI_CTRL Protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LMB BRAM Controller - Local Memory Bus (LMB) Block RAM (BRAM) Interface Controller connects to an lmb bus - - - - - - - LMB BRAM Base Address - - - LMB BRAM High Address - - - - LMB Address Decode Mask - - - LMB Address Bus Width - - - LMB Data Bus Width - - - Error Correction Code - - - Select Interconnect - - - Fault Inject Registers - - - Correctable Error First Failing Register - - - Uncorrectable Error First Failing Register - - - ECC Status and Control Register - - - ECC On/Off Register - - - ECC On/Off Reset Value - - - Correctable Error Counter Register Width - - - Write Access setting - - - Base Address for PLB Interface - - - High Address for PLB Interface - - - PLB Address Bus Width - - - PLB Data Bus Width - - - PLB Slave Uses P2P Topology - - - Master ID Bus Width of PLB - - - Number of PLB Masters - - - PLB Slave is Capable of Bursts - - - Native Data Bus Width of PLB Slave - - - Frequency of PLB Slave - - - S_AXI_CTRL Clock Frequency - - - S_AXI_CTRL Base Address - - - S_AXI_CTRL High Address - - - S_AXI_CTRL Address Width - - - S_AXI_CTRL Data Width - - - S_AXI_CTRL Protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Block RAM (BRAM) Block - The BRAM Block is a configurable memory module that attaches to a variety of BRAM Interface Controllers. - - - - - - - Size of BRAM(s) in Bytes - - - Data Width of Port A and B - - - Address Width of Port A and B - - - Number of Byte Write Enables - - - Device Family - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processor System Reset Module - Reset management module - - - - - - - Device Subfamily - - - Number of Clocks Before Input Change is Recognized On The External Reset Input - - - Number of Clocks Before Input Change is Recognized On The Auxiliary Reset Input - - - External Reset Active High - - - Auxiliary Reset Active High - - - Number of Bus Structure Reset Registered Outputs - - - Number of Peripheral Reset Registered Outputs - - - Number of Active Low Interconnect Reset Registered Outputs - - - Number of Active Low Peripheral Reset Registered Outputs - - - Device Family - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Clock Generator - Clock generator for processor system. - - - - - - - Family - - - Device - - - Package - - - Speed Grade - - - Input Clock Frequency (Hz) - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Varaible Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Varaible Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase - - - Required Frequency (Hz) - - - Clock Deskew - - - Required Frequency (Hz) - - - Required Phase - - - Required Group - - - Buffered - - - Variable Phase Shift - - - - Clock Primitive Feedback Buffer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MicroBlaze Debug Module (MDM) - Debug module for MicroBlaze Soft Processor. - - - - - - - Device Family - - - Specifies the JTAG user-defined register used - - - Specifies the Bus Interface for the JTAG UART - - - Base Address - - - High Address - - - PLB Address Bus Width - - - PLB Data Bus Width - - - PLB Slave Uses P2P Topology - - - Master ID Bus Width of PLB - - - Number of PLB Masters - - - Native Data Bus Width of PLB Slave - - - PLB Slave is Capable of Bursts - - - Number of MicroBlaze debug ports - - - Enable JTAG UART - - - AXI Address Width - - - AXI Data Width - - - AXI4LITE protocal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI UART (Lite) - Generic UART (Universal Asynchronous Receiver/Transmitter) for AXI. - - - - - - - Device Family - - - AXI Clock Frequency - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - UART Lite Baud Rate - Baud Rate - - - Number of Data Bits in a Serial Frame - Data Bits - - - Use Parity - - - Parity Type - - - AXI4LITE protocol - - - - - - - - - - Serial Data Out - - - Serial Data In - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI General Purpose IO - General Purpose Input/Output (GPIO) core for the AXI bus. - - - - - - - Device Family - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - GPIO Data Channel Width - GPIO Data Width - - - GPIO2 Data Channel Width - - - Channel 1 is Input Only - - - Channel 2 is Input Only - - - GPIO Supports Interrupts - - - Channel 1 Data Out Default Value - - - Channel 1 Tri-state Default Value - - - Enable Channel 2 - - - Channel 2 Data Out Default Value - - - Channel 2 Tri-state Default Value - - - AXI4LITE protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPIO1 Data IO - - - GPIO2 Data IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI General Purpose IO - General Purpose Input/Output (GPIO) core for the AXI bus. - - - - - - - Device Family - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - GPIO Data Channel Width - GPIO Data Width - - - GPIO2 Data Channel Width - - - Channel 1 is Input Only - - - Channel 2 is Input Only - - - GPIO Supports Interrupts - - - Channel 1 Data Out Default Value - - - Channel 1 Tri-state Default Value - - - Enable Channel 2 - - - Channel 2 Data Out Default Value - - - Channel 2 Tri-state Default Value - - - AXI4LITE protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPIO1 Data IO - - - GPIO2 Data IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI General Purpose IO - General Purpose Input/Output (GPIO) core for the AXI bus. - - - - - - - Device Family - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - GPIO Data Channel Width - GPIO Data Width - - - GPIO2 Data Channel Width - - - Channel 1 is Input Only - - - Channel 2 is Input Only - - - GPIO Supports Interrupts - - - Channel 1 Data Out Default Value - - - Channel 1 Tri-state Default Value - - - Enable Channel 2 - - - Channel 2 Data Out Default Value - - - Channel 2 Tri-state Default Value - - - AXI4LITE protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPIO1 Data IO - - - GPIO2 Data IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI S6 Memory Controller(DDR/DDR2/DDR3) - Spartan-6 memory controller - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Ethernet - AXI Ethernet MAC - - - - - - - AXI Protocol - - - AXI Stream Bus Width - - - AXI Stream Bus Width - - - AXI Stream Bus Width - - - AXI Stream Bus Width - - - AXI Stream Protocol - - - AXI Stream Protocol - - - AXI Stream Protocol - - - AXI Stream Protocol - - - AXI Stream Protocol - - - AXI Stream Protocol - - - Device Family - - - AXI Clock Freq in HZ - - - Base Address - - - High Address - - - AXI Address Width - - - AXI Data Width - - - AXI ID Width - - - Spartan 6 Transceiver Side - - - PHY Address - - - Include IO and BUFG as Needed for the PHY Interface Selected - - - Type of TEMAC - - - Physical Interface Type - - - Enable Half Duplex mode - - - TX Memory Depth - - - RX Memory Depth - - - Enable TX Checksum Offload - - - Enable RX Checksum Offload - - - Transmit VLAN translation - - - Receive VLAN translation - - - Transmit VLAN tagging - - - Receive VLAN tagging - - - Transmit VLAN stripping - - - Receive VLAN stripping - - - Receive Extended Multicast Address Filtering - - - Statistics Counters - - - Audio Video Bridging (AVB) - license required - - - Simulation Mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Timer/Counter - Timer counter with AXI interface - - - - - - - AXI4LITE protocol - - - Device Family - - - The Width of Counter in Timer - Count Width - - - Only One Timer is present - - - TRIG0 Active Level - - - TRIG1 Active Level - - - GEN0 Active Level - - - GEN1 Active Level - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - - - - - - - - - - Capture Trig 0 - - - Capture Trig 1 - - - Generate Out 0 - - - Generate Out 1 - - - Pulse Width Modulation 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI DMA Engine - AXI MemoryMap to/from AXI Stream Direct Memory Access Engine - - - - - - - AXI Lite Address Width - - - AXI Lite Data Width - - - Delay Timer Counter Resolution - - - Primary clock Is Asynchronous - - - Include Scatter Gather Descriptor Queuing - - - Include AXI Status and Control Streams - - - Use Status Stream App Length - - - Buffer Length Field Width - - - AXI SG Address Width - - - AXI SG Data Width - - - AXI Control Stream Width - - - AXI Status Stream Width - - - Include MM2S Channel - - - Include MM2S Data Realignment Engine - - - Maximum Memory Map Burst Size for MM2S - - - MM2S Address Width - - - MM2S Memory Map Data Width - - - MM2S Stream Data Width - - - Include S2MM Channel - - - Include S2MM Data Realignment Engine - - - Maximum Memory Map Burst Size for S2MM (data beats) - - - S2MM Address Width - - - S2MM Memory Map Data Width - - - S2MM Stream Data Width - - - Device Family - - - Base Address - - - High Address - - - AXI Lite Clock Frequency - - - AXI Scatter Gather Clock Frequency - - - AXI MM2S Clock Frequency - - - AXI S2MM Clock Frequency - - - AXI Lite Protocol - - - AXI Lite Supports Read Access - - - AXI Lite Supports Write Access - - - AXI SG Protocol - - - AXI SG Support Threads - - - Base Address - - - AXI SG Supports Narrow Bursts - - - AXI SG Generates Read Accesses - - - AXI SG Generates Write Accesses - - - AXI MM2S Protocol - - - AXI MM2S Support Threads - - - AXI MM2S Thread ID Width - - - AXI MM2S Supports Narrow Bursts - - - AXI MM2S Generates Read Accesses - - - AXI MM2S Generates Write Accesses - - - AXI MM2S Interface Read Issuing - - - AXI MM2S Interface Read FIFO Depth - - - AXI S2MM Protocol - - - AXI S2MM Support Threads - - - AXI S2MM Thread ID Width - - - AXI S2MM Supports Narrow Bursts - - - AXI S2MM Generates Write Accesses - - - AXI S2MM Generates Read Accesses - - - AXI S2MM Interface Write Issuing - - - AXI S2MM Interface Write FIFO Depth - - - AXI MM2S Stream Interface Protocol - - - AXI S2MM Stream Interface Protocol - - - AXI MM2S Control Stream Interface Protocol - - - AXI S2MM Status Stream Interface Protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AXI Interrupt Controller - intc core attached to the AXI - - - - - - - Device Family - - - AXI Base Address - - - AXI High Address - - - AXI Address Width - - - AXI Data Width - - - Number of Interrupt Inputs - - - Type of Interrupt for Each Input - - - Type of Each Edge Senstive Interrupt - - - Type of Each Level Sensitive Interrupt - - - Support IPR - - - Support SIE - - - Support CIE - - - Support IVR - - - IRQ Output Use Level - - - The Sense of IRQ Output - - - AXI4LITE protocol - - - - - - - - - - Interrupt Request Output - - - - - - - - - - - - - Interrupt Inputs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system_bd.bmm b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system_bd.bmm deleted file mode 100644 index 6571731fa..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/HardwareWithEthernetFull/system_bd.bmm +++ /dev/null @@ -1,32 +0,0 @@ -// BMM LOC annotation file. -// -// Release 13.1 - Data2MEM O.40d, build 1.9 Aug 19, 2010 -// Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. - - -/////////////////////////////////////////////////////////////////////////////// -// -// Processor 'microblaze_0', ID 100, memory map. -// -/////////////////////////////////////////////////////////////////////////////// - -ADDRESS_MAP microblaze_0 MICROBLAZE-LE 100 - - - /////////////////////////////////////////////////////////////////////////////// - // - // Processor 'microblaze_0' address space 'microblaze_0_bram_block_combined' 0x00000000:0x00001FFF (8 KBytes). - // - /////////////////////////////////////////////////////////////////////////////// - - ADDRESS_SPACE microblaze_0_bram_block_combined RAMB16 [0x00000000:0x00001FFF] - BUS_BLOCK - microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_0 [31:24] INPUT = microblaze_0_bram_block_combined_0.mem PLACED = X3Y34; - microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_1 [23:16] INPUT = microblaze_0_bram_block_combined_1.mem PLACED = X3Y36; - microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_2 [15:8] INPUT = microblaze_0_bram_block_combined_2.mem PLACED = X2Y32; - microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_3 [7:0] INPUT = microblaze_0_bram_block_combined_3.mem PLACED = X2Y30; - END_BUS_BLOCK; - END_ADDRESS_SPACE; - -END_ADDRESS_MAP; - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.cproject b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.cproject deleted file mode 100644 index d3ad43897..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.cproject +++ /dev/null @@ -1,1433 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.project b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.project deleted file mode 100644 index f14e5f24c..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/.project +++ /dev/null @@ -1,82 +0,0 @@ - - - RTOSDemo - StandAloneBSP - microblaze_0 - - StandAloneBSP - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/RTOSDemo/Debug} - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - true - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/CreateProjectDirectoryStructure.bat b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/CreateProjectDirectoryStructure.bat deleted file mode 100644 index 3ed26c633..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/CreateProjectDirectoryStructure.bat +++ /dev/null @@ -1,117 +0,0 @@ -REM This file should be executed from the command line prior to the first -REM build. It will be necessary to refresh the Eclipse project once the -REM .bat file has been executed (normally just press F5 to refresh). - -REM Copies all the required files from their location within the standard -REM FreeRTOS directory structure to under the Eclipse project directory. -REM This permits the Eclipse project to be used in 'managed' mode and without -REM having to setup any linked resources. - -REM Files will also be copied into the BSP directory, which can be used to -REM generate FreeRTOS BSP packages directly from within the Xilinx SDK. -SET BSP_SOURCE=..\..\KernelAwareBSPRepository\bsp\freertos_v2_00_a\src\Source - -REM Standard paths -SET FREERTOS_SOURCE=..\..\..\..\Source -SET COMMON_SOURCE=..\..\..\Common\minimal -SET COMMON_INCLUDE=..\..\..\Common\include -SET LWIP_SOURCE=..\..\..\Common\ethernet\lwip-1.4.0 - -REM Have the files already been copied? -IF EXIST FreeRTOS_Source Goto END - - REM Create the required directory structure. - MD FreeRTOS_Source - MD FreeRTOS_Source\include - MD FreeRTOS_Source\portable\GCC - MD FreeRTOS_Source\portable\GCC\MicroBlazeV8 - MD FreeRTOS_Source\portable\MemMang - MD Demo_Source - MD Demo_Source\include - MD lwIP\api - MD lwIP\core - MD lwIP\core\ipv4 - MD lwIP\include - MD lwIP\include\ipv4 - MD lwIP\include\ipv4\lwip - MD lwIP\include\lwip - MD lwIP\include\netif - MD lwIP\netif - MD lwIP\netif\include - MD lwIP\netif\include\arch - - REM Copy the core kernel files into the SDK projects directory - copy %FREERTOS_SOURCE%\tasks.c FreeRTOS_Source - copy %FREERTOS_SOURCE%\queue.c FreeRTOS_Source - copy %FREERTOS_SOURCE%\list.c FreeRTOS_Source - copy %FREERTOS_SOURCE%\timers.c FreeRTOS_Source - - REM Copy the core kernel files into the BSP directory - copy %FREERTOS_SOURCE%\tasks.c %BSP_SOURCE% - copy %FREERTOS_SOURCE%\queue.c %BSP_SOURCE% - copy %FREERTOS_SOURCE%\list.c %BSP_SOURCE% - copy %FREERTOS_SOURCE%\timers.c %BSP_SOURCE% - - REM Copy the common header files into the SDK projects directory - copy %FREERTOS_SOURCE%\include\*.* FreeRTOS_Source\include - - REM Copy the common header files into the BSP directory - copy %FREERTOS_SOURCE%\include\*.* %BSP_SOURCE%\include - - REM Copy the portable layer files into the SDK projects directory - copy %FREERTOS_SOURCE%\portable\GCC\MicroBlazeV8\*.* FreeRTOS_Source\portable\GCC\MicroBlazeV8 - - REM Copy the portable layer files into the BSP projects directory - copy %FREERTOS_SOURCE%\portable\GCC\MicroBlazeV8\*.* %BSP_SOURCE%\portable\GCC\MicroBlazeV8 - - REM Copy the basic memory allocation files into the SDK projects directory - copy %FREERTOS_SOURCE%\portable\MemMang\heap_3.c FreeRTOS_Source\portable\MemMang - - REM Copy the basic memory allocation files into the BSP directory - copy %FREERTOS_SOURCE%\portable\MemMang\heap_3.c %BSP_SOURCE%\portable\MemMang - - REM Copy the files that define the common demo tasks. - copy %COMMON_SOURCE%\dynamic.c Demo_Source - copy %COMMON_SOURCE%\BlockQ.c Demo_Source - copy %COMMON_SOURCE%\death.c Demo_Source - copy %COMMON_SOURCE%\blocktim.c Demo_Source - copy %COMMON_SOURCE%\semtest.c Demo_Source - copy %COMMON_SOURCE%\PollQ.c Demo_Source - copy %COMMON_SOURCE%\GenQTest.c Demo_Source - copy %COMMON_SOURCE%\QPeek.c Demo_Source - copy %COMMON_SOURCE%\recmutex.c Demo_Source - copy %COMMON_SOURCE%\sp_flop.c Demo_Source - copy %COMMON_SOURCE%\flash.c Demo_Source - copy %COMMON_SOURCE%\comtest_strings.c Demo_Source - copy %COMMON_SOURCE%\TimerDemo.c Demo_Source - - REM Copy the common demo file headers. - copy %COMMON_INCLUDE%\dynamic.h Demo_Source\include - copy %COMMON_INCLUDE%\partest.h Demo_Source\include - copy %COMMON_INCLUDE%\BlockQ.h Demo_Source\include - copy %COMMON_INCLUDE%\death.h Demo_Source\include - copy %COMMON_INCLUDE%\blocktim.h Demo_Source\include - copy %COMMON_INCLUDE%\semtest.h Demo_Source\include - copy %COMMON_INCLUDE%\PollQ.h Demo_Source\include - copy %COMMON_INCLUDE%\GenQTest.h Demo_Source\include - copy %COMMON_INCLUDE%\QPeek.h Demo_Source\include - copy %COMMON_INCLUDE%\recmutex.h Demo_Source\include - copy %COMMON_INCLUDE%\flop.h Demo_Source\include - copy %COMMON_INCLUDE%\flash.h Demo_Source\include - copy %COMMON_INCLUDE%\comtest_strings.h Demo_Source\include - copy %COMMON_INCLUDE%\serial.h Demo_Source\include - copy %COMMON_INCLUDE%\comtest.h Demo_Source\include - copy %COMMON_INCLUDE%\TimerDemo.h Demo_Source\include - - REM Copy the required lwIP files - copy %LWIP_SOURCE%\src\api\*.c lwIP\api - copy %LWIP_SOURCE%\src\core\*.c lwIP\core - copy %LWIP_SOURCE%\src\core\ipv4\*.c lwIP\core\ipv4 - copy %LWIP_SOURCE%\src\include\ipv4\lwip\*.h lwIP\include\ipv4\lwip - copy %LWIP_SOURCE%\src\include\lwip\*.h lwIP\include\lwip - copy %LWIP_SOURCE%\src\include\netif\*.h lwIP\include\netif - copy %LWIP_SOURCE%\src\netif\etharp.c lwIP\netif - copy %LWIP_SOURCE%\ports\MicroBlaze-Ethernet-Lite lwip\netif - copy %LWIP_SOURCE%\ports\MicroBlaze-Ethernet-Lite\include\arch lwip\netif\include\arch - -: END diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/FreeRTOSConfig.h b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/FreeRTOSConfig.h deleted file mode 100644 index e1710117a..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/FreeRTOSConfig.h +++ /dev/null @@ -1,181 +0,0 @@ -/* - FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd. - - - *************************************************************************** - * * - * FreeRTOS tutorial books are available in pdf and paperback. * - * Complete, revised, and edited pdf reference manuals are also * - * available. * - * * - * Purchasing FreeRTOS documentation will not only help you, by * - * ensuring you get running as quickly as possible and with an * - * in-depth knowledge of how to use FreeRTOS, it will also help * - * the FreeRTOS project to continue with its mission of providing * - * professional grade, cross platform, de facto standard solutions * - * for microcontrollers - completely free of charge! * - * * - * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - - -/* The following #error directive is to remind users that a batch file must be - * executed prior to this project being built. The batch file *cannot* be - * executed from within older versions of Eclipse, but probably can be executed - * from within the Xilinx SDK. Once it has been executed, re-open or refresh - * the Eclipse project and remove the #error line below. - */ -//#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html. - *----------------------------------------------------------*/ -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 0 -#define configCPU_CLOCK_HZ ( XPAR_MICROBLAZE_CORE_CLOCK_FREQ_HZ ) /* Not actually used in this demo as the timer is set up in main() and uses the peripheral clock, not the CPU clock. */ -#define configTICK_RATE_HZ ( ( portTickType ) 1000 ) -#define configMAX_PRIORITIES ( 7 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 64 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 10 ) -#define configUSE_TRACE_FACILITY 1 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 10 -#define configCHECK_FOR_STACK_OVERFLOW 2 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 0 -#define configUSE_COUNTING_SEMAPHORES 1 -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 200 ) -#define configINTERRUPT_STACK_SIZE configMINIMAL_STACK_SIZE - -/* If configINSTALL_EXCEPTION_HANDLERS is set to 1, then the kernel will -automatically install its own exception handlers before the kernel is started, -if the application writer has not already caused them to be installed using the -vPortExceptionsInstallHandlers() API function. See the documentation page for -this demo on the FreeRTOS.org web site for more information. */ -#define configINSTALL_EXCEPTION_HANDLERS 1 - -/* configINTERRUPT_CONTROLLER_TO_USE must be set to the ID of the interrupt -controller that is going to be used directly by FreeRTOS itself. Most hardware -designs will only include on interrupt controller. */ -#define configINTERRUPT_CONTROLLER_TO_USE XPAR_INTC_SINGLE_DEVICE_ID - -/* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Software timer definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 4 ) -#define configTIMER_QUEUE_LENGTH 10 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_pcTaskNameGet 1 -#define INCLUDE_pcTaskNameGet 1 - -#define configASSERT( x ) if( ( x ) == 0 ) { portDISABLE_INTERRUPTS(); for( ;; ); } - - -/* Run time stats gathering definitions. The conditional compilation is to -prevent the C syntax being included in assembly files. */ -#ifndef __ASSEMBLER__ - unsigned long ulMainGetRunTimeCounterValue( void ); - void vMainConfigureTimerForRunTimeStats( void ); -#endif -#define configGENERATE_RUN_TIME_STATS 1 -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vMainConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() ulMainGetRunTimeCounterValue() - - - - - -/* Networking configuration follows. */ - -#define configLWIP_TASK_PRIORITY ( configMAX_PRIORITIES - 4 ) - -/* MAC address configuration. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x12 -#define configMAC_ADDR2 0x13 -#define configMAC_ADDR3 0x10 -#define configMAC_ADDR4 0x15 -#define configMAC_ADDR5 0x11 - -/* IP address configuration. */ -#define configIP_ADDR0 192 -#define configIP_ADDR1 168 -#define configIP_ADDR2 0 -#define configIP_ADDR3 200 - -/* Gateway IP address configuration. */ -#define configGW_IP_ADDR0 192 -#define configGW_IP_ADDR1 168 -#define configGW_IP_ADDR2 0 -#define configGW_IP_ADDR3 3 - -/* Netmask configuration. */ -#define configNET_MASK0 255 -#define configNET_MASK1 255 -#define configNET_MASK2 255 -#define configNET_MASK3 0 - -#endif /* FREERTOS_CONFIG_H */ - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/ParTest.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/ParTest.c deleted file mode 100644 index 808ec31eb..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/ParTest.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd. - - - *************************************************************************** - * * - * FreeRTOS tutorial books are available in pdf and paperback. * - * Complete, revised, and edited pdf reference manuals are also * - * available. * - * * - * Purchasing FreeRTOS documentation will not only help you, by * - * ensuring you get running as quickly as possible and with an * - * in-depth knowledge of how to use FreeRTOS, it will also help * - * the FreeRTOS project to continue with its mission of providing * - * professional grade, cross platform, de facto standard solutions * - * for microcontrollers - completely free of charge! * - * * - * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - -/*----------------------------------------------------------- - * Simple digital IO routines. - *-----------------------------------------------------------*/ - -/* Kernel includes. */ -#include "FreeRTOS.h" - -/* Demo application includes. */ -#include "partest.h" - -/* Library includes. */ -#include "xgpio.h" - -/* The hardware design that accompanies this demo project has four LED -outputs. */ -#define partstMAX_LED 4 - -/*-----------------------------------------------------------*/ - -/* A hardware specific constant required to use the Xilinx driver library. */ -static const unsigned portBASE_TYPE uxGPIOOutputChannel = 1UL; - -/* The current state of the output port. */ -static unsigned char ucGPIOState = 0U; - -/* Structure that hold the state of the ouptut peripheral used by this demo. -This is used by the Xilinx peripheral driver API functions. */ -static XGpio xOutputGPIOInstance; - -/* - * Setup the IO for the LED outputs. - */ -void vParTestInitialise( void ) -{ -portBASE_TYPE xStatus; -const unsigned char ucSetToOutput = 0U; - - /* Initialise the GPIO for the LEDs. */ - xStatus = XGpio_Initialize( &xOutputGPIOInstance, XPAR_LEDS_4BITS_DEVICE_ID ); - if( xStatus == XST_SUCCESS ) - { - /* All bits on this channel are going to be outputs (LEDs). */ - XGpio_SetDataDirection( &xOutputGPIOInstance, uxGPIOOutputChannel, ucSetToOutput ); - - /* Start with all LEDs off. */ - ucGPIOState = 0U; - XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState ); - } - - configASSERT( xStatus == XST_SUCCESS ); -} -/*-----------------------------------------------------------*/ - -void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) -{ -unsigned char ucLED = 1U; - - /* Only attempt to set the LED if it is in range. */ - if( uxLED < partstMAX_LED ) - { - ucLED <<= ( unsigned char ) uxLED; - - portENTER_CRITICAL(); - { - if( xValue == pdFALSE ) - { - ucGPIOState &= ~ucLED; - } - else - { - ucGPIOState |= ucLED; - } - XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState ); - } - portEXIT_CRITICAL(); - } -} -/*-----------------------------------------------------------*/ - -void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) -{ -unsigned char ucLED = 1U; - - /* Only attempt to toggle the LED if it is in range. */ - if( uxLED < partstMAX_LED ) - { - ucLED <<= ( unsigned char ) uxLED; - - portENTER_CRITICAL(); - { - if( ( ucGPIOState & ucLED ) != 0 ) - { - ucGPIOState &= ~ucLED; - } - else - { - ucGPIOState |= ucLED; - } - - XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState ); - } - portEXIT_CRITICAL(); - } -} - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/RegisterTests.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/RegisterTests.c deleted file mode 100644 index f47776fd9..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/RegisterTests.c +++ /dev/null @@ -1,307 +0,0 @@ -/* - FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd. - - - *************************************************************************** - * * - * FreeRTOS tutorial books are available in pdf and paperback. * - * Complete, revised, and edited pdf reference manuals are also * - * available. * - * * - * Purchasing FreeRTOS documentation will not only help you, by * - * ensuring you get running as quickly as possible and with an * - * in-depth knowledge of how to use FreeRTOS, it will also help * - * the FreeRTOS project to continue with its mission of providing * - * professional grade, cross platform, de facto standard solutions * - * for microcontrollers - completely free of charge! * - * * - * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* - * The register test task as described in the comments at the top of main-full.c. - */ -void vRegisterTest1( void *pvParameters ); -void vRegisterTest2( void *pvParameters ); - -/* Variables that are incremented on each iteration of the reg test tasks - -provided the tasks have not reported any errors. The check timer inspects these -variables to ensure they are still incrementing as expected. If a variable -stops incrementing then it is likely that its associate task has stalled or -detected an error. */ -volatile unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; - -/*-----------------------------------------------------------*/ - -void vRegisterTest1( void *pvParameters ) -{ - /* This task uses an infinite loop that is implemented in the assembly - code. - - First fill the relevant registers with known values. */ - asm volatile ( " addi r3, r0, 3 \n\t" \ - " addi r4, r0, 4 \n\t" \ - " addi r6, r0, 6 \n\t" \ - " addi r7, r0, 7 \n\t" \ - " addi r8, r0, 8 \n\t" \ - " addi r9, r0, 9 \n\t" \ - " addi r10, r0, 10 \n\t" \ - " addi r11, r0, 11 \n\t" \ - " addi r12, r0, 12 \n\t" \ - " addi r16, r0, 16 \n\t" \ - " addi r19, r0, 19 \n\t" \ - " addi r20, r0, 20 \n\t" \ - " addi r21, r0, 21 \n\t" \ - " addi r22, r0, 22 \n\t" \ - " addi r23, r0, 23 \n\t" \ - " addi r24, r0, 24 \n\t" \ - " addi r25, r0, 25 \n\t" \ - " addi r26, r0, 26 \n\t" \ - " addi r27, r0, 27 \n\t" \ - " addi r28, r0, 28 \n\t" \ - " addi r29, r0, 29 \n\t" \ - " addi r30, r0, 30 \n\t" \ - " addi r31, r0, 31 \n\t" - ); - - /* Now test the register values to ensure they contain the same value that - was written to them above. This task will get preempted frequently so - other tasks are likely to have executed since the register values were - written. If any register contains an unexpected value then the task will - branch to Error_Loop_1, which in turn prevents it from incrementing its - loop counter, enabling the check timer to determine that all is not as it - should be. */ - - asm volatile ( "Loop_Start_1: \n\t" \ - " xori r18, r3, 3 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r4, 4 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r6, 6 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r7, 7 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r8, 8 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r9, 9 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r10, 10 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r11, 11 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r12, 12 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r16, 16 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r19, 19 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r20, 20 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r21, 21 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r22, 22 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r23, 23 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r24, 24 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r25, 25 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r26, 26 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r27, 27 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r28, 28 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r29, 29 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r30, 30 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" \ - " xori r18, r31, 31 \n\t" \ - " bnei r18, Error_Loop_1 \n\t" - ); - - /* If this task has not branched to the error loop, then everything is ok, - and the check variable can be incremented to indicate that this task - is still running. Then, brach back to the top to check the register - contents again. */ - asm volatile ( " lwi r18, r0, ulRegTest1CycleCount \n\t" \ - " addik r18, r18, 1 \n\t" \ - " swi r18, r0, ulRegTest1CycleCount \n\t" \ - " \n\t" \ - " bri Loop_Start_1 " - ); - - /* The test function will branch here if it discovers an error. This part - of the code just sits in a NULL loop, which prevents the check variable - incrementing any further to allow the check timer to recognize that this - test has failed. */ - asm volatile ( "Error_Loop_1: \n\t" \ - " bri 0 \n\t" \ - " nop \n\t" \ - ); - - ( void ) pvParameters; -} -/*-----------------------------------------------------------*/ - -void vRegisterTest2( void *pvParameters ) -{ - /* This task uses an infinite loop that is implemented in the assembly - code. - - First fill the registers with known values. */ - asm volatile ( " addi r16, r0, 1016 \n\t" \ - " addi r19, r0, 1019 \n\t" \ - " addi r20, r0, 1020 \n\t" \ - " addi r21, r0, 1021 \n\t" \ - " addi r22, r0, 1022 \n\t" \ - " addi r23, r0, 1023 \n\t" \ - " addi r24, r0, 1024 \n\t" \ - " addi r25, r0, 1025 \n\t" \ - " addi r26, r0, 1026 \n\t" \ - " addi r27, r0, 1027 \n\t" \ - " addi r28, r0, 1028 \n\t" \ - " addi r29, r0, 1029 \n\t" \ - " addi r30, r0, 1030 \n\t" \ - " addi r31, r0, 1031 \n\t" \ - " " \ - "Loop_Start_2: " - ); - - /* Unlike vRegisterTest1, vRegisterTest2 performs a yield. This increases - the test coverage, but does mean volatile registers need re-loading with - their exepcted values. */ - taskYIELD(); - - /* taskYIELD() could have changed temporaries - set them back to those - expected by the reg test task. */ - asm volatile ( " addi r3, r0, 103 \n\t" \ - " addi r4, r0, 104 \n\t" \ - " addi r6, r0, 106 \n\t" \ - " addi r7, r0, 107 \n\t" \ - " addi r8, r0, 108 \n\t" \ - " addi r9, r0, 109 \n\t" \ - " addi r10, r0, 1010 \n\t" \ - " addi r11, r0, 1011 \n\t" \ - " addi r12, r0, 1012 \n\t" \ - ); - - - /* Now test the register values to ensure they contain the same value that - was written to them above. This task will get preempted frequently so - other tasks are likely to have executed since the register values were - written. */ - asm volatile ( " xori r18, r3, 103 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r4, 104 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r6, 106 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r7, 107 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r8, 108 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r9, 109 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r10, 1010 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r11, 1011 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r12, 1012 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r16, 1016 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r19, 1019 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r20, 1020 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r21, 1021 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r22, 1022 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r23, 1023 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r24, 1024 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r25, 1025 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r26, 1026 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r27, 1027 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r28, 1028 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r29, 1029 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r30, 1030 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" \ - " xori r18, r31, 1031 \n\t" \ - " bnei r18, Error_Loop_2 \n\t" - ); - - /* If this task has not branched to the error loop, then everything is ok, - and the check variable should be incremented to indicate that this task - is still running. Then, brach back to the top to check the registers - again. */ - asm volatile ( " lwi r18, r0, ulRegTest2CycleCount \n\t" \ - " addik r18, r18, 1 \n\t" \ - " swi r18, r0, ulRegTest2CycleCount \n\t" \ - " \n\t" \ - " bri Loop_Start_2 " - ); - - /* The test function will branch here if it discovers an error. This part - of the code just sits in a NULL loop, which prevents the check variable - incrementing any further to allow the check timer to recognize that this - test has failed. */ - asm volatile ( "Error_Loop_2: \n\t" \ - " bri 0 \n\t" \ - " nop \n\t" \ - ); - - ( void ) pvParameters; -} - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.c deleted file mode 100644 index 993fffcdd..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#include "lwip/opt.h" -#include "lwip/def.h" -#include "fs.h" -#include "fsdata.h" -#include - -/** Set this to 1 to include "fsdata_custom.c" instead of "fsdata.c" for the - * file system (to prevent changing the file included in CVS) */ -#ifndef HTTPD_USE_CUSTUM_FSDATA -#define HTTPD_USE_CUSTUM_FSDATA 0 -#endif - -#if HTTPD_USE_CUSTUM_FSDATA -#include "fsdata_custom.c" -#else /* HTTPD_USE_CUSTUM_FSDATA */ -#include "fsdata.c" -#endif /* HTTPD_USE_CUSTUM_FSDATA */ - -/*-----------------------------------------------------------------------------------*/ -/* Define the number of open files that we can support. */ -#ifndef LWIP_MAX_OPEN_FILES -#define LWIP_MAX_OPEN_FILES 10 -#endif - -/* Define the file system memory allocation structure. */ -struct fs_table { - struct fs_file file; - u8_t inuse; -}; - -/* Allocate file system memory */ -struct fs_table fs_memory[LWIP_MAX_OPEN_FILES]; - -#if LWIP_HTTPD_CUSTOM_FILES -int fs_open_custom(struct fs_file *file, const char *name); -void fs_close_custom(struct fs_file *file); -#endif /* LWIP_HTTPD_CUSTOM_FILES */ - -/*-----------------------------------------------------------------------------------*/ -static struct fs_file * -fs_malloc(void) -{ - int i; - for(i = 0; i < LWIP_MAX_OPEN_FILES; i++) { - if(fs_memory[i].inuse == 0) { - fs_memory[i].inuse = 1; - return(&fs_memory[i].file); - } - } - return(NULL); -} - -/*-----------------------------------------------------------------------------------*/ -static void -fs_free(struct fs_file *file) -{ - int i; - for(i = 0; i < LWIP_MAX_OPEN_FILES; i++) { - if(&fs_memory[i].file == file) { - fs_memory[i].inuse = 0; - break; - } - } - return; -} - -/*-----------------------------------------------------------------------------------*/ -struct fs_file * -fs_open(const char *name) -{ - struct fs_file *file; - const struct fsdata_file *f; - - file = fs_malloc(); - if(file == NULL) { - return NULL; - } - -#if LWIP_HTTPD_CUSTOM_FILES - if(fs_open_custom(file, name)) { - file->is_custom_file = 1; - return file; - } - file->is_custom_file = 0; -#endif /* LWIP_HTTPD_CUSTOM_FILES */ - - for(f = FS_ROOT; f != NULL; f = f->next) { - if (!strcmp(name, (char *)f->name)) { - file->data = (const char *)f->data; - file->len = f->len; - file->index = f->len; - file->pextension = NULL; - file->http_header_included = f->http_header_included; -#if HTTPD_PRECALCULATED_CHECKSUM - file->chksum_count = f->chksum_count; - file->chksum = f->chksum; -#endif /* HTTPD_PRECALCULATED_CHECKSUM */ -#if LWIP_HTTPD_FILE_STATE - file->state = fs_state_init(file, name); -#endif /* #if LWIP_HTTPD_FILE_STATE */ - return file; - } - } - fs_free(file); - return NULL; -} - -/*-----------------------------------------------------------------------------------*/ -void -fs_close(struct fs_file *file) -{ -#if LWIP_HTTPD_CUSTOM_FILES - if (file->is_custom_file) { - fs_close_custom(file); - } -#endif /* LWIP_HTTPD_CUSTOM_FILES */ -#if LWIP_HTTPD_FILE_STATE - fs_state_free(file, file->state); -#endif /* #if LWIP_HTTPD_FILE_STATE */ - fs_free(file); -} -/*-----------------------------------------------------------------------------------*/ -int -fs_read(struct fs_file *file, char *buffer, int count) -{ - int read; - - if(file->index == file->len) { - return -1; - } - - read = file->len - file->index; - if(read > count) { - read = count; - } - - MEMCPY(buffer, (file->data + file->index), read); - file->index += read; - - return(read); -} -/*-----------------------------------------------------------------------------------*/ -int fs_bytes_left(struct fs_file *file) -{ - return file->len - file->index; -} diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.h b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.h deleted file mode 100644 index cd7675923..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fs.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __FS_H__ -#define __FS_H__ - -#include "lwip/opt.h" - -/** Set this to 1 and provide the functions: - * - "int fs_open_custom(struct fs_file *file, const char *name)" - * Called first for every opened file to allow opening files - * that are not included in fsdata(_custom).c - * - "void fs_close_custom(struct fs_file *file)" - * Called to free resources allocated by fs_open_custom(). - */ -#ifndef LWIP_HTTPD_CUSTOM_FILES -#define LWIP_HTTPD_CUSTOM_FILES 0 -#endif - -/** Set this to 1 to include an application state argument per file - * that is opened. This allows to keep a state per connection/file. - */ -#ifndef LWIP_HTTPD_FILE_STATE -#define LWIP_HTTPD_FILE_STATE 0 -#endif - -/** HTTPD_PRECALCULATED_CHECKSUM==1: include precompiled checksums for - * predefined (MSS-sized) chunks of the files to prevent having to calculate - * the checksums at runtime. */ -#ifndef HTTPD_PRECALCULATED_CHECKSUM -#define HTTPD_PRECALCULATED_CHECKSUM 0 -#endif - -#if HTTPD_PRECALCULATED_CHECKSUM -struct fsdata_chksum { - u32_t offset; - u16_t chksum; - u16_t len; -}; -#endif /* HTTPD_PRECALCULATED_CHECKSUM */ - -struct fs_file { - const char *data; - int len; - int index; - void *pextension; -#if HTTPD_PRECALCULATED_CHECKSUM - const struct fsdata_chksum *chksum; - u16_t chksum_count; -#endif /* HTTPD_PRECALCULATED_CHECKSUM */ - u8_t http_header_included; -#if LWIP_HTTPD_CUSTOM_FILES - u8_t is_custom_file; -#endif /* LWIP_HTTPD_CUSTOM_FILES */ -#if LWIP_HTTPD_FILE_STATE - void *state; -#endif /* LWIP_HTTPD_FILE_STATE */ -}; - -struct fs_file *fs_open(const char *name); -void fs_close(struct fs_file *file); -int fs_read(struct fs_file *file, char *buffer, int count); -int fs_bytes_left(struct fs_file *file); - -#if LWIP_HTTPD_FILE_STATE -/** This user-defined function is called when a file is opened. */ -void *fs_state_init(struct fs_file *file, const char *name); -/** This user-defined function is called when a file is closed. */ -void fs_state_free(struct fs_file *file, void *state); -#endif /* #if LWIP_HTTPD_FILE_STATE */ - -#endif /* __FS_H__ */ diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.c deleted file mode 100644 index f2ddfd935..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.c +++ /dev/null @@ -1,2068 +0,0 @@ -#include "fs.h" -#include "lwip/def.h" -#include "fsdata.h" - - -#define file_NULL (struct fsdata_file *) NULL - - -static const unsigned int dummy_align__404_html = 0; -static const unsigned char data__404_html[] = { -/* /404.html (10 chars) */ -0x2f,0x34,0x30,0x34,0x2e,0x68,0x74,0x6d,0x6c,0x00,0x00,0x00, - -/* HTTP header */ -/* "HTTP/1.0 404 File not found -" (29 bytes) */ -0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,0x20,0x34,0x30,0x34,0x20,0x46,0x69,0x6c, -0x65,0x20,0x6e,0x6f,0x74,0x20,0x66,0x6f,0x75,0x6e,0x64,0x0d,0x0a, -/* "Server: lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip) -" (63 bytes) */ -0x53,0x65,0x72,0x76,0x65,0x72,0x3a,0x20,0x6c,0x77,0x49,0x50,0x2f,0x31,0x2e,0x33, -0x2e,0x31,0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x73,0x61,0x76,0x61,0x6e, -0x6e,0x61,0x68,0x2e,0x6e,0x6f,0x6e,0x67,0x6e,0x75,0x2e,0x6f,0x72,0x67,0x2f,0x70, -0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,0x6c,0x77,0x69,0x70,0x29,0x0d,0x0a, -/* "Content-type: text/html - -" (27 bytes) */ -0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2d,0x74,0x79,0x70,0x65,0x3a,0x20,0x74,0x65, -0x78,0x74,0x2f,0x68,0x74,0x6d,0x6c,0x0d,0x0a,0x0d,0x0a, -/* raw file data (544 bytes) */ -0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0a,0x3c,0x68,0x65,0x61,0x64,0x3e,0x3c,0x74,0x69, -0x74,0x6c,0x65,0x3e,0x6c,0x77,0x49,0x50,0x20,0x2d,0x20,0x41,0x20,0x4c,0x69,0x67, -0x68,0x74,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x54,0x43,0x50,0x2f,0x49,0x50,0x20, -0x53,0x74,0x61,0x63,0x6b,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x3c,0x2f,0x68, -0x65,0x61,0x64,0x3e,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x20,0x62,0x67,0x63,0x6f,0x6c, -0x6f,0x72,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x20,0x74,0x65,0x78,0x74,0x3d, -0x22,0x62,0x6c,0x61,0x63,0x6b,0x22,0x3e,0x0a,0x0a,0x20,0x20,0x20,0x20,0x3c,0x74, -0x61,0x62,0x6c,0x65,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31,0x30,0x30,0x25, -0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x72,0x20,0x76,0x61,0x6c, -0x69,0x67,0x6e,0x3d,0x22,0x74,0x6f,0x70,0x22,0x3e,0x3c,0x74,0x64,0x20,0x77,0x69, -0x64,0x74,0x68,0x3d,0x22,0x38,0x30,0x22,0x3e,0x09,0x20,0x20,0x0a,0x09,0x20,0x20, -0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, -0x77,0x77,0x77,0x2e,0x73,0x69,0x63,0x73,0x2e,0x73,0x65,0x2f,0x22,0x3e,0x3c,0x69, -0x6d,0x67,0x20,0x73,0x72,0x63,0x3d,0x22,0x2f,0x69,0x6d,0x67,0x2f,0x73,0x69,0x63, -0x73,0x2e,0x67,0x69,0x66,0x22,0x0a,0x09,0x20,0x20,0x62,0x6f,0x72,0x64,0x65,0x72, -0x3d,0x22,0x30,0x22,0x20,0x61,0x6c,0x74,0x3d,0x22,0x53,0x49,0x43,0x53,0x20,0x6c, -0x6f,0x67,0x6f,0x22,0x20,0x74,0x69,0x74,0x6c,0x65,0x3d,0x22,0x53,0x49,0x43,0x53, -0x20,0x6c,0x6f,0x67,0x6f,0x22,0x3e,0x3c,0x2f,0x61,0x3e,0x0a,0x09,0x3c,0x2f,0x74, -0x64,0x3e,0x3c,0x74,0x64,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x35,0x30,0x30, -0x22,0x3e,0x09,0x20,0x20,0x0a,0x09,0x20,0x20,0x3c,0x68,0x31,0x3e,0x6c,0x77,0x49, -0x50,0x20,0x2d,0x20,0x41,0x20,0x4c,0x69,0x67,0x68,0x74,0x77,0x65,0x69,0x67,0x68, -0x74,0x20,0x54,0x43,0x50,0x2f,0x49,0x50,0x20,0x53,0x74,0x61,0x63,0x6b,0x3c,0x2f, -0x68,0x31,0x3e,0x0a,0x09,0x20,0x20,0x3c,0x68,0x32,0x3e,0x34,0x30,0x34,0x20,0x2d, -0x20,0x50,0x61,0x67,0x65,0x20,0x6e,0x6f,0x74,0x20,0x66,0x6f,0x75,0x6e,0x64,0x3c, -0x2f,0x68,0x32,0x3e,0x0a,0x09,0x20,0x20,0x3c,0x70,0x3e,0x0a,0x09,0x20,0x20,0x20, -0x20,0x53,0x6f,0x72,0x72,0x79,0x2c,0x20,0x74,0x68,0x65,0x20,0x70,0x61,0x67,0x65, -0x20,0x79,0x6f,0x75,0x20,0x61,0x72,0x65,0x20,0x72,0x65,0x71,0x75,0x65,0x73,0x74, -0x69,0x6e,0x67,0x20,0x77,0x61,0x73,0x20,0x6e,0x6f,0x74,0x20,0x66,0x6f,0x75,0x6e, -0x64,0x20,0x6f,0x6e,0x20,0x74,0x68,0x69,0x73,0x0a,0x09,0x20,0x20,0x20,0x20,0x73, -0x65,0x72,0x76,0x65,0x72,0x2e,0x20,0x0a,0x09,0x20,0x20,0x3c,0x2f,0x70,0x3e,0x0a, -0x09,0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x74,0x64,0x3e,0x0a,0x09,0x20,0x20,0x26,0x6e, -0x62,0x73,0x70,0x3b,0x0a,0x09,0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x2f,0x74,0x72,0x3e, -0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x74,0x61,0x62,0x6c,0x65,0x3e,0x0a, -0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0a,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0a, -}; - -static const unsigned int dummy_align__index_shtml = 1; -static const unsigned char data__index_shtml[] = { -/* /index.shtml (13 chars) */ -0x2f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x73,0x68,0x74,0x6d,0x6c,0x00,0x00,0x00,0x00, - -/* HTTP header */ -/* "HTTP/1.0 200 OK -" (17 bytes) */ -0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,0x20,0x32,0x30,0x30,0x20,0x4f,0x4b,0x0d, -0x0a, -/* "Server: lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip) -" (63 bytes) */ -0x53,0x65,0x72,0x76,0x65,0x72,0x3a,0x20,0x6c,0x77,0x49,0x50,0x2f,0x31,0x2e,0x33, -0x2e,0x31,0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x73,0x61,0x76,0x61,0x6e, -0x6e,0x61,0x68,0x2e,0x6e,0x6f,0x6e,0x67,0x6e,0x75,0x2e,0x6f,0x72,0x67,0x2f,0x70, -0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,0x6c,0x77,0x69,0x70,0x29,0x0d,0x0a, -/* "Content-type: text/html -Expires: Fri, 10 Apr 2008 14:00:00 GMT -Pragma: no-cache - -" (85 bytes) */ -0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2d,0x74,0x79,0x70,0x65,0x3a,0x20,0x74,0x65, -0x78,0x74,0x2f,0x68,0x74,0x6d,0x6c,0x0d,0x0a,0x45,0x78,0x70,0x69,0x72,0x65,0x73, -0x3a,0x20,0x46,0x72,0x69,0x2c,0x20,0x31,0x30,0x20,0x41,0x70,0x72,0x20,0x32,0x30, -0x30,0x38,0x20,0x31,0x34,0x3a,0x30,0x30,0x3a,0x30,0x30,0x20,0x47,0x4d,0x54,0x0d, -0x0a,0x50,0x72,0x61,0x67,0x6d,0x61,0x3a,0x20,0x6e,0x6f,0x2d,0x63,0x61,0x63,0x68, -0x65,0x0d,0x0a,0x0d,0x0a, -/* raw file data (762 bytes) */ -0x3c,0x21,0x44,0x4f,0x43,0x54,0x59,0x50,0x45,0x20,0x48,0x54,0x4d,0x4c,0x20,0x50, -0x55,0x42,0x4c,0x49,0x43,0x20,0x22,0x2d,0x2f,0x2f,0x57,0x33,0x43,0x2f,0x2f,0x44, -0x54,0x44,0x20,0x48,0x54,0x4d,0x4c,0x20,0x34,0x2e,0x30,0x31,0x20,0x54,0x72,0x61, -0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x2f,0x2f,0x45,0x4e,0x22,0x20,0x22, -0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72, -0x67,0x2f,0x54,0x52,0x2f,0x68,0x74,0x6d,0x6c,0x34,0x2f,0x6c,0x6f,0x6f,0x73,0x65, -0x2e,0x64,0x74,0x64,0x22,0x3e,0x0d,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a, -0x20,0x20,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x3c,0x74, -0x69,0x74,0x6c,0x65,0x3e,0x46,0x72,0x65,0x65,0x52,0x54,0x4f,0x53,0x2e,0x6f,0x72, -0x67,0x20,0x6c,0x77,0x49,0x50,0x20,0x57,0x45,0x42,0x20,0x73,0x65,0x72,0x76,0x65, -0x72,0x20,0x64,0x65,0x6d,0x6f,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0d,0x0a, -0x20,0x20,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x20,0x20,0x3c,0x42,0x4f, -0x44,0x59,0x20,0x6f,0x6e,0x4c,0x6f,0x61,0x64,0x3d,0x22,0x77,0x69,0x6e,0x64,0x6f, -0x77,0x2e,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x26,0x71,0x75, -0x6f,0x74,0x3b,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x68,0x72,0x65,0x66, -0x3d,0x27,0x69,0x6e,0x64,0x65,0x78,0x2e,0x73,0x68,0x74,0x6d,0x6c,0x27,0x26,0x71, -0x75,0x6f,0x74,0x3b,0x2c,0x32,0x30,0x30,0x30,0x29,0x22,0x3e,0x0d,0x0a,0x3c,0x66, -0x6f,0x6e,0x74,0x20,0x66,0x61,0x63,0x65,0x3d,0x22,0x61,0x72,0x69,0x61,0x6c,0x22, -0x3e,0x0d,0x0a,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x69,0x6e,0x64,0x65, -0x78,0x2e,0x73,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x54,0x61,0x73,0x6b,0x20,0x53,0x74, -0x61,0x74,0x73,0x3c,0x2f,0x61,0x3e,0x20,0x3c,0x62,0x3e,0x7c,0x3c,0x2f,0x62,0x3e, -0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x72,0x75,0x6e,0x74,0x69,0x6d, -0x65,0x2e,0x73,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x52,0x75,0x6e,0x20,0x54,0x69,0x6d, -0x65,0x20,0x53,0x74,0x61,0x74,0x73,0x3c,0x2f,0x61,0x3e,0x20,0x3c,0x62,0x3e,0x7c, -0x3c,0x2f,0x62,0x3e,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x68,0x74, -0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x66,0x72,0x65,0x65,0x72,0x74,0x6f, -0x73,0x2e,0x6f,0x72,0x67,0x2f,0x22,0x3e,0x46,0x72,0x65,0x65,0x52,0x54,0x4f,0x53, -0x20,0x48,0x6f,0x6d,0x65,0x70,0x61,0x67,0x65,0x3c,0x2f,0x61,0x3e,0x20,0x3c,0x62, -0x3e,0x7c,0x3c,0x2f,0x62,0x3e,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22, -0x6c,0x6f,0x67,0x6f,0x2e,0x6a,0x70,0x67,0x22,0x3e,0x33,0x37,0x4b,0x20,0x6a,0x70, -0x67,0x3c,0x2f,0x61,0x3e,0x0d,0x0a,0x3c,0x62,0x72,0x3e,0x3c,0x70,0x3e,0x0d,0x0a, -0x3c,0x68,0x72,0x3e,0x0d,0x0a,0x3c,0x62,0x72,0x3e,0x3c,0x70,0x3e,0x0d,0x0a,0x3c, -0x68,0x32,0x3e,0x54,0x61,0x73,0x6b,0x20,0x73,0x74,0x61,0x74,0x69,0x73,0x74,0x69, -0x63,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0d,0x0a,0x50,0x61,0x67,0x65,0x20,0x77,0x69, -0x6c,0x6c,0x20,0x72,0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x65,0x76,0x65,0x72,0x79, -0x20,0x32,0x20,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73,0x2e,0x3c,0x70,0x3e,0x0d,0x0a, -0x3c,0x66,0x6f,0x6e,0x74,0x20,0x66,0x61,0x63,0x65,0x3d,0x22,0x63,0x6f,0x75,0x72, -0x69,0x65,0x72,0x22,0x3e,0x3c,0x70,0x72,0x65,0x3e,0x54,0x61,0x73,0x6b,0x20,0x20, -0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x74,0x61,0x74,0x65,0x20,0x20,0x50, -0x72,0x69,0x6f,0x72,0x69,0x74,0x79,0x20,0x20,0x53,0x74,0x61,0x63,0x6b,0x09,0x23, -0x3c,0x62,0x72,0x3e,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, -0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, -0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, -0x2a,0x2a,0x2a,0x2a,0x3c,0x62,0x72,0x3e,0x0d,0x0a,0x3c,0x21,0x2d,0x2d,0x23,0x72, -0x74,0x6f,0x73,0x5f,0x73,0x74,0x61,0x74,0x73,0x2d,0x2d,0x3e,0x0d,0x0a,0x3c,0x2f, -0x70,0x72,0x65,0x3e,0x3c,0x2f,0x66,0x6f,0x6e,0x74,0x3e,0x0d,0x0a,0x3c,0x2f,0x66, -0x6f,0x6e,0x74,0x3e,0x0d,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a,0x3c, -0x2f,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a,0x0d,0x0a,}; - -static const unsigned int dummy_align__logo_jpg = 2; -static const unsigned char data__logo_jpg[] = { -/* /logo.jpg (10 chars) */ -0x2f,0x6c,0x6f,0x67,0x6f,0x2e,0x6a,0x70,0x67,0x00,0x00,0x00, - -/* HTTP header */ -/* "HTTP/1.0 200 OK -" (17 bytes) */ -0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,0x20,0x32,0x30,0x30,0x20,0x4f,0x4b,0x0d, -0x0a, -/* "Server: lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip) -" (63 bytes) */ -0x53,0x65,0x72,0x76,0x65,0x72,0x3a,0x20,0x6c,0x77,0x49,0x50,0x2f,0x31,0x2e,0x33, -0x2e,0x31,0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x73,0x61,0x76,0x61,0x6e, -0x6e,0x61,0x68,0x2e,0x6e,0x6f,0x6e,0x67,0x6e,0x75,0x2e,0x6f,0x72,0x67,0x2f,0x70, -0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,0x6c,0x77,0x69,0x70,0x29,0x0d,0x0a, -/* "Content-type: image/jpeg - -" (28 bytes) */ -0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2d,0x74,0x79,0x70,0x65,0x3a,0x20,0x69,0x6d, -0x61,0x67,0x65,0x2f,0x6a,0x70,0x65,0x67,0x0d,0x0a,0x0d,0x0a, -/* raw file data (28602 bytes) */ -0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x00,0x00,0x01, -0x00,0x01,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03, -0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07, -0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d, -0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f, -0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04, -0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14, -0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, -0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14, -0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0, -0x00,0x11,0x08,0x00,0xea,0x02,0x71,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11, -0x01,0xff,0xc4,0x00,0x1f,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, -0x0a,0x0b,0xff,0xc4,0x00,0xb5,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05, -0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21, -0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23, -0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17, -0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a, -0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a, -0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a, -0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99, -0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7, -0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5, -0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1, -0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xc4,0x00,0x1f,0x01,0x00,0x03, -0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01, -0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0xff,0xc4,0x00,0xb5,0x11,0x00, -0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00, -0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13, -0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15, -0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27, -0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49, -0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69, -0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88, -0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6, -0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4, -0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2, -0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9, -0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfd, -0x53,0xa2,0x8a,0x28,0x00,0xa2,0x8a,0x28,0x00,0xa2,0x8a,0x28,0x00,0xa4,0x34,0x8e, -0x70,0x09,0xaf,0x0b,0xf1,0xbf,0xc6,0x4b,0x8f,0x13,0x78,0xc2,0xdb,0xc1,0x7e,0x0f, -0xb8,0x2b,0x24,0x93,0x08,0xae,0xf5,0x48,0x88,0x3b,0x47,0xf1,0x2c,0x7f,0x4e,0x72, -0xdf,0x97,0xad,0x72,0x62,0x71,0x54,0xf0,0xb1,0xe6,0x9e,0xef,0x44,0xba,0xb6,0x73, -0x57,0xc4,0x43,0x0e,0x93,0x9e,0xef,0x44,0xba,0xb6,0x77,0xbe,0x3b,0xf8,0xb9,0xa1, -0xf8,0x16,0x39,0x23,0x9d,0xe4,0xd4,0x35,0x05,0x1c,0x58,0x59,0x2e,0xf9,0x3d,0xb7, -0x76,0x51,0xf5,0xfc,0x8d,0x78,0x07,0x8a,0xff,0x00,0x69,0x3f,0x1b,0x6a,0xb3,0x3a, -0x69,0x3a,0x7f,0xf6,0x2d,0xb7,0xf0,0x81,0x09,0x96,0x5f,0xc5,0x98,0x63,0xf2,0x15, -0xf4,0xde,0x83,0xe0,0xdd,0x27,0xc3,0xf6,0x62,0x0b,0x6b,0x38,0xc9,0x3f,0x33,0xcb, -0x20,0xde,0xf2,0x37,0x76,0x66,0x3c,0x92,0x6b,0x40,0xe9,0x16,0x47,0xad,0x9c,0x1f, -0xf7,0xec,0x57,0x9d,0x88,0xc2,0xe3,0x31,0x2b,0xf8,0xbc,0x8b,0xb2,0x5f,0xad,0xce, -0x3c,0x46,0x1b,0x13,0x88,0x56,0x8d,0x5e,0x45,0xe4,0xbf,0x53,0xe0,0x8d,0x4f,0xc6, -0xfe,0x33,0xd5,0x18,0x9b,0xcd,0x5f,0x56,0x90,0x93,0x9c,0x19,0xa4,0x0b,0xf9,0x0e, -0x2b,0x35,0x75,0xff,0x00,0x10,0xc7,0x9c,0x6a,0x3a,0x82,0xfa,0xfe,0xfa,0x41,0xfd, -0x6b,0xf4,0x19,0xb4,0x2d,0x39,0xba,0xd8,0x5b,0x7f,0xdf,0xa1,0xfe,0x15,0x19,0xf0, -0xce,0x94,0xff,0x00,0x7b,0x4d,0xb5,0x3f,0xf6,0xc5,0x7f,0xc2,0xbc,0x79,0x64,0x15, -0xa4,0xef,0xed,0xaf,0xf2,0x7f,0xe6,0x78,0x72,0xc8,0x6a,0x49,0xdd,0xd7,0x7f,0xd7, -0xcc,0xf8,0x0d,0x3c,0x5f,0xe2,0x68,0x94,0x05,0xd6,0x35,0x45,0x03,0xa0,0x17,0x32, -0x0f,0xeb,0x53,0x27,0x8f,0xbc,0x59,0x11,0x25,0x75,0xfd,0x59,0x33,0xe9,0x77,0x28, -0xfe,0xb5,0xf7,0x8b,0x78,0x3b,0x44,0x7e,0xba,0x4d,0x99,0xff,0x00,0xb6,0x2b,0x51, -0x37,0x81,0x7c,0x3c,0xf9,0xce,0x8d,0x66,0x73,0xff,0x00,0x4c,0x56,0xa5,0x64,0x58, -0x85,0xb5,0x6f,0xcc,0x9f,0xec,0x2a,0xeb,0x6a,0xef,0xf1,0xff,0x00,0x33,0xe1,0x6f, -0xf8,0x59,0x3e,0x2f,0x5f,0xf9,0x98,0xb5,0x7f,0xfc,0x0c,0x93,0xfc,0x69,0xeb,0xf1, -0x4f,0xc6,0x51,0x9c,0xaf,0x89,0x35,0x5c,0xfb,0xdd,0x3f,0xf8,0xd7,0xdc,0x0d,0xf0, -0xf3,0xc3,0x6f,0xd7,0x44,0xb2,0x3f,0xf6,0xc8,0x54,0x4f,0xf0,0xcb,0xc2,0xaf,0xf7, -0xb4,0x2b,0x23,0xff,0x00,0x6c,0x85,0x2f,0xec,0x4c,0x5f,0xfc,0xfe,0xfc,0xc5,0xfd, -0x89,0x8a,0x5b,0x57,0x7f,0x89,0xf1,0x54,0x7f,0x17,0xfc,0x6b,0x1f,0xfc,0xcc,0x9a, -0x99,0xfa,0xdc,0x35,0x58,0x8b,0xe3,0x87,0x8e,0xe1,0x6c,0xaf,0x89,0x2f,0x73,0xd3, -0xe6,0x21,0x87,0xe4,0x45,0x7d,0x8e,0xff,0x00,0x09,0x7c,0x20,0xfd,0x74,0x0b,0x3f, -0xc2,0x3c,0x54,0x2f,0xf0,0x6b,0xc1,0xaf,0xd7,0x41,0xb5,0x1f,0x45,0xa4,0xb2,0x7c, -0x72,0xda,0xb7,0xe2,0xc7,0xfd,0x8f,0x8d,0x5b,0x62,0x1f,0xe2,0x7c,0x8a,0x9f,0x1f, -0xbc,0x7e,0x83,0x1f,0xf0,0x91,0x5c,0x7d,0x4c,0x71,0x9f,0xfd,0x96,0xa6,0x1f,0xb4, -0x37,0x8f,0xc7,0xfc,0xcc,0x12,0xfe,0x30,0x45,0xff,0x00,0xc4,0x57,0xd5,0xaf,0xf0, -0x43,0xc1,0x4e,0x0f,0xfc,0x48,0xa0,0x1f,0x4a,0x89,0xbe,0x03,0xf8,0x21,0xf3,0xff, -0x00,0x12,0x48,0x86,0x7d,0x09,0xa7,0xfd,0x95,0x98,0xad,0xab,0x7e,0x2c,0x3f,0xb2, -0xb3,0x15,0xb6,0x21,0xfd,0xec,0xf9,0x69,0x7f,0x68,0xaf,0x1f,0x8f,0xf9,0x8f,0x39, -0xfa,0xdb,0xc5,0xff,0x00,0xc4,0xd4,0x89,0xfb,0x48,0x78,0xf9,0x08,0x3f,0xdb,0x59, -0xc7,0xad,0xb4,0x47,0xff,0x00,0x65,0xaf,0xa6,0x9f,0xf6,0x7d,0xf0,0x33,0x8e,0x74, -0x75,0x1e,0xe1,0x8d,0x42,0xff,0x00,0xb3,0x9f,0x81,0x9c,0x7f,0xc8,0x2d,0x97,0xe9, -0x21,0xa3,0xfb,0x33,0x34,0x5b,0x56,0xff,0x00,0xc9,0x98,0xbf,0xb3,0x33,0x35,0xb5, -0x7f,0xc5,0x9f,0x39,0xc7,0xfb,0x4d,0xf8,0xf1,0x17,0x07,0x52,0x85,0xcf,0xab,0x5a, -0xa6,0x7f,0x95,0x58,0x4f,0xda,0x9b,0xc7,0x49,0x8f,0xf4,0x9b,0x36,0xc7,0xad,0xaa, -0xf3,0xfa,0xd7,0xbe,0xbf,0xec,0xd5,0xe0,0x86,0xc9,0x16,0x32,0xaf,0xd2,0x43,0x50, -0x3f,0xec,0xc5,0xe0,0xa6,0xe9,0x6f,0x3a,0xff,0x00,0xdb,0x4a,0x5f,0xd9,0xf9,0xb2, -0xda,0xaf,0xfe,0x4c,0xc3,0xfb,0x3f,0x36,0x5b,0x57,0xfc,0x59,0xe2,0x0b,0xfb,0x57, -0x78,0xdd,0x7a,0x9d,0x39,0xbe,0xb6,0xc7,0xfa,0x35,0x3d,0x7f,0x6b,0x0f,0x1a,0x82, -0x32,0x9a,0x61,0xff,0x00,0xb7,0x66,0xff,0x00,0xe2,0xeb,0xd9,0xdb,0xf6,0x5a,0xf0, -0x63,0x0e,0x12,0xe5,0x7f,0xed,0xa5,0x42,0xff,0x00,0xb2,0xa7,0x83,0xcf,0x47,0xbb, -0x5f,0xfb,0x69,0x43,0xc1,0xe7,0x0b,0x6a,0x9f,0xf9,0x30,0x7d,0x4b,0x37,0x5b,0x56, -0xfc,0x4f,0x23,0x5f,0xda,0xd7,0xc6,0x43,0xad,0xbe,0x96,0xdf,0xf6,0xc1,0xff,0x00, -0xf8,0xba,0x91,0x3f,0x6b,0x8f,0x16,0x82,0x37,0x59,0x69,0x6d,0xeb,0xfb,0xa7,0xff, -0x00,0xe2,0xeb,0xd4,0x24,0xfd,0x93,0xbc,0x2a,0xd8,0xdb,0x75,0x78,0xbf,0xf0,0x20, -0x6a,0x07,0xfd,0x92,0x3c,0x34,0x73,0x8b,0xfb,0xb5,0xf4,0xe9,0x4b,0xea,0xb9,0xca, -0xfb,0x7f,0x88,0x7d,0x53,0x39,0x5b,0x55,0xfc,0x4f,0x3d,0x8b,0xf6,0xbe,0xf1,0x32, -0xe7,0xcc,0xd2,0xb4,0xc7,0xf4,0xc2,0xc8,0x3f,0xf6,0x6a,0xb0,0x9f,0xb6,0x16,0xbc, -0x31,0xbb,0x43,0xd3,0x5b,0xd7,0x0d,0x20,0xfe,0xb5,0xda,0xc9,0xfb,0x22,0xe8,0x19, -0xf9,0x75,0x3b,0xa0,0x3d,0xd4,0x54,0x0f,0xfb,0x21,0x68,0xe4,0x7c,0xba,0xbd,0xcf, -0xe2,0x82,0x9f,0xb1,0xce,0x97,0xda,0xfc,0x50,0x7b,0x0c,0xe9,0x7d,0xbf,0xc8,0xe6, -0x07,0xed,0x89,0xaa,0xf7,0xf0,0xf5,0x99,0xfa,0x4e,0xdf,0xe1,0x4f,0x5f,0xdb,0x1b, -0x50,0x1f,0x7b,0xc3,0x96,0xa7,0xe9,0x72,0xdf,0xfc,0x4d,0x6f,0x3f,0xec,0x7f,0xa6, -0x1c,0xed,0xd6,0xe7,0x5f,0xac,0x60,0xd4,0x12,0x7e,0xc7,0xb6,0x99,0x1b,0x35,0xd9, -0x31,0xef,0x17,0xff,0x00,0x5e,0x8e,0x4c,0xed,0x75,0xfc,0x85,0xec,0xf3,0xb5,0xf6, -0xbf,0x23,0x35,0x7f,0x6c,0x7b,0xc3,0xf7,0xbc,0x35,0x01,0x1e,0xd7,0x67,0xff,0x00, -0x89,0xa9,0x93,0xf6,0xc8,0x70,0x06,0xef,0x0b,0xa9,0x3d,0xf1,0x7b,0xff,0x00,0xd8, -0x54,0xaf,0xfb,0x1e,0xa0,0x5f,0x97,0x5d,0xe7,0xde,0x2a,0x85,0xbf,0x63,0xe9,0x32, -0x76,0xeb,0xa9,0xed,0x98,0x8d,0x2f,0xf8,0x5b,0x5d,0xff,0x00,0xf2,0x50,0xb6,0x76, -0xba,0xfe,0x44,0xeb,0xfb,0x64,0xc4,0x7e,0xf7,0x85,0xdf,0x1e,0xd7,0xa3,0xff,0x00, -0x8d,0xd4,0xcb,0xfb,0x63,0xda,0x63,0xe6,0xf0,0xcc,0xc0,0xfb,0x5e,0x03,0xff,0x00, -0xb2,0x56,0x63,0xfe,0xc7,0xd7,0x7d,0xb5,0xc8,0x4f,0xd5,0x0d,0x40,0xff,0x00,0xb2, -0x06,0xa6,0x01,0xdb,0xad,0x5b,0x13,0xee,0x84,0x53,0xf6,0x99,0xda,0xe8,0xfe,0xe8, -0x87,0x3e,0x78,0xbf,0xa4,0x6f,0x27,0xed,0x8b,0xa7,0x13,0xcf,0x87,0x2e,0x40,0xff, -0x00,0xaf,0x95,0x3f,0xfb,0x2d,0x48,0x3f,0x6c,0x3d,0x27,0x1f,0x37,0x87,0xaf,0x01, -0xf6,0x9d,0x0f,0xf4,0xae,0x59,0xbf,0x64,0x2d,0x68,0x1e,0x35,0x6b,0x53,0xef,0x83, -0x50,0x37,0xec,0x8d,0xe2,0x11,0xf7,0x75,0x0b,0x46,0xfc,0x4d,0x4f,0xb7,0xce,0x97, -0xd9,0x7f,0x72,0x17,0xb5,0xce,0xd7,0xd9,0xfc,0x11,0xdd,0x45,0xfb,0x5f,0xf8,0x74, -0xb7,0xcf,0xa3,0x6a,0x4a,0x3d,0x54,0xc6,0x7f,0xf6,0x6a,0xb3,0x1f,0xed,0x75,0xe1, -0x36,0x5c,0xbe,0x9b,0xab,0x2b,0x7a,0x08,0xe3,0x3f,0xfb,0x3d,0x79,0xb4,0x9f,0xb2, -0x67,0x89,0x54,0x1c,0x5e,0x5a,0x13,0xfe,0xf1,0xa8,0x1b,0xf6,0x50,0xf1,0x5f,0x69, -0xad,0x1b,0xfe,0x07,0x42,0xc5,0x67,0x0b,0xec,0x3f,0xb9,0x0f,0xeb,0x39,0xd2,0xfb, -0x1f,0x82,0x3d,0x54,0x7e,0xd6,0xfe,0x0e,0xce,0x0d,0x96,0xae,0x07,0xaf,0x93,0x1f, -0xff,0x00,0x17,0x4f,0x1f,0xb5,0xaf,0x83,0x31,0xff,0x00,0x1e,0xba,0xb7,0xfd,0xf8, -0x4f,0xfe,0x2e,0xbc,0x85,0xbf,0x65,0x4f,0x18,0x0f,0xbb,0xf6,0x46,0xff,0x00,0xb6, -0xb5,0x03,0xfe,0xcb,0xbe,0x34,0x4c,0xe2,0x0b,0x76,0x03,0xd2,0x51,0x43,0xc7,0x66, -0xeb,0x7a,0x7f,0xf9,0x28,0x7d,0x73,0x39,0x5f,0xf2,0xeb,0xf0,0x3d,0xa9,0x7f,0x6a, -0xff,0x00,0x05,0x36,0x3f,0x75,0xa9,0xaf,0xd6,0xdd,0x7f,0xf8,0xaa,0x91,0x7f,0x6a, -0xaf,0x04,0x11,0xc9,0xd4,0x53,0xeb,0x6c,0x3f,0xf8,0xaa,0xf0,0xb6,0xfd,0x99,0x7c, -0x6c,0xbd,0x2c,0xe2,0x3f,0x49,0x45,0x42,0xff,0x00,0xb3,0x67,0x8d,0xd4,0x7f,0xc8, -0x3d,0x4f,0xd1,0xc5,0x2f,0xed,0x1c,0xd5,0x7f,0xcb,0xbf,0xfc,0x95,0x8b,0xeb,0xf9, -0xba,0xff,0x00,0x97,0x5f,0x87,0xfc,0x13,0xe8,0x48,0xbf,0x69,0xef,0x01,0xc8,0xe0, -0x1b,0xeb,0xa8,0xc1,0xfe,0x26,0xb5,0x6c,0x0f,0xca,0xad,0x2f,0xed,0x27,0xf0,0xfd, -0x81,0x3f,0xdb,0x2e,0xbe,0xc6,0xd6,0x5f,0xfe,0x26,0xbe,0x6b,0x6f,0xd9,0xd7,0xc7, -0x0a,0x78,0xd2,0xc9,0xc7,0xa3,0x8a,0x81,0xff,0x00,0x67,0xef,0x1c,0xa9,0xff,0x00, -0x90,0x34,0x87,0xe8,0xc0,0xff,0x00,0x5a,0x7f,0xda,0x99,0x9c,0x77,0xa5,0xff,0x00, -0x92,0xb0,0xfe,0xd2,0xcd,0x56,0xf4,0x7f,0x06,0x7d,0x42,0x3f,0x68,0x9f,0x87,0xcd, -0xff,0x00,0x33,0x02,0x8f,0xad,0xb4,0xdf,0xfc,0x45,0x38,0x7e,0xd0,0x9f,0x0f,0xcf, -0x4f,0x11,0x47,0xff,0x00,0x80,0xf2,0x8f,0xfd,0x92,0xbe,0x55,0x6f,0x81,0x3e,0x37, -0x43,0xce,0x89,0x37,0xe1,0x51,0x3f,0xc1,0x4f,0x1a,0x27,0x5d,0x0e,0xe7,0x8f,0x6a, -0x6f,0x38,0xcc,0x16,0xf4,0xbf,0xf2,0x59,0x07,0xf6,0xae,0x64,0xb7,0xa1,0xf8,0x3f, -0xf3,0x3e,0xb2,0x1f,0x1f,0xfc,0x00,0xd8,0xff,0x00,0x8a,0x8e,0x1e,0x7d,0x62,0x93, -0xff,0x00,0x89,0xa9,0xd3,0xe3,0xaf,0x80,0xdc,0x64,0x78,0x92,0xd4,0x7d,0x43,0x8f, -0xe9,0x5f,0x1f,0xbf,0xc1,0xff,0x00,0x18,0xa0,0xe7,0x42,0xba,0xe7,0xfd,0x9a,0x85, -0xbe,0x14,0xf8,0xb9,0x3a,0xe8,0x77,0x7f,0xf7,0xc5,0x2f,0xed,0xac,0x72,0xff,0x00, -0x97,0x4b,0xee,0x62,0xfe,0xd8,0xc7,0xad,0xe8,0x7e,0x0c,0xfb,0x3d,0x3e,0x32,0xf8, -0x21,0xc0,0xc7,0x89,0xb4,0xfe,0x7d,0x65,0xc5,0x48,0x9f,0x17,0x7c,0x14,0xf9,0xc7, -0x89,0xf4,0xce,0x3d,0x6e,0x14,0x57,0xc4,0xef,0xf0,0xd3,0xc5,0x51,0x9f,0x9b,0x44, -0xbd,0x1f,0xf6,0xc8,0xd4,0x0d,0xe0,0x0f,0x12,0x27,0x5d,0x1e,0xf0,0x7f,0xdb,0x23, -0x47,0xf6,0xee,0x29,0x6f,0x49,0x7e,0x23,0xfe,0xdb,0xc6,0x2d,0xe8,0x7e,0x67,0xdc, -0x63,0xe2,0xbf,0x83,0x4f,0x4f,0x13,0xe9,0x7f,0xf8,0x16,0x9f,0xe3,0x52,0x2f,0xc4, -0xef,0x09,0x36,0x71,0xe2,0x5d,0x2f,0x8f,0xfa,0x7b,0x4f,0xf1,0xaf,0x85,0x1b,0xc1, -0x5e,0x20,0x5e,0xba,0x55,0xd0,0xff,0x00,0xb6,0x46,0xa2,0x6f,0x0a,0x6b,0x69,0xd7, -0x4c,0xba,0x1f,0xf6,0xc8,0xd1,0xfd,0xbf,0x89,0xeb,0x49,0x7e,0x22,0xfe,0xdd,0xc5, -0x2d,0xe8,0x7e,0x67,0xde,0xc9,0xf1,0x07,0xc2,0xf2,0x80,0x57,0xc4,0x3a,0x59,0x07, -0xa7,0xfa,0x64,0x7f,0xe3,0x56,0x13,0xc6,0x5a,0x04,0x9f,0x77,0x5a,0xd3,0x9b,0x1e, -0x97,0x49,0xfe,0x35,0xf9,0xfa,0xde,0x1c,0xd5,0xd7,0xae,0x9f,0x72,0x3f,0xed,0x91, -0xa8,0xce,0x89,0xa9,0x27,0x06,0xca,0xe0,0x7d,0x63,0x34,0xd7,0x10,0xd6,0x5b,0xd3, -0x5f,0x8f,0xf9,0x0f,0xfb,0x7e,0xbf,0x5a,0x1f,0x99,0xfa,0x1a,0x9e,0x23,0xd2,0x64, -0x50,0x57,0x54,0xb3,0x60,0x7a,0x62,0xe1,0x3f,0xc6,0x9f,0xfd,0xbb,0xa6,0x9e,0x9a, -0x8d,0xa9,0xff,0x00,0xb6,0xeb,0xfe,0x35,0xf9,0xd8,0x74,0xbb,0xe1,0xd6,0xd6,0x61, -0xff,0x00,0x00,0x34,0xc3,0x61,0x78,0xbd,0x60,0x90,0x7d,0x54,0xd3,0xff,0x00,0x58, -0xe7,0xd6,0x97,0xe3,0xff,0x00,0x00,0x7f,0xeb,0x0d,0x45,0xff,0x00,0x2e,0x7f,0x1f, -0xf8,0x07,0xe8,0xca,0x6a,0xf6,0x2e,0x32,0x2f,0x2d,0xd8,0x7a,0x89,0x54,0xff,0x00, -0x5a,0x78,0xd4,0x6d,0x49,0xe2,0xe6,0x03,0xf4,0x90,0x7f,0x8d,0x7e,0x71,0x7d,0x9e, -0xed,0x7f,0xe5,0x9c,0xa3,0xf0,0x34,0xb9,0xbb,0x43,0xff,0x00,0x2d,0x47,0xe7,0x47, -0xfa,0xc7,0x2f,0xf9,0xf5,0xf8,0xff,0x00,0xc0,0x0f,0xf5,0x8a,0x56,0xd6,0x8b,0xfb, -0xff,0x00,0xe0,0x1f,0xa4,0x0b,0x75,0x13,0x8c,0xac,0xa8,0xc3,0xd4,0x30,0x34,0xf1, -0x20,0x3d,0xc1,0xfc,0x6b,0xf3,0x78,0x5e,0x5e,0xa7,0x49,0x66,0x51,0xec,0xcd,0x53, -0x2e,0xb5,0xaa,0xc6,0xc0,0xad,0xf5,0xda,0x9f,0x51,0x33,0x83,0xfc,0xea,0xd7,0x11, -0xf7,0xa5,0xf8,0xff,0x00,0xc0,0x29,0x71,0x1a,0xeb,0x49,0xfd,0xff,0x00,0xf0,0x0f, -0xd1,0xb0,0xc3,0xd6,0x97,0x75,0x7e,0x74,0x0f,0x13,0x6b,0x4a,0x30,0x35,0x4b,0xe5, -0xfa,0x5c,0x3f,0xf8,0xd2,0x8f,0x16,0x6b,0x8a,0x72,0x35,0x7d,0x40,0x1f,0xfa,0xfa, -0x93,0xfc,0x6a,0xff,0x00,0xd6,0x38,0xff,0x00,0xcf,0xbf,0xc7,0xfe,0x00,0xff,0x00, -0xd6,0x48,0x75,0xa4,0xfe,0xf3,0xf4,0x58,0x36,0x69,0x6b,0xf3,0xb1,0x7c,0x6b,0xe2, -0x04,0x04,0x0d,0x6b,0x51,0x1f,0xf6,0xf5,0x27,0xf8,0xd5,0x88,0xfe,0x23,0x78,0xa2, -0x10,0x36,0x78,0x83,0x54,0x5c,0x70,0x31,0x79,0x27,0xf8,0xd3,0x5c,0x45,0x0e,0xb4, -0xdf,0xde,0x52,0xe2,0x4a,0x5d,0x69,0xb3,0xf4,0x32,0x8a,0xfc,0xf9,0x5f,0x8a,0x5e, -0x2e,0x41,0x81,0xe2,0x4d,0x54,0x0f,0xfa,0xfb,0x73,0xfd,0x6a,0xc2,0x7c,0x62,0xf1, -0xaa,0x63,0x1e,0x26,0xd4,0xb8,0xe9,0xfb,0xf2,0x6a,0xd7,0x11,0x52,0xeb,0x4d,0xfe, -0x05,0x7f,0xac,0x94,0x3a,0xc1,0xfe,0x07,0xdf,0xd4,0x57,0xc0,0xa3,0xe3,0x57,0x8d, -0xd7,0xfe,0x66,0x6d,0x43,0xf1,0x97,0xff,0x00,0xad,0x4f,0x4f,0x8d,0xfe,0x38,0x5c, -0x7f,0xc5,0x4b,0x7c,0x71,0xea,0xe0,0xff,0x00,0x4a,0xaf,0xf5,0x8a,0x87,0xf2,0x3f, -0xc0,0xaf,0xf5,0x8f,0x0d,0xfc,0x8f,0xf0,0x3e,0xf7,0xa2,0xbe,0x0c,0x5f,0x8e,0xde, -0x3a,0x5e,0x9e,0x24,0xbc,0xfc,0x76,0x9f,0xe9,0x56,0x53,0xf6,0x84,0xf1,0xea,0x63, -0xfe,0x2a,0x19,0x8e,0x3d,0x61,0x8c,0xff,0x00,0xec,0xb4,0xd7,0x11,0x61,0xdf,0xd8, -0x97,0xe1,0xfe,0x65,0x2e,0x22,0xc2,0xf5,0x8c,0xbf,0x0f,0xf3,0x3e,0xea,0xa2,0xbe, -0x1c,0x8b,0xf6,0x8e,0xf1,0xf4,0x44,0x9f,0xed,0xc2,0xd9,0xfe,0xf5,0xbc,0x47,0xff, -0x00,0x65,0xab,0xf6,0x3f,0xb5,0x17,0x8e,0xed,0x26,0x57,0x96,0xee,0xd2,0xed,0x07, -0x54,0x9a,0xd5,0x40,0x3f,0xf7,0xce,0x0d,0x68,0xb8,0x83,0x0a,0xf7,0x4f,0xf0,0xff, -0x00,0x32,0xd7,0x10,0xe0,0xde,0xe9,0xaf,0x97,0xfc,0x13,0xed,0x4a,0x2b,0xe6,0x2f, -0x0c,0xfe,0xd8,0x52,0x06,0x58,0xfc,0x41,0xa1,0x86,0x5e,0xf3,0xe9,0xcf,0x83,0xed, -0xf2,0x39,0xff,0x00,0xd9,0xab,0xda,0xbc,0x15,0xf1,0x6f,0xc2,0xfe,0x3f,0x5d,0xba, -0x46,0xa9,0x1c,0x97,0x40,0x65,0xad,0x26,0xfd,0xdc,0xcb,0xff,0x00,0x01,0x3d,0x7e, -0xa3,0x22,0xbd,0x6c,0x3e,0x63,0x86,0xc4,0xe9,0x4e,0x7a,0xf6,0xd9,0x9e,0xa6,0x1f, -0x32,0xc2,0xe2,0x9d,0xa9,0xcd,0x5f,0xb6,0xcc,0xec,0xe8,0xa6,0xa9,0xcd,0x3a,0xbd, -0x13,0xd3,0x0a,0x28,0xa2,0x80,0x0a,0x28,0xa2,0x80,0x0a,0x28,0xa2,0x80,0x0a,0x42, -0x69,0x6a,0xbd,0xe5,0xd4,0x56,0x56,0xd3,0x5c,0x4f,0x22,0xc5,0x04,0x48,0x5d,0xdd, -0xce,0x02,0xa8,0x19,0x24,0x9a,0x4f,0x45,0x71,0x37,0x65,0x76,0x78,0x6f,0xed,0x35, -0xf1,0x65,0xfc,0x33,0xa6,0x2f,0x86,0xb4,0xb9,0xb6,0x6a,0x57,0xd1,0xee,0xb8,0x95, -0x1b,0x0d,0x0c,0x3d,0x30,0x3d,0x0b,0x72,0x3e,0x80,0xfa,0x8a,0xe4,0xbf,0x64,0xbf, -0x08,0xfd,0xa7,0x55,0xbe,0xd7,0x66,0x43,0xb6,0xdd,0x7c,0xa8,0x8f,0x6d,0xc7,0xad, -0x78,0x9f,0x8c,0xbc,0x4d,0x71,0xe3,0x9f,0x17,0xea,0x3a,0xbc,0xdb,0x8b,0xde,0x4e, -0x5a,0x34,0x3d,0x51,0x33,0x84,0x5f,0xc0,0x00,0x2b,0xed,0x7f,0x82,0x9e,0x13,0x1e, -0x11,0xf8,0x7d,0xa6,0xdb,0x15,0xdb,0x3c,0xa9,0xe7,0xcb,0x91,0x83,0xb9,0xb9,0xaf, -0x89,0xc3,0x4e,0x59,0x96,0x64,0xea,0xbf,0x86,0x1b,0x7e,0x9f,0xe6,0x7c,0x56,0x0a, -0xa4,0xb3,0x3c,0xc1,0xd7,0x97,0xc3,0x0d,0xbf,0x4f,0xf3,0x3b,0xb0,0x31,0x4b,0x45, -0x15,0xf6,0xe7,0xdb,0x09,0x4b,0x45,0x14,0x00,0x53,0x43,0x83,0xd2,0x9d,0x5e,0x0f, -0xf1,0xcb,0xf6,0xdc,0xf8,0x3b,0xfb,0x3e,0x5c,0xc9,0x61,0xe2,0xaf,0x16,0xc2,0xfa, -0xda,0x02,0x7f,0xb1,0xf4,0xc4,0x6b,0xbb,0xa0,0x47,0x66,0x54,0xc8,0x8c,0x9e,0xde, -0x61,0x5c,0xd0,0x07,0xba,0x89,0x01,0x6d,0xbc,0xe7,0xdc,0x1a,0x7d,0x7e,0x71,0xeb, -0xdf,0xf0,0x5a,0xdf,0x00,0x5b,0xb3,0x0d,0x1b,0xe1,0xf7,0x89,0x2f,0x80,0xe8,0xd7, -0xd3,0xdb,0xdb,0xe7,0xf0,0x56,0x92,0xbe,0x9f,0xfd,0x94,0x7f,0x6a,0xb8,0xbf,0x69, -0x8f,0x85,0xfa,0xaf,0x8f,0x2e,0x7c,0x36,0xfe,0x0b,0xd0,0xac,0xae,0x64,0xb7,0x59, -0xef,0xef,0x92,0x44,0x91,0x63,0x40,0xd2,0xca,0x5b,0x6a,0x85,0x45,0xce,0x32,0x7d, -0x1b,0xa6,0x28,0x11,0xef,0xb4,0x57,0x17,0x6d,0xf1,0xb3,0xe1,0xe5,0xeb,0x2a,0xdb, -0xf8,0xf3,0xc3,0x33,0xb3,0x1c,0x05,0x8b,0x58,0xb7,0x62,0x4f,0xe0,0xf5,0xd9,0x83, -0x9e,0x94,0x0c,0x5a,0x2b,0x33,0x5f,0xf1,0x1e,0x9f,0xe1,0x7d,0x3d,0xaf,0xb5,0x3b, -0x91,0x6b,0x6a,0xac,0x14,0xb9,0x52,0xdc,0x93,0x80,0x30,0x01,0x35,0x81,0x17,0xc5, -0xff,0x00,0x07,0xcd,0xd3,0x5d,0x80,0x7f,0xbe,0xae,0xbf,0xcc,0x57,0x34,0xf1,0x34, -0x69,0x4b,0x96,0xa4,0xd2,0x7e,0x6d,0x22,0x1c,0xe1,0x17,0x66,0xd2,0x3b,0x1a,0x31, -0x5c,0xcc,0x7f,0x12,0xfc,0x2b,0x26,0x31,0xe2,0x0b,0x01,0x9f,0xef,0x4e,0xa3,0xf9, -0xd4,0xc3,0xe2,0x0f,0x86,0x0f,0x4f,0x10,0xe9,0x9f,0xf8,0x16,0x9f,0xe3,0x49,0x62, -0xb0,0xef,0x6a,0x8b,0xef,0x42,0xf6,0x90,0xfe,0x64,0x74,0x34,0x56,0x12,0xf8,0xe7, -0xc3,0x8e,0x78,0xd7,0xf4,0xc3,0xff,0x00,0x6f,0x91,0xff,0x00,0x8d,0x58,0x8b,0xc5, -0x3a,0x34,0xe3,0xf7,0x7a,0xb5,0x8c,0x9f,0xee,0xdc,0x21,0xfe,0xb5,0xa2,0xad,0x4d, -0xed,0x25,0xf7,0x8f,0x9a,0x2f,0x66,0x6a,0xd1,0x55,0x13,0x55,0xb2,0x97,0x95,0xbb, -0x81,0xbf,0xdd,0x95,0x4f,0xf5,0xa9,0x96,0x78,0xa4,0xfb,0xb2,0x2b,0x7d,0x1a,0xaf, -0x9e,0x2f,0x66,0x55,0xd1,0x2d,0x14,0xdd,0xdd,0xc1,0xa5,0x07,0x35,0x43,0x16,0x8a, -0x28,0xa6,0x01,0x45,0x21,0xe9,0x49,0x9a,0x00,0x75,0x26,0x29,0x32,0x3d,0x69,0x73, -0x48,0x05,0xa4,0xc5,0x18,0xf7,0xa5,0xa6,0x02,0x62,0x96,0x8a,0x28,0x00,0xa2,0x8a, -0x28,0x01,0x29,0x68,0xa2,0x80,0x12,0x8c,0x52,0xd1,0x40,0x05,0x14,0x51,0x40,0x05, -0x26,0x29,0x68,0xa0,0x04,0xc5,0x18,0x1e,0x94,0xb4,0x50,0x02,0x6d,0x1e,0x82,0x93, -0xcb,0x53,0xfc,0x23,0xf2,0xa0,0x92,0x3f,0x87,0x3f,0x8d,0x28,0xcf,0x71,0x8a,0x00, -0x69,0x82,0x33,0xd6,0x35,0x3f,0x80,0xa6,0x9b,0x58,0x5b,0xac,0x48,0x7f,0xe0,0x22, -0xa5,0xa2,0x95,0x97,0x61,0x59,0x10,0x1b,0x1b,0x73,0xd6,0x08,0xff,0x00,0xef,0x91, -0x4d,0x3a,0x6d,0xa3,0x75,0xb6,0x84,0xfd,0x50,0x55,0x9a,0x29,0x72,0xc7,0xb0,0x59, -0x14,0x9b,0x46,0xb0,0x6e,0xb6,0x56,0xe7,0xfe,0xd9,0x8f,0xf0,0xa8,0xdb,0xc3,0xba, -0x5b,0x75,0xd3,0xed,0x8f,0xfd,0xb2,0x5f,0xf0,0xad,0x1a,0x29,0x7b,0x38,0x76,0x17, -0x2a,0xec,0x64,0xb7,0x85,0x74,0x76,0xeb,0xa6,0x5a,0x9f,0xfb,0x64,0xbf,0xe1,0x51, -0xb7,0x83,0x74,0x36,0xeb,0xa4,0xda,0x1f,0xac,0x23,0xfc,0x2b,0x6a,0x8a,0x9f,0x65, -0x4f,0xf9,0x57,0xdc,0x2e,0x48,0x76,0x30,0x1f,0xc0,0x9e,0x1e,0x93,0xef,0x68,0xd6, -0x67,0xfe,0xd8,0x8a,0x89,0xbe,0x1c,0xf8,0x65,0xba,0xe8,0x96,0x7f,0xf7,0xec,0x57, -0x49,0x45,0x4b,0xc3,0xd2,0x7b,0xc1,0x7d,0xc4,0xfb,0x28,0x3f,0xb2,0x8e,0x55,0xbe, -0x17,0xf8,0x55,0xfa,0xe8,0x96,0x9f,0xf7,0xc5,0x42,0xdf,0x09,0x3c,0x22,0xdd,0x74, -0x3b,0x5f,0xfb,0xe6,0xba,0xfa,0x5a,0x8f,0xaa,0xd0,0xfe,0x45,0xf7,0x21,0x7b,0x1a, -0x5f,0xca,0xbe,0xe3,0x89,0x7f,0x83,0x7e,0x0e,0x7e,0xba,0x1d,0xb7,0xe5,0x50,0x3f, -0xc0,0xff,0x00,0x05,0x3f,0xfc,0xc0,0xe0,0x1f,0x4c,0xd7,0x7b,0x45,0x4b,0xc1,0xe1, -0xdf,0xfc,0xbb,0x5f,0x72,0x27,0xea,0xf4,0x7f,0x91,0x7d,0xc7,0x9e,0x3f,0xc0,0x5f, -0x04,0xbf,0xfc,0xc1,0xa3,0x1f,0x46,0x35,0x0b,0xfe,0xcf,0x7e,0x09,0x7f,0xf9,0x85, -0x63,0xe8,0xe6,0xbd,0x23,0x34,0x64,0x7a,0xd4,0x7d,0x47,0x0b,0xff,0x00,0x3e,0xd7, -0xdc,0x88,0xfa,0xa5,0x0f,0xe4,0x5f,0x71,0xe6,0x0f,0xfb,0x39,0x78,0x25,0xff,0x00, -0xe6,0x1c,0xc3,0xe8,0xf5,0x0b,0xfe,0xcd,0x5e,0x09,0x7f,0xf9,0x72,0x90,0x7d,0x24, -0xaf,0x55,0xa2,0xa7,0xfb,0x3f,0x08,0xff,0x00,0xe5,0xda,0xfb,0x89,0xfa,0x96,0x19, -0xef,0x4d,0x7d,0xc7,0x92,0x3f,0xec,0xc5,0xe0,0xb6,0xe9,0x05,0xc2,0xff,0x00,0xdb, -0x4a,0x81,0xff,0x00,0x65,0xcf,0x07,0xb7,0x41,0x72,0xbf,0xf6,0xd2,0xbd,0x8e,0x8a, -0x9f,0xec,0xcc,0x1b,0xff,0x00,0x97,0x4b,0xee,0x27,0xea,0x18,0x57,0xff,0x00,0x2e, -0xd7,0xdc,0x78,0xb3,0xfe,0xca,0xbe,0x12,0x6e,0x92,0x5d,0x2f,0xfc,0x08,0x54,0x2f, -0xfb,0x27,0xf8,0x5d,0xba,0x5c,0xdd,0x0f,0xc4,0x57,0xb7,0xd1,0x51,0xfd,0x95,0x82, -0xff,0x00,0x9f,0x48,0x97,0x97,0x61,0x1f,0xfc,0xbb,0x47,0x84,0xbf,0xec,0x95,0xe1, -0xb6,0xe9,0x7d,0x76,0x3f,0x2a,0xa5,0x77,0xfb,0x24,0x69,0xd0,0x95,0x9f,0x4e,0xd6, -0x6e,0xed,0xae,0xe3,0x21,0xe2,0x90,0x60,0x15,0x61,0xd0,0x82,0x39,0x06,0xbe,0x83, -0xa4,0x3d,0x29,0x7f,0x64,0xe0,0xf7,0x54,0xed,0xf7,0x99,0xbc,0xaf,0x07,0x2f,0xf9, -0x76,0x8f,0x01,0xf0,0x97,0xc6,0x3d,0x4f,0xe1,0xff,0x00,0x89,0xd3,0xc2,0x5e,0x3e, -0xb9,0x59,0xa1,0x77,0x10,0xda,0x6b,0xa4,0x6d,0xcb,0x67,0x01,0x66,0xed,0xcf,0x1f, -0x3f,0xe7,0xeb,0x5e,0xfa,0x8c,0x18,0x70,0x72,0x3d,0x6b,0xe3,0x1f,0xda,0x88,0xa5, -0xee,0xbb,0x24,0x4c,0x01,0x05,0x88,0xc7,0xad,0x77,0x1f,0xb1,0xff,0x00,0xc6,0x49, -0xbc,0x47,0x65,0x79,0xe0,0x6d,0x66,0xe9,0xa6,0xd5,0xf4,0xa8,0x84,0xd6,0x53,0x4a, -0xd9,0x79,0xed,0x72,0x06,0x09,0xee,0x63,0x25,0x47,0xd1,0x97,0xd2,0xb9,0x70,0x18, -0xde,0x6a,0xd3,0xc3,0x4d,0xdf,0x95,0xe8,0xcf,0x23,0x07,0x98,0xfb,0x2c,0x6b,0xcb, -0xea,0xbb,0xaf,0xb2,0xdf,0xe4,0xff,0x00,0x43,0xe9,0x8a,0x29,0x9b,0xbd,0xff,0x00, -0x5a,0x2b,0xe8,0x8f,0xaa,0xe6,0x43,0xe8,0xa2,0x8a,0x45,0x05,0x14,0x51,0x40,0x05, -0x79,0x0f,0xed,0x3d,0xe2,0xdf,0xf8,0x46,0xfe,0x1a,0xdc,0x5a,0x45,0x26,0xcb,0xad, -0x55,0xc5,0xa2,0x60,0xf3,0xb3,0xac,0x9f,0xf8,0xe8,0x23,0xfe,0x05,0x5e,0xb8,0x49, -0xed,0x5f,0x1b,0x7e,0xd4,0xbe,0x30,0x3a,0xff,0x00,0xc4,0x4f,0xec,0xb8,0xdf,0x75, -0xae,0x93,0x10,0x8b,0x00,0x82,0x0c,0xad,0x86,0x73,0xf8,0x0d,0xa3,0xea,0x0d,0x78, -0xf9,0xb6,0x23,0xea,0xf8,0x59,0x35,0xbb,0xd1,0x7c,0xcf,0x13,0x38,0xc4,0xfd,0x5b, -0x07,0x26,0xb7,0x96,0x8b,0xe6,0x72,0x5f,0x06,0x7c,0x26,0x7c,0x5d,0xe3,0xed,0x32, -0xd3,0x6e,0xe8,0x52,0x41,0x2c,0xb9,0xfe,0xe8,0xe6,0xbe,0xf6,0x8d,0x04,0x68,0xa8, -0xa3,0x0a,0xa3,0x00,0x0f,0x4a,0xf9,0xd3,0xf6,0x49,0xf0,0x8f,0xd9,0xf4,0xfb,0xfd, -0x7a,0x68,0xfe,0x79,0x4f,0x93,0x13,0x1f,0x4e,0xf5,0xf4,0x60,0xae,0x3c,0x8b,0x0f, -0xec,0xb0,0xde,0xd1,0xef,0x2d,0x7e,0x5d,0x0c,0x32,0x2c,0x37,0xb0,0xc2,0x29,0x3d, -0xe5,0xa8,0xb4,0x51,0x45,0x7d,0x21,0xf4,0x41,0x48,0x4e,0x29,0x6b,0x95,0xf8,0xad, -0xe3,0x88,0x3e,0x19,0xfc,0x32,0xf1,0x5f,0x8b,0x6e,0x81,0x68,0x34,0x4d,0x2e,0xe7, -0x50,0x65,0x03,0x39,0xf2,0xa3,0x67,0xc7,0xe3,0x8a,0x00,0xfc,0xfb,0xff,0x00,0x82, -0x96,0x7f,0xc1,0x41,0x75,0x2f,0x01,0x6a,0xd7,0xbf,0x09,0xbe,0x1b,0x6a,0x06,0xcf, -0x59,0x8e,0x30,0x35,0xcd,0x72,0x03,0x87,0xb6,0xdc,0x33,0xf6,0x68,0x5b,0xb3,0xed, -0x20,0xb3,0x8f,0xbb,0xb8,0x01,0xce,0xec,0x7c,0x27,0xf0,0x53,0xf6,0x29,0xf8,0xcd, -0xfb,0x4a,0x59,0xcb,0xaf,0x78,0x6b,0xc3,0xb2,0x4d,0xa4,0xc9,0x21,0x27,0x5a,0xd5, -0xee,0x45,0xbc,0x33,0xbe,0x4e,0xe2,0xae,0xe7,0x32,0x1c,0x83,0x92,0xa0,0xe0,0xf5, -0x35,0xe5,0x9a,0x76,0xab,0x1f,0x8f,0xbe,0x29,0xda,0x6a,0x3e,0x2e,0xbf,0x2b,0x0e, -0xb3,0xac,0xa4,0xfa,0xb5,0xfb,0xb6,0xd2,0xa9,0x2c,0xe0,0xcf,0x21,0x3d,0xb0,0x19, -0x8f,0xb5,0x7f,0x40,0x9f,0x1c,0x3e,0x24,0xe8,0x3f,0xb3,0x97,0xec,0xbf,0xae,0xf8, -0x9b,0x43,0x5b,0x5b,0x7d,0x2b,0x46,0xd1,0x44,0x7a,0x34,0x36,0xa5,0x44,0x4c,0xcc, -0xa2,0x3b,0x61,0x1e,0x38,0x20,0xb3,0x27,0x4e,0xdc,0xd3,0x25,0x6a,0x7f,0x3e,0x1e, -0x2f,0xf0,0x4e,0xa1,0xe0,0xef,0x1d,0x6a,0xbe,0x13,0x9d,0xa1,0xbe,0xd5,0x74,0xeb, -0xe7,0xd3,0xa4,0xfb,0x03,0x99,0x63,0x92,0x64,0x7d,0x85,0x50,0xe0,0x6e,0xf9,0x81, -0x03,0x8e,0x71,0x5f,0xbd,0xbe,0x1c,0xf8,0x6b,0xa7,0x7e,0xce,0x7f,0xb0,0xcd,0xef, -0x86,0x2e,0x84,0x51,0xc7,0xa3,0x78,0x42,0xed,0xf5,0x07,0xc6,0x16,0x4b,0x86,0xb7, -0x91,0xe7,0x27,0xeb,0x23,0x30,0xfc,0xab,0xf2,0x6b,0xfe,0x09,0xd5,0xf0,0x92,0x7f, -0x8e,0x9f,0xb5,0xbf,0x87,0xae,0x75,0x24,0x6b,0xed,0x3f,0x45,0x95,0xfc,0x45,0xa9, -0xcb,0x29,0xfb,0xcd,0x11,0x06,0x32,0x4f,0x72,0xd3,0xb4,0x59,0xf5,0x19,0xaf,0xb2, -0xff,0x00,0xe0,0xac,0x1f,0xb6,0x06,0x8d,0xa5,0x78,0x12,0xe7,0xe0,0xdf,0x85,0xb5, -0x38,0x6f,0xf5,0xfd,0x52,0x44,0xfe,0xde,0x6b,0x67,0x0e,0xb6,0x56,0xc8,0x43,0x08, -0x19,0x81,0xe2,0x47,0x60,0x99,0x5e,0x48,0x50,0x72,0x06,0xe1,0x40,0x2d,0x35,0x3f, -0x2c,0xfe,0x17,0x78,0x72,0xe3,0xc6,0x1f,0x12,0xfc,0x27,0xa0,0xd9,0x0c,0xdd,0xea, -0x7a,0xb5,0xa5,0x9c,0x5c,0xe3,0xe6,0x92,0x64,0x51,0xfc,0xeb,0xfa,0x6e,0x8d,0x3c, -0xb4,0x55,0xeb,0x80,0x06,0x6b,0xf1,0x1f,0xfe,0x09,0x3f,0xf0,0x0e,0xe3,0xe2,0x67, -0xed,0x0b,0x17,0x8c,0xaf,0x2d,0x0b,0xf8,0x7b,0xc1,0xa9,0xf6,0xb6,0x92,0x45,0x3b, -0x1e,0xf1,0x81,0x10,0x20,0x3e,0xaa,0x73,0x27,0xb6,0xc1,0xeb,0x5f,0xb7,0x2c,0xc1, -0x14,0x92,0x70,0x00,0xcd,0x0c,0x16,0xc7,0x81,0xfe,0xd2,0x7e,0x22,0x12,0xdd,0x69, -0x9a,0x24,0x6d,0x91,0x18,0x37,0x52,0x8f,0x73,0x95,0x4f,0xd3,0x77,0xe6,0x2b,0xc4, -0xab,0x7b,0xc7,0x5e,0x20,0x3e,0x28,0xf1,0x6e,0xa7,0xa9,0x64,0x98,0xe5,0x98,0x88, -0xb3,0xd9,0x07,0x0b,0xfa,0x01,0x58,0x35,0xf8,0x96,0x67,0x89,0xfa,0xde,0x2e,0x75, -0x56,0xd7,0xb2,0xf4,0x5a,0x1f,0x29,0x88,0xa9,0xed,0x6a,0xb9,0x06,0x68,0xa2,0x8c, -0xd7,0x98,0x73,0x85,0x14,0x51,0x48,0x00,0x71,0x4e,0x49,0x5e,0x33,0x95,0x76,0x52, -0x3b,0x83,0x8a,0x6d,0x14,0xd3,0x6b,0x60,0xb9,0xb5,0xa6,0xf8,0xd7,0x5f,0xd2,0x0a, -0xfd,0x93,0x58,0xbd,0x84,0x2f,0x45,0x13,0x31,0x5f,0xc8,0xf1,0x5e,0x89,0xe1,0x6f, -0xda,0x2b,0x56,0xb0,0x91,0x22,0xd6,0xed,0xd3,0x51,0xb7,0xef,0x2c,0x2a,0x12,0x51, -0xf8,0x7d,0xd3,0xfa,0x7d,0x6b,0xc8,0x68,0xaf,0x43,0x0f,0x98,0xe2,0xb0,0xb2,0xbd, -0x2a,0x8f,0xf4,0xfb,0x8d,0xe1,0x5e,0xa5,0x37,0x78,0xc8,0xfb,0x57,0xc3,0x5e,0x28, -0xd3,0xbc,0x59,0xa6,0xa5,0xf6,0x9b,0x72,0xb7,0x10,0x31,0xc1,0xec,0xc8,0xdd,0xd5, -0x87,0x63,0x5a,0xd5,0xf2,0x47,0xc2,0x6f,0x18,0x4f,0xe1,0x2f,0x17,0xda,0x10,0xe7, -0xec,0x57,0x6e,0xb0,0x5c,0xc7,0x9e,0x08,0x27,0x01,0xbe,0xaa,0x4e,0x7f,0x3f,0x5a, -0xfa,0xd9,0x4e,0x46,0x6b,0xf5,0x3c,0xa7,0x31,0x59,0x8d,0x0e,0x76,0xad,0x25,0xa3, -0x3e,0x8b,0x0d,0x5f,0xdb,0xc2,0xfd,0x50,0x37,0x00,0xd7,0xcd,0x1f,0x15,0x3e,0x26, -0xeb,0x51,0x78,0xeb,0x51,0xb7,0xd2,0xf5,0x5b,0x9b,0x5b,0x4b,0x56,0x10,0x04,0x89, -0xf0,0xa5,0x94,0x7c,0xc7,0x1f,0xef,0x64,0x7e,0x15,0xf4,0x4e,0xbb,0xaa,0xc7,0xa1, -0xe8,0xd7,0xda,0x84,0xdc,0xc5,0x6b,0x0b,0xcc,0xc0,0x75,0x21,0x41,0x38,0xfd,0x2b, -0xe2,0x8b,0xbb,0xa9,0x2f,0x6e,0xa6,0xb8,0x95,0xb7,0xcb,0x33,0xb4,0x8e,0xc7,0xbb, -0x13,0x92,0x6b,0xc6,0xe2,0x5c,0x64,0xe8,0xd3,0xa7,0x4a,0x9c,0xac,0xdb,0xbe,0x9d, -0x8e,0x6c,0x7d,0x57,0x08,0xa8,0xc5,0xd8,0xea,0x13,0xe2,0xc7,0x8b,0xa3,0xe9,0xae, -0xdd,0x7e,0x3b,0x4f,0xf3,0x15,0x32,0x7c,0x64,0xf1,0x94,0x7d,0x35,0xb9,0x0f,0xfb, -0xd1,0x46,0x7f,0xf6,0x5a,0xe3,0x28,0xaf,0x82,0x58,0xec,0x52,0xda,0xac,0xbe,0xf6, -0x78,0x9e,0xda,0xa7,0xf3,0x3f,0xbc,0xef,0x13,0xe3,0x8f,0x8c,0xd3,0xfe,0x62,0xc1, -0xbf,0xde,0xb7,0x8b,0xff,0x00,0x89,0xab,0x09,0xf1,0xef,0xc6,0x0b,0xd6,0xf6,0x06, -0xfa,0xdb,0xaf,0xf8,0x57,0x9d,0xd1,0x5a,0x2c,0xcb,0x1a,0xb6,0xad,0x2f,0xbd,0x97, -0xf5,0x8a,0xbf,0xcc,0xcf,0x4a,0x5f,0xda,0x0b,0xc5,0xca,0x79,0x96,0xd1,0xff,0x00, -0xde,0xb7,0xff,0x00,0x03,0x53,0xa7,0xed,0x17,0xe2,0xa4,0xeb,0x16,0x9c,0xff,0x00, -0x58,0x1b,0xff,0x00,0x8b,0xaf,0x2e,0xa2,0xb4,0x59,0xb6,0x39,0x6d,0x59,0xfd,0xe3, -0x58,0x9a,0xcb,0xed,0x33,0xd6,0x23,0xfd,0xa4,0xbc,0x48,0xbf,0x7a,0xcb,0x4e,0x6f, -0xfb,0x66,0xe3,0xff,0x00,0x67,0xab,0x09,0xfb,0x4b,0x6b,0x60,0x7c,0xda,0x5d,0x8b, -0x1f,0x6d,0xe3,0xfa,0xd7,0x8f,0xd1,0x56,0xb3,0x9c,0x7a,0xff,0x00,0x97,0xac,0x7f, -0x5a,0xaf,0xfc,0xc7,0xb3,0x27,0xed,0x33,0xaa,0x0f,0xbd,0xa2,0xda,0xb7,0xd2,0x56, -0x1f,0xd2,0xa7,0x5f,0xda,0x6e,0xef,0xf8,0xb4,0x08,0x7f,0x0b,0xa3,0xff,0x00,0xc4, -0xd7,0x89,0x51,0xfa,0xd6,0xab,0x3c,0xcc,0x3a,0x55,0xfc,0x17,0xf9,0x14,0xb1,0x95, -0xff,0x00,0x98,0xfb,0x1b,0xe1,0xef,0x8b,0x26,0xf1,0xb7,0x86,0x61,0xd5,0xa5,0xb3, -0x16,0x42,0x67,0x75,0x48,0xc3,0xee,0xc8,0x52,0x57,0x39,0xc0,0xee,0x0d,0x74,0xb5, -0x89,0xe0,0xad,0x23,0xfb,0x03,0xc2,0x9a,0x56,0x9e,0x7e,0xf4,0x16,0xe8,0xaf,0xee, -0xd8,0xcb,0x1f,0xcf,0x35,0xb4,0x6b,0xf5,0xac,0x3f,0x3f,0xb1,0x87,0xb5,0x77,0x95, -0x95,0xfd,0x4f,0xa5,0x85,0xf9,0x17,0x36,0xe2,0xd2,0x13,0x8a,0xaf,0x7b,0x7f,0x6f, -0xa7,0x5a,0x49,0x73,0x75,0x3c,0x76,0xf6,0xf1,0x8d,0xcf,0x2c,0xac,0x15,0x54,0x7a, -0x92,0x6b,0xc7,0x3c,0x65,0xfb,0x45,0xdb,0xda,0xb3,0xdb,0x78,0x7a,0xdf,0xed,0x72, -0x0e,0x3e,0xd9,0x70,0x08,0x8f,0xea,0xab,0xd4,0xfe,0x38,0xfc,0x6b,0x0c,0x5e,0x3b, -0x0f,0x82,0x8f,0x35,0x69,0x5b,0xcb,0xaf,0xdc,0x4d,0x5a,0xd0,0xa4,0xaf,0x36,0x7b, -0x51,0x70,0xa3,0x24,0xe0,0x7a,0x9a,0xe5,0xf5,0x8f,0x8a,0x3e,0x16,0xd0,0xb7,0x0b, -0x9d,0x6a,0xd8,0xba,0x9c,0x18,0xe0,0x6f,0x39,0x81,0xf7,0x09,0x92,0x2b,0xe5,0xbf, -0x10,0xf8,0xe3,0x5d,0xf1,0x4c,0x8c,0xda,0x96,0xa5,0x34,0xe8,0x4e,0x7c,0xa0,0xdb, -0x63,0x1f,0x45,0x18,0x15,0x85,0xd2,0xbe,0x33,0x11,0xc5,0x2f,0x6c,0x3d,0x3f,0x9b, -0xff,0x00,0x25,0xfe,0x67,0x95,0x3c,0xc7,0xf9,0x23,0xf7,0x9f,0x4b,0xdf,0xfe,0xd1, -0x7e,0x19,0xb6,0x72,0xb0,0x45,0x7d,0x79,0xe8,0xd1,0xc4,0x15,0x7f,0xf1,0xe6,0x07, -0xf4,0xac,0xb9,0xbf,0x69,0x9d,0x31,0x4f,0xee,0x74,0x6b,0xb7,0x1f,0xed,0xc8,0xab, -0xfc,0xb3,0x5f,0x3e,0x51,0x5e,0x44,0xb8,0x8f,0x1f,0x2d,0x9a,0x5f,0x2f,0xf3,0x39, -0x5e,0x3a,0xb3,0xea,0x7b,0xfa,0xfe,0xd3,0x76,0x64,0xfc,0xda,0x14,0xe0,0x7b,0x4e, -0xa7,0xfa,0x55,0xb8,0xbf,0x69,0x6d,0x10,0xe3,0xcc,0xd2,0xf5,0x04,0xf5,0xda,0x23, -0x6f,0xfd,0x98,0x57,0xce,0xb4,0x54,0xae,0x21,0xcc,0x17,0xda,0x4f,0xe4,0x84,0xb1, -0xd5,0xfb,0x9f,0x53,0x58,0x7c,0x7b,0xf0,0x85,0xe8,0x4f,0x32,0xf2,0x6b,0x36,0x6f, -0xe1,0x9e,0xdd,0xb8,0xfa,0x95,0x04,0x7e,0xb5,0xd8,0xe9,0x3e,0x25,0xd2,0xb5,0xe0, -0x4e,0x9d,0xa9,0x5a,0xde,0xe0,0x64,0x88,0x25,0x56,0x23,0xea,0x07,0x4a,0xf8,0xa2, -0x9d,0x14,0xaf,0x04,0x8a,0xf1,0xbb,0x46,0xeb,0xca,0xb2,0x1c,0x11,0xf4,0x22,0xbd, -0x0a,0x3c,0x51,0x88,0x8b,0xfd,0xf4,0x13,0x5e,0x5a,0x3f,0xd4,0xde,0x19,0x8c,0xd7, -0xc4,0xae,0x7d,0xcf,0x9c,0x9e,0xb4,0xb5,0xf2,0xcf,0x84,0xfe,0x39,0x78,0x8b,0xc3, -0xae,0x91,0xdd,0x4d,0xfd,0xaf,0x68,0x3a,0xc7,0x72,0x7e,0x70,0x3d,0x9f,0xaf,0xe7, -0x9a,0xf7,0xbf,0x04,0x7c,0x49,0xd1,0xfc,0x75,0x6e,0x4d,0x94,0xde,0x55,0xda,0x0c, -0xc9,0x69,0x36,0x04,0x8b,0xee,0x3d,0x47,0xb8,0xaf,0xaf,0xc0,0xe7,0x18,0x5c,0x73, -0xe5,0x83,0xb4,0xbb,0x3f,0xd0,0xf4,0xe8,0xe2,0xa9,0xd6,0xd1,0x3b,0x33,0xac,0xa2, -0x90,0x1c,0x8a,0x5a,0xf7,0x0e,0xc0,0xa2,0x8a,0x28,0x00,0xa2,0x90,0x9c,0x57,0x3b, -0xe2,0x9f,0x88,0x1a,0x1f,0x83,0x93,0x3a,0x9d,0xfc,0x71,0x4a,0x46,0x44,0x09,0xf3, -0xc8,0xdf,0xf0,0x11,0xce,0x3d,0xcf,0x15,0x95,0x4a,0xb0,0xa5,0x1e,0x6a,0x92,0xb2, -0xf3,0x26,0x52,0x51,0x57,0x93,0x3a,0x3a,0x4c,0xd7,0x84,0x6b,0xdf,0xb4,0xb3,0x1d, -0xc9,0xa3,0xe9,0x20,0x0e,0xd2,0xde,0x3f,0x3f,0xf7,0xc2,0xff,0x00,0xf1,0x55,0xc3, -0xea,0x7f,0x1b,0x7c,0x5f,0xa9,0x13,0xff,0x00,0x13,0x31,0x68,0xa7,0xf8,0x6d,0xa2, -0x55,0xc7,0xe3,0x82,0x7f,0x5a,0xf9,0xca,0xfc,0x45,0x81,0xa5,0xa4,0x5b,0x97,0xa2, -0xff,0x00,0x33,0x82,0x78,0xea,0x31,0xd1,0x6a,0x7d,0x5d,0x9f,0xca,0x8d,0xc3,0xd6, -0xbe,0x30,0xba,0xf1,0xaf,0x88,0x2f,0x73,0xe7,0xeb,0x7a,0x84,0x80,0xf5,0x06,0xe5, -0xf1,0xf9,0x66,0xb3,0x1e,0xfa,0xe6,0x43,0x96,0xb8,0x95,0x89,0xee,0xce,0x4d,0x79, -0x92,0xe2,0xaa,0x6b,0xe1,0xa4,0xfe,0xff,0x00,0xf8,0x07,0x3b,0xcc,0xa3,0xd2,0x27, -0xdc,0x04,0x2b,0x1f,0x9b,0x69,0xfa,0xd3,0x86,0xd0,0x30,0x00,0xfc,0x2b,0xe1,0xbf, -0xb5,0xcf,0xff,0x00,0x3d,0xa4,0xff,0x00,0xbe,0x8d,0x58,0xb6,0xd7,0x35,0x2b,0x33, -0x9b,0x7d,0x42,0xea,0x03,0xeb,0x1c,0xcc,0xbf,0xc8,0xd4,0xae,0x2a,0x87,0x5a,0x3f, -0x8f,0xfc,0x01,0x7f,0x69,0x2e,0xb1,0xfc,0x4f,0xb6,0xb6,0xa9,0x3d,0x06,0x69,0xd9, -0xe3,0x8a,0xf8,0xe6,0xd3,0xe2,0x37,0x8a,0x2c,0xbf,0xd5,0x6b,0xd7,0xff,0x00,0x47, -0x9d,0x9c,0x7f,0xe3,0xd9,0xae,0x82,0xc3,0xe3,0xcf,0x8b,0xec,0x48,0xdf,0x75,0x05, -0xea,0x8e,0xd3,0xc0,0xbf,0xcd,0x71,0x5d,0x74,0xf8,0x9f,0x0b,0x2f,0x8e,0x2d,0x7d, -0xcc,0xda,0x39,0x85,0x37,0xba,0x68,0xfa,0xa2,0x90,0xf1,0x5e,0x27,0xe1,0x2f,0xda, -0x22,0x6d,0x5f,0x53,0xb3,0xd3,0xef,0xb4,0x61,0xe6,0xdc,0xca,0x90,0xac,0x96,0xb2, -0x7f,0x13,0x10,0x07,0xca,0xdf,0x5f,0x5a,0xf6,0xc1,0xc8,0x15,0xf4,0x78,0x4c,0x75, -0x0c,0x74,0x5c,0xa8,0x4a,0xf6,0x3b,0xa9,0x56,0x85,0x65,0x78,0x30,0x56,0x0e,0xa0, -0x8e,0x86,0x96,0x9a,0xab,0xb4,0x60,0x74,0xa7,0x57,0x79,0xb0,0x53,0x5c,0xe1,0x49, -0xf4,0x14,0xea,0x8a,0xe9,0xfc,0xbb,0x69,0x5b,0xd1,0x09,0xfd,0x29,0x3d,0x80,0xf8, -0x93,0xf6,0x80,0xb9,0xfb,0x47,0x8a,0xe4,0x5c,0xe7,0x04,0xd7,0x87,0xe8,0xfe,0x3c, -0x97,0xe1,0x5f,0xc5,0x4f,0x09,0x78,0xaa,0x10,0x0a,0x5a,0x5f,0x24,0x57,0x0a,0x4e, -0x03,0x41,0x27,0xee,0xe4,0x07,0xfe,0x02,0xc4,0x8f,0x70,0x3d,0x2b,0xd6,0xbe,0x33, -0x5c,0x79,0xde,0x2d,0xb8,0x39,0xce,0x33,0x5f,0x2e,0x7c,0x77,0xba,0x30,0xe8,0x72, -0xed,0x38,0x60,0xa4,0x8c,0x7a,0xd7,0xe7,0x18,0x29,0x37,0x8e,0x94,0x97,0x76,0x7e, -0x39,0x8f,0xa9,0x25,0x9a,0x53,0x9c,0x77,0xe7,0x47,0xec,0x77,0xdb,0x61,0xff,0x00, -0x9e,0xc9,0xf9,0xd1,0x5e,0x03,0xfd,0x91,0x7b,0xff,0x00,0x3f,0x72,0xff,0x00,0xdf, -0x46,0x8a,0xfd,0x0f,0x9d,0x9f,0xaf,0x73,0x79,0x1f,0x44,0xd1,0x45,0x15,0xa9,0xa8, -0x51,0x45,0x14,0x01,0x93,0xe2,0x9d,0x7a,0x1f,0x0b,0xf8,0x77,0x53,0xd5,0xae,0x48, -0xf2,0x6c,0xed,0xde,0x76,0x1e,0xbb,0x41,0x38,0xfc,0x4f,0x15,0xf9,0xe8,0xf3,0x5d, -0x78,0x97,0x5b,0x92,0x79,0x4b,0x4d,0x79,0x7d,0x39,0x76,0x3d,0x49,0x66,0x6c,0xff, -0x00,0x5a,0xfa,0x97,0xf6,0xb9,0xf1,0x6b,0x69,0x9e,0x11,0xb1,0xd0,0xa0,0x90,0x2c, -0xba,0x9c,0xdb,0xe5,0x51,0x8c,0xf9,0x51,0xf3,0xfa,0xb1,0x5f,0xc8,0xd7,0x8e,0x7e, -0xce,0xde,0x11,0xff,0x00,0x84,0xa3,0xe2,0x15,0xa3,0xc8,0xbb,0xad,0xac,0xff,0x00, -0x7e,0xfc,0x71,0xc7,0x41,0xf9,0xd7,0xc3,0xe7,0x33,0x78,0xac,0x54,0x30,0x90,0xfe, -0x9b,0xff,0x00,0x80,0x7c,0x26,0x6f,0x27,0x8c,0xc7,0x53,0xc2,0x47,0x65,0xbf,0xab, -0xff,0x00,0x80,0x7d,0x75,0xf0,0xeb,0xc3,0x51,0xf8,0x4f,0xc1,0xba,0x5e,0x9a,0x8b, -0xb5,0xa2,0x84,0x17,0xf7,0x62,0x32,0x6b,0xa4,0x03,0x14,0x2f,0x02,0x96,0xbe,0xd2, -0x9c,0x15,0x38,0x28,0x47,0x64,0x7d,0xc4,0x22,0xa1,0x15,0x15,0xb2,0x0a,0x28,0xa2, -0xb4,0x2c,0x2b,0x88,0xf8,0xe1,0xe0,0x17,0xf8,0xa9,0xf0,0x77,0xc6,0xbe,0x0f,0x8e, -0x5f,0x22,0x5d,0x73,0x48,0xba,0xb0,0x8e,0x53,0xfc,0x0f,0x24,0x4c,0xaa,0x7f,0x02, -0x45,0x76,0xf4,0x84,0x66,0x80,0x3f,0x97,0xbf,0x12,0xf8,0x6f,0x53,0xf0,0x77,0x88, -0x75,0x2d,0x0f,0x59,0xb3,0x97,0x4f,0xd5,0x74,0xeb,0x87,0xb5,0xba,0xb5,0x9d,0x70, -0xf1,0x48,0xa4,0x86,0x52,0x3e,0xa2,0xb4,0xa7,0xf8,0x99,0xe2,0xdb,0x9f,0x06,0x0f, -0x08,0x4d,0xe2,0x5d,0x56,0x6f,0x0b,0x09,0x56,0x71,0xa3,0x49,0x79,0x23,0x5a,0xac, -0x8b,0x9d,0xac,0x23,0x27,0x68,0x23,0x27,0xa0,0xef,0x5f,0xbd,0xff,0x00,0xb4,0x67, -0xec,0x2b,0xf0,0x9f,0xf6,0x99,0xb8,0x6d,0x4b,0xc4,0xba,0x3c,0xba,0x77,0x88,0xf6, -0x04,0x1a,0xee,0x8f,0x20,0x82,0xe9,0x80,0x18,0x01,0xf8,0x29,0x26,0x07,0x03,0x7a, -0x92,0x07,0x00,0x81,0x5f,0x2a,0x6a,0xbf,0xf0,0x44,0xcf,0x0c,0x49,0x76,0x0e,0x99, -0xf1,0x3b,0x56,0xb6,0xb5,0xef,0x1d,0xde,0x9b,0x14,0xcf,0x8f,0xf7,0x95,0x90,0x7e, -0x95,0x57,0x22,0xcf,0xa1,0xf9,0x77,0xe0,0xff,0x00,0x89,0x7e,0x2c,0xf8,0x7d,0x0e, -0xa7,0x17,0x86,0x3c,0x45,0xa9,0x78,0x7d,0x75,0x38,0x84,0x17,0x9f,0xd9,0xb7,0x2f, -0x03,0x4f,0x18,0x24,0x84,0x62,0xa4,0x12,0x32,0x4f,0x15,0xdb,0xfe,0xcf,0x3f,0xb3, -0x4f,0x8e,0xff,0x00,0x6a,0x2f,0x1c,0x47,0xa3,0x78,0x5a,0xc6,0x49,0x63,0xf3,0x03, -0x6a,0x1a,0xcd,0xc8,0x3f,0x66,0xb3,0x42,0x79,0x79,0x1f,0xb9,0xeb,0x85,0x19,0x66, -0x3d,0x2b,0xf5,0x27,0xe1,0xef,0xfc,0x11,0xd7,0xe0,0xf7,0x86,0x2f,0xe1,0xbb,0xf1, -0x1e,0xad,0xe2,0x0f,0x18,0x98,0xf9,0x36,0x97,0x17,0x0b,0x6b,0x6e,0xc7,0xdc,0x44, -0xa1,0xff,0x00,0x0d,0xf5,0xf6,0xa7,0x82,0x3c,0x03,0xe1,0xcf,0x86,0xbe,0x1e,0xb6, -0xd0,0x7c,0x2b,0xa2,0x58,0xf8,0x7f,0x47,0xb7,0x1f,0xbb,0xb3,0xd3,0xe0,0x58,0xa3, -0x07,0xb9,0x20,0x0e,0x58,0xf7,0x63,0xc9,0xee,0x69,0x5c,0x12,0xee,0x71,0xdf,0xb3, -0x97,0xec,0xfd,0xe1,0xbf,0xd9,0xab,0xe1,0x7e,0x9d,0xe0,0xcf,0x0d,0xc6,0x5a,0x38, -0x7f,0x7b,0x77,0x7d,0x22,0x81,0x35,0xed,0xc3,0x01,0xbe,0x67,0x3e,0xa7,0x00,0x01, -0xd8,0x00,0x07,0x02,0xb6,0x7e,0x30,0xf8,0x8c,0x78,0x6f,0xc0,0x7a,0x8c,0x8a,0xc1, -0x6e,0x2e,0x57,0xec,0xb0,0xf3,0x83,0xb9,0xf8,0x24,0x7b,0x85,0xdc,0x7f,0x0a,0xed, -0xeb,0xe7,0x8f,0xda,0x43,0xc4,0x5f,0x6b,0xd6,0x6c,0x34,0x68,0xdf,0x29,0x6b,0x19, -0x9e,0x50,0x3a,0x6f,0x6e,0x07,0xe4,0x07,0xfe,0x3d,0x5e,0x2e,0x6f,0x89,0xfa,0xae, -0x0e,0x73,0x5b,0xbd,0x17,0xab,0xd0,0xe7,0xc5,0x54,0xf6,0x74,0x9b,0x3c,0x6e,0x8a, -0x28,0xaf,0xc6,0x0f,0x95,0x0a,0xf6,0xff,0x00,0xd9,0xcf,0xc2,0x90,0x5e,0xc5,0xaa, -0xea,0xf7,0x76,0xf1,0x4e,0x99,0x16,0xd1,0x09,0x50,0x30,0xc8,0xf9,0x98,0xe0,0xfd, -0x57,0xf5,0xaf,0x10,0xaf,0xb0,0xbe,0x1a,0x78,0x74,0xf8,0x63,0xc1,0x1a,0x4d,0x8b, -0xa9,0x59,0xc4,0x5e,0x64,0xc0,0x8c,0x10,0xee,0x77,0x30,0xfc,0x09,0xc7,0xe1,0x5f, -0x57,0xc3,0xb8,0x5f,0x6f,0x8b,0xf6,0x92,0x5a,0x45,0x7e,0x2f,0x44,0x7a,0x58,0x0a, -0x7c,0xf5,0x79,0x9f,0x43,0x4e,0x4f,0x09,0xe8,0x93,0x0f,0xde,0x69,0x16,0x2f,0xf5, -0xb6,0x43,0xfd,0x2b,0x36,0xf3,0xe1,0x87,0x85,0x2f,0x91,0x96,0x4d,0x02,0xc5,0x41, -0xea,0x62,0x84,0x46,0x7f,0x35,0xc1,0xae,0x9c,0x0c,0x51,0x5f,0xa6,0xcb,0x0f,0x46, -0x5f,0x14,0x13,0xf9,0x23,0xe8,0x1d,0x38,0x3d,0xd2,0x3c,0x33,0xe2,0x17,0xc0,0x1b, -0x3b,0x6d,0x3a,0xe3,0x50,0xf0,0xf3,0xcb,0x1c,0x90,0xa1,0x76,0xb3,0x95,0xb7,0x87, -0x03,0x93,0xb5,0x8f,0x39,0xfa,0x93,0x9f,0x6a,0xf0,0x8a,0xfb,0x2b,0xc7,0x7e,0x21, -0x83,0xc3,0x3e,0x14,0xd4,0x6f,0xe6,0x20,0x6c,0x89,0x95,0x14,0xff,0x00,0x1b,0x91, -0x85,0x1f,0x99,0xaf,0x8d,0x40,0xc0,0x02,0xbf,0x34,0xe2,0x2c,0x2e,0x1b,0x0d,0x5a, -0x1e,0xc1,0x59,0xb5,0xaa,0x5f,0x81,0xe0,0x63,0xa9,0xc2,0x9c,0xd7,0x26,0x81,0x45, -0x14,0x57,0xc9,0x1e,0x61,0x6f,0x49,0xb5,0x7b,0xed,0x56,0xce,0xde,0x21,0x99,0x25, -0x99,0x23,0x5c,0x7a,0x96,0x00,0x7f,0x3a,0xfb,0x79,0x38,0x50,0x2b,0xe5,0xdf,0x81, -0x3e,0x13,0x6f,0x10,0x78,0xce,0x2b,0xc9,0x13,0x75,0xa6,0x9a,0x3c,0xf7,0x24,0x70, -0x64,0xe8,0x83,0xeb,0x9f,0x9b,0xfe,0x03,0x5f,0x51,0x81,0x5f,0xa5,0xf0,0xc5,0x09, -0x53,0xc3,0xce,0xab,0xfb,0x4f,0x4f,0x91,0xef,0xe5,0xd0,0x71,0x83,0x93,0xea,0x61, -0x78,0xdb,0xc3,0x4f,0xe2,0xff,0x00,0x0e,0x5d,0xe9,0x2b,0x78,0xf6,0x22,0xe3,0x68, -0x69,0x91,0x37,0x10,0x03,0x02,0x46,0x32,0x3a,0xe3,0x15,0xe4,0xf2,0x7e,0xcc,0x63, -0xf8,0x3c,0x40,0x7f,0xe0,0x56,0x9f,0xfd,0x9d,0x7b,0xb5,0x26,0x2b,0xe8,0x71,0x59, -0x6e,0x17,0x19,0x25,0x3a,0xf0,0xbb,0xf5,0x67,0x75,0x4c,0x3d,0x3a,0xae,0xf3,0x57, -0x3c,0x09,0xff,0x00,0x66,0x4b,0xaf,0xe0,0xd7,0xa1,0x3f,0xef,0x5b,0x11,0xff,0x00, -0xb3,0x55,0x77,0xfd,0x99,0xf5,0x31,0xf7,0x35,0xab,0x46,0xfa,0xc4,0xc2,0xbe,0x85, -0xc5,0x52,0xd6,0x35,0x38,0xb4,0x7d,0x2a,0xf2,0xfa,0x63,0x88,0xad,0xa2,0x79,0x58, -0xfb,0x28,0x26,0xbc,0xe9,0xe4,0x39,0x72,0x4d,0xb8,0x5b,0xe6,0xff,0x00,0xcc,0xc1, -0xe0,0xa8,0x2d,0x6c,0x7c,0x65,0xe2,0x0d,0x20,0xe8,0x1a,0xdd,0xee,0x9a,0xd7,0x11, -0xdc,0xbd,0xac,0x86,0x26,0x92,0x20,0x42,0x96,0x1d,0x40,0xcf,0xa1,0xc8,0xfc,0x2b, -0x3e,0xa6,0xbc,0xba,0x96,0xfe,0xee,0x6b,0x99,0xdb,0x7c,0xf3,0x3b,0x49,0x23,0x7a, -0xb1,0x39,0x27,0xf3,0x35,0x0d,0x7e,0x51,0x53,0x95,0xcd,0xb8,0x2d,0x2f,0xa1,0xf3, -0x4e,0xd7,0x76,0x0a,0x28,0xad,0x2f,0x0d,0xe9,0x2d,0xaf,0x78,0x83,0x4d,0xd3,0xd4, -0x13,0xf6,0x9b,0x84,0x8c,0xe3,0xb2,0x93,0xc9,0xfc,0xb3,0x4a,0x10,0x75,0x24,0xa0, -0xb7,0x6e,0xc1,0x15,0x76,0x91,0xd2,0xda,0xfc,0x17,0xf1,0x7d,0xe5,0xa4,0x37,0x30, -0xe9,0x41,0xe2,0x99,0x04,0x88,0x7c,0xf8,0xc1,0xc1,0x19,0x19,0x05,0xb8,0xa4,0x93, -0xe0,0xb7,0x8c,0xe3,0xeb,0xa2,0x39,0xff,0x00,0x76,0x68,0x8f,0xfe,0xcd,0x5f,0x59, -0x43,0x1a,0xc5,0x12,0x22,0x8d,0xaa,0xa0,0x00,0x07,0x61,0x4e,0xc7,0xbd,0x7e,0x99, -0xfe,0xac,0x61,0x1a,0x5e,0xf4,0xaf,0xea,0xbf,0xc8,0xf7,0xff,0x00,0xb3,0xa9,0xf7, -0x67,0xc8,0x12,0x7c,0x2a,0xf1,0x6c,0x47,0xe6,0xd0,0x6e,0xcf,0xfb,0xaa,0x0f,0xf2, -0x35,0xa1,0xe1,0x2f,0x86,0x1e,0x20,0x9b,0xc5,0x3a,0x52,0x5e,0xe8,0xb7,0x50,0x5a, -0x7d,0xa5,0x1a,0x67,0x9a,0x22,0x10,0x20,0x39,0x6c,0x9f,0x70,0x31,0x5f,0x57,0x8a, -0x31,0x44,0x38,0x67,0x0d,0x09,0xa9,0x29,0xbd,0x3d,0x06,0xb2,0xfa,0x69,0xde,0xec, -0x07,0x02,0xb1,0x7c,0x59,0xe2,0xed,0x3f,0xc1,0xba,0x3c,0x9a,0x86,0xa1,0x2e,0xc8, -0xc7,0xca,0x91,0xaf,0xdf,0x95,0xbb,0x2a,0x8e,0xe7,0xf9,0x75,0x35,0x7f,0x56,0xd5, -0x6d,0xb4,0x4d,0x36,0xe6,0xfa,0xf2,0x51,0x0d,0xb4,0x08,0x64,0x91,0xcf,0x60,0x3f, -0xcf,0x4a,0xf9,0x1b,0xe2,0x07,0x8e,0x6e,0xfc,0x77,0xae,0xbd,0xe4,0xe5,0xa3,0xb6, -0x8c,0x95,0xb6,0xb7,0xcf,0x11,0x27,0xf8,0x9e,0xe7,0xfa,0x62,0xbd,0x1c,0xdb,0x34, -0x8e,0x5d,0x4a,0xd1,0xd6,0x6f,0x65,0xfa,0xb3,0x7c,0x4e,0x21,0x50,0x8e,0x9b,0xb2, -0x6f,0x1e,0x7c,0x48,0xd5,0x3c,0x79,0x78,0x5a,0xe5,0xcd,0xbd,0x8a,0x1c,0xc5,0x67, -0x1b,0x1d,0x8b,0xe8,0x4f,0xf7,0x9b,0xdc,0xfe,0x18,0xae,0x4e,0x8a,0x2b,0xf2,0x5a, -0xd5,0xaa,0x62,0x26,0xea,0x55,0x77,0x6c,0xf9,0x99,0x4e,0x53,0x7c,0xd2,0x7a,0x85, -0x14,0x57,0x5d,0xe0,0x0f,0x86,0x9a,0xa7,0x8f,0xae,0x8f,0xd9,0x80,0xb7,0xb1,0x8d, -0xb1,0x2d,0xe4,0x83,0xe5,0x1f,0xec,0x81,0xfc,0x4d,0xed,0xf9,0xd3,0xa3,0x46,0xa6, -0x22,0x6a,0x9d,0x25,0x76,0xc7,0x08,0x4a,0xa4,0xb9,0x62,0xae,0xce,0x46,0xa7,0xb7, -0xb1,0xb9,0xbc,0xff,0x00,0x51,0x6f,0x2c,0xf8,0xeb,0xe5,0xa1,0x6f,0xe5,0x5f,0x55, -0xf8,0x5f,0xe0,0xe7,0x86,0x7c,0x35,0x12,0x11,0x60,0x97,0xf7,0x23,0x19,0x9e,0xf0, -0x09,0x0e,0x7d,0x40,0x3f,0x28,0xfc,0x05,0x76,0xc9,0x0a,0x46,0x00,0x55,0x0a,0x07, -0x18,0x03,0x02,0xbe,0xce,0x87,0x0b,0x54,0x94,0x6f,0x5a,0xa2,0x4f,0xb2,0x57,0xfc, -0x74,0x3d,0x58,0x65,0xd2,0x7f,0x1c,0xac,0x7c,0x3f,0x71,0xa7,0x5d,0xda,0x0c,0xcf, -0x6b,0x34,0x23,0xd6,0x48,0xca,0xff,0x00,0x31,0x55,0xeb,0xee,0x96,0x8d,0x5d,0x48, -0x60,0x08,0x3d,0x8d,0x71,0xde,0x29,0xf8,0x4d,0xe1,0xcf,0x15,0x42,0xfe,0x6d,0x8a, -0x59,0xdd,0x31,0x2c,0x2e,0xad,0x00,0x8d,0xf7,0x7a,0x9c,0x70,0xdf,0x88,0x34,0xeb, -0xf0,0xb5,0x48,0xc6,0xf4,0x6a,0x5d,0xf6,0x6a,0xc1,0x3c,0xb9,0xa5,0xee,0x4a,0xe7, -0xc8,0xf4,0x57,0x4b,0xe3,0xbf,0x02,0x5f,0xf8,0x0f,0x56,0xfb,0x25,0xd8,0xf3,0x61, -0x93,0x2d,0x05,0xca,0x8c,0x2c,0x8b,0xfd,0x08,0xee,0x3d,0xeb,0x9a,0xaf,0x89,0xab, -0x4a,0x74,0x26,0xe9,0xd4,0x56,0x68,0xf2,0x65,0x17,0x07,0xcb,0x2d,0xc2,0xac,0x69, -0xfa,0x85,0xce,0x95,0x7b,0x0d,0xdd,0x9c,0xef,0x6d,0x73,0x0b,0x6e,0x8e,0x58,0xdb, -0x05,0x4d,0x57,0xa2,0xb3,0x4d,0xc5,0xa7,0x1d,0x1a,0x25,0x3b,0x6a,0x8f,0xaa,0xfe, -0x13,0xfc,0x4d,0x8f,0xc7,0x9a,0x61,0x86,0xe3,0x6c,0x5a,0xb5,0xb2,0x8f,0x3a,0x31, -0xc0,0x91,0x7f,0xbe,0xbe,0xde,0xa3,0xb1,0xfa,0x8a,0xef,0xc5,0x7c,0x59,0xe1,0x3f, -0x12,0xdc,0x78,0x47,0xc4,0x16,0x7a,0xad,0xb1,0x25,0xe0,0x6f,0x99,0x33,0xfe,0xb1, -0x0f,0xde,0x53,0xf5,0x19,0xaf,0xb2,0xf4,0xeb,0xd8,0x75,0x2b,0x0b,0x7b,0xbb,0x77, -0x12,0x41,0x3c,0x6b,0x24,0x6c,0x3a,0x15,0x23,0x20,0xd7,0xeb,0x39,0x16,0x64,0xf1, -0xd4,0x5c,0x2a,0x3f,0x7e,0x3b,0xf9,0xae,0x8c,0xfa,0x5c,0x1d,0x77,0x5a,0x16,0x96, -0xe8,0xb3,0x48,0x4e,0xd1,0x93,0x41,0xaf,0x29,0xf8,0xf9,0xe3,0x99,0x3c,0x3f,0xa2, -0x45,0xa4,0xd9,0xc8,0x52,0xf3,0x50,0x07,0x7b,0x29,0xe5,0x22,0x1d,0x7f,0x3e,0x9f, -0x4c,0xd7,0xb5,0x8b,0xc4,0xc3,0x07,0x46,0x55,0xa7,0xb2,0x3a,0xea,0xd4,0x54,0xa0, -0xe6,0xfa,0x1c,0xff,0x00,0xc5,0x1f,0x8e,0xb2,0x2c,0xb3,0x69,0x5e,0x1b,0x94,0x2e, -0xdc,0xa4,0xba,0x82,0xf3,0xcf,0x71,0x1f,0xff,0x00,0x15,0xf9,0x7a,0xd7,0x87,0x4f, -0x3c,0xb7,0x33,0x3c,0xb3,0x48,0xf2,0xca,0xec,0x59,0x9d,0xd8,0xb3,0x31,0x3d,0x49, -0x26,0x99,0x45,0x7e,0x39,0x8d,0xc7,0xd7,0xc7,0xd4,0xe7,0xaa,0xfd,0x17,0x44,0x7c, -0xb5,0x5a,0xd3,0xac,0xef,0x20,0xa2,0x8a,0x2b,0xce,0x30,0x0a,0x2b,0xba,0xf0,0xbf, -0xc1,0x8f,0x13,0x78,0xa2,0x14,0xb8,0x4b,0x64,0xb0,0xb5,0x7e,0x56,0x5b,0xc6,0x29, -0xb8,0x7a,0x85,0x00,0x9f,0xd2,0xbb,0x28,0x3f,0x66,0x5b,0xb6,0x51,0xe7,0xeb,0xd1, -0x21,0xee,0x23,0xb6,0x2d,0xfa,0x96,0x15,0xeb,0xd1,0xca,0x31,0xd5,0xd7,0x34,0x29, -0xbb,0x79,0xe9,0xf9,0x9d,0x31,0xc3,0x56,0x9a,0xba,0x89,0xe2,0x74,0x57,0xb9,0x37, -0xec,0xc6,0xf8,0xf9,0x7c,0x42,0x3f,0x1b,0x4f,0xfe,0xce,0xaa,0x5c,0x7e,0xcc,0xfa, -0x8a,0xa9,0xf2,0x35,0xab,0x59,0x0f,0x61,0x24,0x2c,0x9f,0xc8,0x9a,0xdd,0xe4,0x59, -0x82,0xff,0x00,0x97,0x7f,0x8a,0xff,0x00,0x32,0xfe,0xa7,0x5d,0x7d,0x93,0xc6,0x28, -0xaf,0x47,0xd4,0xbe,0x01,0x78,0xb2,0xc4,0x33,0x43,0x05,0xb5,0xf2,0x8f,0xf9,0xe1, -0x38,0xcf,0xe4,0xc0,0x57,0x15,0xac,0x78,0x6b,0x56,0xf0,0xfb,0xed,0xd4,0xb4,0xdb, -0x9b,0x2e,0x70,0x1a,0x68,0xc8,0x53,0xf4,0x3d,0x0d,0x79,0xd5,0xb0,0x58,0x9c,0x3e, -0xb5,0x69,0xb5,0xf2,0x30,0x95,0x2a,0x90,0xf8,0xa3,0x63,0xac,0xf8,0x1d,0xa4,0x0d, -0x57,0xe2,0x25,0x83,0x32,0x6e,0x8e,0xd5,0x5e,0xe1,0xbd,0xb0,0x30,0xa7,0xfe,0xfa, -0x65,0xaf,0xab,0x07,0x4a,0xf0,0x8f,0xd9,0x9f,0x48,0x05,0xb5,0x9d,0x51,0x97,0xfb, -0x96,0xc8,0x7f,0xf1,0xe6,0xff,0x00,0xd9,0x6b,0xde,0x2b,0xf4,0xce,0x1d,0xa3,0xec, -0xb0,0x2a,0x5f,0xcc,0xdb,0xfd,0x3f,0x43,0xe8,0x30,0x30,0xe5,0xa3,0x7e,0xe1,0x45, -0x14,0x57,0xd3,0x9e,0x80,0x55,0x2d,0x66,0x4f,0x2b,0x4a,0xbb,0x6f,0x48,0xcd,0x5d, -0xac,0x7f,0x16,0xcb,0xe4,0x78,0x7a,0xf9,0xff,0x00,0xe9,0x99,0xac,0xea,0x3b,0x41, -0xb2,0x64,0xed,0x16,0xcf,0x83,0x7e,0x27,0xcf,0xe7,0x78,0xa6,0xf4,0x83,0x9c,0x12, -0x3f,0x5a,0xf9,0xc3,0xe2,0xbc,0x5f,0xda,0x1a,0xa6,0x95,0x65,0xb7,0x79,0xb8,0xbd, -0x82,0x1d,0x9d,0x77,0x6e,0x91,0x57,0x1f,0xad,0x7d,0x01,0xe3,0xa9,0xbc,0xdd,0x7a, -0xf5,0xb3,0x9f,0x9c,0x8a,0xf1,0x3b,0xa8,0x3f,0xb4,0xfe,0x36,0xfc,0x3b,0xb2,0xed, -0x37,0x88,0xf4,0xe4,0xfa,0x8f,0xb4,0xc7,0xfe,0x15,0xf9,0xde,0x54,0xb9,0xb1,0x2d, -0xf9,0xfe,0xa7,0xe3,0x33,0x5e,0xd7,0x36,0xa4,0xbf,0xbc,0x7e,0xb6,0xff,0x00,0x61, -0x5a,0xff,0x00,0xcf,0xba,0xfe,0x54,0x56,0xad,0x15,0xfa,0x2f,0x2a,0x3f,0x66,0xb2, -0x1f,0x45,0x14,0x55,0x94,0x14,0xd2,0x69,0xd5,0xc8,0xfc,0x55,0xf1,0x6f,0xfc,0x21, -0x1e,0x01,0xd6,0xb5,0x75,0x60,0xb3,0xc3,0x09,0x48,0x33,0x8f,0xf5,0xad,0xf2,0xa7, -0x07,0xaf,0x24,0x1c,0x7b,0x56,0x75,0x26,0xa9,0xc1,0xce,0x5b,0x23,0x3a,0x93,0x54, -0xa0,0xe7,0x2d,0x96,0xa7,0xc8,0x5f,0x1f,0xbc,0x5f,0xff,0x00,0x09,0x8f,0xc4,0xfd, -0x4e,0x48,0xa4,0x2f,0x69,0x64,0x45,0x94,0x18,0x24,0x8c,0x26,0x77,0x11,0xf5,0x62, -0xdf,0xa5,0x7b,0xc7,0xec,0xaf,0xe1,0x1f,0xec,0x7f,0x08,0x4d,0xab,0x4a,0x98,0x9a, -0xf9,0xfe,0x52,0x47,0x3b,0x05,0x7c,0xa9,0xa0,0x69,0x73,0xf8,0x83,0x5d,0xb5,0xb3, -0x8c,0x19,0x66,0xb9,0x98,0x2f,0xa9,0x24,0x9e,0x4d,0x7e,0x85,0x78,0x67,0x45,0x8b, -0xc3,0xfa,0x0d,0x8e,0x9f,0x12,0x85,0x4b,0x78,0x95,0x30,0x3d,0x40,0xe6,0xbe,0x27, -0x28,0x83,0xc5,0xe3,0x27,0x8a,0x9f,0x4f,0xcd,0xff,0x00,0xc0,0x3e,0x27,0x23,0x84, -0xb1,0x58,0x9a,0x98,0xc9,0xff,0x00,0x57,0x34,0xc5,0x2d,0x14,0x57,0xdd,0x1f,0x74, -0x14,0x51,0x45,0x00,0x32,0x49,0x16,0x18,0xd9,0xdd,0x82,0x22,0x82,0x59,0x98,0xe0, -0x01,0xea,0x6b,0xe0,0x7f,0xda,0x6b,0xfe,0x0a,0xd3,0xe0,0xaf,0x85,0x9a,0x95,0xe7, -0x87,0xbe,0x1e,0x69,0xc9,0xe3,0xcd,0x72,0xdd,0x8c,0x73,0x5f,0xb4,0xa6,0x3d,0x36, -0x17,0x07,0x95,0x0e,0x3e,0x69,0x88,0xff,0x00,0x67,0x0b,0xfe,0xd7,0x5a,0xe2,0xbf, -0xe0,0xad,0x3f,0xb5,0xed,0xe7,0x84,0xed,0x62,0xf8,0x37,0xe1,0x3b,0xf6,0xb6,0xbe, -0xd4,0x2d,0xc5,0xc7,0x88,0x6e,0xa0,0x7c,0x3c,0x76,0xef,0xfe,0xae,0xd8,0x10,0x78, -0x2e,0x3e,0x66,0xff,0x00,0x64,0xa8,0xe8,0xc6,0xbe,0x5a,0xfd,0x8a,0x7f,0xe0,0x9d, -0x9a,0xff,0x00,0xed,0x53,0xa7,0xc9,0xe2,0x9d,0x5f,0x55,0x3e,0x15,0xf0,0x3c,0x53, -0x18,0x12,0xed,0x21,0xf3,0x2e,0x6f,0x5d,0x71,0xb9,0x61,0x52,0x40,0x0a,0xbd,0x0b, -0xb6,0x46,0x78,0x00,0xe0,0xe1,0x92,0xfc,0x8c,0xef,0x1a,0xff,0x00,0xc1,0x51,0x7f, -0x68,0x5f,0x17,0xcd,0x37,0x91,0xe2,0xeb,0x7f,0x0e,0xdb,0x3b,0x16,0x5b,0x7d,0x1b, -0x4f,0x86,0x30,0x83,0xb0,0x0e,0xea,0xcf,0xf9,0xb5,0x7d,0x1d,0xff,0x00,0x04,0xc4, -0xf8,0xc5,0xf1,0xb7,0xf6,0x81,0xf8,0xe3,0x7d,0x71,0xe2,0x9f,0x88,0x1a,0xe6,0xad, -0xe0,0xff,0x00,0x0f,0xd8,0xbd,0xd5,0xe5,0xb5,0xc3,0x29,0x86,0x79,0xe4,0xcc,0x70, -0xc4,0xc7,0x6e,0x47,0x57,0x93,0x03,0xfe,0x79,0x57,0xc9,0xbf,0xb7,0x6f,0xc0,0x4f, -0x01,0xfe,0xcd,0x7f,0x18,0x6d,0xbc,0x0b,0xe0,0x8d,0x57,0x58,0xd5,0xde,0xd7,0x4f, -0x8e,0xe3,0x53,0x9f,0x57,0x9e,0x29,0x19,0x27,0x90,0x96,0x58,0xc0,0x8e,0x34,0x0b, -0x88,0xf6,0x31,0xce,0x7f,0xd6,0x0e,0x98,0xaf,0xd3,0xef,0xf8,0x25,0x5f,0xc1,0x81, -0xf0,0xbf,0xf6,0x5f,0xb1,0xd7,0x2e,0xad,0xfc,0xad,0x5f,0xc5,0xf3,0x9d,0x56,0x56, -0x3f,0x7b,0xec,0xff,0x00,0x72,0xdd,0x7d,0x86,0xd0,0x5b,0xfe,0xda,0x50,0x08,0x8f, -0xe3,0x97,0xfc,0x15,0x17,0xc0,0x9f,0x00,0x7e,0x2c,0xeb,0xfe,0x01,0xd7,0xfc,0x21, -0xe2,0x5b,0xbd,0x43,0x48,0x92,0x34,0x92,0xea,0xc4,0x5b,0xb4,0x32,0x07,0x89,0x24, -0x56,0x5d,0xd2,0x29,0xe8,0xe3,0xb7,0x50,0x6b,0xe8,0x3f,0xd9,0xdb,0xe3,0xe6,0x87, -0xfb,0x4a,0xfc,0x30,0xb3,0xf1,0xc7,0x87,0x6c,0xef,0xac,0x34,0xcb,0x99,0xe5,0xb7, -0x58,0x35,0x15,0x45,0x98,0x34,0x6d,0xb5,0xb2,0x15,0x98,0x63,0x3d,0x39,0xaf,0xc2, -0xdf,0xdb,0xb3,0xc7,0x76,0x9f,0x11,0xbf,0x6b,0x6f,0x89,0x5a,0xcd,0x84,0xbe,0x75, -0x90,0xd4,0xbe,0xc5,0x13,0x8e,0x84,0x5b,0xc6,0x90,0x12,0x3d,0x8b,0x46,0xc7,0xf1, -0xaf,0xd8,0xaf,0xf8,0x27,0x2f,0x81,0x67,0xf0,0x0f,0xec,0x75,0xf0,0xfa,0xd2,0xe5, -0x59,0x2e,0x2f,0xed,0xa4,0xd5,0x59,0x58,0x60,0x81,0x71,0x2b,0x4a,0x9f,0xf8,0xe3, -0x2d,0x03,0x4f,0x53,0xe9,0x19,0xa7,0x5b,0x78,0x9e,0x49,0x18,0x24,0x68,0xa5,0x99, -0x98,0xe0,0x00,0x3b,0xd7,0xc5,0xfe,0x2d,0xd7,0x5f,0xc4,0xde,0x25,0xd4,0x75,0x37, -0x27,0xfd,0x22,0x66,0x65,0x07,0xb2,0x74,0x51,0xf8,0x00,0x05,0x7d,0x29,0xf1,0xbf, -0xc4,0x5f,0xd8,0x1e,0x01,0xbc,0x54,0x70,0xb7,0x17,0xc4,0x5a,0x46,0x3d,0x43,0x7d, -0xff,0x00,0xfc,0x74,0x37,0xe9,0x5f,0x2a,0x57,0xe7,0x1c,0x51,0x8a,0xe6,0x9c,0x30, -0xeb,0xa6,0xaf,0xe7,0xb1,0xe1,0xe6,0x15,0x2f,0x25,0x4f,0xe6,0x14,0x51,0x45,0x7c, -0x29,0xe3,0x9a,0x5e,0x1a,0x92,0xc6,0x2d,0x7f,0x4f,0x93,0x52,0x25,0x6c,0x23,0x99, -0x5e,0x6d,0xab,0xb8,0x95,0x07,0x24,0x60,0x7a,0xe3,0x1f,0x8d,0x7d,0x2b,0x1f,0xc7, -0x9f,0x06,0xb0,0x03,0xed,0xf2,0xaf,0xd6,0xda,0x4f,0xf0,0xaf,0x96,0x28,0xaf,0x6b, -0x01,0x9b,0x56,0xcb,0xa3,0x28,0xd2,0x49,0xdf,0xbf,0xfc,0x39,0xd7,0x47,0x13,0x3a, -0x09,0xa8,0xad,0xcf,0xaa,0xcf,0xc7,0x5f,0x06,0x81,0x9f,0xed,0x37,0xff,0x00,0xc0, -0x69,0x3f,0xf8,0x9a,0xc7,0xd6,0x3f,0x68,0xcf,0x0e,0xda,0x44,0xc2,0xc6,0xde,0xef, -0x50,0x97,0xb0,0xd9,0xe5,0xaf,0xe2,0x4f,0x3f,0xa5,0x7c,0xd9,0x45,0x7a,0x53,0xe2, -0x6c,0x6c,0x95,0x92,0x8a,0xf9,0x7f,0xc1,0x37,0x79,0x85,0x67,0xb5,0x8e,0xa7,0xc7, -0x5f,0x11,0x35,0x5f,0x1e,0xdd,0xab,0xde,0x32,0xc3,0x69,0x19,0x26,0x1b,0x48,0xbe, -0xe2,0x7b,0x9f,0x53,0xee,0x7f,0x0c,0x57,0x2d,0x45,0x6b,0xe9,0x1e,0x12,0xd6,0xb5, -0xed,0xa7,0x4f,0xd2,0xee,0xae,0x91,0xba,0x3c,0x71,0x1d,0x9f,0xf7,0xd7,0x4f,0xd6, -0xbe,0x72,0x73,0xad,0x8b,0xa8,0xe5,0x2b,0xca,0x4f,0xe6,0x70,0xc9,0xce,0xac,0xae, -0xf5,0x66,0x45,0x69,0x78,0x7b,0xc3,0xb7,0xfe,0x29,0xd5,0x21,0xd3,0xf4,0xe8,0x0c, -0xd7,0x12,0x1f,0xf8,0x0a,0x0e,0xec,0xc7,0xb0,0x15,0xe9,0x5e,0x18,0xfd,0x9d,0x75, -0x7d,0x45,0xd2,0x4d,0x66,0xe2,0x3d,0x36,0x0e,0x09,0x8a,0x32,0x24,0x94,0x8f,0x4e, -0x38,0x1f,0x99,0xfa,0x57,0xb9,0x78,0x4f,0xc1,0x7a,0x57,0x82,0xec,0x3e,0xcb,0xa6, -0x5b,0x08,0xb3,0x83,0x24,0xad,0xcc,0x92,0x1f,0x56,0x6e,0xff,0x00,0x4e,0x83,0xb0, -0x15,0xf4,0x79,0x7f,0x0f,0xe2,0x31,0x12,0x52,0xc4,0x2e,0x48,0xfe,0x2f,0xfa,0xf3, -0x3b,0xa8,0x60,0xa7,0x37,0x79,0xe8,0x8a,0xfe,0x01,0xf0,0x5d,0xaf,0x81,0xbc,0x3f, -0x0e,0x9f,0x6e,0x7c,0xc9,0x4f,0xcf,0x3c,0xf8,0xc1,0x95,0xcf,0x53,0xf4,0xec,0x3d, -0x85,0x74,0xb4,0x94,0xb5,0xfa,0x7d,0x2a,0x51,0xa3,0x05,0x4e,0x0a,0xc9,0x1f,0x43, -0x18,0xa8,0xa5,0x15,0xb0,0x51,0x45,0x15,0xa9,0x41,0x5e,0x6f,0xf1,0xeb,0x5c,0xfe, -0xc9,0xf0,0x05,0xc4,0x0a,0xdb,0x65,0xbe,0x91,0x6d,0xd7,0x1e,0x99,0xdc,0xdf,0xa0, -0x23,0xf1,0xaf,0x47,0x3d,0x2b,0xe7,0x8f,0xda,0x4f,0x5b,0xfb,0x4e,0xbd,0xa6,0x69, -0x68,0xdf,0x25,0xac,0x26,0x67,0x03,0xfb,0xce,0x70,0x3f,0x20,0xbf,0xad,0x78,0x79, -0xd5,0x7f,0xab,0xe0,0x6a,0x49,0x6e,0xf4,0xfb,0xce,0x4c,0x5c,0xf9,0x28,0xc9,0x9e, -0x39,0x45,0x14,0x57,0xe3,0x67,0xca,0x85,0x7a,0x67,0xec,0xfb,0xa2,0xff,0x00,0x69, -0x78,0xec,0x5d,0xba,0x93,0x1d,0x84,0x0d,0x2e,0x7b,0x07,0x6f,0x95,0x41,0xfc,0x0b, -0x1f,0xc2,0xbc,0xce,0xbe,0x89,0xfd,0x9b,0x74,0x41,0x6b,0xe1,0xdd,0x47,0x54,0x65, -0x22,0x4b,0xc9,0xc4,0x4a,0x4f,0x42,0x91,0x8e,0x08,0xfc,0x59,0x87,0xe1,0x5e,0xf6, -0x47,0x43,0xdb,0xe3,0xe0,0x9e,0xcb,0x5f,0xbb,0xfe,0x09,0xd9,0x84,0x87,0x3d,0x68, -0xf9,0x6a,0x7b,0x08,0xe9,0x4b,0x45,0x15,0xfb,0x11,0xf5,0x21,0x48,0x4e,0x29,0x6a, -0x9e,0xad,0xa8,0xc5,0xa4,0xe9,0xb7,0x57,0xb3,0x9c,0x43,0x6f,0x13,0x4a,0xe7,0xd9, -0x41,0x27,0xf9,0x54,0xc9,0xa8,0xa6,0xde,0xc2,0x6e,0xda,0xb3,0xc3,0x3f,0x68,0x9f, -0x1b,0xb5,0xc5,0xdc,0x3e,0x1b,0xb5,0x90,0x88,0xa2,0x02,0x6b,0xbd,0xa7,0xef,0x31, -0xe5,0x50,0xfd,0x07,0xcd,0x8f,0x71,0xe9,0x5e,0x27,0x57,0x35,0x9d,0x52,0x7d,0x6f, -0x55,0xbb,0xd4,0x2e,0x4e,0x67,0xb9,0x95,0xa5,0x7f,0xa9,0x39,0xc7,0xd0,0x74,0xfc, -0x2a,0x9d,0x7e,0x25,0x98,0x62,0xe5,0x8d,0xc4,0xca,0xb3,0xdb,0xa7,0xa7,0x43,0xe4, -0xab,0xd5,0x75,0xaa,0x39,0x30,0xa2,0x8a,0x2b,0xce,0x30,0x3a,0x5f,0x87,0xde,0x0a, -0x9f,0xc7,0x5e,0x22,0x86,0xc2,0x32,0x63,0xb7,0x5f,0xde,0x5c,0x4c,0x07,0xdc,0x8f, -0xbf,0xe2,0x7a,0x0f,0xfe,0xb5,0x7d,0x71,0xa3,0x69,0x16,0x9a,0x16,0x9b,0x05,0x8d, -0x8c,0x2b,0x6f,0x6b,0x02,0xed,0x48,0xd0,0x71,0xf5,0x3e,0xa4,0xf5,0x27,0xa9,0xae, -0x13,0xe0,0x4f,0x84,0xd7,0xc3,0xde,0x0d,0x8a,0xf2,0x44,0x02,0xf3,0x52,0xc5,0xc3, -0x92,0x39,0x11,0xff,0x00,0xcb,0x31,0xf9,0x73,0xf5,0x63,0x5e,0x93,0x5f,0xad,0x64, -0x59,0x7c,0x70,0x98,0x75,0x52,0x4b,0xdf,0x9e,0xaf,0xc9,0x74,0x47,0xd2,0xe0,0xe8, -0x2a,0x54,0xd4,0x9e,0xec,0x4a,0x5a,0x28,0xaf,0xa6,0x3d,0x00,0xa2,0x8a,0x28,0x03, -0x8c,0xf8,0xb1,0xe1,0x58,0xbc,0x55,0xe0,0xbb,0xe8,0x76,0x03,0x75,0x6e,0x86,0xe2, -0xdd,0xb1,0xc8,0x75,0x19,0xc0,0xfa,0x8c,0x8f,0xc6,0xbe,0x47,0xaf,0xb9,0xe4,0x50, -0xe8,0x54,0x8c,0x82,0x30,0x6b,0xe2,0x0d,0x46,0x11,0x6f,0xa8,0xdd,0x42,0x3a,0x47, -0x2b,0xa0,0xfc,0x09,0x15,0xf9,0xd7,0x14,0xd0,0x8c,0x67,0x4e,0xb2,0xdd,0xdd,0x3f, -0x91,0xe1,0x66,0x30,0x49,0xc6,0x5d,0xca,0xf4,0x51,0x45,0x7c,0x21,0xe3,0x85,0x7d, -0x49,0xf0,0x17,0x5a,0x6d,0x57,0xe1,0xf5,0xb4,0x4e,0xe5,0xe4,0xb2,0x95,0xed,0xc9, -0x3e,0x83,0xe6,0x51,0xf8,0x2b,0x01,0xf8,0x57,0xcb,0x75,0xf4,0x27,0xec,0xcf,0x29, -0x3a,0x0e,0xb3,0x1f,0x65,0xba,0x56,0xfc,0xd3,0x1f,0xd2,0xbe,0xa7,0x86,0xea,0x38, -0x63,0x94,0x57,0x54,0xff,0x00,0xcc,0xf4,0x70,0x12,0x6a,0xb5,0xbb,0x9e,0xcc,0x6b, -0xe5,0x2f,0x8e,0x1a,0x9b,0xea,0x3f,0x11,0xb5,0x14,0x66,0x2d,0x1d,0xa8,0x48,0x23, -0x1e,0x80,0x28,0x27,0xff,0x00,0x1e,0x66,0xaf,0xab,0x3b,0x57,0xc8,0xdf,0x17,0x6d, -0x5a,0xd3,0xe2,0x3e,0xb8,0xad,0xd5,0xa6,0x12,0x0f,0xa3,0x28,0x23,0xf9,0xd7,0xd3, -0x71,0x3c,0xa4,0xb0,0x91,0x4b,0x67,0x2f,0xd1,0x9d,0xf9,0x83,0xfd,0xd2,0xf5,0x38, -0xfa,0x28,0xa2,0xbf,0x30,0x3e,0x7c,0x2b,0xb7,0xf8,0x35,0xa3,0xd9,0xeb,0x5e,0x3f, -0xb0,0x8a,0xf7,0x6b,0x45,0x18,0x69,0x96,0x37,0xe4,0x48,0xca,0x32,0xa3,0xf3,0xe7, -0xf0,0xae,0x22,0xac,0xe9,0xba,0x8d,0xce,0x91,0x7f,0x05,0xed,0xa4,0xcd,0x05,0xcc, -0x0e,0x1e,0x39,0x13,0xaa,0x91,0x5d,0x38,0x6a,0x91,0xa3,0x5e,0x15,0x26,0xae,0x93, -0x4e,0xc5,0xd3,0x92,0x8c,0xd4,0x9e,0xc7,0xdb,0xea,0x38,0xc5,0x3b,0x15,0xe2,0xbe, -0x10,0xfd,0xa3,0x2c,0xe7,0x8d,0x21,0xf1,0x0d,0xb3,0xda,0xcc,0x38,0x37,0x56,0xeb, -0xba,0x33,0xee,0x57,0xa8,0xfc,0x33,0x5e,0xa7,0xa3,0x78,0xbb,0x46,0xf1,0x0a,0x06, -0xd3,0xb5,0x2b,0x6b,0xbf,0x55,0x8e,0x41,0xb8,0x7d,0x57,0xa8,0xaf,0xd9,0x70,0xb9, -0x86,0x17,0x16,0x93,0xa5,0x35,0xe9,0xd7,0xee,0x3e,0xae,0x9d,0x7a,0x75,0x7e,0x16, -0x6b,0xe2,0x82,0x29,0x37,0x52,0xe6,0xbd,0x23,0x70,0xc7,0xe3,0x4c,0x9e,0xde,0x3b, -0x98,0xda,0x39,0x51,0x64,0x8d,0x86,0x19,0x1d,0x72,0x08,0xf4,0x22,0xa4,0xa2,0x95, -0x93,0xdc,0x2c,0x50,0xd2,0x74,0x2b,0x0d,0x06,0x29,0x62,0xd3,0xed,0x21,0xb3,0x8a, -0x49,0x0c,0xad,0x1c,0x08,0x15,0x4b,0x10,0x01,0x38,0x1f,0x41,0x57,0xe8,0xa2,0x94, -0x62,0xa2,0xad,0x15,0x64,0x24,0x92,0xd1,0x05,0x14,0x51,0x54,0x30,0xae,0x67,0xe2, -0x24,0xfe,0x47,0x85,0x2f,0x5b,0xa1,0xdb,0x8a,0xe9,0xab,0x88,0xf8,0xbd,0x71,0xf6, -0x7f,0x07,0xdc,0x1c,0xe3,0x3f,0xe1,0x5c,0xb8,0xa9,0x72,0xd0,0x9b,0xf2,0x66,0x35, -0x9d,0xa9,0xc9,0x9f,0x08,0x78,0xa6,0x5d,0xfa,0x9d,0xe3,0x67,0xf8,0xcd,0x79,0xb7, -0xc3,0x9b,0x15,0xd7,0x3f,0x6a,0xdf,0x86,0x16,0x6f,0xc8,0x1a,0xd4,0x73,0xe3,0xde, -0x25,0x69,0x47,0xea,0x95,0xdf,0x6b,0xaf,0xba,0x7b,0x86,0xf5,0x63,0x5c,0x9f,0xec, -0xe3,0x0b,0xea,0x3f,0xb6,0xaf,0xc3,0xb4,0x0b,0xb9,0x21,0x96,0xf6,0x66,0xf6,0x0b, -0x67,0x3e,0x0f,0xe6,0x45,0x7c,0x36,0x48,0xaf,0x56,0xe7,0xe4,0x38,0x15,0xed,0x33, -0x9a,0x5e,0xad,0x9f,0xab,0x7b,0x68,0xa5,0xcd,0x15,0xfa,0x21,0xfb,0x08,0xb4,0x51, -0x45,0x22,0xc4,0xcd,0x7c,0xcb,0xfb,0x60,0xf8,0xbc,0xee,0xd1,0xfc,0x33,0x0b,0xe0, -0x1c,0xdf,0x5c,0x80,0x4f,0xba,0xc6,0x3e,0x9f,0x7c,0xfe,0x02,0xbe,0x97,0x95,0xc4, -0x68,0xce,0xc4,0x2a,0xa8,0x24,0x92,0x70,0x00,0xaf,0xcf,0xaf,0x89,0xbe,0x2c,0x93, -0xc6,0xfe,0x3c,0xd6,0x35,0x56,0x72,0xf1,0x4b,0x39,0x8e,0x01,0x9c,0x85,0x89,0x7e, -0x54,0xc7,0xe0,0x33,0xf8,0xd7,0xce,0x67,0x98,0x8f,0x63,0x86,0xf6,0x6b,0x79,0x69, -0xf2,0xea,0x7c,0xc7,0x10,0x62,0x7d,0x96,0x17,0xd9,0x47,0x79,0xbb,0x7c,0xba,0x9e, -0x89,0xfb,0x2d,0x78,0x47,0xfb,0x6b,0xc6,0x8d,0xa9,0xcb,0x1e,0xe8,0x2c,0x17,0x70, -0x27,0xa6,0xf3,0xd2,0xbe,0xc4,0x1d,0x2b,0xca,0x3f,0x67,0x0f,0x08,0xff,0x00,0xc2, -0x37,0xf0,0xfe,0x09,0xe4,0x4d,0xb7,0x17,0xc7,0xce,0x62,0x47,0x38,0xed,0x5e,0xaf, -0x5d,0x19,0x3e,0x1f,0xd8,0x61,0x63,0x7d,0xe5,0xab,0xf9,0xff,0x00,0xc0,0x3d,0x0c, -0xab,0x0d,0xf5,0x6c,0x24,0x62,0xf7,0x7a,0xb1,0x68,0xa2,0x8a,0xf6,0xcf,0x5c,0x29, -0x09,0xa5,0xa4,0xc5,0x00,0x7f,0x37,0xdf,0xb5,0x6f,0x8c,0xaf,0x3c,0x7d,0xfb,0x4a, -0x7c,0x4c,0xd6,0xef,0x9c,0xc9,0x34,0xda,0xfd,0xe4,0x28,0x4f,0x55,0x8a,0x29,0x4c, -0x51,0x2f,0xe1,0x1c,0x68,0x3f,0x0a,0xfd,0x53,0xfd,0x82,0x7f,0x6c,0xcf,0x83,0xf6, -0x1f,0xb3,0x47,0x85,0xfc,0x31,0xa9,0xf8,0xa7,0x4c,0xf0,0xae,0xbb,0xe1,0xbb,0x13, -0x6f,0x77,0xa7,0x6a,0x93,0xad,0xb1,0x99,0x94,0xb3,0x19,0x62,0x67,0x20,0x49,0xbf, -0x24,0xe0,0x1c,0xe4,0x90,0x47,0x4a,0xf8,0x47,0xfe,0x0a,0x39,0xfb,0x2b,0x78,0x83, -0xe0,0x87,0xc7,0x0f,0x10,0xf8,0xa2,0x1d,0x3e,0x69,0xfc,0x11,0xe2,0x7b,0xf9,0x75, -0x1b,0x2d,0x4a,0x35,0xdd,0x1c,0x32,0xca,0xdb,0xe5,0x82,0x4c,0x0f,0x91,0x83,0xb3, -0x6d,0xcf,0x55,0x23,0x07,0x39,0x03,0xe4,0x43,0xc7,0x19,0xaa,0x22,0xf6,0x67,0xaf, -0x6b,0x7a,0xcd,0xcf,0xed,0x4b,0xfb,0x51,0x5c,0xea,0x1a,0x95,0xf2,0x58,0x0f,0x17, -0x78,0x83,0x32,0x5d,0x5d,0xca,0xa8,0xb6,0x76,0xaf,0x20,0x03,0x73,0x36,0x00,0x11, -0xc2,0x00,0xe7,0xfb,0x95,0xfa,0x69,0xfb,0x5b,0xff,0x00,0xc1,0x44,0x3e,0x1f,0x7c, -0x15,0xf8,0x50,0xfe,0x01,0xf8,0x43,0xac,0xda,0x78,0x83,0xc4,0xc7,0x4f,0x5d,0x32, -0xd2,0xe7,0x49,0x71,0x2d,0xa6,0x95,0x08,0x4f,0x2c,0x48,0x65,0x19,0x57,0x90,0x28, -0xf9,0x55,0x49,0xc1,0xc1,0x38,0xc6,0x0f,0xe3,0x6f,0x5a,0xf5,0x3f,0x80,0xff,0x00, -0xb3,0x47,0xc4,0x3f,0xda,0x3b,0xc4,0x91,0x69,0x3e,0x0b,0xd0,0x66,0xbc,0x8b,0x78, -0x17,0x3a,0x9c,0xe0,0xc7,0x65,0x6a,0x33,0xcb,0x4b,0x2e,0x30,0x31,0x9f,0xba,0x32, -0xc7,0xb0,0x34,0x09,0x17,0x3f,0x65,0xcf,0x80,0x7a,0xc7,0xed,0x37,0xf1,0xb7,0x43, -0xf0,0x8d,0x92,0xcc,0x6d,0x27,0x9b,0xed,0x3a,0xb5,0xf8,0xc9,0xfb,0x35,0xa2,0x90, -0x65,0x90,0x9e,0x79,0x3f,0x75,0x73,0xd5,0x99,0x6b,0xfa,0x2e,0xd2,0xb4,0xcb,0x6d, -0x13,0x4b,0xb4,0xd3,0xec,0xa2,0x58,0x2c,0xed,0x21,0x48,0x21,0x89,0x06,0x02,0x22, -0xa8,0x55,0x03,0xe8,0x00,0xaf,0x0f,0xfd,0x90,0xff,0x00,0x64,0x5f,0x0d,0x7e,0xc9, -0xbe,0x00,0x1a,0x4e,0x98,0xcb,0xaa,0x78,0x86,0xfb,0x6c,0x9a,0xb6,0xb6,0xf1,0xed, -0x7b,0x99,0x00,0xe1,0x50,0x73,0xb2,0x35,0xe7,0x6a,0xe4,0xf5,0x24,0x92,0x6b,0xdd, -0x2f,0x6f,0x22,0xb0,0xb4,0x9e,0xe6,0x76,0xd9,0x0c,0x31,0xb4,0x8e,0xc7,0xb2,0x81, -0x92,0x7f,0x2a,0x87,0x24,0x95,0xd9,0x5b,0x23,0xe7,0x6f,0xda,0x2f,0xc4,0x7f,0xda, -0x1e,0x26,0xb5,0xd2,0xa3,0x6c,0xc7,0x61,0x16,0xe7,0x19,0xe3,0xcc,0x7c,0x1f,0xd1, -0x42,0xfe,0x75,0xe4,0x95,0xa1,0xe2,0x0d,0x62,0x4f,0x10,0x6b,0x97,0xfa,0x94,0xbf, -0x7e,0xea,0x66,0x97,0x1e,0x80,0x9e,0x07,0xe0,0x30,0x3f,0x0a,0xcf,0xaf,0xc4,0x31, -0xf8,0x87,0x8a,0xc5,0x4e,0xb7,0x77,0xf8,0x74,0x3e,0x4a,0xb5,0x4f,0x6b,0x51,0xcc, -0x28,0xa2,0xba,0x5f,0x87,0x1e,0x1f,0xff,0x00,0x84,0x9f,0xc6,0xba,0x5d,0x8b,0x2e, -0xe8,0x4c,0xa2,0x49,0x81,0xe9,0xb1,0x7e,0x66,0x07,0xeb,0x8c,0x7e,0x35,0xcb,0x46, -0x94,0xab,0x54,0x8d,0x28,0xef,0x27,0x6f,0xbc,0xce,0x31,0x73,0x92,0x8a,0xea,0x61, -0x49,0xa7,0xdd,0x43,0xfe,0xb2,0xda,0x64,0xff,0x00,0x7a,0x32,0x2a,0xb9,0x18,0x35, -0xf7,0x40,0x41,0x80,0x36,0x8c,0x56,0x37,0x88,0x3c,0x17,0xa3,0x78,0x9e,0xd9,0xe1, -0xd4,0x34,0xe8,0x27,0xdc,0x31,0xe6,0x6c,0x02,0x45,0xf7,0x0c,0x39,0x15,0xf7,0x15, -0x38,0x56,0x49,0x5e,0x9d,0x5b,0xbf,0x35,0xff,0x00,0x04,0xf5,0xe5,0x97,0x3b,0x7b, -0xb2,0x3e,0x30,0xa2,0xba,0x4f,0x88,0x3e,0x0e,0x97,0xc0,0xfe,0x26,0xb8,0xd3,0x5d, -0x8c,0x90,0xe0,0x4b,0x04,0xad,0xd5,0xe3,0x3d,0x09,0xf7,0x18,0x20,0xfb,0x8a,0xe6, -0xeb,0xe1,0xaa,0xd2,0x9d,0x1a,0x8e,0x9c,0xd5,0x9a,0xd0,0xf2,0x25,0x17,0x06,0xe2, -0xfa,0x05,0x74,0x7e,0x0d,0xf1,0xde,0xab,0xe0,0x9d,0x4a,0x3b,0x8b,0x2b,0x87,0x36, -0xfb,0x81,0x96,0xd5,0x98,0xf9,0x72,0xaf,0x70,0x47,0x63,0xef,0xd4,0x57,0x39,0x45, -0x14,0xaa,0xce,0x8c,0xd5,0x4a,0x6e,0xcd,0x04,0x64,0xe0,0xf9,0xa3,0xb9,0xf7,0x06, -0x95,0xa8,0xc3,0xab,0xe9,0xb6,0xd7,0xb6,0xed,0xba,0x0b,0x88,0xd6,0x54,0x3e,0xc4, -0x64,0x7f,0x3a,0xb7,0x5c,0x27,0xc1,0x2b,0xef,0xb7,0x7c,0x37,0xd2,0x49,0x39,0x68, -0x83,0xc2,0x7f,0xe0,0x2e,0x40,0xfd,0x31,0x5d,0xdd,0x7e,0xe5,0x86,0xab,0xed,0xe8, -0x42,0xaf,0x74,0x9f,0xde,0x8f,0xaf,0xa7,0x2e,0x78,0x29,0x77,0x0a,0x28,0xa2,0xba, -0x4d,0x02,0x8a,0x28,0xa0,0x04,0x27,0x00,0xd7,0xc7,0x1f,0x11,0x35,0xcf,0xf8,0x48, -0xbc,0x6d,0xac,0x5f,0x2b,0x07,0x8d,0xa7,0x64,0x8c,0x8e,0x85,0x17,0xe5,0x53,0xf8, -0x80,0x0f,0xe3,0x5f,0x54,0x78,0xf7,0x5d,0xff,0x00,0x84,0x73,0xc1,0xfa,0xb6,0xa0, -0xae,0x12,0x48,0xad,0xdb,0xcb,0x2d,0xd3,0x79,0x18,0x4f,0xfc,0x78,0x8a,0xf8,0xcc, -0x0c,0x0c,0x57,0xc0,0x71,0x4d,0x7d,0x29,0xd0,0x5e,0xaf,0xf2,0x5f,0xa9,0xe2,0xe6, -0x33,0xf8,0x60,0x2d,0x14,0x51,0x5f,0x9f,0x1e,0x20,0x57,0xd8,0xdf,0x0e,0xb4,0x4f, -0xec,0x0f,0x04,0xe8,0xf6,0x44,0x61,0xd6,0xdd,0x5d,0xc7,0xfb,0x4d,0xf3,0x37,0xea, -0xc6,0xbe,0x53,0xf0,0x5e,0x91,0xfd,0xbf,0xe2,0xcd,0x27,0x4f,0xc6,0x56,0x7b,0x94, -0x0e,0x3f,0xd9,0x07,0x2d,0xfa,0x03,0x5f,0x68,0x28,0x01,0x40,0x1c,0x01,0x5f,0x7f, -0xc2,0xd4,0x3f,0x89,0x5d,0xfa,0x7e,0xaf,0xf4,0x3d,0xac,0xba,0x1f,0x14,0xfe,0x41, -0x4b,0x45,0x15,0xfa,0x09,0xed,0x85,0x79,0xb7,0xc7,0xed,0x63,0xfb,0x2f,0xe1,0xfc, -0xf0,0xa9,0x2b,0x25,0xf4,0xc9,0x6e,0xa4,0x7a,0x67,0x73,0x7e,0x88,0x47,0xe3,0x5e, -0x93,0x5e,0x17,0xfb,0x4e,0x6a,0x0e,0xb1,0xe8,0x36,0x4a,0x7e,0x46,0x32,0xcc,0xc3, -0xdc,0x6d,0x03,0xf9,0xb5,0x78,0xd9,0xc5,0x57,0x47,0x01,0x56,0x4b,0xb5,0xbe,0xfd, -0x0e,0x5c,0x54,0xb9,0x28,0xc9,0x9e,0x11,0x45,0x14,0x57,0xe3,0x07,0xca,0x05,0x5e, -0xd0,0xb4,0xc6,0xd6,0xb5,0xab,0x0d,0x3d,0x0e,0x1a,0xea,0x74,0x87,0x3e,0x9b,0x88, -0x19,0xaa,0x35,0xda,0x7c,0x1b,0xb4,0x5b,0xdf,0x89,0x3a,0x2a,0x3f,0xdd,0x57,0x79, -0x3f,0x15,0x8d,0x88,0xfd,0x40,0xae,0xac,0x2d,0x3f,0x6d,0x5e,0x14,0xdf,0x56,0x97, -0xe2,0x69,0x4e,0x3c,0xd3,0x8c,0x7c,0xcf,0xac,0xad,0xa0,0x8e,0xd6,0xde,0x28,0x62, -0x50,0x91,0x46,0xa1,0x11,0x47,0x40,0x00,0xc0,0x02,0xa5,0xa4,0x14,0xb5,0xfb,0xaa, -0x49,0x2b,0x23,0xec,0x42,0x8a,0x28,0xa6,0x01,0x45,0x14,0x50,0x04,0x73,0x38,0x86, -0x27,0x76,0x38,0x55,0x04,0x93,0xf8,0x57,0xc3,0xd7,0x93,0x7d,0xa6,0xf2,0x79,0xbf, -0xe7,0xa4,0x8c,0xff,0x00,0x99,0xcd,0x7d,0x79,0xf1,0x37,0x5a,0x5d,0x07,0xc0,0xba, -0xc5,0xd1,0x38,0x73,0x01,0x8a,0x3c,0x1e,0x77,0x3f,0xca,0x3f,0x9e,0x7f,0x0a,0xf8, -0xf6,0xbf,0x3a,0xe2,0x9a,0xa9,0xce,0x95,0x25,0xd1,0x36,0x78,0x59,0x8c,0xb5,0x8c, -0x42,0x8a,0x28,0xaf,0x84,0x3c,0x70,0xaf,0xa1,0xff,0x00,0x66,0x98,0x36,0xf8,0x6b, -0x56,0x97,0x04,0x6f,0xbb,0x0b,0x9f,0xa2,0x0f,0xf1,0xaf,0x9e,0x3a,0xd7,0xd5,0x5f, -0x02,0xf4,0xa6,0xd3,0x3e,0x1d,0x58,0x3b,0xae,0xd9,0x2e,0x9d,0xee,0x08,0xf6,0x27, -0x0b,0xff,0x00,0x8e,0x81,0x5f,0x55,0xc3,0x74,0xdc,0xf1,0xdc,0xdd,0x93,0xff,0x00, -0x23,0xd1,0xc0,0x46,0xf5,0xaf,0xd9,0x1e,0x81,0x8e,0x2b,0xc3,0xbf,0x68,0x6f,0x02, -0xcd,0x71,0xe4,0xf8,0x8e,0xce,0x33,0x20,0x89,0x04,0x57,0x61,0x47,0x21,0x73,0xf2, -0xbf,0xe1,0x9c,0x1f,0xc3,0xde,0xbd,0xc4,0x53,0x66,0x85,0x27,0x8d,0xa3,0x91,0x16, -0x44,0x71,0xb5,0x95,0x86,0x41,0x1e,0x86,0xbf,0x46,0xc7,0x60,0xe1,0x8e,0xa1,0x2a, -0x33,0xeb,0xf8,0x33,0xdd,0xad,0x49,0x56,0x83,0x83,0x3e,0x17,0xa2,0xbd,0xc7,0xe2, -0x1f,0xec,0xff,0x00,0x20,0x96,0x5b,0xff,0x00,0x0d,0x60,0xa3,0x65,0x9b,0x4f,0x76, -0xc1,0x53,0xff,0x00,0x4c,0xd8,0xff,0x00,0x23,0xef,0xcf,0x41,0x5e,0x2d,0x7f,0xa7, -0x5d,0x69,0x57,0x2f,0x6f,0x79,0x6f,0x2d,0xac,0xe9,0xf7,0xa3,0x95,0x0a,0xb0,0xfc, -0x0d,0x7e,0x43,0x8c,0xcb,0xf1,0x18,0x19,0xb8,0xd5,0x8e,0x9d,0xfa,0x33,0xe6,0x2a, -0xd0,0x9d,0x17,0x69,0x22,0xbd,0x14,0x51,0x5e,0x69,0x80,0x52,0xab,0x14,0x60,0xca, -0x4a,0xb0,0x39,0x04,0x1c,0x11,0x49,0x45,0x34,0xed,0xaa,0x03,0xab,0xd1,0xbe,0x29, -0xf8,0xa7,0x41,0xda,0xb6,0xba,0xcd,0xc3,0x46,0x08,0xfd,0xdd,0xc1,0xf3,0x94,0x8f, -0x4f,0x9b,0x24,0x0f,0xa6,0x2b,0xd1,0x34,0x0f,0xda,0x56,0x65,0x65,0x4d,0x6b,0x4a, -0x57,0x52,0x79,0x9a,0xc9,0x88,0x20,0x7f,0xb8,0xc7,0x9f,0xfb,0xe8,0x57,0x88,0x51, -0x5e,0xae,0x1f,0x35,0xc6,0x61,0xbf,0x87,0x51,0xdb,0xb3,0xd5,0x7e,0x27,0x4c,0x31, -0x35,0x69,0xfc,0x32,0x3e,0xc3,0xf0,0xc7,0xc4,0x9f,0x0f,0xf8,0xb8,0x2a,0xe9,0xf7, -0xe8,0x6e,0x08,0xcf,0xd9,0xa5,0xf9,0x25,0x1f,0xf0,0x13,0xd7,0xf0,0xcd,0x74,0xf9, -0xaf,0x85,0x91,0xda,0x37,0x57,0x46,0x2a,0xca,0x72,0x18,0x1c,0x10,0x6b,0xd6,0x7e, -0x1c,0xfc,0x75,0xbe,0xd1,0x25,0x8a,0xc7,0x5e,0x77,0xbf,0xd3,0xce,0x14,0x5c,0x9e, -0x66,0x8b,0xeb,0xfd,0xe1,0xf5,0xe7,0xeb,0xd2,0xbe,0xcb,0x01,0xc4,0xb0,0xaa,0xd5, -0x3c,0x52,0xe5,0x7d,0xd6,0xdf,0x3e,0xc7,0xab,0x47,0x1e,0xa4,0xf9,0x6a,0x2b,0x1f, -0x48,0xd1,0x50,0x59,0x5e,0xc1,0xa8,0x5a,0xc5,0x73,0x6d,0x2a,0xcf,0x6f,0x2a,0x87, -0x8e,0x44,0x39,0x56,0x53,0xd0,0x83,0x53,0xd7,0xdb,0xa6,0x9a,0xba,0x3d,0x7d,0xc2, -0x8a,0x28,0xa6,0x01,0x5e,0x5f,0xf1,0xfa,0xf4,0xda,0xf8,0x48,0xa8,0xfe,0x2c,0xd7, -0xa8,0x57,0x8a,0xfe,0xd2,0xd7,0x5e,0x57,0x87,0xe3,0x4c,0xff,0x00,0x09,0x38,0xaf, -0x2f,0x33,0x97,0x2e,0x12,0xa3,0xf2,0x38,0xb1,0xb2,0xe5,0xc3,0xcd,0xf9,0x1f,0x18, -0x6b,0x32,0x65,0x65,0x6e,0xe4,0x93,0x55,0xff,0x00,0x62,0x7b,0x51,0xaa,0x7e,0xd9, -0x36,0xcf,0x8c,0x8b,0x2d,0x16,0xfa,0xe7,0xe8,0x49,0x8a,0x3c,0xff,0x00,0xe4,0x43, -0xf9,0xd1,0xad,0xbe,0xdb,0x69,0x0f,0xb1,0xad,0x6f,0xf8,0x27,0x95,0x9f,0xdb,0x3f, -0x6a,0x3f,0x15,0x5e,0xe3,0x22,0xd7,0xc3,0x72,0xc5,0xbb,0xd0,0xc9,0x73,0x01,0xff, -0x00,0xda,0x66,0xbe,0x63,0x21,0x8f,0xbd,0x73,0xf2,0xcc,0x8d,0x73,0xe7,0x09,0xf6, -0x4c,0xfd,0x29,0xdb,0x45,0x1c,0xd1,0x5f,0x79,0x73,0xf5,0xeb,0x21,0xd4,0x51,0x49, -0x48,0xa3,0xcd,0x3f,0x68,0x5f,0x18,0x9f,0x07,0xfc,0x31,0xd4,0xa4,0x85,0xf6,0x5d, -0xdf,0x62,0xc6,0x03,0xe8,0x5f,0x3b,0x8f,0xe0,0x81,0x8f,0xd4,0x0a,0xf8,0xeb,0xc0, -0x3e,0x1d,0x93,0xc5,0x3e,0x2c,0xd3,0x74,0xd8,0xd7,0x3e,0x6c,0xca,0x1b,0xd8,0x67, -0x9a,0xf5,0x7f,0xda,0xdb,0xc6,0x1f,0xda,0xbe,0x30,0xb2,0xd0,0x61,0x7c,0xc1,0xa6, -0xc3,0xe6,0x4a,0x01,0xe0,0xca,0xfe,0xbe,0xe1,0x40,0xff,0x00,0xbe,0xab,0x43,0xf6, -0x4b,0xf0,0x7f,0xda,0xb5,0x7b,0xdd,0x76,0x64,0xca,0x5b,0x2f,0x97,0x11,0x3f,0xde, -0x3d,0x6b,0xe0,0xb1,0xcd,0xe6,0x19,0x8c,0x68,0x2d,0x96,0x9f,0xe6,0x7c,0x06,0x2d, -0xbc,0xc7,0x35,0x54,0x57,0xc3,0x1d,0x3e,0xed,0x59,0xf5,0x0e,0x9f,0x65,0x1e,0x9d, -0x63,0x6f,0x6d,0x12,0x85,0x8e,0x14,0x08,0xa0,0x7a,0x01,0x8a,0xb3,0x48,0x3a,0x52, -0xd7,0xde,0x24,0x92,0xb2,0x3e,0xf9,0x2b,0x2b,0x20,0xa2,0x8a,0x29,0x8c,0x2b,0xf2, -0xdf,0xf6,0xd7,0xff,0x00,0x82,0x9b,0x78,0xf3,0xe1,0x1f,0xed,0x0d,0xa9,0xf8,0x43, -0xe1,0xcc,0x9a,0x4b,0xe8,0xfa,0x0c,0x49,0x69,0x7d,0xfd,0xa1,0x69,0xf6,0x81,0x3d, -0xe6,0x37,0x49,0x82,0x19,0x59,0x42,0x6e,0x09,0x80,0x7a,0xab,0x57,0xea,0x2c,0xb2, -0xa4,0x31,0xb3,0xc8,0xea,0x88,0xa0,0x96,0x66,0x38,0x00,0x7a,0x93,0x5f,0x84,0x3f, -0xf0,0x51,0x9f,0xd9,0xb7,0xc4,0x9f,0x0a,0xbe,0x3b,0xf8,0xa7,0xc5,0xe2,0xde,0x4d, -0x4b,0xc1,0xbe,0x27,0xd4,0x65,0xd4,0xad,0x75,0x8b,0x71,0xbe,0x28,0xe5,0x99,0x8b, -0xc9,0x04,0x84,0x67,0x63,0x2b,0xb3,0x63,0x38,0xdc,0xb8,0x23,0xb8,0x0d,0x09,0x9f, -0x6d,0x7e,0xc1,0xff,0x00,0xb5,0xcf,0xc4,0xef,0xdb,0x5b,0xc4,0xde,0x24,0xd0,0xbc, -0x73,0xe1,0x9f,0x07,0xcf,0xe0,0x9d,0x2e,0xc5,0x5f,0x51,0x78,0x74,0xf9,0x77,0x4d, -0x2c,0x84,0x88,0x62,0xdb,0x24,0xce,0x9c,0xec,0x91,0x89,0xdb,0xc0,0x4c,0x63,0x90, -0x47,0xb1,0xf8,0xbf,0xfe,0x09,0x9f,0xfb,0x3c,0xf8,0xc2,0xe9,0xae,0x64,0xf0,0x2a, -0xe9,0x13,0x39,0x25,0x8e,0x91,0x79,0x35,0xb2,0x1c,0xff,0x00,0xb0,0x1b,0x68,0xfc, -0x00,0xaf,0x84,0xbf,0xe0,0x93,0xbf,0xb5,0x1f,0x82,0x3e,0x09,0xea,0xfe,0x2e,0xf0, -0x97,0x8d,0xb5,0x2b,0x7f,0x0f,0x45,0xe2,0x09,0x2d,0xee,0x2c,0xb5,0x6b,0xaf,0x92, -0x01,0x24,0x61,0xd5,0xa2,0x96,0x4e,0x88,0x08,0x60,0x54,0x9e,0x33,0xbf,0x24,0x64, -0x67,0xf5,0xef,0x4a,0xf1,0x66,0x89,0xad,0xdb,0x47,0x71,0xa7,0xeb,0x36,0x17,0xf0, -0x48,0x01,0x49,0x6d,0xae,0x92,0x45,0x61,0xec,0x54,0x90,0x68,0x04,0x7c,0xe9,0xe1, -0x0f,0xf8,0x26,0x9f,0xec,0xf1,0xe0,0xeb,0x85,0xb8,0x8f,0xc0,0x51,0xea,0xf3,0x29, -0x05,0x5b,0x58,0xbc,0x9a,0xe5,0x47,0xfc,0x01,0x9f,0x69,0xfc,0x41,0xaf,0xa4,0x34, -0x2f,0x0f,0x69,0x7e,0x18,0xd2,0xe0,0xd3,0x74,0x7d,0x3a,0xd7,0x4a,0xd3,0xe0,0x1b, -0x62,0xb4,0xb2,0x85,0x61,0x89,0x07,0xa0,0x55,0x00,0x0a,0xd0,0x0c,0x18,0x02,0x08, -0x20,0xf7,0x14,0x64,0x1a,0x43,0x16,0xbc,0xdb,0xe3,0xcf,0x88,0xff,0x00,0xb1,0x3c, -0x0d,0x35,0xb4,0x6d,0x89,0xf5,0x17,0x16,0xeb,0x83,0xc8,0x5e,0xae,0x7e,0x98,0x18, -0xff,0x00,0x81,0x0a,0xf4,0x83,0xc0,0xaf,0x99,0x7f,0x68,0x4f,0x10,0x9d,0x5f,0xc6, -0x69,0xa7,0xa3,0x66,0x1d,0x3a,0x30,0x84,0x7f,0xd3,0x46,0xc3,0x37,0xe9,0xb4,0x7e, -0x15,0xe0,0xe7,0x78,0x9f,0xaa,0xe0,0xa6,0xd6,0xf2,0xd1,0x7c,0xff,0x00,0xe0,0x1c, -0x58,0xba,0x9e,0xce,0x93,0xf3,0x3c,0xbe,0x8a,0x28,0xaf,0xc7,0x4f,0x97,0x0a,0xf7, -0x2f,0xd9,0xaf,0xc3,0xd9,0x93,0x55,0xd6,0xa4,0x5c,0xe3,0x16,0xb1,0x1f,0xfc,0x79, -0xff,0x00,0xf6,0x5a,0xf0,0xda,0xfa,0xff,0x00,0xe1,0x77,0x87,0x8f,0x86,0x7c,0x0f, -0xa5,0x5a,0x32,0x14,0x99,0xa2,0x13,0x4c,0x0f,0x50,0xef,0xf3,0x10,0x7e,0x99,0xc7, -0xe1,0x5f,0x55,0xc3,0x98,0x6f,0x6d,0x8c,0xf6,0x8f,0x68,0x2b,0xfc,0xf6,0x47,0xa3, -0x80,0xa7,0xcf,0x57,0x9b,0xb1,0xd6,0x51,0x49,0x4b,0x5f,0xab,0x1f,0x48,0x78,0x4f, -0xed,0x35,0xa7,0x28,0x3a,0x1d,0xfa,0xaf,0xcc,0x7c,0xd8,0x5d,0xbd,0x7e,0xe9,0x5f, -0xfd,0x9b,0xf3,0xaf,0x0a,0xaf,0xa3,0xff,0x00,0x69,0x38,0x03,0xf8,0x3a,0xc2,0x5c, -0x72,0x97,0xca,0x33,0xec,0x63,0x7f,0xf0,0x15,0xf3,0x85,0x7e,0x47,0xc4,0x30,0x50, -0xcc,0x26,0xd7,0x54,0x9f,0xe0,0x7c,0xce,0x39,0x5a,0xbb,0x0a,0x28,0xa2,0xbe,0x6c, -0xe0,0x3e,0x92,0xfd,0x9b,0xef,0x84,0xfe,0x0c,0xbc,0xb6,0xce,0x5a,0x0b,0xc6,0xe3, -0xd1,0x59,0x54,0x8f,0xd7,0x35,0xeb,0x35,0xe1,0x1f,0xb3,0x1d,0xd0,0x0d,0xe2,0x0b, -0x62,0xdc,0x91,0x0c,0x8a,0xbf,0xf7,0xd8,0x27,0xf9,0x57,0xbb,0x66,0xbf,0x64,0xc9, -0x6a,0x7b,0x4c,0x05,0x27,0xd9,0x5b,0xee,0x76,0x3e,0xa7,0x09,0x2e,0x6a,0x11,0x16, -0x8a,0x28,0xaf,0x70,0xec,0x0a,0x28,0xa4,0x3d,0x28,0x03,0xc8,0x3f,0x69,0x0d,0x6f, -0xec,0x9e,0x19,0xb1,0xd3,0x11,0x80,0x7b,0xd9,0xf7,0xb0,0xf5,0x44,0xe7,0xff,0x00, -0x42,0x2b,0xf9,0x57,0xce,0x95,0xe9,0x7f,0xb4,0x06,0xb8,0x75,0x4f,0x1e,0x3d,0xa0, -0x20,0xc5,0x61,0x0a,0xc2,0x30,0x73,0xf3,0x1f,0x99,0xbf,0xf4,0x20,0x3f,0x0a,0xf3, -0x4a,0xfc,0x77,0x3b,0xaf,0xf5,0x8c,0x74,0xda,0xd9,0x69,0xf7,0x7f,0xc1,0x3e,0x5b, -0x19,0x3e,0x7a,0xcf,0xcb,0x40,0xa2,0x8a,0x2b,0xc1,0x38,0xcf,0x55,0xfd,0x9d,0x74, -0x53,0x7f,0xe3,0x2b,0x8b,0xf6,0x40,0x62,0xb1,0xb7,0x24,0x37,0xa3,0xb9,0xda,0x3f, -0x40,0xf5,0xf4,0xb5,0x79,0x2f,0xec,0xe7,0xa2,0x7d,0x87,0xc1,0xf7,0x3a,0x83,0xc6, -0x04,0x97,0xd7,0x07,0x6b,0xf7,0x31,0xa7,0xca,0x07,0xfd,0xf5,0xbf,0xf3,0xaf,0x5a, -0xaf,0xd8,0x32,0x2a,0x1e,0xc3,0x01,0x0b,0xef,0x2d,0x7e,0xff,0x00,0xf8,0x16,0x3e, -0xa3,0x07,0x0e,0x4a,0x2b,0xcf,0x50,0xa2,0x8a,0x2b,0xe8,0x0e,0xd0,0xaf,0x00,0xfd, -0xa6,0xc6,0x35,0x3d,0x04,0xf6,0x30,0xcb,0xfc,0xd6,0xbd,0xfe,0xbc,0x67,0xf6,0x97, -0xd2,0xbc,0xed,0x0f,0x49,0xd4,0x42,0x92,0x6d,0xe7,0x68,0x4e,0x07,0x00,0x3a,0xe7, -0x27,0xf1,0x41,0xf9,0xd7,0x81,0x9e,0xc1,0xcf,0x2f,0xa8,0x97,0x93,0xfc,0x4e,0x2c, -0x62,0xbd,0x09,0x1f,0x3d,0x51,0x45,0x15,0xf8,0xf1,0xf2,0xe1,0x5d,0xa7,0xc1,0xcb, -0xc4,0xb1,0xf8,0x93,0xa2,0xbb,0x9c,0x2b,0xc8,0xf1,0x7e,0x2c,0x8c,0xa3,0xf5,0x22, -0xb8,0xba,0xb1,0xa7,0xdf,0x4d,0xa5,0xdf,0xdb,0x5e,0x5b,0xb6,0xd9,0xed,0xe4,0x59, -0x50,0xfa,0x32,0x9c,0x8f,0xe5,0x5d,0x38,0x6a,0xbe,0xc2,0xbc,0x2a,0xbf,0xb2,0xd3, -0xfb,0x99,0x74,0xe5,0xc9,0x35,0x2e,0xcc,0xfb,0x88,0x52,0xd6,0x4f,0x86,0x3c,0x43, -0x6d,0xe2,0x9d,0x0e,0xcf,0x53,0xb4,0x6c,0xc5,0x70,0x81,0xb6,0xe7,0x25,0x1b,0xba, -0x9f,0x70,0x72,0x3f,0x0a,0xd6,0xaf,0xdd,0x21,0x38,0xce,0x2a,0x71,0x77,0x4c,0xfb, -0x14,0xd3,0x57,0x41,0x45,0x14,0x55,0x8c,0x28,0xa4,0xc8,0xae,0x4f,0xe2,0x2f,0x8f, -0xed,0x3c,0x07,0xa2,0xb5,0xcc,0x84,0x4b,0x7b,0x28,0x2b,0x6d,0x6d,0x9e,0x5d,0xbd, -0x4f,0xfb,0x23,0xb9,0xff,0x00,0x1a,0xc6,0xb5,0x68,0x50,0xa6,0xea,0xd4,0x76,0x48, -0x89,0x49,0x41,0x39,0x4b,0x63,0xcb,0x7f,0x68,0xdf,0x17,0x2d,0xc5,0xcd,0x9f,0x87, -0xad,0xdf,0x3e,0x41,0x17,0x37,0x38,0xec,0xc4,0x10,0x8b,0xf9,0x12,0x7f,0x11,0x5e, -0x27,0x56,0x75,0x2d,0x46,0xe3,0x56,0xbf,0x9e,0xf6,0xee,0x53,0x35,0xcc,0xee,0x64, -0x91,0xcf,0x72,0x6a,0xb5,0x7e,0x2d,0x98,0x62,0xde,0x3b,0x13,0x2a,0xcf,0xae,0xde, -0x9d,0x0f,0x94,0xaf,0x55,0xd6,0x9b,0x98,0x51,0x45,0x15,0xe7,0x18,0x16,0x74,0xcd, -0x3e,0x6d,0x5b,0x51,0xb5,0xb2,0xb6,0x5d,0xf7,0x17,0x32,0x2c,0x51,0xa9,0xe8,0x59, -0x8e,0x07,0xf3,0xaf,0xb5,0xb4,0x7d,0x3a,0x2d,0x1f,0x4a,0xb4,0xb1,0x80,0x62,0x1b, -0x68,0x96,0x14,0x1e,0xca,0x00,0x1f,0xca,0xbc,0x03,0xf6,0x78,0xf0,0x69,0xd4,0x75, -0xa9,0xb5,0xfb,0x84,0xff,0x00,0x47,0xb2,0x06,0x38,0x32,0x3e,0xf4,0xa4,0x72,0x7f, -0x05,0x3f,0x99,0xf6,0xaf,0xa2,0x87,0x4a,0xfd,0x3b,0x86,0xb0,0x8e,0x8d,0x09,0x62, -0x24,0xb5,0x9e,0xde,0x88,0xfa,0x0c,0xbe,0x97,0x2c,0x1c,0xdf,0x51,0x68,0xa4,0xcd, -0x2d,0x7d,0x91,0xea,0x88,0x46,0x6b,0x33,0x5b,0xf0,0xd6,0x97,0xe2,0x2b,0x63,0x06, -0xa5,0x61,0x05,0xec,0x7d,0x84,0xa8,0x09,0x1f,0x43,0xd4,0x7e,0x15,0xa9,0x45,0x4c, -0xa1,0x19,0xae,0x59,0x2b,0xa1,0x34,0x9a,0xb3,0x3c,0x7b,0x5f,0xfd,0x9b,0xf4,0x8b, -0xd6,0x32,0x69,0x57,0xd3,0xe9,0xac,0x4e,0x7c,0xb9,0x07,0x9d,0x18,0x1e,0x83,0x90, -0x47,0xe6,0x6b,0xce,0x35,0xdf,0x81,0x3e,0x2a,0xd1,0x81,0x78,0xad,0xa2,0xd4,0xe2, -0x19,0xf9,0xad,0x1f,0x2d,0x8e,0xdf,0x29,0xc1,0xfc,0xb3,0x5f,0x54,0x52,0x11,0x5f, -0x3d,0x88,0xc8,0x30,0x35,0xf5,0x51,0xe5,0x7e,0x5f,0xe5,0xb1,0xc3,0x3c,0x15,0x19, -0xf4,0xb7,0xa1,0xf0,0xe5,0xed,0x85,0xd6,0x9b,0x39,0x86,0xee,0xda,0x5b,0x59,0x87, -0x58,0xe6,0x42,0x8d,0xf9,0x1a,0x82,0xbe,0xdb,0xd5,0xf4,0x1d,0x3f,0x5d,0xb6,0x36, -0xfa,0x85,0x9c,0x37,0xb0,0x9f,0xe1,0x99,0x03,0x63,0xdc,0x7a,0x57,0x8b,0xfc,0x45, -0xf8,0x03,0x1d,0xbd,0xb4,0xda,0x8f,0x86,0xb7,0xe5,0x32,0xef,0x60,0xe7,0x76,0x47, -0x7d,0x84,0xf3,0x9f,0x63,0x9c,0xfa,0xf6,0xaf,0x91,0xc6,0xf0,0xe5,0x7a,0x11,0x75, -0x28,0x4b,0x9d,0x2e,0x9b,0x3f,0xf8,0x27,0x9b,0x57,0x01,0x38,0x2e,0x68,0x3b,0xa3, -0xc3,0x28,0xa0,0x8c,0x1c,0x74,0xa2,0xbe,0x40,0xf2,0xc2,0x8a,0x28,0xa0,0x0f,0x6f, -0xfd,0x9d,0xbc,0x6b,0x22,0xdc,0xcf,0xe1,0xcb,0x99,0x0b,0x46,0xca,0x67,0xb5,0xdc, -0x7e,0xe9,0x1f,0x79,0x07,0xb1,0xeb,0xf8,0x1a,0xf7,0xba,0xf8,0xf7,0xe1,0x7d,0xe3, -0xd8,0xfc,0x41,0xd0,0x64,0x8c,0xe0,0xb5,0xd2,0xc6,0x7e,0x8d,0xf2,0x9f,0xd1,0x8d, -0x7d,0x84,0x2b,0xf5,0x6e,0x1c,0xc4,0x4a,0xb6,0x13,0x92,0x6f,0xe1,0x76,0xf9,0x1f, -0x47,0x80,0xa8,0xe7,0x4a,0xcf,0xa0,0xb4,0x51,0x45,0x7d,0x51,0xe9,0x08,0x78,0xaf, -0x9f,0xbf,0x6a,0x3b,0xbd,0x96,0x51,0xc7,0x9e,0x89,0xd2,0xbe,0x81,0x35,0xf3,0x27, -0xed,0x4f,0x77,0xfe,0x90,0x23,0x07,0xf8,0x45,0x78,0x59,0xd4,0xb9,0x70,0x53,0x3c, -0xac,0xce,0x5c,0xb8,0x59,0xb3,0xe5,0x3f,0x11,0x3e,0xdb,0x19,0x4f,0xfb,0x26,0xbb, -0xef,0xf8,0x26,0x55,0x81,0xb9,0xf8,0x97,0xf1,0x53,0x53,0xed,0x0d,0xa5,0x8d,0xb0, -0x3f,0xef,0xbc,0xcd,0xff,0x00,0xb2,0x0a,0xf3,0x8f,0x16,0xc9,0xe5,0xe9,0xb3,0x9f, -0x45,0xaf,0x63,0xff,0x00,0x82,0x5b,0xdb,0x16,0xb7,0xf8,0xab,0x7d,0xb7,0x89,0x35, -0x1b,0x38,0x43,0x7a,0xec,0x8a,0x42,0x7f,0xf4,0x3a,0xf2,0xb2,0x28,0xe8,0xd9,0xf9, -0xdf,0x0d,0x47,0x9b,0x33,0x9c,0xbb,0x44,0xfb,0xb3,0x9a,0x29,0xd4,0x57,0xd9,0x1f, -0xac,0x85,0x52,0xd5,0xb5,0x28,0x74,0x9d,0x36,0xee,0xfa,0xe0,0xed,0x82,0xda,0x26, -0x99,0xcf,0xfb,0x2a,0x32,0x6a,0xed,0x78,0xaf,0xed,0x53,0xe3,0x0f,0xec,0x0f,0x87, -0xab,0xa5,0xc3,0x26,0xdb,0xad,0x5e,0x61,0x09,0x00,0xe0,0xf9,0x4b,0xf3,0x48,0x7e, -0x9f,0x75,0x7f,0xe0,0x55,0xcd,0x89,0xac,0xb0,0xf4,0x65,0x55,0xf4,0x47,0x26,0x2e, -0xba,0xc2,0xd0,0x9d,0x67,0xd1,0x1f,0x26,0x78,0x83,0x5a,0xb8,0xf1,0x6f,0x89,0x2f, -0xf5,0x4b,0x8c,0xb5,0xc5,0xf5,0xc3,0x4a,0x47,0xa6,0x4f,0x03,0xf0,0x18,0x1f,0x85, -0x7d,0xbd,0xf0,0x4b,0xc2,0x63,0xc2,0x3f,0x0f,0xf4,0xeb,0x76,0x4d,0xb3,0xcc,0x82, -0x69,0x78,0xc7,0x26,0xbe,0x43,0xf8,0x3b,0xe1,0x46,0xf1,0x77,0x8f,0x74,0xcb,0x3d, -0xbb,0xa1,0x59,0x04,0x92,0x9f,0x45,0x1c,0xd7,0xde,0xf0,0xc4,0xb0,0xc2,0x91,0xa0, -0xda,0xaa,0x00,0x03,0xda,0xbe,0x4f,0x21,0xa2,0xea,0x54,0xa9,0x89,0x9f,0xa7,0xdf, -0xab,0x3e,0x57,0x87,0xa8,0x39,0x73,0xe2,0xa7,0xbb,0xfe,0x99,0x25,0x14,0x56,0x47, -0x8b,0xfc,0x53,0xa7,0x78,0x1f,0xc2,0x9a,0xcf,0x88,0xb5,0x79,0xbe,0xcf,0xa5,0xe9, -0x36,0x73,0x5f,0x5d,0x4b,0x8c,0xec,0x8a,0x34,0x2e,0xe7,0x1d,0xf8,0x53,0x5f,0x6a, -0x7d,0xa9,0xaf,0x45,0x7e,0x2d,0xcd,0xff,0x00,0x05,0x91,0xf8,0xd2,0x35,0x2b,0x86, -0xb6,0xd1,0x7c,0x20,0xd6,0x2d,0x2b,0x18,0x22,0x9e,0xc2,0x7f,0x31,0x63,0x2c,0x76, -0xab,0x30,0x9c,0x02,0x40,0xc0,0xce,0x2b,0xf5,0x5f,0xf6,0x6a,0xf1,0xbf,0x8a,0xfe, -0x25,0x7c,0x0e,0xf0,0x8f,0x8a,0xfc,0x6b,0x65,0x63,0xa6,0xf8,0x83,0x5a,0xb3,0x5b, -0xf9,0x2d,0x34,0xe4,0x74,0x8a,0x38,0xa4,0x25,0xa1,0xe1,0xd9,0x8e,0x4c,0x65,0x09, -0xc9,0xea,0x48,0xa0,0x49,0xdc,0xf9,0xef,0xfe,0x0a,0xb9,0xf1,0xa3,0xfe,0x15,0x97, -0xec,0xc9,0x73,0xe1,0xfb,0x39,0x8c,0x7a,0xb7,0x8c,0x6e,0x06,0x96,0x81,0x7a,0x8b, -0x60,0x37,0xdc,0x1f,0xa1,0x50,0x13,0xfe,0xda,0x57,0xe2,0x00,0xd4,0x6e,0xc5,0xab, -0xdb,0x0b,0xa9,0x85,0xb3,0xfd,0xe8,0x44,0x87,0x63,0x73,0x9e,0x47,0x4e,0xa2,0xbf, -0xa2,0x9f,0x8f,0x5f,0xb2,0x2f,0xc3,0x3f,0xda,0x5e,0xfb,0x4b,0xbc,0xf1,0xf6,0x95, -0x77,0xaa,0xcd,0xa6,0x44,0xf0,0xda,0x79,0x3a,0x8c,0xd6,0xeb,0x12,0xb1,0xcb,0x7c, -0xa8,0xc0,0x12,0x48,0x19,0x24,0x67,0x81,0xe9,0x5e,0x33,0x7d,0xff,0x00,0x04,0x93, -0xfd,0x9e,0xae,0xff,0x00,0xd5,0x69,0x5a,0xed,0x97,0xfd,0x70,0xd6,0x24,0x3f,0xfa, -0x1e,0xea,0x62,0x6a,0xe7,0xe1,0xa7,0x34,0xf8,0x66,0x92,0xde,0x41,0x24,0x4e,0xd1, -0x48,0x3a,0x32,0x1c,0x11,0xf8,0xd7,0xed,0x36,0xa9,0xff,0x00,0x04,0x70,0xf8,0x23, -0x78,0xa7,0xec,0x9a,0xb7,0x8b,0xb4,0xf2,0x7b,0xa5,0xfc,0x2f,0x8f,0xfb,0xea,0x13, -0x5c,0x9d,0xff,0x00,0xfc,0x11,0x47,0xe1,0xf4,0xad,0xfe,0x85,0xf1,0x0f,0xc4,0xd6, -0xe3,0xd2,0xe2,0xde,0xde,0x5f,0xe4,0xab,0x4e,0xe2,0xb3,0x3f,0x28,0xad,0x3e,0x21, -0xf8,0xaa,0xc3,0x02,0xd7,0xc4,0xda,0xc5,0xb6,0x3a,0x08,0x6f,0xe5,0x4c,0x7e,0x4d, -0x5f,0xb1,0x9f,0xf0,0x49,0x2f,0x0c,0x78,0x9e,0x4f,0x82,0x3a,0xbf,0x8e,0x7c,0x53, -0xae,0xea,0xda,0xcc,0xbe,0x20,0xbe,0xf2,0x74,0xf4,0xd4,0xef,0x25,0x9c,0x43,0x6d, -0x06,0x54,0xb2,0x07,0x63,0x8d,0xf2,0x17,0xe9,0xd7,0x60,0xaf,0x36,0xbe,0xff,0x00, -0x82,0x23,0xe8,0x0e,0xa7,0xec,0x9f,0x15,0xb5,0x28,0x4f,0xfd,0x36,0xd1,0xa3,0x93, -0xf9,0x4c,0xb5,0xfa,0x0f,0xf0,0x97,0xe1,0xbe,0x9f,0xf0,0x87,0xe1,0x9f,0x86,0x7c, -0x19,0xa5,0xb6,0xfb,0x1d,0x12,0xc2,0x2b,0x28,0xe5,0x2b,0xb4,0xc9,0xb5,0x70,0xce, -0x47,0x38,0x2c,0xd9,0x63,0xcf,0x52,0x69,0x31,0xa4,0xce,0x8f,0x55,0xd4,0x62,0xd2, -0x74,0xdb,0xab,0xd9,0xdb,0x6c,0x36,0xf1,0x34,0xae,0x7d,0x94,0x64,0xd7,0xc5,0x5a, -0xb6,0xa5,0x2e,0xb1,0xaa,0x5d,0xdf,0x4e,0x73,0x35,0xcc,0xad,0x2b,0x7d,0x49,0xcd, -0x7d,0x6b,0xf1,0x2b,0xc3,0xba,0x97,0x8a,0xfc,0x29,0x73,0xa5,0x69,0x93,0x41,0x04, -0xd7,0x0c,0xa1,0xde,0x76,0x65,0x1b,0x01,0xc9,0x03,0x00,0xf2,0x70,0x07,0xd0,0x9a, -0xf1,0x39,0x7f,0x67,0x2f,0x13,0xa2,0x92,0xb7,0x3a,0x6c,0x87,0xd1,0x66,0x70,0x7f, -0x54,0xaf,0x85,0xe2,0x1a,0x18,0xbc,0x5c,0xe1,0x0a,0x34,0xdb,0x8a,0xd7,0x4e,0xe7, -0x93,0x8e,0x85,0x5a,0x8d,0x46,0x11,0xba,0x47,0x95,0xd1,0x5e,0x87,0x3f,0xc0,0x5f, -0x18,0xc2,0x7e,0x5b,0x18,0x26,0xf7,0x4b,0x84,0xfe,0xa4,0x55,0x39,0x3e,0x0a,0x78, -0xd2,0x3c,0x9f,0xec,0x46,0x61,0xfe,0xcd,0xc4,0x47,0xff,0x00,0x66,0xaf,0x89,0x79, -0x6e,0x36,0x3b,0xd2,0x97,0xdc,0xcf,0x25,0xd0,0xaa,0xbe,0xcb,0x32,0xfe,0x1d,0xf8, -0x7b,0xfe,0x12,0x8f,0x19,0xe9,0x76,0x0c,0x81,0xe1,0x69,0x44,0x92,0x83,0xd3,0xcb, -0x5f,0x99,0x87,0xe2,0x06,0x3f,0x1a,0xfb,0x1c,0x70,0x05,0x78,0xcf,0xc0,0xaf,0x87, -0x5a,0x9f,0x86,0x75,0x2d,0x47,0x51,0xd6,0x2c,0x9a,0xd2,0x7d,0x82,0x08,0x55,0xc8, -0x24,0x82,0x72,0xc7,0x82,0x7d,0x14,0x7e,0x75,0xec,0xd5,0xfa,0x37,0x0f,0x61,0x25, -0x86,0xc2,0xb9,0x54,0x56,0x94,0x9f,0xe5,0xa2,0x3d,0xdc,0x0d,0x27,0x4e,0x9d,0xda, -0xd5,0x8b,0x45,0x14,0x57,0xd4,0x9e,0x89,0xe6,0x1f,0xb4,0x3c,0x7e,0x67,0xc3,0xfc, -0xff,0x00,0x72,0xee,0x36,0xfd,0x18,0x7f,0x5a,0xf9,0x8e,0xbe,0xa7,0xf8,0xf7,0x1e, -0xff,0x00,0x86,0xb7,0xed,0xfd,0xc9,0x61,0x6f,0xfc,0x88,0x07,0xf5,0xaf,0x96,0x33, -0x5f,0x96,0x71,0x32,0xb6,0x35,0x3f,0xee,0xaf,0xcd,0x9f,0x3b,0x98,0x2f,0xde,0xdf, -0xc8,0x28,0xa2,0x8a,0xf9,0x23,0xcc,0x3d,0x5f,0xf6,0x6f,0xb9,0x31,0xf8,0xd6,0xf2, -0x1c,0xe1,0x64,0xb1,0x63,0x8f,0x52,0x1d,0x3f,0xc4,0xd7,0xd2,0x63,0xad,0x7c,0xa1, -0xf0,0x42,0xf1,0xad,0x3e,0x25,0x69,0x4a,0xa7,0x0b,0x30,0x96,0x26,0xfa,0x79,0x6c, -0x7f,0x98,0x15,0xf5,0x78,0xaf,0xd5,0x38,0x6a,0x7c,0xd8,0x2e,0x5e,0xcd,0xff,0x00, -0x99,0xf4,0x78,0x07,0x7a,0x36,0xec,0xc5,0xa2,0x8a,0x2b,0xeb,0x0f,0x48,0x2a,0x3b, -0x89,0xd2,0xda,0x09,0x25,0x91,0x82,0x47,0x1a,0x96,0x66,0x27,0x80,0x00,0xe4,0xd3, -0xcd,0x70,0xff,0x00,0x19,0xb5,0xcf,0xec,0x4f,0x87,0xba,0xa1,0x5c,0x79,0xb7,0x4a, -0x2d,0x14,0x1e,0xfb,0xf8,0x6f,0xfc,0x77,0x71,0xfc,0x2b,0x9f,0x11,0x59,0x50,0xa3, -0x3a,0xaf,0xa2,0x6c,0x89,0xcb,0x92,0x2e,0x5d,0x8f,0x96,0xb5,0xbd,0x56,0x4d,0x73, -0x59,0xbe,0xd4,0x65,0x1b,0x64,0xba,0x9d,0xe6,0x2b,0xfd,0xdd,0xc4,0x9c,0x7e,0x15, -0x4a,0x8a,0x2b,0xf0,0x99,0xc9,0xce,0x4e,0x4f,0x76,0x7c,0x73,0x77,0x77,0x61,0x40, -0x04,0x90,0x07,0x24,0xd1,0x5d,0x17,0xc3,0xcd,0x1b,0xfb,0x7f,0xc6,0xda,0x3d,0x91, -0x5d,0xc8,0xf7,0x0a,0xee,0x3d,0x51,0x7e,0x66,0xfd,0x14,0xd5,0xd1,0xa6,0xeb,0x54, -0x8d,0x35,0xbb,0x69,0x0e,0x31,0x72,0x92,0x8a,0xea,0x7d,0x59,0xe0,0x9d,0x10,0x78, -0x77,0xc2,0x7a,0x56,0x9e,0x17,0x6b,0x43,0x6e,0x81,0xc7,0xfb,0x64,0x65,0xbf,0x52, -0x6b,0x76,0x90,0x74,0x18,0xe9,0x4b,0x5f,0xbb,0xd3,0x82,0xa7,0x05,0x05,0xb2,0x56, -0x3e,0xc6,0x2b,0x95,0x24,0x82,0x8a,0x28,0xad,0x0a,0x0a,0xc0,0xf1,0xcf,0x86,0x93, -0xc5,0xde,0x16,0xd4,0x34,0xb6,0x21,0x5a,0x78,0xff,0x00,0x76,0xc7,0xa2,0xc8,0x0e, -0x54,0x9f,0x6c,0x81,0x5b,0xf4,0x86,0xb3,0xa9,0x08,0xd5,0x83,0x84,0xb6,0x7a,0x0a, -0x49,0x49,0x38,0xbe,0xa7,0xc3,0x57,0x56,0xb2,0xd9,0x5c,0xcb,0x6f,0x3c,0x6d,0x14, -0xd1,0x39,0x8d,0xd1,0x86,0x0a,0xb0,0x38,0x20,0xd4,0x55,0xf4,0x07,0xc6,0xef,0x85, -0x32,0xea,0x8c,0xfe,0x20,0xd1,0xe1,0x32,0x5d,0x01,0x9b,0xab,0x64,0x1c,0xc8,0x07, -0xf1,0xa8,0xee,0x40,0xea,0x3b,0x8f,0x7e,0xbf,0x3f,0xd7,0xe2,0xd9,0x86,0x06,0xa6, -0x02,0xb3,0xa7,0x3d,0xba,0x3e,0xeb,0xfa,0xdc,0xf9,0x3a,0xf4,0x65,0x46,0x7c,0xac, -0x28,0xa2,0x8a,0xf3,0x0e,0x73,0xb3,0xf8,0x73,0xf1,0x3a,0xfb,0xe1,0xf5,0xe3,0x04, -0x43,0x77,0xa7,0x4a,0x73,0x35,0xab,0x1c,0x73,0xfd,0xe5,0x3d,0x8f,0xf3,0xfc,0xb1, -0xf4,0x3f,0x86,0xbe,0x2b,0xf8,0x67,0xc4,0xd1,0x21,0x87,0x52,0x8a,0xd6,0x72,0x39, -0xb7,0xbb,0x61,0x13,0x83,0xe9,0xc9,0xc1,0xfc,0x09,0xaf,0x91,0x68,0xaf,0xa1,0xcb, -0xf3,0xbc,0x46,0x02,0x3e,0xcd,0x7b,0xd1,0xec,0xfa,0x7a,0x33,0xba,0x8e,0x2e,0xa5, -0x15,0xcb,0xba,0x3e,0xe7,0x8e,0xe2,0x29,0x90,0x3c,0x72,0x23,0xa1,0xe8,0xca,0xc0, -0x83,0x54,0xf5,0x0d,0x7f,0x4c,0xd2,0x50,0xb5,0xee,0xa1,0x6b,0x68,0xa3,0xbc,0xd3, -0x2a,0xff,0x00,0x33,0x5f,0x13,0x2c,0x8e,0x83,0x0a,0xcc,0xa3,0xd8,0xe2,0x9a,0x79, -0x39,0x27,0x27,0xde,0xbd,0xd7,0xc5,0x52,0xb7,0xbb,0x47,0x5f,0x5f,0xf8,0x07,0x67, -0xf6,0x93,0xe9,0x1f,0xc7,0xfe,0x01,0xf4,0x6f,0x8c,0x7f,0x68,0x5d,0x2b,0x4c,0x89, -0xe1,0xd0,0xe3,0x3a,0xa5,0xd9,0xc8,0x13,0x30,0x29,0x0a,0x7e,0x7c,0xb7,0xe1,0xc1, -0xf5,0xaf,0x03,0xd7,0xbc,0x41,0x7f,0xe2,0x6d,0x4a,0x5b,0xfd,0x46,0xe1,0xae,0x6e, -0x64,0xea,0xcd,0xd0,0x0e,0xc0,0x0e,0xc0,0x7a,0x0a,0xce,0xa2,0xbe,0x5f,0x1d,0x9a, -0x62,0x71,0xef,0xf7,0xaf,0x4e,0xcb,0x63,0xce,0xad,0x88,0xa9,0x5b,0xe2,0xd8,0x28, -0xa2,0x8a,0xf2,0x4e,0x60,0xad,0x8f,0x09,0xf8,0x5e,0xf7,0xc6,0x1a,0xe5,0xbe,0x9b, -0x62,0x84,0xc9,0x21,0xcb,0xc8,0x47,0xcb,0x1a,0x7f,0x13,0x1f,0x61,0xfa,0x9c,0x0e, -0xf4,0x78,0x5f,0xc2,0x9a,0x97,0x8c,0x35,0x44,0xb1,0xd3,0x60,0x32,0xc8,0x7e,0xfb, -0x9c,0x84,0x89,0x7f,0xbc,0xc7,0xb0,0xfd,0x7d,0x33,0x5f,0x54,0x7c,0x3e,0xf8,0x7f, -0x63,0xe0,0x2d,0x24,0x41,0x6e,0x04,0xd7,0x72,0x00,0x6e,0x2e,0x98,0x61,0xa4,0x3f, -0xd0,0x0e,0xc2,0xbe,0x8b,0x29,0xca,0x67,0x8f,0xa8,0xa7,0x35,0x6a,0x6b,0x77,0xdf, -0xc9,0x1d,0xb8,0x6c,0x34,0xab,0xca,0xef,0xe1,0x35,0xbc,0x35,0xe1,0xeb,0x5f,0x0b, -0x68,0xb6,0xba,0x65,0x92,0x95,0x82,0x04,0xda,0x09,0xea,0xc7,0xbb,0x1f,0x72,0x72, -0x7f,0x1a,0xd4,0x14,0x52,0xd7,0xeb,0x70,0x84,0x69,0xc5,0x46,0x2a,0xc9,0x1f,0x4e, -0x92,0x4a,0xc8,0xc7,0xf1,0x4f,0x8a,0x6c,0x7c,0x21,0xa5,0x9d,0x43,0x51,0x76,0x4b, -0x60,0xe9,0x19,0x28,0xbb,0x8e,0x58,0xe3,0xa7,0xb7,0x5e,0x39,0xc0,0xa9,0x74,0x3f, -0x12,0x69,0x9e,0x23,0xb5,0x17,0x1a,0x6d,0xf4,0x37,0x91,0x11,0x92,0x62,0x6c,0x95, -0xfa,0x8e,0xa0,0xfb,0x1a,0xf1,0xdf,0xda,0x5f,0x5d,0xf9,0x74,0x8d,0x1d,0x1b,0xae, -0xeb,0xa9,0x00,0x3f,0xf0,0x15,0xff,0x00,0xd9,0xab,0xc4,0x2c,0xaf,0xee,0x74,0xeb, -0x85,0x9e,0xd2,0xe2,0x5b,0x69,0xd7,0xee,0xc9,0x0b,0x94,0x61,0xf8,0x8a,0xf8,0xec, -0x77,0x10,0x3c,0x16,0x32,0x54,0x79,0x79,0xa2,0xad,0xeb,0x73,0xcb,0xad,0x8d,0xf6, -0x55,0x5c,0x6d,0x74,0x7d,0xc7,0x9a,0x5a,0xf9,0x63,0x44,0xf8,0xf1,0xe2,0xbd,0x1c, -0x2a,0x4d,0x71,0x16,0xa7,0x10,0xfe,0x1b,0xa8,0xf2,0xd8,0xff,0x00,0x79,0x70,0x7f, -0x3c,0xd7,0x6f,0xa6,0x7e,0xd3,0x36,0xcc,0x48,0xd4,0x34,0x39,0xa2,0x03,0xf8,0xad, -0xa6,0x0f,0x93,0xf4,0x60,0xbf,0xce,0xbb,0xe8,0xf1,0x0e,0x06,0xaa,0xf7,0xa4,0xe2, -0xfc,0xd7,0xf9,0x5c,0xda,0x18,0xea,0x32,0xdd,0xd8,0xf6,0xfc,0xd1,0x9a,0xf3,0x1b, -0x0f,0xda,0x1f,0xc2,0xb7,0x6a,0x0c,0xdf,0x6d,0xb1,0x3e,0x93,0x41,0x9f,0xfd,0x00, -0xb5,0x5f,0x5f,0x8e,0xbe,0x0b,0x23,0xfe,0x42,0xce,0x3e,0xb6,0xb2,0xff,0x00,0xf1, -0x35,0xe9,0x47,0x33,0xc1,0x4b,0x6a,0xb1,0xfb,0xcd,0xd6,0x22,0x93,0xda,0x48,0xef, -0xe9,0x1d,0x82,0xa1,0x24,0x80,0x31,0xce,0x6b,0xcd,0xaf,0xff,0x00,0x68,0x1f,0x09, -0x5a,0xc2,0xcd,0x0c,0xd7,0x37,0xcc,0x3f,0x82,0x1b,0x76,0x52,0x7f,0xef,0xbd,0xa3, -0xf5,0xaf,0x35,0xf1,0xe7,0xc7,0xab,0xef,0x12,0x5a,0x4d,0xa7,0xe9,0x36,0xe7,0x4c, -0xb2,0x94,0x15,0x92,0x56,0x6c,0xcc,0xeb,0xe9,0xc7,0x0b,0xef,0x8c,0xfd,0x6b,0x93, -0x13,0x9d,0xe0,0xa8,0x41,0xb5,0x35,0x27,0xd9,0x6a,0x67,0x53,0x17,0x4a,0x0a,0xf7, -0xb9,0xe7,0xbe,0x28,0x96,0x0b,0x8f,0x12,0xea,0xd2,0xda,0xe3,0xec,0xcf,0x77,0x2b, -0x45,0xb7,0xa6,0xd2,0xe4,0x8c,0x7e,0x15,0x97,0x45,0x15,0xf9,0x04,0xe5,0xcf,0x37, -0x2e,0xee,0xe7,0xcb,0xb7,0x77,0x70,0xa2,0x8a,0x2a,0x04,0x75,0xff,0x00,0x08,0xf4, -0xf6,0xd4,0xbe,0x22,0xe8,0x88,0x01,0xc4,0x73,0x79,0xc4,0x8e,0xc1,0x14,0xb7,0xf4, -0xaf,0xae,0xc7,0x4a,0xf0,0x7f,0xd9,0xbf,0xc2,0xac,0x64,0xbe,0xf1,0x04,0xc9,0x85, -0xdb,0xf6,0x6b,0x72,0x47,0x5e,0xee,0x7f,0x40,0x3f,0x3a,0xf7,0x81,0xd2,0xbf,0x57, -0xe1,0xcc,0x3b,0xa3,0x82,0xe7,0x97,0xda,0x77,0xf9,0x74,0x3e,0x93,0x03,0x07,0x1a, -0x57,0x7d,0x45,0xa2,0x8a,0x2b,0xea,0x4f,0x44,0x69,0xaf,0x92,0xff,0x00,0x69,0xfb, -0xbf,0x33,0x5a,0x74,0xce,0x70,0xd5,0xf5,0xab,0x74,0xaf,0x8c,0x7f,0x68,0xdb,0xbf, -0x3b,0xc4,0xb2,0x8c,0xff,0x00,0x19,0xaf,0x99,0xcf,0xdd,0xb0,0xb6,0xee,0xd1,0xe0, -0x67,0x72,0xe5,0xc2,0x48,0xf9,0xcb,0xc7,0x32,0xec,0xd2,0x67,0x3d,0x3e,0x5a,0xfa, -0x47,0xfe,0x09,0x79,0xa6,0x88,0x7e,0x0f,0xf8,0xbb,0x50,0xc7,0xcd,0x77,0xe2,0x39, -0x57,0x38,0xec,0x90,0x42,0x07,0xea,0x4d,0x7c,0xc3,0xf1,0x1e,0x5f,0x2f,0x46,0x9c, -0xe7,0xb1,0xfe,0x55,0xf5,0xff,0x00,0xfc,0x13,0x53,0x4f,0x36,0x9f,0xb3,0x2c,0x17, -0x24,0x63,0xed,0xda,0xcd,0xf5,0xc0,0x3e,0xb8,0x93,0xcb,0xff,0x00,0xda,0x75,0x9e, -0x47,0x1b,0x53,0xb9,0xf1,0xbc,0x27,0x1b,0xe2,0xeb,0xcf,0xc9,0x1f,0x55,0x51,0x45, -0x15,0xf5,0x47,0xea,0x21,0x5f,0x13,0x7e,0xd3,0x3e,0x2f,0x3e,0x27,0xf8,0x9b,0x71, -0x68,0x8e,0x4d,0xa6,0x92,0x9f,0x64,0x41,0xdb,0x7f,0x59,0x0f,0xe7,0x81,0xff,0x00, -0x01,0xaf,0xae,0xbc,0x73,0xe2,0x68,0x7c,0x1d,0xe1,0x2d,0x57,0x59,0x9b,0x1b,0x6c, -0xe0,0x69,0x14,0x1f,0xe2,0x7c,0x61,0x57,0xf1,0x62,0x07,0xe3,0x5f,0x9f,0x28,0x2e, -0x75,0xcd,0x57,0x74,0x8c,0xd3,0x5d,0x5d,0xcc,0x59,0x98,0xf2,0x59,0xd9,0xb2,0x4f, -0xe6,0x6b,0xe4,0xb8,0x83,0x11,0xcb,0x4e,0x34,0x23,0xbb,0xd7,0xfa,0xf9,0x9f,0x1b, -0xc4,0x58,0x87,0xc9,0x0c,0x34,0x77,0x93,0xbb,0xf4,0xff,0x00,0x87,0x3e,0x96,0xfd, -0x92,0x7c,0x1f,0xe4,0xd9,0xdf,0x6b,0xf2,0xa6,0x0c,0x87,0xc9,0x88,0x91,0xdb,0xb9, -0xaf,0xa3,0xeb,0x97,0xf8,0x6f,0xe1,0xa4,0xf0,0x97,0x83,0x74,0xcd,0x39,0x54,0x2b, -0x47,0x10,0x2f,0x8e,0xec,0x7a,0xd7,0x51,0x5e,0xde,0x5d,0x87,0xfa,0xb6,0x1a,0x14, -0xfa,0xf5,0xf5,0x3e,0x8f,0x03,0x87,0x58,0x5c,0x3c,0x29,0x76,0x41,0x5f,0x0c,0x7f, -0xc1,0x5c,0xbe,0x35,0x9f,0x87,0x7f,0xb3,0xbc,0x3e,0x0f,0xb2,0x9b,0xcb,0xd5,0x3c, -0x65,0x75,0xf6,0x56,0xda,0xd8,0x65,0xb4,0x88,0xac,0x93,0x1f,0x70,0xc7,0xcb,0x42, -0x3b,0x87,0x6f,0x4a,0xfb,0x9e,0xbf,0x23,0xff,0x00,0xe0,0xb6,0x56,0x5a,0x90,0xf8, -0x89,0xf0,0xd6,0xf2,0x48,0xdc,0xe9,0x07,0x4a,0xb9,0x8a,0x17,0xc7,0xc8,0x26,0x13, -0x29,0x90,0x7d,0x76,0x98,0xff,0x00,0x2a,0xf4,0xd1,0xdc,0xcf,0x86,0xbf,0x67,0xbf, -0x04,0xe9,0xbf,0x12,0x7e,0x39,0x78,0x17,0xc3,0x3a,0xcd,0xe4,0x76,0x1a,0x56,0xa9, -0xac,0x5b,0xdb,0x5d,0x4f,0x2b,0x05,0x51,0x19,0x71,0xb8,0x64,0xf7,0x61,0xf2,0x8f, -0x72,0x2b,0xfa,0x16,0xf8,0xcd,0xf1,0x1b,0x4e,0xf8,0x1d,0xf0,0x6f,0xc5,0x1e,0x2e, -0x9e,0x38,0xe3,0xb4,0xd0,0x34,0xc9,0x27,0x86,0xd9,0x70,0x81,0xdd,0x53,0x11,0x44, -0xbd,0x86,0xe6,0xda,0xa0,0x7b,0xd7,0xf3,0x4e,0xac,0x51,0x83,0x29,0x2a,0xc0,0xe4, -0x11,0xd4,0x57,0x5f,0xaa,0xfc,0x62,0xf1,0xde,0xbb,0xe1,0x97,0xf0,0xee,0xa7,0xe3, -0x2d,0x7b,0x51,0xd0,0x5f,0x6e,0xed,0x32,0xeb,0x52,0x9a,0x5b,0x73,0xb4,0x86,0x5c, -0xc6,0xcc,0x47,0x04,0x02,0x38,0xe3,0x14,0xc8,0x4e,0xc7,0x77,0xe1,0x9f,0xda,0x7f, -0xe3,0xb6,0xb5,0xe2,0xab,0x6b,0x5d,0x23,0xe2,0x6f,0x8b,0x5b,0x55,0xd5,0x2f,0x16, -0x28,0xa1,0x4d,0x5a,0x72,0xad,0x2c,0x8f,0x85,0x01,0x4b,0x60,0x0c,0xb7,0x40,0x31, -0x5f,0xd0,0x5f,0xc3,0xcd,0x07,0x50,0xf0,0xbf,0x81,0x74,0x0d,0x27,0x55,0xd4,0xae, -0x35,0x9d,0x52,0xce,0xc6,0x18,0x6f,0x35,0x0b,0xa9,0x0c,0x92,0x5c,0xcc,0x10,0x79, -0x92,0x33,0x1e,0x4e,0x5b,0x26,0xbf,0x99,0xff,0x00,0x09,0xf8,0xaf,0x55,0xf0,0x37, -0x89,0x34,0xed,0x7f,0x43,0xbc,0x6d,0x3f,0x58,0xd3,0xa7,0x5b,0x9b,0x5b,0xa4,0x55, -0x66,0x8a,0x45,0x39,0x56,0x01,0x81,0x19,0x1e,0xe2,0xbe,0x84,0xd3,0x3f,0xe0,0xa5, -0x1f,0xb4,0x76,0x95,0xf7,0x3e,0x24,0x5c,0x4e,0x3d,0x2e,0xb4,0xfb,0x49,0x7f,0xf4, -0x28,0x8d,0x0c,0x69,0x9f,0xbf,0xd4,0x57,0xe1,0x66,0x99,0xff,0x00,0x05,0x62,0xfd, -0xa1,0xec,0x17,0x12,0xeb,0xda,0x46,0xa1,0xef,0x73,0xa4,0x42,0x3f,0xf4,0x00,0xb5, -0xbf,0x63,0xff,0x00,0x05,0x87,0xf8,0xed,0x6b,0x81,0x35,0x9f,0x84,0xaf,0x3f,0xeb, -0xae,0x99,0x2a,0x9f,0xfc,0x76,0x61,0x4a,0xc5,0x5d,0x1f,0xb6,0x94,0x57,0x86,0xfe, -0xc6,0x7f,0x16,0x3c,0x69,0xf1,0xc7,0xe0,0x3e,0x8b,0xe3,0x8f,0x1c,0x58,0xe9,0xba, -0x6e,0xa3,0xac,0x49,0x2c,0xd6,0xb6,0xfa,0x64,0x4f,0x1c,0x7f,0x66,0x0d,0xb5,0x18, -0x87,0x76,0x39,0x62,0xac,0x7a,0xe3,0x05,0x7f,0x1f,0x4a,0xf8,0xa1,0xe3,0xfd,0x3f, -0xe1,0x67,0xc3,0xbf,0x12,0x78,0xbf,0x54,0x60,0x2c,0x34,0x4b,0x09,0xaf,0xa5,0x05, -0xb1,0xbf,0x62,0x92,0x14,0x7b,0xb1,0xc2,0x8f,0x72,0x29,0x0c,0xea,0x28,0xaf,0xcb, -0xad,0x3b,0xfe,0x0b,0x77,0x64,0x42,0x8b,0xef,0x84,0xd3,0xab,0x77,0xfb,0x3e,0xb8, -0x0f,0xf3,0x80,0x57,0x61,0xa5,0x7f,0xc1,0x6a,0xfe,0x1b,0xcb,0x1e,0x75,0x2f,0x00, -0x78,0xa6,0xd2,0x4f,0xee,0xda,0xbd,0xb4,0xe3,0xf3,0x69,0x13,0xf9,0x53,0xb0,0xae, -0x8f,0xd1,0x5a,0x2b,0xe0,0x5b,0x4f,0xf8,0x2c,0xef,0xc1,0x89,0xb1,0xe7,0x78,0x6b, -0xc6,0xb6,0xe7,0xd3,0xec,0x56,0xad,0xfc,0xae,0x2b,0xab,0xd1,0xbf,0xe0,0xad,0xdf, -0xb3,0xe6,0xa6,0xa0,0xdd,0x6a,0x9a,0xee,0x90,0x7d,0x2f,0x34,0x89,0x1b,0x1f,0xf7, -0xe8,0xbd,0x01,0x74,0x7d,0x9f,0x45,0x7c,0xa7,0x69,0xff,0x00,0x05,0x44,0xfd,0x9b, -0x6e,0x80,0x27,0xe2,0x04,0x90,0x67,0xfe,0x7a,0xe8,0xb7,0xe3,0xf9,0x42,0x6b,0xa6, -0xd2,0xff,0x00,0xe0,0xa0,0xbf,0xb3,0xce,0xae,0x14,0xc3,0xf1,0x4f,0x46,0x8b,0x77, -0x41,0x74,0xb3,0x40,0x7f,0xf1,0xf4,0x14,0x87,0x73,0xe8,0x6a,0x2b,0xc9,0xf4,0xff, -0x00,0xda,0xcb,0xe0,0xb6,0xa8,0xa1,0xad,0xfe,0x2b,0xf8,0x35,0x81,0xec,0xfa,0xe5, -0xba,0x1f,0xc9,0x9c,0x56,0xfd,0x97,0xc7,0x5f,0x86,0xda,0x96,0x3e,0xc9,0xf1,0x07, -0xc2,0xd7,0x39,0xe9,0xe5,0x6b,0x56,0xcd,0x9f,0xc9,0xe8,0x03,0xb4,0x9a,0x08,0xe7, -0x52,0x92,0x22,0xc8,0x87,0xaa,0xb0,0xc8,0x3f,0x85,0x50,0x9f,0xc3,0x3a,0x3d,0xcf, -0xfa,0xed,0x2e,0xce,0x5f,0xf7,0xed,0xd0,0xff,0x00,0x4a,0x76,0x9f,0xe2,0x4d,0x27, -0x56,0x8c,0x49,0x63,0xa9,0xd9,0x5e,0xc6,0x79,0x0d,0x6f,0x70,0x92,0x03,0xf9,0x13, -0x5a,0x0a,0xe1,0x86,0x41,0x04,0x7a,0x83,0x51,0x28,0x46,0x5f,0x12,0xb8,0x9a,0x4f, -0x74,0x73,0xf3,0x7c,0x3c,0xf0,0xc5,0xc7,0x32,0x78,0x7f,0x4e,0x3f,0xf6,0xea,0x83, -0xfa,0x55,0x49,0x7e,0x15,0x78,0x46,0x51,0xce,0x81,0x66,0xbf,0xee,0x47,0xb7,0xf9, -0x57,0x59,0x9a,0x5a,0xc2,0x58,0x5a,0x12,0xde,0x0b,0xee,0x44,0x3a,0x70,0x7b,0xc5, -0x1c,0x8e,0x9d,0xf0,0xaf,0xc2,0xfa,0x4e,0xa5,0x6f,0x7f,0x65,0xa5,0xad,0xbd,0xd4, -0x0d,0xba,0x37,0x49,0x5f,0x83,0xd3,0xa6,0x71,0x5d,0x68,0xeb,0x4b,0x45,0x69,0x4e, -0x8d,0x3a,0x2a,0xd4,0xe2,0x92,0xf2,0x2a,0x31,0x8c,0x34,0x8a,0xb0,0x51,0x45,0x15, -0xb1,0x42,0x1a,0xe2,0x7e,0x28,0x7c,0x3c,0x9b,0xe2,0x1d,0x85,0x9d,0xaa,0x6a,0x22, -0xc2,0x3b,0x79,0x0c,0xa5,0x4c,0x3e,0x66,0xf6,0xc6,0x07,0xf1,0x0c,0x63,0x27,0xd7, -0xad,0x76,0xf4,0x56,0x15,0xe8,0x43,0x13,0x4d,0xd2,0xa8,0xaf,0x17,0xb9,0x13,0x82, -0xa9,0x17,0x19,0x6c,0x7c,0xf5,0x37,0xec,0xcd,0xaa,0x2e,0x7c,0x9d,0x66,0xd1,0xff, -0x00,0xdf,0x8d,0x97,0xfc,0x6a,0x93,0xfe,0xcd,0xbe,0x23,0x19,0xd9,0x7d,0xa6,0xb7, -0xd6,0x49,0x07,0xfe,0xc9,0x5f,0x49,0x51,0x5e,0x0b,0xe1,0xdc,0xbd,0xfd,0x97,0xf7, -0xb3,0x8d,0xe0,0x68,0xbe,0x9f,0x89,0xf3,0x1c,0xff,0x00,0xb3,0xbf,0x8a,0xa2,0x52, -0x55,0xf4,0xf9,0x88,0xfe,0x14,0x9c,0x8f,0xe6,0xa2,0xbb,0x0f,0x83,0x7f,0x0a,0xb5, -0x8f,0x0a,0x78,0x9a,0x7d,0x4b,0x57,0x82,0x38,0x55,0x20,0x31,0xc3,0xb6,0x45,0x7d, -0xcc,0xc4,0x64,0xf0,0x78,0xc0,0x18,0xfc,0x6b,0xdb,0x28,0xaa,0xa1,0x90,0xe1,0x30, -0xd5,0x63,0x5a,0x17,0xbc,0x7c,0xc2,0x18,0x2a,0x54,0xe4,0xa4,0xaf,0xa0,0x51,0x45, -0x15,0xf4,0x67,0x78,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x87,0x9a,0xf2,0xef, -0x88,0x7f,0x03,0xac,0x3c,0x55,0x24,0x97,0xda,0x63,0xa6,0x9b,0xa9,0xb6,0x59,0xb8, -0xfd,0xd4,0xc7,0xd5,0x80,0xe8,0x7d,0xc7,0xe4,0x6b,0xd4,0xa8,0xae,0x4c,0x4e,0x16, -0x8e,0x2e,0x1e,0xce,0xb4,0x6e,0x8c,0xea,0x53,0x8d,0x55,0xcb,0x35,0x73,0xe3,0x1f, -0x13,0x78,0x1f,0x5b,0xf0,0x84,0xc5,0x35,0x4b,0x09,0x20,0x8f,0x38,0x13,0xaf,0xcd, -0x13,0x7d,0x18,0x71,0xf8,0x75,0xf6,0xac,0x2a,0xfb,0x9e,0x68,0x52,0x78,0xca,0x48, -0xaa,0xe8,0x78,0x2a,0xc3,0x20,0xd7,0x15,0xae,0x7c,0x18,0xf0,0x9e,0xb8,0x59,0xdf, -0x4d,0x5b,0x49,0x4f,0xfc,0xb4,0xb3,0x6f,0x2b,0xf4,0x1f,0x2f,0xe9,0x5f,0x0f,0x8a, -0xe1,0x79,0x5e,0xf8,0x69,0xfc,0x9f,0xf9,0xa3,0xc7,0xa9,0x97,0x3d,0xe9,0xbf,0xbc, -0xf9,0x36,0x8a,0xf7,0xed,0x43,0xf6,0x65,0xb2,0x91,0x89,0xb0,0xd6,0xe7,0x85,0x7b, -0x2d,0xc4,0x2b,0x27,0xea,0x0a,0xd6,0x0d,0xcf,0xec,0xd5,0xad,0x23,0x91,0x06,0xa9, -0x63,0x2a,0xf6,0x32,0x07,0x43,0xfa,0x03,0x5e,0x0c,0xf2,0x2c,0xc2,0x0f,0xf8,0x77, -0xf4,0x68,0xe3,0x78,0x3a,0xeb,0xec,0x9e,0x3f,0x45,0x7a,0xb1,0xfd,0x9b,0xfc,0x4b, -0xda,0xf7,0x4b,0x3f,0xf6,0xd6,0x4f,0xfe,0x22,0x9e,0x9f,0xb3,0x6f,0x88,0xc9,0xf9, -0xef,0xb4,0xd5,0x1e,0xd2,0x48,0x7f,0xf6,0x4a,0xc1,0x64,0xf8,0xf7,0xff,0x00,0x2e, -0x99,0x1f,0x55,0xad,0xfc,0xac,0xf2,0x6a,0x2b,0xdb,0x74,0xff,0x00,0xd9,0x9a,0xe9, -0xb9,0xbd,0xd7,0x22,0x8f,0xd5,0x60,0xb7,0x2f,0xfa,0x92,0x3f,0x95,0x75,0x9a,0x3f, -0xec,0xf3,0xe1,0x9b,0x0c,0x35,0xdb,0x5d,0x6a,0x4c,0x3b,0x4b,0x26,0xc4,0xfc,0x97, -0x07,0xf5,0xae,0xda,0x5c,0x3d,0x8f,0xa8,0xf5,0x8a,0x8f,0xab,0xff,0x00,0x2b,0x9a, -0xc7,0x03,0x5a,0x5b,0xab,0x1f,0x36,0x59,0xd9,0x5c,0x6a,0x17,0x09,0x05,0xac,0x12, -0xdc,0xcc,0xe7,0x0b,0x1c,0x28,0x59,0x8f,0xd0,0x0a,0xf5,0x5f,0x05,0xfe,0xcf,0x9a, -0x9e,0xaa,0xd1,0xdc,0xeb,0xb2,0x7f,0x66,0x5a,0x13,0x9f,0x21,0x08,0x69,0xd8,0x7e, -0xa1,0x7f,0x1c,0x9f,0x6a,0xf7,0xdd,0x1f,0xc3,0xba,0x6f,0x87,0xe1,0x31,0x69,0xd6, -0x36,0xf6,0x51,0x9e,0xa2,0x18,0xc2,0xe7,0xeb,0xeb,0x5a,0x75,0xf4,0xd8,0x3e,0x19, -0xa3,0x49,0xa9,0xe2,0x25,0xcc,0xfb,0x6c,0xbf,0xcd,0x9e,0x85,0x2c,0xbe,0x31,0xd6, -0xa3,0xb9,0x93,0xe1,0xdf,0x0c,0xe9,0xbe,0x15,0xd3,0xd6,0xcf,0x4c,0xb5,0x4b,0x58, -0x47,0x5d,0xbf,0x79,0xcf,0xab,0x1e,0xa4,0xfd,0x6b,0x54,0x74,0xa5,0xa2,0xbe,0xca, -0x10,0x8d,0x38,0xa8,0xc1,0x59,0x23,0xd5,0x49,0x45,0x59,0x05,0x35,0xba,0x73,0x4e, -0xa8,0x2f,0x56,0x66,0xb5,0x98,0x40,0x50,0x4f,0xb0,0xf9,0x65,0xfe,0xee,0xec,0x71, -0x9f,0x6c,0xd5,0x3d,0x15,0xc6,0x7c,0x99,0xf1,0x6f,0x5d,0xfe,0xdf,0xf1,0xfe,0xab, -0x32,0xb6,0xe8,0xa1,0x93,0xec,0xd1,0xf3,0x9e,0x13,0x83,0x8f,0xab,0x6e,0x3f,0x8d, -0x71,0xd5,0xdd,0x6b,0xff,0x00,0x06,0x7c,0x5b,0xa3,0xb4,0x92,0x35,0x81,0xd4,0x50, -0x1c,0x99,0xac,0xdb,0xcc,0x2d,0xef,0xb7,0xef,0x7e,0x95,0xc5,0xde,0xd9,0x5c,0x69, -0xb3,0x18,0x6e,0xed,0xe5,0xb5,0x98,0x75,0x8e,0x64,0x28,0xdf,0x91,0xe6,0xbf,0x11, -0xc6,0xd2,0xc4,0x2a,0xd3,0xa9,0x5e,0x0d,0x36,0xdb,0xd5,0x1f,0x23,0x5a,0x33,0xe7, -0x72,0x92,0xdc,0x86,0x8a,0x28,0xaf,0x38,0xc0,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a, -0x00,0x28,0xa2,0xae,0xe9,0x5a,0x26,0xa1,0xae,0xcf,0xe4,0xe9,0xd6,0x53,0xde,0xcb, -0xdd,0x60,0x42,0xd8,0xf7,0x38,0xe9,0xf8,0xd5,0x46,0x32,0x9b,0xe5,0x8a,0xbb,0x1a, -0x4d,0xe8,0x8a,0x55,0xd4,0x78,0x03,0xc0,0x17,0xfe,0x3d,0xd5,0xd6,0xde,0xdd,0x5a, -0x2b,0x38,0xc8,0x37,0x17,0x44,0x7c,0xb1,0xaf,0xa0,0xf5,0x63,0xd8,0x7f,0x4a,0xef, -0xbc,0x1b,0xfb,0x3b,0xde,0xdd,0xba,0x5c,0x78,0x86,0x71,0x67,0x00,0xe4,0xda,0x40, -0xc1,0xa4,0x6f,0x62,0xc3,0x81,0xf8,0x67,0xf0,0xaf,0x76,0xd1,0x74,0x5b,0x1f,0x0f, -0xd8,0x47,0x65,0xa7,0xdb,0x25,0xad,0xb4,0x63,0xe5,0x44,0x1f,0xa9,0xf5,0x3e,0xe6, -0xbe,0xc3,0x2c,0xe1,0xfa,0xb5,0xa4,0xaa,0x62,0x97,0x2c,0x7b,0x75,0x7f,0xe4,0x7a, -0x98,0x7c,0x14,0xa4,0xd4,0xaa,0x68,0x83,0x45,0xd1,0xad,0x74,0x0d,0x32,0xdb,0x4f, -0xb2,0x8c,0x45,0x6d,0x02,0x04,0x45,0xf6,0xf5,0x3e,0xa4,0xfa,0xd5,0xe1,0x4b,0x45, -0x7e,0x99,0x18,0xa8,0x25,0x18,0xec,0x8f,0x7d,0x24,0x95,0x90,0x51,0x45,0x15,0x43, -0x1b,0x21,0xdb,0x1b,0x1f,0x40,0x4d,0x7c,0x35,0xf1,0xd6,0xeb,0xcf,0xf1,0x4c,0xbc, -0xe7,0xe6,0x26,0xbe,0xe0,0xbe,0x7f,0x2e,0xce,0x76,0x3d,0x90,0x9f,0xd2,0xbe,0x0b, -0xf8,0xbb,0x38,0x9f,0xc5,0x13,0xfd,0x4f,0xf3,0xaf,0x91,0xe2,0x19,0x5a,0x9d,0x38, -0xf7,0x67,0xcb,0x71,0x0c,0xad,0x86,0xb1,0xe0,0x5f,0x15,0xe7,0xf2,0xb4,0x59,0xb9, -0xec,0x7f,0x95,0x7d,0xeb,0xfb,0x03,0x69,0xbf,0xd9,0xdf,0xb2,0x7f,0x81,0x7d,0x6e, -0x23,0xb8,0xb9,0x38,0xff,0x00,0x6e,0xe2,0x53,0x5f,0x9f,0x7f,0x19,0x26,0x11,0xe8, -0x92,0xf3,0x8f,0x94,0xff,0x00,0x2a,0xfd,0x29,0xfd,0x90,0xec,0x06,0x9b,0xfb,0x31, -0x7c,0x33,0x84,0x2e,0xdc,0xe8,0x76,0xd2,0x90,0x7d,0x5d,0x77,0x9f,0xd5,0xab,0xb3, -0x26,0x56,0xa2,0x78,0x1c,0x1f,0x1b,0xfb,0x79,0xf9,0xa3,0xd7,0xa8,0xa2,0x8a,0xfa, -0x23,0xf4,0x83,0xe7,0x5f,0xda,0xf7,0xc6,0x0d,0x69,0xa2,0xe9,0x5e,0x1c,0x81,0xf0, -0x6f,0x64,0x37,0x37,0x00,0x7f,0x71,0x3e,0xe8,0x3f,0x56,0x39,0xff,0x00,0x80,0xd7, -0x94,0x7e,0xcf,0x3e,0x12,0xff,0x00,0x84,0xa3,0xe2,0x15,0xa3,0x3a,0x6e,0xb7,0xb3, -0xfd,0xfb,0xfa,0x71,0xd2,0xb2,0x7e,0x36,0xf8,0xb1,0xbc,0x65,0xf1,0x33,0x5a,0xbb, -0x0f,0xbe,0xda,0xde,0x53,0x67,0x6f,0xce,0x40,0x48,0xf2,0x38,0xfa,0xb6,0xe3,0xf8, -0xd7,0xd0,0x7f,0xb2,0xb7,0x84,0x46,0x93,0xe1,0x29,0xf5,0x79,0x53,0x13,0xde,0xbe, -0x14,0x91,0xfc,0x03,0xff,0x00,0xaf,0x5f,0x01,0xff,0x00,0x23,0x1c,0xd3,0xfb,0xa9, -0xfe,0x0b,0xfc,0xd9,0xf9,0xfd,0x2f,0xf8,0x52,0xcd,0x5c,0xf7,0x8c,0x7f,0x25,0xff, -0x00,0x04,0xf7,0x30,0x30,0x00,0xe9,0x4b,0x48,0x29,0x6b,0xef,0xcf,0xd0,0x02,0xbc, -0xff,0x00,0xe3,0x67,0xc0,0x9f,0x05,0xfe,0xd0,0x9e,0x0c,0x97,0xc3,0x1e,0x37,0xd1, -0xe3,0xd5,0xb4,0xd2,0xe2,0x58,0x9b,0x71,0x49,0xad,0xe5,0x00,0x81,0x24,0x4e,0x39, -0x46,0xc1,0x23,0x8e,0xa0,0x90,0x72,0x09,0x15,0xe8,0x14,0x50,0x07,0xe6,0x47,0x8d, -0x3f,0xe0,0x89,0xda,0x1d,0xc5,0xc3,0x4b,0xe1,0x5f,0x89,0xb7,0xfa,0x7c,0x1c,0x9f, -0x23,0x57,0xd3,0x92,0xe5,0x87,0xfd,0xb4,0x47,0x8f,0xff,0x00,0x41,0xaf,0xcb,0x8f, -0x1b,0x68,0x56,0x5e,0x17,0xf1,0x86,0xb5,0xa3,0xe9,0xda,0xb4,0x7a,0xf5,0x8e,0x9f, -0x79,0x2d,0xac,0x3a,0x9c,0x31,0x98,0xe3,0xba,0x54,0x72,0xa2,0x55,0x52,0x49,0x0a, -0xd8,0xc8,0xe7,0xa1,0xaf,0xe9,0x9b,0xc6,0x1a,0x1d,0xc7,0x89,0x7c,0x2b,0xac,0x69, -0x16,0x9a,0x94,0xba,0x35,0xcd,0xfd,0x9c,0xb6,0xb1,0xea,0x10,0x20,0x69,0x2d,0x99, -0xd0,0xa8,0x91,0x01,0xe0,0xb2,0xe7,0x23,0x3c,0x64,0x0a,0xfc,0xdd,0xd4,0x3f,0xe0, -0x89,0x1a,0x41,0x95,0x5a,0xc7,0xe2,0x9d,0xea,0xc6,0x18,0x12,0x97,0x3a,0x42,0x31, -0x23,0xb8,0xca,0xca,0x3f,0x95,0x3b,0x92,0xd1,0xf2,0x97,0xc2,0x7f,0xf8,0x26,0x5f, -0xc6,0x3f,0x8c,0xbf,0x0d,0x34,0x4f,0x1b,0xe8,0x03,0x41,0x87,0x4b,0xd5,0xe2,0x69, -0xad,0xed,0xf5,0x0b,0xd7,0x86,0xe3,0x60,0x76,0x50,0xc5,0x7c,0xb2,0x30,0xdb,0x77, -0x0e,0x79,0x04,0x1a,0xd3,0xbc,0xff,0x00,0x82,0x4e,0x7e,0xd1,0x16,0xa4,0x88,0xf4, -0x0d,0x1e,0xe8,0x0e,0xf0,0xeb,0x30,0x8c,0xff,0x00,0xdf,0x44,0x57,0xed,0xff,0x00, -0x85,0x7c,0x35,0x63,0xe0,0xdf,0x0c,0xe9,0x3a,0x06,0x99,0x17,0x91,0xa6,0xe9,0x76, -0x91,0x59,0x5a,0xc5,0x9c,0xec,0x8a,0x34,0x08,0x83,0xf2,0x51,0x5a,0xb4,0x5c,0x2c, -0x8f,0xc0,0x4d,0x47,0xfe,0x09,0xa7,0xfb,0x47,0x69,0xcc,0xc0,0xfc,0x38,0x9a,0xe5, -0x57,0xf8,0xad,0xb5,0x1b,0x47,0x07,0xe9,0xfb,0xdc,0x9a,0xc6,0xd1,0xbf,0x60,0x7f, -0x8e,0xf7,0xde,0x25,0xd3,0x34,0xbb,0xcf,0x86,0x7e,0x20,0xb0,0x86,0xea,0xee,0x2b, -0x79,0x6f,0x5e,0xd7,0x74,0x50,0x2b,0x38,0x53,0x23,0x32,0x92,0x02,0xa8,0x39,0x27, -0x3d,0x05,0x7f,0x42,0x78,0xa0,0x80,0x7b,0x51,0x70,0xe5,0x46,0x2f,0x82,0xfc,0x29, -0x63,0xe0,0x5f,0x07,0x68,0x9e,0x1c,0xd3,0x23,0x58,0xb4,0xfd,0x26,0xce,0x1b,0x28, -0x11,0x46,0x00,0x48,0xd0,0x28,0xfd,0x05,0x7c,0x4f,0xff,0x00,0x05,0x7d,0xf8,0xb1, -0x73,0xe1,0x4f,0x80,0x9a,0x6f,0x82,0x34,0xd5,0xb8,0x6b,0xef,0x15,0xde,0xff,0x00, -0xa4,0x98,0x63,0x2c,0xa2,0xce,0xdf,0x6b,0xb8,0x62,0x3a,0x66,0x46,0x84,0x0f,0x50, -0x1b,0xd2,0xbe,0xf3,0xa6,0xb2,0x2b,0x75,0x00,0xfd,0x45,0x22,0x8f,0xe5,0xad,0xa3, -0x64,0x24,0x32,0xb2,0xe3,0xfb,0xc3,0x14,0xd1,0xcf,0x4e,0x6b,0xfa,0x8b,0xbc,0xd1, -0x74,0xfd,0x42,0x33,0x1d,0xd5,0x85,0xb5,0xca,0x1e,0xab,0x34,0x2a,0xe0,0xfe,0x04, -0x57,0x2d,0xab,0xfc,0x11,0xf8,0x77,0xaf,0xa9,0x5d,0x4b,0xc0,0x7e,0x19,0xbf,0x53, -0xd4,0x5c,0xe9,0x16,0xf2,0x67,0xf3,0x4a,0x77,0x23,0x94,0xfe,0x67,0x71,0x9a,0x2b, -0xfa,0x3a,0xba,0xfd,0x90,0x3e,0x07,0x5e,0xe7,0xcd,0xf8,0x43,0xe0,0x9c,0x9e,0xa5, -0x34,0x1b,0x64,0x3f,0x98,0x41,0x5c,0xbe,0xad,0xff,0x00,0x04,0xfb,0xfd,0x9e,0xb5, -0x9c,0xf9,0xdf,0x0b,0x74,0x58,0x73,0xff,0x00,0x3e,0x7e,0x6d,0xbf,0xfe,0x8b,0x75, -0xc5,0x3b,0x87,0x29,0xfc,0xf6,0xd1,0x5f,0xbd,0x17,0x5f,0xf0,0x4b,0x8f,0xd9,0xb2, -0xe9,0xcb,0x0f,0x01,0xcd,0x01,0x3f,0xf3,0xcb,0x5b,0xbe,0x03,0xf2,0xf3,0xab,0x9f, -0xd5,0x3f,0xe0,0x92,0x1f,0xb3,0xed,0xfe,0xef,0xb3,0xe9,0xba,0xf6,0x9b,0x9e,0x9f, -0x66,0xd5,0xdd,0xb1,0xff,0x00,0x7f,0x03,0x51,0x70,0xe5,0x3f,0x0d,0xe8,0xaf,0xd9, -0xab,0xef,0xf8,0x23,0x0f,0xc1,0xdb,0x87,0x63,0x6d,0xe2,0x8f,0x19,0x5a,0x03,0xd1, -0x7e,0xd5,0x6c,0xe0,0x7e,0x70,0x56,0x05,0xff,0x00,0xfc,0x11,0x43,0xc0,0x32,0x03, -0xf6,0x2f,0x88,0x9e,0x24,0xb7,0x3d,0xbe,0xd1,0x6f,0x6f,0x2e,0x3f,0x25,0x5a,0x2e, -0x1c,0xac,0xfc,0x89,0x8a,0xee,0x68,0x71,0xe5,0xcd,0x24,0x78,0xfe,0xeb,0x11,0x5a, -0xf6,0x3e,0x3b,0xf1,0x2e,0x98,0x41,0xb3,0xf1,0x0e,0xab,0x69,0x8e,0x9e,0x45,0xec, -0xa9,0xfc,0x9a,0xbf,0x4c,0x35,0x5f,0xf8,0x22,0x28,0x24,0xff,0x00,0x66,0x7c,0x59, -0xd8,0x3b,0x0b,0xbd,0x13,0x71,0xff,0x00,0xc7,0x67,0x15,0xcd,0xde,0xff,0x00,0xc1, -0x12,0xbc,0x5d,0x19,0x3f,0x64,0xf8,0x9d,0xa2,0x4e,0x3b,0x79,0xda,0x6c,0xd1,0xff, -0x00,0x27,0x6a,0x05,0x66,0x7c,0x2f,0xa6,0xfe,0xd0,0x9f,0x14,0x34,0x62,0x0d,0x8f, -0xc4,0x5f,0x15,0x5a,0xe3,0xa7,0x95,0xac,0xdc,0x2f,0xfe,0xcf,0x5d,0x56,0x9f,0xfb, -0x6a,0xfc,0x77,0xd2,0xc0,0x16,0xff,0x00,0x15,0xfc,0x53,0x81,0xda,0x5d,0x45,0xe4, -0xff,0x00,0xd0,0xb3,0x5f,0x4c,0x6a,0xdf,0xf0,0x46,0x1f,0x8b,0x96,0xc7,0xfe,0x25, -0xfe,0x2c,0xf0,0x85,0xf0,0xff,0x00,0xa6,0xb3,0x5c,0xc2,0x7f,0xf4,0x4b,0x57,0x29, -0x7d,0xff,0x00,0x04,0x87,0xf8,0xfd,0x68,0x48,0x8a,0x1f,0x0d,0x5e,0x81,0xde,0x1d, -0x57,0x19,0xff,0x00,0xbe,0xd1,0x68,0x1d,0x99,0xe6,0x56,0x1f,0xf0,0x50,0xcf,0xda, -0x23,0x4f,0x60,0x53,0xe2,0x86,0xab,0x28,0x1d,0xae,0x22,0x82,0x5f,0xfd,0x0a,0x33, -0x5d,0x4e,0x9b,0xff,0x00,0x05,0x4c,0xfd,0xa3,0x34,0xec,0x67,0xc6,0x36,0x97,0x80, -0x76,0xb9,0xd2,0x2d,0x9b,0x3f,0x92,0x03,0x4b,0xa9,0xff,0x00,0xc1,0x2c,0x7f,0x68, -0xdd,0x3c,0x9d,0x9e,0x0d,0xb4,0xbd,0x03,0xbd,0xb6,0xb1,0x68,0x73,0xf8,0x34,0x8a, -0x6b,0x8d,0xbf,0xff,0x00,0x82,0x7f,0xfe,0xd0,0xba,0x73,0xb2,0xc9,0xf0,0xb3,0x5a, -0x93,0x6f,0x7b,0x7f,0x2a,0x50,0x7e,0x9b,0x5c,0xe6,0x8d,0x03,0x53,0xd5,0xac,0x7f, -0xe0,0xaf,0x7f,0x1f,0x6d,0x14,0x09,0x64,0xf0,0xcd,0xe7,0xfb,0x53,0x69,0x44,0x1f, -0xfc,0x72,0x45,0xae,0x9f,0x4b,0xff,0x00,0x82,0xce,0xfc,0x5e,0xb4,0x50,0x2f,0x7c, -0x2f,0xe1,0x1b,0xff,0x00,0x53,0xf6,0x7b,0x88,0xcf,0xe9,0x35,0x7c,0xc5,0x7b,0xfb, -0x1b,0xfc,0x73,0xd3,0xf7,0x79,0xff,0x00,0x09,0xbc,0x5c,0x02,0x8c,0x92,0x9a,0x4c, -0xce,0x07,0xe2,0xaa,0x6b,0x90,0xd4,0x7e,0x0a,0xfc,0x42,0xd1,0xd9,0x96,0xfb,0xc0, -0x9e,0x25,0xb4,0x2b,0xf7,0xbc,0xed,0x22,0xe1,0x71,0xf9,0xa5,0x1a,0x05,0xd9,0xf7, -0xa6,0x9f,0xff,0x00,0x05,0xb3,0xf1,0x7c,0x48,0x3e,0xdd,0xf0,0xcb,0x44,0xb8,0x7f, -0x5b,0x7d,0x46,0x68,0x87,0xe4,0x55,0xab,0x7f,0x4f,0xff,0x00,0x82,0xdd,0xce,0x31, -0xf6,0xef,0x84,0x91,0xb7,0xa9,0xb7,0xd7,0x88,0xfd,0x0c,0x06,0xbf,0x32,0xee,0x7c, -0x31,0xac,0x59,0x92,0x27,0xd2,0xaf,0x61,0x23,0xaf,0x99,0x6c,0xeb,0x8f,0xcc,0x56, -0x73,0xa1,0x8d,0xb6,0xb0,0x2a,0xde,0x87,0x8a,0x34,0x0b,0xb3,0xf5,0xc7,0x4a,0xff, -0x00,0x82,0xd8,0xf8,0x36,0x54,0xce,0xa5,0xf0,0xd7,0x5d,0xb6,0x6e,0xe2,0xd2,0xfa, -0x19,0x87,0xfe,0x3c,0x12,0xba,0x0b,0x2f,0xf8,0x2d,0x17,0xc2,0x59,0x71,0xf6,0x9f, -0x06,0xf8,0xc6,0xdc,0xfa,0xa4,0x36,0xae,0x3f,0xf4,0x78,0xaf,0xc6,0xdc,0xe7,0xbd, -0x18,0x34,0x58,0x2e,0xcf,0xdb,0xbd,0x37,0xfe,0x0a,0xfd,0xf0,0x16,0xf5,0x03,0x5c, -0x7f,0xc2,0x4d,0x60,0x4f,0x69,0xb4,0xb0,0xf8,0xff,0x00,0xbe,0x24,0x6a,0xe9,0xec, -0xbf,0xe0,0xaa,0x5f,0xb3,0x75,0xdc,0x41,0xe4,0xf1,0xb5,0xdd,0xa3,0x1f,0xe0,0x9b, -0x44,0xbd,0x24,0x7e,0x2b,0x11,0x1f,0xad,0x7e,0x0e,0xe2,0x8a,0x2c,0x1c,0xc7,0xf4, -0x01,0x63,0xff,0x00,0x05,0x23,0xfd,0x9c,0x6f,0xc0,0xd9,0xf1,0x32,0xce,0x2c,0xf6, -0x9e,0xc6,0xee,0x3f,0xfd,0x0a,0x21,0x5d,0x6e,0x99,0xfb,0x6a,0xfc,0x06,0xd5,0xe3, -0x0f,0x07,0xc5,0xcf,0x08,0xc6,0x0f,0x6b,0xad,0x56,0x2b,0x73,0xf9,0x48,0x54,0xd7, -0xf3,0xa5,0x9a,0x29,0x58,0x39,0x8f,0xe9,0x32,0xcf,0xf6,0x9c,0xf8,0x3f,0xa8,0x15, -0x16,0xdf,0x15,0x3c,0x17,0x39,0x6e,0x82,0x3f,0x10,0x5a,0x1c,0xff,0x00,0xe4,0x4a, -0xeb,0xb4,0xdf,0x1f,0x78,0x63,0x59,0x50,0xd6,0x1e,0x22,0xd2,0x6f,0x94,0xf2,0x0d, -0xb5,0xf4,0x52,0x03,0xf9,0x31,0xaf,0xe6,0x16,0x9c,0xb2,0x32,0x10,0x55,0x8a,0x91, -0xdc,0x1a,0x2c,0x1c,0xc7,0xf5,0x25,0x14,0xf1,0xcc,0x9b,0xe3,0x75,0x75,0xf5,0x52, -0x08,0xa7,0xe6,0xbf,0x97,0x8b,0x7f,0x10,0xea,0xb6,0x98,0xf2,0x35,0x3b,0xc8,0x71, -0xd3,0xcb,0xb8,0x75,0xc7,0xe4,0x6b,0x7b,0x4f,0xf8,0xc3,0xe3,0xcd,0x2b,0x1f,0x62, -0xf1,0xb7,0x88,0xad,0x31,0xd3,0xc9,0xd5,0x67,0x4c,0x7e,0x4f,0x45,0x87,0xcc,0x7f, -0x4d,0x39,0xa5,0xaf,0xe7,0x07,0x4e,0xfd,0xae,0x3e,0x35,0xe9,0x48,0xa9,0x69,0xf1, -0x5b,0xc5,0xf0,0xa2,0xf0,0x17,0xfb,0x66,0x72,0x3f,0x22,0xd5,0xd1,0xe9,0xff,0x00, -0xb7,0xbf,0xed,0x07,0xa6,0xe3,0xca,0xf8,0xab,0xaf,0xc9,0x8e,0xd7,0x12,0x24,0xdf, -0xfa,0x1a,0x9a,0x2c,0x1c,0xc8,0xfe,0x86,0xe8,0xaf,0xc0,0xed,0x33,0xfe,0x0a,0x75, -0xfb,0x46,0xe9,0x7d,0x3c,0x7c,0x2e,0x87,0xa5,0xd6,0x99,0x69,0x27,0xf3,0x8f,0x35, -0xd2,0xd9,0x7f,0xc1,0x5b,0x3f,0x68,0x4b,0x5c,0x79,0xba,0xae,0x85,0x79,0xff,0x00, -0x5d,0xb4,0x88,0xc6,0x7f,0xef,0x82,0xb4,0x58,0x77,0x47,0xee,0x65,0x15,0xf8,0xa9, -0xa6,0xff,0x00,0xc1,0x63,0xbe,0x37,0x5a,0x11,0xf6,0xad,0x2f,0xc2,0x77,0xc3,0xbe, -0xeb,0x09,0x90,0xff,0x00,0xe3,0xb3,0x0a,0xea,0xf4,0xff,0x00,0xf8,0x2d,0x67,0xc4, -0x28,0x71,0xf6,0xdf,0x87,0xfe,0x1b,0xb9,0xff,0x00,0xae,0x33,0xdc,0x45,0xfc,0xd9, -0xa8,0xb0,0x5d,0x1f,0xb0,0x14,0x57,0xe4,0xf5,0x8f,0xfc,0x16,0xe7,0x5b,0x56,0x1f, -0x6c,0xf8,0x51,0x60,0xeb,0xdc,0xc1,0xad,0x3a,0x9f,0xd6,0x13,0x5d,0x66,0x99,0xff, -0x00,0x05,0xb7,0xd0,0x5d,0x07,0xf6,0x8f,0xc2,0xdd,0x4a,0x27,0xef,0xf6,0x5d,0x56, -0x37,0x1f,0xf8,0xf4,0x62,0x8b,0x05,0xd1,0xfa,0x6b,0x45,0x7e,0x77,0xd8,0xff,0x00, -0xc1,0x6a,0x7e,0x18,0xc8,0x83,0xed,0x7e,0x06,0xf1,0x6c,0x12,0x1e,0xa2,0x1f,0xb2, -0xc8,0x07,0xe2,0x65,0x5f,0xe5,0x5d,0x16,0x9b,0xff,0x00,0x05,0x8e,0xf8,0x23,0x76, -0x07,0xda,0x74,0xaf,0x17,0x58,0x9e,0xfb,0xec,0x21,0x7c,0x7f,0xdf,0x33,0x1a,0x56, -0x0b,0xa3,0xee,0xea,0x2b,0xe3,0xdd,0x33,0xfe,0x0a,0xbd,0xfb,0x3a,0xdf,0x45,0xbe, -0x7f,0x12,0x6a,0xba,0x71,0xfe,0xe5,0xce,0x8d,0x72,0xc7,0xff,0x00,0x21,0xab,0x0a, -0xdd,0xb2,0xff,0x00,0x82,0x9c,0x7e,0xcd,0xd7,0xcc,0x14,0x7c,0x43,0x10,0x93,0xff, -0x00,0x3d,0xb4,0xab,0xd4,0xfe,0x70,0xd0,0x3b,0x9f,0x52,0xd1,0x5e,0x13,0xa6,0xfe, -0xdd,0x5f,0x00,0x35,0x58,0x95,0xe2,0xf8,0xb1,0xe1,0xa8,0x81,0xed,0x75,0x77,0xe4, -0x1f,0xc9,0xc0,0x35,0xbd,0x6b,0xfb,0x59,0x7c,0x14,0xbd,0x0a,0x61,0xf8,0xb5,0xe0, -0xa6,0xdd,0xd0,0x1d,0x7e,0xd4,0x13,0xf8,0x17,0xa0,0x0f,0x58,0xa2,0xb8,0xed,0x33, -0xe3,0x27,0x80,0xb5,0xa4,0x56,0xd3,0xfc,0x6d,0xe1,0xdb,0xd5,0x6e,0x86,0xdf,0x55, -0x81,0xf3,0xf9,0x3d,0x74,0xd6,0x9a,0xb5,0x8d,0xfc,0x61,0xed,0xaf,0x2d,0xee,0x10, -0xf4,0x68,0xa5,0x56,0x07,0xf1,0x06,0x80,0x2d,0xd4,0x17,0x56,0x70,0x5e,0x46,0x63, -0x9e,0x08,0xe7,0x8c,0xf5,0x59,0x14,0x30,0x3f,0x81,0xa9,0x43,0x82,0x32,0x0e,0x7e, -0x94,0xb9,0xa4,0xd2,0x6a,0xcc,0x37,0x39,0x4b,0xff,0x00,0x85,0x9e,0x14,0xd4,0x41, -0x12,0xe8,0x56,0x6a,0x4f,0x56,0x85,0x3c,0xa3,0xf9,0xae,0x2b,0x02,0xf3,0xf6,0x7d, -0xf0,0x95,0xc6,0x7c,0xb8,0x6e,0xad,0x73,0xff,0x00,0x3c,0xae,0x09,0xff,0x00,0xd0, -0xb3,0x5e,0x95,0x9a,0x2b,0x86,0xa6,0x5f,0x84,0xab,0xf1,0xd2,0x8b,0xf9,0x23,0x07, -0x42,0x9c,0xb7,0x8a,0x3c,0x7e,0x6f,0xd9,0xa7,0x44,0x63,0xfb,0xad,0x57,0x50,0x4f, -0xf7,0xbc,0xb6,0xff,0x00,0xd9,0x45,0x56,0x6f,0xd9,0x9b,0x4f,0xcf,0xcb,0xad,0x5c, -0x8f,0xac,0x4a,0x7f,0xad,0x7b,0x55,0x26,0x2b,0x8d,0xe4,0xb9,0x7b,0xff,0x00,0x97, -0x4b,0xf1,0xff,0x00,0x33,0x3f,0xaa,0x50,0xfe,0x53,0xc6,0x13,0xf6,0x66,0xd3,0x54, -0xfc,0xda,0xcd,0xd1,0xff,0x00,0x76,0x35,0x15,0x7e,0xd3,0xf6,0x70,0xf0,0xdc,0x0c, -0x0c,0xd7,0x7a,0x85,0xcf,0xb3,0x48,0x8a,0x3f,0x45,0xaf,0x58,0xc5,0x2d,0x38,0xe4, -0xd8,0x08,0xed,0x49,0x02,0xc2,0xd1,0x5f,0x64,0xe2,0x74,0xcf,0x83,0x7e,0x11,0xd2, -0x88,0x29,0xa3,0xc5,0x3b,0x7a,0xdc,0xb3,0x4b,0xfa,0x31,0x22,0xba,0xfb,0x4b,0x2b, -0x7b,0x08,0x56,0x1b,0x68,0x23,0x82,0x25,0xe0,0x24,0x48,0x14,0x0f,0xc0,0x54,0xf4, -0x57,0xa5,0x4b,0x0f,0x46,0x82,0xb5,0x28,0x25,0xe8,0x8e,0x88,0xc2,0x30,0xf8,0x55, -0x82,0x8a,0x28,0xae,0x82,0xc2,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x0c,0xef,0x10, -0xcb,0xe4,0xe8,0x97,0xaf,0xe9,0x13,0x7f,0x2a,0xf8,0x0b,0xe2,0x14,0xe6,0x7f,0x11, -0x5d,0x31,0xe7,0xe6,0x35,0xf7,0x7f,0x8e,0x66,0xf2,0x3c,0x2d,0xa8,0x36,0x71,0xfb, -0xb2,0x2b,0xe0,0x2f,0x18,0x4b,0xe6,0xeb,0x37,0x6d,0xfe,0xd1,0xaf,0x88,0xe2,0x29, -0x7b,0xf4,0xa3,0xea,0x7c,0x67,0x12,0x4a,0xd4,0xa2,0x8f,0x00,0xf8,0xed,0x75,0xe5, -0x68,0x93,0x8c,0xf4,0x42,0x7f,0x4a,0xfd,0x6a,0xf8,0x37,0xa6,0xff,0x00,0x63,0x7c, -0x24,0xf0,0x55,0x81,0x50,0x86,0xdb,0x45,0xb3,0x88,0xa8,0x18,0xc1,0x10,0xa0,0xaf, -0xc8,0x7f,0x8e,0xbf,0xe9,0x36,0x82,0xd8,0x13,0x99,0x59,0x63,0xe3,0xfd,0xa3,0x8f, -0xeb,0x5f,0xb3,0x7a,0x25,0xa8,0xb1,0xd1,0xec,0x6d,0x87,0x48,0x60,0x8e,0x31,0xf8, -0x28,0x1f,0xd2,0xbd,0xcc,0xa9,0x5a,0x82,0x38,0xf8,0x3e,0x3f,0xec,0xd5,0x27,0xde, -0x45,0xea,0x28,0xa2,0xbd,0xb3,0xef,0xcf,0xcd,0xfd,0x0b,0x4e,0x93,0xc4,0x1e,0x25, -0x8e,0xce,0x20,0x5a,0x4b,0x8b,0x92,0xbf,0x9b,0x1a,0xfd,0x0a,0xf0,0xbe,0x8b,0x17, -0x87,0xb4,0x1b,0x1d,0x3a,0x15,0xc2,0x41,0x12,0xa7,0xe3,0x8e,0x6b,0xe1,0x7f,0x80, -0x9a,0xce,0x9f,0xa2,0x7c,0x4f,0x67,0xd6,0x07,0x96,0x6c,0xae,0x65,0x88,0xa3,0x8e, -0x56,0x40,0xe4,0x73,0x9f,0xa5,0x7d,0xb5,0x6f,0xf1,0x0b,0x40,0xb8,0x50,0x57,0x51, -0x8b,0xf1,0x35,0xf2,0x19,0x34,0x29,0xd1,0x9d,0x59,0xce,0x49,0x4a,0xf6,0xf9,0x1f, -0x11,0xc3,0x2a,0x9a,0xc3,0xca,0xa4,0x9f,0xbc,0xdd,0xbe,0xe3,0xa4,0xa2,0xb1,0xe3, -0xf1,0x6e,0x91,0x2f,0xdd,0xbf,0x84,0xff,0x00,0xc0,0xaa,0xd2,0x6b,0x76,0x12,0x7d, -0xdb,0xc8,0x4f,0xfc,0x0c,0x57,0xd5,0xaa,0x90,0x7b,0x34,0x7d,0xaa,0x94,0x5f,0x52, -0xf5,0x23,0x67,0x1c,0x75,0xf7,0xa8,0x12,0xf6,0xde,0x5f,0xb9,0x3c,0x6d,0xf4,0x61, -0x52,0x89,0x50,0xf4,0x70,0x7f,0x1a,0xbb,0xa6,0x3b,0x8e,0x19,0xc0,0xc8,0xe6,0x8a, -0x40,0xd9,0x1d,0x69,0x73,0x4c,0x62,0xd1,0x49,0x45,0x00,0x2d,0x14,0x51,0x40,0x05, -0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x09,0x8a,0x5a,0x28,0xa0, -0x02,0x8a,0x28,0xa0,0x02,0x92,0x96,0x8a,0x00,0x4c,0x0f,0x4a,0x31,0x4b,0x45,0x00, -0x25,0x2d,0x14,0x50,0x01,0x45,0x14,0x50,0x03,0x1e,0x24,0x91,0x4a,0xba,0x2b,0x29, -0xea,0x08,0xc8,0xac,0x4d,0x5b,0xc0,0x5e,0x19,0xd7,0xa2,0x31,0xea,0x7e,0x1d,0xd2, -0x75,0x18,0xcf,0x54,0xba,0xb1,0x8a,0x50,0x7f,0x06,0x53,0x5b,0xd4,0x50,0x07,0x98, -0xdf,0x7e,0xcb,0xdf,0x07,0x35,0x26,0x66,0xba,0xf8,0x51,0xe0,0xa9,0xd9,0xba,0xb3, -0xf8,0x7e,0xd0,0x93,0xf8,0xf9,0x75,0x85,0xa9,0xfe,0xc5,0x1f,0x01,0xb5,0x58,0xca, -0x4d,0xf0,0x8f,0xc2,0x31,0x8f,0x5b,0x6d,0x2a,0x28,0x0f,0xe7,0x18,0x53,0x5e,0xd7, -0x45,0x00,0x7c,0xcb,0xa9,0x7f,0xc1,0x35,0xff,0x00,0x67,0x0d,0x53,0x3e,0x67,0xc3, -0x4b,0x58,0x49,0xef,0x6d,0xa8,0x5d,0xc3,0xff,0x00,0xa0,0xca,0x2b,0x9e,0xbe,0xff, -0x00,0x82,0x54,0x7e,0xce,0x37,0x6b,0x88,0xbc,0x21,0x7f,0x64,0x7f,0xbd,0x06,0xb7, -0x78,0x4f,0xfe,0x3f,0x23,0x57,0xd7,0x74,0x50,0x16,0x3e,0x1b,0xd6,0x3f,0xe0,0x8f, -0x5f,0x02,0xb5,0x01,0xfe,0x89,0x71,0xe2,0x9d,0x2c,0xff,0x00,0xd3,0xbe,0xa4,0x8f, -0xff,0x00,0xa3,0x23,0x6a,0xe5,0xae,0xbf,0xe0,0x8a,0xff,0x00,0x0b,0x1c,0x9f,0xb3, -0xf8,0xe3,0xc6,0x10,0xe7,0xa7,0x98,0xd6,0xaf,0x8f,0xca,0x11,0x5f,0xa1,0xb4,0x50, -0x2b,0x23,0xf3,0x37,0x55,0xff,0x00,0x82,0x25,0x78,0x72,0x40,0xdf,0xd9,0x9f,0x14, -0x35,0x4b,0x73,0xdb,0xed,0x7a,0x5c,0x72,0xe3,0xfe,0xf9,0x75,0xae,0x4e,0xef,0xfe, -0x08,0x8b,0xab,0xab,0x1f,0xb2,0xfc,0x59,0xb1,0x91,0x7b,0x09,0xb4,0x37,0x53,0xf8, -0xe2,0x73,0x5f,0xab,0xd4,0x50,0x16,0x47,0xe4,0x0e,0xa5,0xff,0x00,0x04,0x51,0xf8, -0x81,0x10,0x3f,0x60,0xf8,0x85,0xe1,0xbb,0xa3,0xdb,0xcf,0xb7,0x9e,0x1c,0xfe,0x41, -0xab,0x8f,0xd4,0xff,0x00,0xe0,0x8e,0x7f,0x1c,0x2d,0x1b,0x16,0xba,0x97,0x84,0xaf, -0xc7,0xaa,0xea,0x12,0xa7,0xe8,0xd0,0xd7,0xed,0x6d,0x18,0xa7,0x70,0xb2,0x3f,0x0c, -0x35,0x0f,0xf8,0x24,0xc7,0xed,0x0d,0x65,0x9f,0x2b,0x45,0xd1,0x6f,0xb1,0xff,0x00, -0x3e,0xfa,0xc4,0x43,0x3f,0xf7,0xde,0xda,0xe5,0x35,0x6f,0xf8,0x26,0x9f,0xed,0x1d, -0xa4,0xb1,0x07,0xe1,0xcc,0xd7,0x60,0x75,0x6b,0x5d,0x42,0xd2,0x41,0xff,0x00,0xa3, -0x6b,0xf7,0xeb,0x14,0x62,0x8b,0x85,0x91,0xfc,0xf0,0x5e,0xfe,0xc2,0x3f,0xb4,0x05, -0x81,0x22,0x5f,0x85,0x1e,0x22,0x6c,0x7f,0xcf,0x1b,0x71,0x2f,0xfe,0x80,0x4d,0x72, -0xfa,0xa7,0xec,0xb7,0xf1,0x8b,0x46,0x62,0xb7,0x9f,0x0b,0x7c,0x5f,0x16,0x3a,0x91, -0xa2,0x5c,0x38,0x1f,0x8a,0xa1,0x15,0xfd,0x23,0xd1,0x8a,0x2e,0x2b,0x1f,0xcc,0x7d, -0xff,0x00,0xc2,0xef,0x19,0xe9,0x4c,0x56,0xf7,0xc2,0x5a,0xed,0x99,0x1d,0x44,0xfa, -0x6c,0xc9,0x8f,0xcd,0x6b,0x02,0xe7,0x4e,0xbb,0xb3,0x62,0xb3,0xda,0xcd,0x03,0x0e, -0xa2,0x48,0xca,0x91,0xf9,0x8a,0xfe,0xa3,0xf0,0x2a,0xbd,0xc6,0x99,0x67,0x76,0x8c, -0x93,0xda,0xc1,0x32,0xb7,0x05,0x64,0x8c,0x30,0x3f,0x98,0xa2,0xe1,0xca,0x7f,0x2e, -0x18,0xa2,0xbf,0xa6,0x6d,0x43,0xe0,0xc7,0xc3,0xed,0x58,0xb1,0xbe,0xf0,0x2f,0x86, -0xaf,0x0b,0x72,0xc6,0x7d,0x22,0xdd,0xc9,0xfa,0xe5,0x2b,0x9e,0xbd,0xfd,0x95,0xbe, -0x0c,0xea,0x0a,0xcb,0x3f,0xc2,0x8f,0x06,0x3e,0xee,0xa4,0x68,0x36,0xca,0x7f,0x30, -0x80,0xd1,0x71,0x72,0x9f,0xcd,0xd5,0x18,0x3d,0x6b,0xfa,0x1a,0xd5,0x7f,0x60,0x8f, -0xd9,0xf7,0x58,0x56,0x13,0xfc,0x29,0xd0,0x23,0xdd,0xd4,0xda,0xc4,0xd0,0x1f,0xcd, -0x18,0x57,0x23,0x77,0xff,0x00,0x04,0xbb,0xfd,0x9b,0x2e,0xd9,0x9b,0xfe,0x15,0xfc, -0x90,0x33,0x73,0x98,0x75,0xbb,0xf1,0xfa,0x79,0xf8,0x1f,0x95,0x3b,0x87,0x29,0xf8, -0x27,0x45,0x7e,0xe5,0xeb,0x3f,0xf0,0x49,0x4f,0xd9,0xef,0x53,0x8c,0xad,0xae,0x91, -0xad,0xe9,0x07,0xb3,0x5a,0x6b,0x12,0xb9,0x1f,0xf7,0xf7,0x7d,0x71,0xd7,0xbf,0xf0, -0x46,0x0f,0x83,0x73,0xb9,0x6b,0x7f,0x14,0xf8,0xd6,0xdb,0x3f,0xc3,0xf6,0xcb,0x47, -0x03,0xf3,0xb6,0xcf,0xeb,0x45,0xc3,0x94,0xfc,0x65,0xa2,0xbf,0x5f,0xb5,0x5f,0xf8, -0x22,0x97,0xc3,0xc9,0x50,0x0d,0x37,0xe2,0x0f,0x89,0xed,0x5f,0xd6,0xea,0x1b,0x79, -0xc7,0xe4,0xa8,0x95,0xc8,0xea,0x7f,0xf0,0x44,0x58,0x49,0x3f,0xd9,0xdf,0x16,0x9d, -0x7d,0x05,0xd6,0x85,0x9f,0xd5,0x67,0x14,0x5c,0x56,0x67,0xe5,0x7d,0x48,0x97,0x33, -0x45,0xf7,0x25,0x74,0xff,0x00,0x75,0x88,0xaf,0xd2,0x8b,0xef,0xf8,0x22,0x57,0x8a, -0x63,0xcf,0xd8,0xfe,0x28,0xe9,0x13,0xfa,0x79,0xfa,0x54,0xb1,0x67,0xf2,0x91,0xab, -0x95,0xd4,0xff,0x00,0xe0,0x8c,0x1f,0x16,0xad,0xc9,0xfb,0x0f,0x8b,0x3c,0x27,0x7a, -0x07,0x4f,0x32,0x6b,0x88,0x89,0xff,0x00,0xc8,0x46,0x80,0xb3,0x3e,0x19,0xd3,0xfc, -0x77,0xe2,0x5d,0x25,0x95,0xac,0x7c,0x43,0xaa,0xd9,0x95,0xe4,0x1b,0x7b,0xd9,0x13, -0x1f,0x93,0x57,0x63,0xa7,0x7e,0xd3,0xbf,0x17,0xf4,0x95,0x55,0xb3,0xf8,0xa1,0xe2, -0xfb,0x74,0x5e,0x8a,0x9a,0xdd,0xc8,0x03,0xf0,0xdf,0x5f,0x47,0x5e,0x7f,0xc1,0x20, -0x7e,0x3e,0x5b,0x13,0xe5,0x8f,0x0b,0xdd,0x81,0xd3,0xc9,0xd5,0x58,0x67,0xfe,0xfa, -0x8c,0x57,0x35,0xa9,0xff,0x00,0xc1,0x2b,0xff,0x00,0x68,0xcd,0x3c,0x31,0x8f,0xc2, -0x16,0x77,0xd8,0xff,0x00,0x9f,0x5d,0x5e,0xd8,0xe7,0xe9,0xb9,0xd6,0x80,0xd4,0xf3, -0x8b,0x4f,0xdb,0x7b,0xe3,0xdd,0x96,0x3c,0xaf,0x8b,0x3e,0x29,0x38,0xe9,0xe6,0xdf, -0xb4,0x9f,0xfa,0x16,0x6b,0xa5,0xd3,0x7f,0xe0,0xa3,0xbf,0xb4,0x5e,0x99,0x81,0x1f, -0xc4,0xbb,0xd9,0x80,0xed,0x73,0x69,0x6d,0x2e,0x7f,0xef,0xa8,0xcd,0x56,0xbf,0xff, -0x00,0x82,0x78,0x7e,0xd1,0x3a,0x71,0x3e,0x67,0xc2,0xed,0x52,0x4c,0x7f,0xcf,0x09, -0xed,0xe5,0xff,0x00,0xd0,0x64,0x35,0xcd,0x6a,0x5f,0xb1,0x97,0xc7,0x4d,0x28,0x91, -0x71,0xf0,0x9f,0xc5,0x9c,0x75,0x30,0xe9,0x92,0x4a,0x3f,0x34,0x06,0x80,0xd4,0xf5, -0x8b,0x2f,0xf8,0x2a,0xd7,0xed,0x17,0x68,0xa0,0x3f,0x8a,0x34,0xdb,0xac,0x77,0x9f, -0x46,0xb7,0xe7,0xfe,0xf9,0x51,0x5b,0xf6,0x1f,0xf0,0x57,0xff,0x00,0x8f,0x56,0xa4, -0x79,0xeb,0xe1,0x8b,0xc0,0x3a,0xf9,0xba,0x5b,0x29,0x3f,0xf7,0xcc,0x82,0xbe,0x5b, -0xd4,0xfe,0x04,0xfc,0x49,0xd1,0x5c,0xa5,0xf7,0xc3,0xff,0x00,0x14,0x5a,0x30,0xea, -0x25,0xd1,0xee,0x17,0xff,0x00,0x64,0xae,0x7e,0xf3,0xc1,0x5e,0x21,0xd3,0xce,0x2e, -0xb4,0x1d,0x4e,0xd8,0xff,0x00,0xd3,0x6b,0x39,0x13,0xf9,0xad,0x03,0xd4,0xfb,0xcb, -0x4d,0xff,0x00,0x82,0xd2,0xfc,0x51,0xb7,0x50,0x2f,0x7c,0x15,0xe1,0x5b,0xcf,0x52, -0x82,0xe2,0x23,0xff,0x00,0xa3,0x0d,0x74,0x56,0x5f,0xf0,0x5b,0x5f,0x14,0x2e,0x05, -0xdf,0xc3,0x0d,0x22,0x5f,0x53,0x06,0xa7,0x2a,0x7f,0x34,0x35,0xf9,0xab,0x34,0x12, -0xdb,0xb6,0xd9,0x63,0x78,0x9b,0xd1,0xd4,0x83,0x4c,0xa3,0x40,0xbb,0x3f,0x54,0x74, -0xbf,0xf8,0x2d,0xcd,0xbe,0x40,0xd4,0x7e,0x14,0x4a,0x07,0x73,0x6b,0xad,0x03,0xfa, -0x34,0x35,0xd4,0x58,0xff,0x00,0xc1,0x6b,0xfc,0x07,0x20,0x1f,0x6c,0xf8,0x77,0xe2, -0x38,0x0f,0xfd,0x30,0xb9,0xb7,0x93,0xf9,0x95,0xaf,0xc8,0x6c,0x51,0x45,0x85,0xcc, -0xcf,0xd9,0x9d,0x3b,0xfe,0x0b,0x39,0xf0,0x82,0xe4,0x81,0x77,0xe1,0x8f,0x17,0xd9, -0x67,0xf8,0xbe,0xcd,0x6f,0x20,0x1f,0x94,0xd5,0xd7,0x69,0xdf,0xf0,0x56,0xff,0x00, -0xd9,0xf6,0xf2,0x20,0xd7,0x1a,0x96,0xbd,0xa7,0xb1,0xfe,0x19,0xf4,0x99,0x18,0x8f, -0xfb,0xe0,0xb0,0xaf,0xc3,0x8a,0xb5,0xa4,0xd8,0xbe,0xa7,0xaa,0xd9,0xd9,0xc4,0xbb, -0xa5,0xb8,0x99,0x21,0x50,0x3b,0x96,0x60,0x07,0xf3,0xa2,0xc3,0xb9,0xfd,0x3f,0xe8, -0x3a,0xd5,0xb7,0x88,0xf4,0x4d,0x3f,0x56,0xb3,0x2e,0x6c,0xef,0xed,0xe3,0xba,0x84, -0xc8,0xa5,0x58,0xa3,0xa8,0x65,0xca,0x9e,0x41,0xc1,0x1c,0x1a,0xbf,0x55,0x34,0xab, -0x18,0xf4,0xcd,0x32,0xd2,0xce,0x14,0x11,0xc5,0x6f,0x0a,0x44,0x88,0x3a,0x28,0x55, -0x00,0x0f,0xd2,0xad,0xd4,0x96,0x14,0x51,0x45,0x00,0x72,0x3f,0x14,0xe7,0xfb,0x3f, -0x83,0x6f,0x4f,0xa8,0xc5,0x7c,0x0d,0xe2,0x29,0x37,0xdf,0xdd,0x37,0xab,0x9a,0xfb, -0x9b,0xe3,0x65,0xcf,0x91,0xe0,0xc9,0x87,0xf7,0x8e,0x3f,0x4a,0xf8,0x43,0x5a,0x7d, -0xd3,0x4e,0xde,0xac,0x6b,0xe0,0x33,0xe7,0x7c,0x54,0x23,0xd9,0x1f,0x01,0xc4,0xf3, -0xb2,0x48,0xf1,0x4f,0x1a,0x42,0x35,0x2f,0x88,0x9e,0x12,0xb1,0x64,0xf3,0x16,0xe7, -0x5a,0xb2,0x84,0xa6,0x33,0xb8,0x34,0xe8,0x08,0xfc,0x8d,0x7e,0xcc,0xa0,0x0a,0xa1, -0x40,0xc0,0x1c,0x57,0xe3,0xef,0x87,0xac,0x9f,0x5c,0xfd,0xa4,0xfe,0x19,0x59,0x2f, -0x3b,0xbc,0x47,0x67,0x26,0x3d,0x92,0x40,0xe7,0xff,0x00,0x40,0xaf,0xd8,0x31,0x5f, -0x57,0x97,0x46,0xd4,0x11,0xd7,0xc2,0x71,0xe5,0xcb,0xef,0xdd,0xb1,0x68,0xa2,0x8a, -0xf5,0x0f,0xb4,0x3f,0x3c,0xbf,0x6b,0x4f,0x07,0xde,0xfc,0x28,0xf8,0xc1,0x3e,0xbf, -0x6f,0x19,0x5d,0x0b,0xc4,0x4d,0xf6,0x95,0x78,0xc6,0x04,0x73,0x80,0x04,0xaa,0x7d, -0xc9,0xf9,0xff,0x00,0xe0,0x47,0xd2,0xb9,0x0d,0x2b,0xc6,0x12,0x5d,0xc4,0xaf,0x15, -0xeb,0xe0,0x8e,0xcf,0x5f,0xa1,0xbf,0x13,0xfe,0x1a,0x68,0xdf,0x15,0xfc,0x21,0x77, -0xe1,0xfd,0x6e,0x0f,0x36,0xda,0x61,0xba,0x39,0x57,0x1b,0xe0,0x90,0x0f,0x96,0x44, -0x3d,0x88,0xcf,0xe3,0xc8,0x3c,0x1a,0xfc,0xed,0xf8,0x9f,0xfb,0x2e,0xf8,0xe3,0xe1, -0x16,0xa9,0x33,0xdb,0xac,0x97,0xda,0x46,0xec,0xc3,0x7f,0x6e,0xa4,0xc6,0xc3,0x3c, -0x06,0x1f,0xc2,0x7d,0x8f,0xe1,0x9a,0xf9,0x3c,0xcb,0x2d,0x84,0xe4,0xea,0x6c,0x7e, -0x4f,0x9d,0xe5,0x78,0x9c,0x16,0x22,0x58,0xac,0x22,0x6e,0x13,0x77,0x69,0x74,0x66, -0xfc,0x3e,0x28,0xd4,0x23,0xe6,0x3b,0xf9,0x47,0xfc,0x0e,0xaf,0x43,0xe3,0x9d,0x6e, -0x1f,0xbb,0xa9,0x4b,0xf8,0xb5,0x78,0xb9,0xb9,0xf1,0x3e,0x9f,0xf2,0x4d,0x68,0x5c, -0x8e,0xf8,0xe4,0xd2,0x8f,0x15,0xeb,0x11,0x7d,0xfb,0x09,0x3f,0x23,0x5f,0x35,0xf5, -0x19,0xaf,0x86,0x4b,0xef,0x3c,0x48,0xe2,0x71,0xd1,0x5f,0x0c,0xbe,0xf3,0xdd,0x21, -0xf8,0x9f,0xe2,0x38,0x0f,0xcb,0xa8,0xb9,0xad,0x1b,0x7f,0x8c,0xfe,0x26,0xb7,0xe9, -0x7a,0xcd,0xf5,0xaf,0x9f,0x57,0xc7,0x97,0x91,0xfd,0xfb,0x49,0x57,0xf0,0x35,0x22, -0x7c,0x46,0x2b,0xf7,0xe2,0x90,0x1f,0x71,0x4d,0x61,0x71,0x31,0xf8,0x64,0xfe,0xf3, -0x55,0x99,0x63,0x61,0xba,0x91,0xf4,0x94,0x1f,0xb4,0x1f,0x8a,0x21,0xc7,0xef,0xf3, -0xf8,0xd6,0xa5,0xbf,0xed,0x33,0xe2,0x38,0xb1,0xbc,0x96,0xc7,0xbd,0x7c,0xc2,0x9f, -0x12,0x60,0xfe,0x2d,0xc3,0xf0,0xab,0x31,0xfc,0x44,0xb4,0x60,0x32,0xff,0x00,0xa5, -0x5a,0x58,0xf8,0xed,0x37,0xf7,0x9b,0x47,0x3c,0xc5,0x43,0x79,0x4b,0xee,0x3e,0xa8, -0xb5,0xfd,0xaa,0x75,0x98,0x88,0xf3,0x22,0xdc,0x3f,0x3a,0xd5,0xb7,0xfd,0xac,0xae, -0x86,0x3c,0xcb,0x6c,0xfa,0xfc,0xa2,0xbe,0x4c,0x8f,0xc7,0x96,0x4d,0xff,0x00,0x2d, -0x16,0xac,0xa7,0x8c,0xac,0x9f,0x1f,0xbd,0x43,0xf8,0xd5,0xac,0x46,0x63,0x0f,0xb4, -0xcd,0xe3,0xc4,0x98,0x88,0xef,0x3f,0xc0,0xfa,0xfe,0xd7,0xf6,0xb2,0x84,0xe3,0xce, -0xb6,0xff,0x00,0xc7,0x6b,0x52,0xdb,0xf6,0xab,0xd2,0xe4,0x23,0xcc,0x80,0x0f,0xc0, -0xd7,0xc6,0x69,0xe2,0x8b,0x37,0xe9,0x2a,0xfe,0x06,0xa7,0x4d,0x7a,0xd5,0xfa,0x38, -0x3f,0x8d,0x52,0xcc,0x73,0x18,0x6e,0xff,0x00,0x03,0xaa,0x3c,0x51,0x5b,0xf9,0x91, -0xf6,0xdd,0xbf,0xed,0x3b,0xe1,0xe9,0x00,0xde,0x30,0x4f,0xfb,0x55,0xa9,0x6d,0xfb, -0x43,0xf8,0x66,0x7c,0x66,0x5d,0xbf,0xf0,0x21,0x5f,0x0a,0xae,0xad,0x6e,0xdd,0x1c, -0x54,0x83,0x50,0x84,0xf4,0x93,0xf5,0xad,0x16,0x73,0x8f,0x8e,0xf6,0xfb,0x8e,0xb8, -0x71,0x45,0x4e,0xb6,0x3e,0xf8,0xb7,0xf8,0xdf,0xe1,0x99,0xc8,0xc5,0xd0,0x1f,0x88, -0xad,0x28,0x3e,0x2a,0xf8,0x72,0x71,0x91,0x7e,0xa3,0xf2,0xaf,0xcf,0xa5,0xbf,0x51, -0xf7,0x66,0x23,0xe8,0x6a,0x64,0xd4,0xe4,0x5f,0xbb,0x70,0xc3,0xfe,0x05,0x5a,0xac, -0xfb,0x14,0xbe,0x28,0x2f,0xc4,0xeb,0x8f,0x13,0xcb,0xac,0x51,0xfa,0x19,0x17,0x8f, -0xb4,0x29,0xbe,0xee,0xa1,0x1f,0xe7,0x57,0x23,0xf1,0x4e,0x95,0x2f,0xdd,0xbe,0x84, -0xff,0x00,0xc0,0xab,0xf3,0xbe,0x3d,0x6e,0xf1,0x3e,0xe5,0xe4,0xa3,0xe8,0xf5,0x66, -0x3f,0x15,0xea,0xb1,0x11,0xb7,0x50,0x9b,0xfe,0xfb,0x35,0xb2,0xe2,0x1a,0x8b,0xe2, -0xa7,0xf8,0x9d,0x51,0xe2,0x58,0x3d,0xe0,0x7e,0x88,0xa6,0xb1,0x63,0x27,0xdd,0xbb, -0x88,0xff,0x00,0xc0,0xc5,0x4a,0xb7,0x90,0x3f,0xdd,0x99,0x0f,0xd1,0x85,0x7e,0x7b, -0x43,0xe3,0xfd,0x7a,0x2f,0xbb,0xa8,0xcb,0xf9,0xd5,0xf8,0x3e,0x2b,0x78,0x8e,0x0c, -0x62,0xf9,0xcf,0xd4,0xd6,0xeb,0x88,0xa3,0xf6,0xa9,0xbf,0xbc,0xe8,0x8f,0x11,0xd0, -0x7b,0xc5,0x9f,0x7f,0x09,0x14,0xff,0x00,0x10,0xfc,0xe9,0x73,0xef,0x5f,0x08,0xc1, -0xf1,0xbf,0xc4,0xd0,0x7f,0xcb,0xd1,0x6f,0xc4,0xd6,0x9d,0xb7,0xed,0x11,0xe2,0x58, -0x3a,0xcb,0x9f,0xf8,0x11,0xad,0xe3,0xc4,0x34,0x1e,0xf0,0x67,0x44,0x78,0x83,0x0a, -0xf7,0xb9,0xf6,0xe0,0x34,0x66,0xbe,0x37,0xb6,0xfd,0xa7,0x35,0xf8,0x71,0xbf,0x2d, -0xf8,0xd6,0xad,0xbf,0xed,0x57,0xaa,0x2f,0xfa,0xc8,0x49,0x1f,0x85,0x6d,0x1c,0xfb, -0x08,0xf7,0xbf,0xdc,0x6f,0x1c,0xf3,0x06,0xfe,0xd1,0xf5,0x9e,0x68,0x07,0x35,0xf3, -0x0d,0xbf,0xed,0x65,0x28,0xff,0x00,0x59,0x6f,0x9f,0xf8,0x0e,0x6b,0x52,0xdb,0xf6, -0xb1,0xb5,0x38,0xf3,0x6d,0xc0,0xfc,0x2b,0xa2,0x39,0xd6,0x09,0xfd,0xaf,0xc0,0xe9, -0x8e,0x6d,0x83,0x97,0xdb,0x3e,0x8b,0xa2,0xbc,0x26,0x0f,0xda,0xa3,0x47,0x7c,0x07, -0x88,0x03,0xdf,0xad,0x6a,0x5b,0x7e,0xd2,0xde,0x1e,0x98,0x0d,0xe4,0x2f,0xfc,0x0a, -0xb7,0x8e,0x6b,0x83,0x97,0xfc,0xbc,0x46,0xf1,0xc7,0xe1,0xa5,0xb4,0xd1,0xec,0x54, -0x57,0x98,0xdb,0xfe,0xd0,0x3e,0x19,0x9f,0xfe,0x5b,0x05,0xff,0x00,0x81,0x56,0x9c, -0x1f,0x19,0xfc,0x35,0x36,0x3f,0xd3,0x00,0xfc,0x45,0x74,0x47,0x1d,0x86,0x96,0xd5, -0x17,0xde,0x6e,0xb1,0x34,0x65,0xb4,0xd1,0xdd,0xd1,0x5c,0xa4,0x1f,0x13,0xfc,0x3d, -0x38,0x18,0xbe,0x41,0xf5,0x35,0x76,0x2f,0x1c,0xe8,0x93,0x7d,0xdb,0xf8,0x8f,0xe3, -0x5b,0x2c,0x45,0x29,0x6d,0x25,0xf7,0x9a,0x2a,0xb4,0xde,0xd2,0x46,0xf5,0x15,0x97, -0x1f,0x89,0x74,0xc9,0x47,0xcb,0x7d,0x09,0xff,0x00,0x81,0x55,0x94,0xd5,0xac,0xe4, -0xfb,0xb7,0x51,0x1f,0xf8,0x10,0xad,0x54,0xe2,0xf6,0x65,0xa9,0x27,0xb3,0x2d,0xd1, -0x51,0x0b,0xa8,0x5b,0xa4,0xa8,0x7f,0xe0,0x42,0x9e,0x1d,0x58,0x64,0x10,0x7e,0x86, -0xaa,0xe8,0xab,0x8e,0xa2,0x93,0x34,0x66,0x98,0x0b,0x45,0x26,0x45,0x19,0xa0,0x05, -0xa2,0x93,0x34,0xb4,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14, -0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14, -0x00,0x51,0x45,0x14,0x00,0x94,0x6d,0x06,0x96,0x8a,0x00,0x4c,0x51,0x8a,0x5a,0x28, -0x01,0x31,0x4d,0x31,0xa1,0x04,0x15,0x04,0x1e,0xb9,0x14,0xfa,0x28,0x03,0x1e,0xfb, -0xc1,0xba,0x06,0xa9,0x9f,0xb6,0x68,0x7a,0x6d,0xde,0x7a,0xf9,0xf6,0x91,0xbe,0x7f, -0x31,0x5c,0xe5,0xf7,0xc0,0x6f,0x86,0x7a,0x9e,0xef,0xb5,0xfc,0x3c,0xf0,0xad,0xc9, -0x6e,0xa6,0x5d,0x16,0xd9,0x89,0xfc,0x4a,0x57,0x77,0x45,0x00,0x78,0xd6,0xa9,0xfb, -0x1a,0x7c,0x0b,0xd6,0x15,0xc5,0xcf,0xc2,0x6f,0x09,0x12,0xfd,0x5a,0x2d,0x2a,0x28, -0x9b,0xfe,0xfa,0x40,0x08,0xae,0x2e,0xfb,0xfe,0x09,0xb1,0xfb,0x37,0x5f,0xbb,0xb4, -0x9f,0x0c,0xad,0x23,0x2d,0xd7,0xc8,0xd4,0x6f,0x22,0x03,0xe8,0x16,0x60,0x05,0x7d, -0x33,0x45,0x00,0x7c,0x97,0x7f,0xff,0x00,0x04,0xb0,0xfd,0x9b,0xaf,0x22,0x65,0x8f, -0xc1,0x17,0x56,0x6c,0x7f,0x8e,0x0d,0x6e,0xf4,0x91,0xff,0x00,0x7d,0x4a,0xc3,0xf4, -0xac,0x5d,0x0f,0xfe,0x09,0x3f,0xf0,0x43,0xc3,0x5e,0x2b,0xd2,0x3c,0x41,0xa7,0x37, -0x89,0x21,0xba,0xd2,0xef,0x61,0xbe,0x86,0x17,0xd4,0x52,0x48,0x59,0xe3,0x70,0xe1, -0x58,0x34,0x44,0x95,0x25,0x40,0x23,0x3d,0x3b,0xd7,0xd9,0xd4,0x50,0x2b,0x05,0x14, -0x51,0x40,0xc2,0x8a,0x28,0xa0,0x0f,0x29,0xfd,0xa1,0x2e,0x7c,0x9f,0x0a,0x05,0xce, -0x32,0x58,0xfe,0x95,0xf0,0xf6,0xaa,0xfc,0x48,0x7d,0xcd,0x7d,0x97,0xfb,0x4b,0xdc, -0xf9,0x7a,0x24,0x29,0x9f,0xe1,0x3c,0x57,0xc5,0xda,0xb3,0xe2,0x27,0x3f,0x5a,0xfc, -0xeb,0x38,0x7c,0xd8,0xfb,0x76,0x48,0xfc,0xd3,0x8a,0x27,0xef,0xdb,0xc8,0xe4,0x3e, -0x04,0xda,0x0d,0x63,0xf6,0xc8,0xf8,0x6d,0x01,0xc9,0xf2,0xaf,0xe6,0xb9,0xe3,0xfe, -0x99,0xdb,0xca,0xc3,0xf9,0x57,0xeb,0x58,0xaf,0xcb,0x1f,0xd8,0xe7,0x4f,0x6d,0x5f, -0xf6,0xce,0xd0,0xa5,0x03,0x29,0x61,0xa7,0xdf,0x5d,0x37,0xb0,0xf2,0xbc,0xb1,0xfa, -0xc8,0x2b,0xf5,0x38,0x77,0xaf,0xb7,0xc1,0xab,0x51,0x47,0xd1,0xf0,0xd4,0x39,0x32, -0xca,0x7e,0x62,0xd1,0x45,0x15,0xdc,0x7d,0x40,0x98,0xa6,0xc9,0x0a,0x4a,0xa5,0x5d, -0x43,0xa1,0xe0,0xab,0x0c,0x83,0x4f,0xa2,0x80,0x38,0xad,0x6b,0xe0,0xcf,0x83,0x35, -0xf9,0x1a,0x4b,0xbd,0x02,0xd7,0xcc,0x61,0x82,0xd0,0x83,0x17,0xe8,0xa4,0x0a,0xe5, -0xaf,0x7f,0x65,0x8f,0x01,0x5d,0x9c,0xad,0x95,0xc5,0xbf,0xb4,0x53,0x7f,0xf1,0x40, -0xd7,0xaf,0x51,0x5c,0xd2,0xc3,0x51,0x96,0xf0,0x47,0x24,0xb0,0x98,0x79,0xbb,0xca, -0x9a,0xfb,0x8f,0x09,0xba,0xfd,0x8f,0x3c,0x13,0x36,0x4a,0x4d,0xa8,0x46,0x7d,0xdd, -0x08,0xff,0x00,0xd0,0x2b,0x02,0xff,0x00,0xf6,0x26,0xd0,0x27,0xcf,0xd9,0xf5,0x69, -0x22,0x3f,0xf4,0xd2,0xdc,0x3f,0xf2,0x61,0x5f,0x4a,0x51,0xf8,0xd6,0x4f,0x03,0x87, -0x7f,0x60,0xe7,0x79,0x6e,0x16,0x5f,0x63,0xf3,0x3e,0x50,0xbc,0xfd,0x84,0xec,0x64, -0xe6,0x2d,0x6a,0x17,0x3f,0xed,0xda,0x95,0xff,0x00,0xd9,0x8d,0x73,0xd7,0xdf,0xb0, -0x65,0xd9,0x62,0x20,0xbb,0xd3,0x5c,0x76,0x2c,0x59,0x4f,0xfe,0x81,0x5f,0x68,0x62, -0x8c,0x56,0x4f,0x2e,0xa0,0xfa,0x3f,0xbd,0x98,0xbc,0xa7,0x0a,0xfe,0xcb,0xfb,0xd9, -0xf0,0x8d,0xe7,0xec,0x1d,0xae,0x2a,0xb1,0x8d,0x6c,0x65,0x3d,0x82,0x4d,0x8c,0xfe, -0x78,0xae,0x7a,0xfb,0xf6,0x20,0xf1,0x54,0x07,0xe4,0xd3,0x0b,0x0f,0xfa,0x67,0x70, -0x87,0xff,0x00,0x66,0xaf,0xd0,0xfc,0x51,0x8a,0x87,0x96,0xd3,0xe9,0x27,0xf7,0x9c, -0xf2,0xc8,0xf0,0xb2,0xef,0xf8,0x7f,0x91,0xf9,0xa7,0x7b,0xfb,0x1f,0x78,0xc6,0xd4, -0x90,0xba,0x46,0xa0,0x4f,0xfb,0x1f,0x30,0xfd,0x2b,0x0a,0xef,0xf6,0x69,0xf1,0x85, -0x91,0x3b,0xb4,0xed,0x4e,0x3c,0x7a,0xdb,0xb7,0xf8,0x57,0xea,0x4e,0x29,0x0a,0xe6, -0xa1,0xe5,0xab,0xa4,0xdf,0xe0,0x72,0xcb,0x87,0x70,0xd2,0xeb,0xf8,0x23,0xf2,0x7a, -0xef,0xe0,0xd7,0x8a,0x6c,0x72,0x59,0x6e,0xa3,0x03,0xfb,0xf1,0x11,0x59,0xef,0xe0, -0x3f,0x13,0xdb,0x74,0x91,0xce,0x3d,0x54,0xd7,0xeb,0x83,0x44,0xae,0x30,0xc0,0x11, -0xe8,0x45,0x55,0x9f,0x45,0xb0,0xba,0xff,0x00,0x5d,0x65,0x6f,0x30,0xff,0x00,0x6e, -0x25,0x3f,0xd2,0xb2,0x79,0x6c,0xba,0x4f,0xf0,0x38,0xe5,0xc2,0xf8,0x79,0x76,0xfb, -0xbf,0xe0,0x9f,0x92,0x6d,0xa0,0x78,0xaa,0xdf,0xdf,0xeb,0x9a,0x88,0xa7,0x8a,0x2d, -0xfe,0xf4,0x3b,0xbe,0x86,0xbf,0x57,0xee,0x3c,0x03,0xe1,0xbb,0xa0,0x7c,0xdd,0x07, -0x4d,0x7c,0xf7,0x36,0xa9,0xfe,0x15,0x97,0x73,0xf0,0x6f,0xc1,0x77,0x79,0xf3,0x3c, -0x3b,0x67,0xff,0x00,0x00,0x52,0x9f,0xc8,0x8a,0xc9,0xe5,0xb5,0x3b,0xa6,0x72,0x4b, -0x84,0xe9,0x74,0xb7,0xe2,0x8f,0xcb,0x31,0xaa,0xf8,0x8a,0x0f,0xbf,0x68,0xc6,0x94, -0x78,0xab,0x58,0x8b,0xef,0xd8,0xcb,0xc7,0xfb,0x26,0xbf,0x4d,0xae,0x7f,0x67,0x8f, -0x00,0xdd,0x67,0x3a,0x12,0x46,0x4f,0x74,0x99,0xff,0x00,0xf8,0xaa,0xc5,0xbb,0xfd, -0x94,0xfc,0x09,0x75,0x9d,0xb6,0xf7,0x70,0x67,0xfe,0x79,0xca,0xbf,0xd5,0x4d,0x63, -0x2c,0xb2,0xa7,0xf2,0xc5,0x9c,0xb2,0xe1,0x37,0xd3,0xff,0x00,0x4a,0x67,0xe7,0x32, -0xf8,0xee,0xf6,0x3f,0xbf,0x6b,0x28,0xfc,0x0d,0x4c,0x9f,0x11,0x4a,0x9f,0x9e,0x17, -0x1f,0x85,0x7d,0xf7,0x79,0xfb,0x1c,0x78,0x36,0x7f,0xf5,0x37,0x57,0xd1,0x1f,0xf6, -0x8a,0x37,0xfe,0xca,0x2b,0x02,0xf3,0xf6,0x22,0xd1,0x26,0x72,0x62,0xd6,0x9d,0x17, -0xd1,0xed,0x43,0x1f,0xcf,0x78,0xac,0x1e,0x59,0x3e,0xb4,0x97,0xde,0x73,0x4b,0x85, -0xab,0xaf,0x86,0xff,0x00,0x7a,0x3e,0x2b,0x4f,0x89,0x10,0xff,0x00,0x10,0x65,0xfa, -0x8a,0xb1,0x1f,0xc4,0x4b,0x46,0xea,0xf8,0xaf,0xac,0x2f,0x7f,0x61,0x2b,0x49,0x01, -0xf2,0x35,0x88,0x1d,0xbb,0x09,0x2d,0x8a,0xff,0x00,0x53,0x5c,0xf5,0xe7,0xec,0x19, -0xa8,0x1f,0xf5,0x77,0x5a,0x63,0x8f,0xf7,0x98,0x7f,0xec,0xb5,0x83,0xcb,0x5f,0x5a, -0x4c,0xe7,0x97,0x0e,0xe2,0xe3,0xb3,0x97,0xe0,0xcf,0x9e,0xa3,0xf1,0xed,0x9b,0xff, -0x00,0xcb,0x45,0x15,0x66,0x3f,0x19,0xd9,0x3f,0xfc,0xb5,0x4f,0xce,0xbd,0x7a,0xfb, -0xf6,0x11,0xd7,0xe3,0x62,0x23,0x86,0xce,0x61,0xeb,0x1c,0xc0,0x67,0xf3,0xc5,0x73, -0xf7,0x9f,0xb1,0x27,0x8b,0x21,0xdd,0xb3,0x4a,0x76,0x03,0xfe,0x79,0xdc,0x21,0xff, -0x00,0xd9,0xab,0x09,0x65,0xb1,0x5b,0xd3,0x92,0xf9,0x1c,0xd2,0xc9,0x31,0xd1,0xea, -0xff,0x00,0xf0,0x13,0x89,0x4f,0x14,0xd9,0xbf,0xfc,0xb5,0x4f,0xfb,0xea,0xa7,0x4d, -0x7e,0xd5,0xff,0x00,0x8d,0x4f,0xe2,0x2b,0x4a,0xf7,0xf6,0x43,0xf1,0x8d,0xa0,0x2d, -0xfd,0x8f,0xa8,0x81,0xe9,0x1a,0x16,0xfe,0x42,0xb0,0xef,0x7f,0x66,0xdf,0x17,0x58, -0xf2,0xda,0x76,0xa7,0x17,0xfb,0xf6,0xed,0xfe,0x15,0xcf,0x2c,0xbe,0x9a,0xee,0xbe, -0x47,0x3c,0xb2,0xdc,0x74,0x3a,0xfe,0x0c,0xbe,0xba,0xb5,0xbb,0x7f,0x18,0xa9,0x17, -0x51,0x80,0xff,0x00,0x18,0xae,0x46,0xe7,0xe1,0x07,0x89,0xac,0x8e,0x1b,0xed,0x28, -0x47,0x67,0x88,0xd5,0x17,0xf0,0x2f,0x89,0xad,0x8f,0x12,0x3f,0x1e,0xaa,0x6b,0x17, -0x81,0xa5,0xd2,0x46,0x2f,0x0d,0x8d,0x8f,0x63,0xd0,0x16,0xfa,0x23,0xd2,0x4f,0xd6, -0xa5,0x5b,0xdc,0x7d,0xd9,0x88,0xfc,0x6b,0xcc,0xdb,0x42,0xf1,0x4d,0xbe,0x79,0x27, -0xeb,0x9a,0x66,0xcf,0x13,0x41,0xf7,0xa2,0x2d,0x8f,0x43,0x51,0xfd,0x9f,0x17,0xb4, -0x85,0xc9,0x8d,0x8f,0xd8,0xfc,0x4f,0x55,0x4d,0x52,0x74,0xfb,0xb7,0x4e,0x3e,0x8d, -0x56,0x23,0xd7,0xef,0xe3,0xfb,0x97,0xb2,0x8f,0xa3,0x1a,0xf2,0x1f,0xed,0x5f,0x10, -0xc2,0x3e,0x6b,0x47,0x3f,0x4a,0x51,0xe2,0x9d,0x62,0x3f,0xbf,0x67,0x27,0xfd,0xf3, -0x51,0xfd,0x9d,0x2e,0x92,0x41,0xed,0x31,0xb0,0xde,0x9b,0xfb,0xcf,0x67,0x8f,0xc6, -0x1a,0xc4,0x5f,0x77,0x50,0x97,0xfe,0xfa,0xab,0xb0,0x7c,0x44,0xd7,0xe0,0xfb,0xba, -0x84,0x9f,0x8d,0x78,0x7a,0xf8,0xea,0xf2,0x3f,0xf5,0x96,0xb2,0x8f,0xf8,0x09,0xa9, -0x53,0xe2,0x29,0x5f,0xbf,0x14,0x8b,0xf5,0x14,0x96,0x06,0xbc,0x7e,0x17,0xf8,0x94, -0xb1,0xd8,0xb8,0x6f,0x19,0x23,0xde,0x60,0xf8,0xb7,0xe2,0x48,0x3f,0xe5,0xf4,0x9f, -0xad,0x69,0x43,0xf1,0xd7,0xc4,0xd0,0x81,0x8b,0x8c,0xe3,0xdc,0xd7,0xcf,0x91,0xfc, -0x48,0x87,0xb8,0x65,0xfc,0x2a,0xcc,0x7f,0x11,0x2d,0x5b,0xab,0xe3,0xea,0x2a,0x95, -0x0c,0x5c,0x7e,0x19,0x3f,0xbc,0xd5,0x67,0x18,0x98,0x6e,0xe4,0xbe,0x47,0xd1,0xb6, -0xbf,0xb4,0x67,0x88,0xe0,0x00,0x17,0xcf,0xd0,0xd6,0xa5,0xbf,0xed,0x3f,0xae,0x46, -0x7e,0x70,0xc7,0xf1,0xaf,0x99,0xe3,0xf1,0xed,0x9b,0x7f,0xcb,0x41,0xf8,0xd5,0x98, -0xfc,0x69,0x66,0xf8,0xfd,0xea,0x7e,0x75,0x4a,0x58,0xf8,0x6d,0x26,0x6f,0x1e,0x20, -0xaf,0x1f,0xb6,0xfe,0xe3,0xea,0x5b,0x7f,0xda,0xb3,0x50,0x4c,0x6f,0x84,0x93,0xf4, -0x15,0xa9,0x6b,0xfb,0x58,0x37,0x1e,0x6c,0x39,0xff,0x00,0x80,0xd7,0xc9,0xd1,0xf8, -0xae,0xd1,0xff,0x00,0xe5,0xa2,0x7e,0x75,0x3a,0x78,0x86,0xd5,0xfa,0x3a,0xfe,0x75, -0x6b,0x19,0x98,0xc3,0xed,0x33,0xa6,0x3c,0x4d,0x59,0x7f,0xcb,0xc4,0x7d,0x7f,0x6f, -0xfb,0x56,0xd9,0x39,0xc3,0xc2,0x07,0xd4,0x56,0xad,0xb7,0xed,0x45,0xa2,0xc9,0x8f, -0x31,0x00,0xfc,0x6b,0xe3,0x15,0xd6,0x2d,0xdb,0xf8,0x87,0xe7,0x52,0x2e,0xa5,0x03, -0x7f,0x1e,0x2b,0x45,0x9a,0xe6,0x11,0xdd,0xfe,0x07,0x5c,0x38,0x9a,0xb7,0xf3,0x26, -0x7d,0xbb,0x6d,0xfb,0x48,0x78,0x7a,0x7c,0x6e,0x60,0xbf,0xf0,0x2a,0xd4,0x83,0xe3, -0xdf,0x86,0x66,0xc7,0xef,0xc0,0xff,0x00,0x81,0x0a,0xf8,0x48,0x5f,0x44,0x7a,0x3f, -0xeb,0x4f,0x5b,0xc5,0xea,0x25,0xc7,0xe3,0x5a,0x2c,0xef,0x1b,0x1d,0xd2,0xfb,0x8e, -0xc8,0xf1,0x35,0x5e,0xa9,0x33,0xef,0xd8,0x3e,0x30,0xf8,0x6e,0x7c,0x62,0xec,0x0f, -0xc4,0x55,0xe8,0x7e,0x25,0x78,0x7e,0x7c,0x6d,0xbe,0x4f,0xc6,0xbf,0x3e,0x56,0xf9, -0x86,0x31,0x3b,0x7f,0xdf,0x55,0x3a,0x6a,0xd7,0x51,0xfd,0xcb,0xb9,0x07,0xd1,0xab, -0x65,0xc4,0x18,0x85,0xbc,0x11,0xd5,0x1e,0x25,0x7d,0x60,0x7e,0x86,0x47,0xe3,0x4d, -0x16,0x5c,0x62,0xfe,0x2f,0xc4,0xd5,0xa8,0xfc,0x45,0xa6,0xcb,0xf7,0x6f,0x61,0x3f, -0xf0,0x2a,0xfc,0xf1,0x8f,0xc4,0x7a,0x8c,0x7f,0x76,0xf6,0x51,0xff,0x00,0x02,0xab, -0x91,0x78,0xdf,0x5a,0x87,0xee,0xea,0x12,0x7e,0x75,0xb2,0xe2,0x29,0xaf,0x8a,0x9f, -0xe2,0x74,0x47,0x89,0x21,0xd6,0x07,0xe8,0x52,0xea,0x96,0x8f,0xf7,0x6e,0x62,0x3f, -0x46,0x15,0x2a,0xdc,0x44,0xdd,0x24,0x43,0xf4,0x22,0xbf,0x3f,0x20,0xf8,0x97,0xe2, -0x08,0x08,0xdb,0x7c,0xe7,0xeb,0x57,0xe1,0xf8,0xc5,0xe2,0x48,0x7f,0xe5,0xec,0x9a, -0xde,0x3c,0x45,0x0f,0xb5,0x4d,0x9d,0x31,0xe2,0x2c,0x3b,0xde,0x2c,0xfb,0xdc,0x3a, -0x9e,0x8c,0x0f,0xe3,0x4b,0x9a,0xf8,0x66,0xdf,0xe3,0xdf,0x89,0x2d,0xff,0x00,0xe5, -0xb6,0x7f,0x13,0x5a,0x96,0xdf,0xb4,0x87,0x88,0x21,0xc6,0xe6,0x2d,0xf8,0x9a,0xdd, -0x71,0x0e,0x1d,0xef,0x16,0x8d,0xe3,0x9f,0xe1,0x1e,0xec,0xfb,0x4b,0x38,0xa3,0x22, -0xbe,0x42,0xb7,0xfd,0xa8,0xb5,0x98,0xf1,0xb9,0x0f,0xe7,0x9a,0xd4,0xb5,0xfd,0xab, -0x2e,0xd7,0x1e,0x64,0x44,0xfe,0x15,0xba,0xcf,0xb0,0x8f,0x7b,0xfd,0xc7,0x44,0x73, -0xac,0x1c,0xbe,0xd1,0xf5,0x4e,0x45,0x15,0xf3,0x55,0xb7,0xed,0x5c,0xac,0x47,0x99, -0x00,0x03,0xfd,0xda,0xd5,0xb7,0xfd,0xaa,0x74,0xe6,0xc6,0xf8,0x97,0xf2,0x35,0xbc, -0x73,0x9c,0x14,0xbe,0xd9,0xd1,0x1c,0xd3,0x09,0x2d,0xa6,0x8f,0xa0,0x33,0x4b,0x5e, -0x25,0x6b,0xfb,0x4e,0x68,0xb2,0xfd,0xf0,0x8b,0xf8,0x9a,0xd5,0xb7,0xfd,0xa2,0xfc, -0x3b,0x36,0x01,0x60,0x0f,0xfb,0xd5,0xd1,0x1c,0xcf,0x07,0x2d,0xaa,0x23,0x75,0x8e, -0xc3,0xcb,0x69,0xa3,0xd6,0x28,0xaf,0x3a,0x83,0xe3,0x9f,0x86,0xe6,0xc7,0xfa,0x40, -0x5c,0xff,0x00,0xb4,0x2b,0x46,0xdf,0xe2,0xdf,0x87,0x6e,0x31,0x8b,0xb5,0x1f,0x52, -0x2b,0x75,0x8d,0xc3,0x4b,0x6a,0x8b,0xef,0x36,0x58,0x8a,0x2f,0x69,0x23,0xb4,0xa2, -0xb9,0xa8,0xfe,0x22,0xe8,0x12,0xfd,0xdb,0xf4,0xcd,0x5b,0x8b,0xc6,0x1a,0x44,0xdf, -0x76,0xfa,0x2f,0xc4,0xd6,0xca,0xbd,0x29,0x6d,0x25,0xf7,0x9a,0x2a,0x90,0x7b,0x33, -0x6a,0x8a,0xce,0x4f,0x10,0x69,0xd2,0x7d,0xdb,0xc8,0x5b,0xfe,0x05,0x56,0x13,0x51, -0xb6,0x7e,0x97,0x11,0x1f,0xf8,0x18,0xad,0x14,0xe2,0xf6,0x65,0x73,0x2e,0xe5,0x9a, -0x2a,0x35,0xb8,0x89,0xfe,0xec,0x88,0x7e,0x8d,0x4f,0xdc,0x3d,0x45,0x55,0xca,0x16, -0x8a,0x29,0x33,0x4c,0x05,0xa2,0x93,0x34,0x66,0x80,0x16,0x8a,0x4a,0x33,0x40,0x0b, -0x45,0x14,0x94,0x01,0xf3,0xdf,0xed,0x45,0x77,0xb6,0xde,0x38,0xf3,0xd2,0x3c,0x57, -0xc7,0x5e,0x24,0xbc,0x5b,0x7b,0x39,0x58,0x9c,0x61,0x4d,0x7d,0x53,0xfb,0x54,0x5f, -0x88,0xee,0x4a,0x93,0x8c,0x28,0x02,0xbe,0x1a,0xf8,0x97,0xe2,0x95,0xb6,0xb3,0x78, -0x95,0xf2,0xc4,0x73,0xcd,0x7e,0x79,0x88,0xa6,0xeb,0xe6,0x53,0xf2,0xb1,0xf9,0x1f, -0x13,0xd4,0x73,0xc4,0xaa,0x31,0xdd,0x9e,0xad,0xff,0x00,0x04,0xe8,0xd3,0xe6,0xd6, -0x3f,0x69,0x8f,0x14,0xea,0xe1,0x37,0xda,0x69,0xfe,0x1f,0x92,0x06,0x7c,0xfd,0xd9, -0x25,0xb8,0x8b,0x60,0xfc,0x44,0x4f,0xf9,0x57,0xe9,0x78,0xaf,0x87,0x7f,0xe0,0x96, -0xbe,0x07,0x96,0xcb,0xc1,0x1e,0x34,0xf1,0xa4,0xe0,0x8f,0xed,0xcd,0x42,0x3b,0x3b, -0x70,0xc3,0xac,0x56,0xca,0xd9,0x61,0xf5,0x69,0x98,0x7f,0xc0,0x2b,0xee,0x3a,0xfb, -0xba,0x11,0xe5,0xa6,0x91,0xfa,0x46,0x59,0x43,0xea,0xf8,0x3a,0x74,0xfb,0x20,0xa2, -0x8a,0x2b,0xa0,0xf5,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0, -0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0, -0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x93,0x14,0xb4,0x50,0x02,0x62,0x8c, -0x52,0xd1,0x40,0x0d,0x23,0xd2,0x94,0x0a,0x5a,0x28,0x01,0x31,0x46,0xd1,0x4b,0x45, -0x00,0x46,0xd0,0xa3,0x82,0x19,0x15,0x81,0xec,0x45,0x54,0x9b,0x40,0xd3,0x6e,0x46, -0x26,0xd3,0xed,0x65,0x1f,0xed,0xc2,0xa7,0xfa,0x55,0xfa,0x2a,0x5c,0x53,0xdd,0x12, -0xe2,0x9e,0xe8,0xe7,0x6e,0x7e,0x1e,0x78,0x62,0xf3,0xfd,0x76,0x81,0xa7,0x3f,0xfd, -0xbb,0x20,0xfe,0x42,0xb2,0xee,0x7e,0x0b,0xf8,0x26,0xef,0x3e,0x67,0x87,0x2c,0xc6, -0x7f,0xb8,0xa5,0x3f,0x91,0x15,0xdb,0x51,0x59,0xba,0x34,0x9e,0xf1,0x5f,0x71,0x93, -0xa1,0x4a,0x5b,0xc1,0x7d,0xc8,0xf3,0x2b,0xbf,0xd9,0xc7,0xc0,0x37,0x60,0x8f,0xec, -0x51,0x1f,0xba,0x4c,0xff,0x00,0xd4,0x9a,0xc7,0xba,0xfd,0x93,0xfc,0x09,0x70,0x72, -0xb0,0xdd,0xc3,0xec,0x92,0xaf,0xf5,0x53,0x5e,0xcb,0x45,0x64,0xf0,0x94,0x1f,0xd8, -0x46,0x0f,0x03,0x86,0x7b,0xd3,0x5f,0x71,0xe0,0x37,0xbf,0xb1,0xaf,0x84,0x27,0xcf, -0x91,0x77,0x79,0x11,0x3f,0xdf,0xd8,0xf8,0xfd,0x05,0x61,0x5d,0x7e,0xc3,0xba,0x2c, -0xb9,0xf2,0xf5,0xc6,0x5f,0x4d,0xd6,0x80,0xff,0x00,0xec,0xf5,0xf4,0xdd,0x15,0x9b, -0xc0,0xe1,0xdf,0xd9,0xfc,0xcc,0x9e,0x5b,0x84,0x7f,0x63,0xf3,0x3e,0x46,0xd4,0x3f, -0x61,0x38,0x98,0x9f,0xb3,0x6a,0xd6,0x92,0x0f,0xfa,0x69,0x01,0x4f,0xe5,0x9a,0xe7, -0xef,0x3f,0x60,0xcd,0x49,0x89,0xf2,0xee,0xb4,0xb7,0x1d,0xbe,0x77,0x07,0xff,0x00, -0x40,0xaf,0xb6,0x31,0x46,0x2b,0x37,0x97,0x50,0xe9,0x75,0xf3,0x31,0x79,0x46,0x15, -0xf4,0x7f,0x79,0xf0,0x45,0xff,0x00,0xec,0x29,0xe2,0x18,0x81,0x31,0x5b,0x5a,0x4d, -0x8e,0xd1,0xdc,0x00,0x4f,0xe7,0x8a,0xc0,0xba,0xfd,0x89,0xbc,0x5d,0x10,0x24,0x69, -0x12,0x71,0xfd,0xcb,0x84,0x3f,0xc9,0xab,0xf4,0x5b,0x14,0x98,0x35,0x1f,0xd9,0xb4, -0xfa,0x49,0x9c,0xf2,0xc8,0xf0,0xd2,0xea,0xff,0x00,0x0f,0xf2,0x3f,0x33,0x2f,0xbf, -0x64,0xaf,0x18,0x59,0x96,0x1f,0xd8,0xda,0x96,0x47,0xfc,0xf3,0x8d,0x98,0x7e,0x60, -0x56,0x15,0xdf,0xec,0xe7,0xe2,0xcb,0x30,0x49,0xd3,0xf5,0x38,0xc0,0xea,0x5a,0xdd, -0xb1,0xfc,0xab,0xf5,0x47,0x14,0x9b,0x73,0xd6,0xb3,0x79,0x6f,0x6a,0x8c,0xe5,0x97, -0x0e,0xe1,0xe5,0xd7,0xf0,0x47,0xe4,0xbd,0xcf,0xc2,0x3f,0x11,0xd9,0x83,0x93,0x70, -0x9f,0xef,0x46,0x45,0x51,0x93,0xc0,0xfe,0x25,0xb7,0xe9,0x23,0xf1,0xea,0xa6,0xbf, -0x5c,0xde,0xde,0x39,0x06,0x19,0x15,0x87,0xa3,0x0c,0xd5,0x3b,0x8f,0x0f,0x69,0x77, -0x9f,0xeb,0xf4,0xeb,0x49,0xbf,0xdf,0x81,0x5b,0xf9,0x8a,0xcd,0xe5,0xd3,0xe9,0x3f, -0xc0,0xe3,0x9f,0x0b,0xd0,0x97,0x6f,0xbb,0xfe,0x09,0xf9,0x24,0xda,0x1f,0x8a,0x2d, -0xfb,0x96,0xc7,0xd6,0xa3,0x2b,0xe2,0x58,0x3a,0xc5,0xbb,0xe8,0x6b,0xf5,0x7a,0xe3, -0xe1,0xb7,0x85,0x6e,0xb3,0xe6,0xf8,0x7b,0x4d,0x6c,0xf5,0x3f,0x66,0x40,0x7f,0x41, -0x59,0x57,0x5f,0x04,0x7c,0x0f,0x77,0xf7,0xfc,0x3b,0x68,0x3d,0x76,0xee,0x5f,0xe4, -0x6b,0x27,0x96,0xd5,0xee,0x99,0xc7,0x2e,0x14,0xa6,0xf6,0xb7,0xe2,0x7e,0x5a,0xff, -0x00,0x6a,0xf8,0x86,0x1f,0xbd,0x6a,0xc7,0x1e,0x94,0xe1,0xe2,0x9d,0x62,0x2f,0xbf, -0x67,0x27,0xfd,0xf3,0x5f,0xa6,0x37,0x7f,0xb3,0x5f,0x80,0x2e,0xff,0x00,0xe6,0x0c, -0x61,0xff,0x00,0xae,0x73,0x3f,0xf5,0x26,0xb1,0xee,0xbf,0x64,0xbf,0x01,0xdc,0x92, -0x56,0x1b,0xd8,0x7d,0x92,0x65,0xfe,0xaa,0x6b,0x17,0x96,0xd5,0xfe,0x58,0x9c,0xb2, -0xe1,0x3e,0xcb,0xf1,0x7f,0xe4,0x7e,0x74,0x8f,0x1c,0xde,0xc6,0x7e,0x7b,0x59,0x07, -0xe0,0x6a,0x54,0xf8,0x88,0xeb,0xf7,0xe2,0x71,0xf9,0xd7,0xde,0xd7,0xbf,0xb1,0x87, -0x85,0x27,0xcf,0x91,0x7f,0x79,0x0f,0xfb,0xea,0xaf,0xfe,0x15,0x89,0x75,0xfb,0x0e, -0x68,0xf2,0x92,0x63,0xd7,0x18,0x7b,0x35,0xa0,0x3f,0xfb,0x3d,0x61,0x2c,0xb6,0xa7, -0x5a,0x6b,0xef,0x39,0xa5,0xc2,0xd5,0x97,0xc3,0x7f,0xbd,0x1f,0x16,0xc7,0xf1,0x1e, -0x2e,0xe0,0x8a,0xb3,0x1f,0xc4,0x4b,0x66,0xea,0xf5,0xf5,0x5e,0xa1,0xfb,0x08,0x29, -0xcf,0xd9,0xb5,0x6b,0x39,0x07,0x6f,0x36,0x16,0x5f,0xe5,0x9a,0xe7,0xee,0xff,0x00, -0x60,0xbd,0x4c,0x82,0x52,0xe7,0x4a,0x7f,0x6d,0xce,0x3f,0xf6,0x4a,0xc2,0x59,0x6b, -0xeb,0x49,0x9c,0xd2,0xe1,0xcc,0x5c,0x76,0x72,0xfc,0x19,0xf3,0xec,0x7e,0x3d,0xb4, -0x7c,0x66,0x40,0x3e,0xb5,0x66,0x3f,0x1a,0xd9,0xbe,0x3f,0x7a,0xb5,0xea,0xfa,0x87, -0xec,0x2f,0xe2,0x58,0x58,0x88,0xac,0x6d,0xe7,0x03,0xbc,0x57,0x0a,0x07,0xea,0x45, -0x61,0x5e,0x7e,0xc5,0x3e,0x2f,0x81,0x49,0x1a,0x3c,0xa7,0x1f,0xf3,0xce,0x74,0x6f, -0xe4,0xd5,0x83,0xcb,0xa3,0xd6,0x9c,0x97,0xc8,0xe7,0x96,0x49,0x8e,0x8e,0xd2,0x7f, -0xf8,0x09,0xc6,0xc7,0xe2,0xcb,0x47,0xc7,0xef,0x53,0xf3,0xa9,0xd3,0xc4,0x76,0xaf, -0xd2,0x45,0x3f,0x8d,0x5d,0xbc,0xfd,0x93,0x7c,0x61,0x66,0x0b,0x7f,0x62,0xea,0x60, -0x7f,0xb1,0x13,0x37,0xf2,0x15,0x87,0x79,0xfb,0x3b,0xf8,0xb2,0xc7,0xef,0xe9,0xfa, -0x9c,0x5f,0xef,0xdb,0xb0,0xfe,0x95,0xce,0xf0,0x14,0x97,0x46,0xbe,0x47,0x3c,0xb2, -0xec,0x74,0x3e,0xd7,0xe0,0xcd,0x55,0xd6,0xad,0xdb,0xf8,0x87,0xe7,0x52,0x0d,0x4e, -0x06,0xfe,0x31,0x5c,0x6d,0xc7,0xc2,0x9f,0x10,0xda,0x31,0x52,0xd3,0xa1,0x07,0x18, -0x68,0xc8,0xaa,0x72,0x78,0x23,0xc4,0x96,0xfd,0x24,0x63,0x8f,0xf6,0x4d,0x66,0xf0, -0x34,0xba,0x48,0xc1,0xe1,0x71,0xb1,0xec,0xcf,0x41,0x17,0xf0,0xff,0x00,0x7a,0x9e, -0xb7,0x91,0xf6,0x7f,0xd6,0xbc,0xd1,0xb4,0x4f,0x13,0x41,0xdc,0x9f,0x6e,0x69,0xa4, -0x78,0x96,0x0e,0xb1,0x16,0xfc,0x6b,0x37,0x97,0xc5,0xed,0x22,0x7d,0x9e,0x35,0x7d, -0x84,0xfe,0x67,0xa8,0xad,0xe0,0x1d,0x25,0x23,0xf1,0xa9,0x93,0x50,0x95,0x7e,0xed, -0xc3,0x8f,0xa3,0x57,0x93,0xff,0x00,0x6a,0xf8,0x82,0x1f,0xbd,0x6a,0xc7,0x1e,0x94, -0xa3,0xc5,0x3a,0xbc,0x5f,0x7e,0xd2,0x4f,0xfb,0xe6,0xa1,0xe5,0xcf,0xa4,0x90,0x73, -0x62,0xe3,0xbd,0x37,0xf7,0x9e,0xbd,0x1e,0xb5,0x7b,0x11,0xf9,0x2e,0xe4,0x1f,0x47, -0x35,0x65,0x3c,0x55,0xaa,0xc7,0xf7,0x6f,0xa5,0xff,0x00,0xbe,0x8d,0x78,0xe0,0xf1, -0xcd,0xe4,0x7f,0x7e,0xda,0x41,0xff,0x00,0x01,0x35,0x2a,0x7c,0x44,0x61,0xf7,0xa2, -0x71,0x51,0xfd,0x9f,0x55,0x6c,0xff,0x00,0x11,0xac,0x5e,0x26,0x3b,0xc2,0x47,0xb4, -0xc3,0xe3,0xcd,0x72,0x0f,0xbb,0x7d,0x27,0xe2,0x6a,0xec,0x3f,0x14,0x7c,0x43,0x0e, -0x31,0x7a,0xe7,0xea,0x6b,0xc4,0x13,0xe2,0x3c,0x47,0x19,0xdd,0x56,0xa3,0xf8,0x89, -0x6c,0x71,0x97,0x22,0x8f,0xa9,0xe2,0x63,0xb5,0xfe,0xf3,0x45,0x9a,0x57,0x86,0xfc, -0xcb,0xef,0x3d,0xda,0xdf,0xe3,0x4f,0x89,0x20,0xc6,0x2e,0x4f,0xe6,0x6b,0x46,0xdb, -0xe3,0xff,0x00,0x88,0xa0,0xc6,0x64,0x2c,0x7d,0x77,0x57,0x81,0x47,0xe3,0xdb,0x46, -0xff,0x00,0x96,0x95,0x66,0x3f,0x1a,0xda,0x37,0xfc,0xb5,0x5a,0x7c,0x98,0xc8,0x6d, -0x27,0xf7,0x9b,0x47,0x3c,0xad,0x1f,0xb6,0xfe,0xe3,0xe8,0x8b,0x7f,0xda,0x53,0x5f, -0x8b,0x86,0x27,0x1e,0xcd,0x5a,0x96,0xdf,0xb5,0x26,0xab,0x10,0x1b,0xe3,0x63,0xf5, -0x35,0xf3,0x5c,0x7e,0x2d,0xb4,0x7e,0x92,0xaf,0xe7,0x53,0xaf,0x88,0xed,0x5f,0xa3, -0xaf,0xe7,0x56,0xab,0xe3,0xe1,0xb4,0xd9,0xd3,0x1e,0x22,0xac,0xbf,0xe5,0xe1,0xf5, -0x0d,0xb7,0xed,0x59,0x73,0x91,0xe6,0xa1,0xff,0x00,0xbe,0x45,0x6b,0x5b,0x7e,0xd5, -0xb0,0xb6,0x03,0xc2,0x3e,0xa4,0x57,0xc9,0xc9,0xad,0xdb,0xbf,0xf1,0x8f,0xce,0xa5, -0x5d,0x52,0x06,0xfe,0x2a,0xb5,0x98,0x66,0x10,0xfb,0x6f,0xee,0x3a,0xe1,0xc4,0x95, -0x97,0xdb,0x47,0xd8,0x16,0xbf,0xb5,0x26,0x9a,0xc3,0xf7,0xa8,0xbf,0x91,0xad,0x4b, -0x6f,0xda,0x5b,0x44,0x9b,0x19,0x0a,0x3f,0x1a,0xf8,0xb4,0x6a,0x30,0x9e,0x77,0x0a, -0x6b,0xea,0xb0,0x20,0x3f,0x3f,0xeb,0x5b,0x47,0x36,0xc7,0xad,0x2f,0x7f,0x91,0xd4, -0xb8,0x9e,0xac,0x77,0x68,0xfb,0xa2,0xdf,0xf6,0x84,0xf0,0xec,0xa0,0x66,0x50,0x0f, -0xb3,0x0a,0xb7,0x37,0xc7,0x8f,0x0d,0x43,0x6e,0x65,0x7b,0x8c,0x01,0xdb,0x70,0xcd, -0x7e,0x7b,0xdf,0xf8,0xce,0xd6,0xc9,0x09,0x33,0x85,0xc7,0xfb,0x55,0xc0,0x78,0x93, -0xe2,0xcc,0x80,0x34,0x76,0x92,0xb1,0x27,0xbe,0x6b,0xd5,0xa1,0x8f,0xcc,0x2a,0xbd, -0x52,0x17,0xfa,0xd9,0x56,0x4f,0x96,0x9d,0x3e,0x66,0x7b,0xb7,0xed,0x37,0xf1,0xc6, -0xcf,0x5f,0xd5,0xee,0xe4,0xb5,0x93,0x31,0x74,0x8c,0x1e,0xb5,0xf2,0xd7,0x87,0x3c, -0x2b,0xaf,0xfc,0x6d,0xf1,0xe6,0x9f,0xe1,0x8d,0x0a,0x16,0xb8,0xd4,0x35,0x09,0x76, -0x6e,0xfe,0x08,0x63,0xcf,0xcd,0x23,0x9e,0xca,0xa3,0x24,0x9f,0x6f,0x5a,0x93,0xc2, -0xbe,0x13,0xf1,0x57,0xc6,0x6f,0x16,0x41,0xa3,0x68,0x36,0x13,0x6a,0xba,0x95,0xc3, -0x70,0x89,0xf7,0x51,0x7b,0xbb,0xb1,0xe1,0x54,0x77,0x27,0xfa,0x8a,0xfd,0x46,0xfd, -0x97,0x3f,0x65,0xdd,0x1b,0xf6,0x79,0xf0,0xdb,0x39,0x31,0xea,0x5e,0x2b,0xbe,0x41, -0xfd,0xa1,0xa9,0xe3,0x8c,0x75,0xf2,0xa2,0xcf,0x21,0x01,0xfc,0x58,0xf2,0x7b,0x01, -0xe9,0x61,0x70,0xaf,0x99,0xce,0x5b,0xbd,0x5b,0x34,0xcb,0x30,0x15,0x73,0x1c,0x53, -0xc6,0x62,0x3f,0xe0,0x7a,0x23,0xd2,0xfe,0x17,0x7c,0x3e,0xd3,0x7e,0x15,0xf8,0x03, -0x44,0xf0,0xa6,0x92,0x81,0x6c,0x74,0xbb,0x65,0x81,0x5b,0x1c,0xbb,0x75,0x67,0x3e, -0xec,0xc4,0x93,0xf5,0xae,0xaa,0x90,0x0c,0x52,0xd7,0xd0,0x25,0x6d,0x0f,0xd2,0xd2, -0xb2,0xb2,0x0a,0x28,0xa2,0x81,0x85,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14, -0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14, -0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14, -0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14, -0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14, -0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14, -0x51,0x40,0x05,0x14,0x51,0x40,0x09,0x46,0x29,0x68,0xa0,0x04,0xc5,0x18,0xa5,0xa2, -0x80,0x13,0x6d,0x26,0xda,0x75,0x14,0x01,0x13,0xda,0xc3,0x26,0x77,0xc4,0x8d,0x9e, -0xb9,0x50,0x6a,0x8d,0xc7,0x86,0xb4,0x9b,0xa0,0x44,0xda,0x5d,0x9c,0xca,0x7a,0x89, -0x20,0x43,0xfd,0x2b,0x4e,0x8a,0x97,0x18,0xbd,0xd1,0x2e,0x31,0x7b,0xa3,0x98,0xb9, -0xf8,0x65,0xe1,0x3b,0xb1,0xfb,0xdf,0x0e,0xe9,0xa7,0xe9,0x6c,0x8b,0xfc,0x85,0x65, -0xdd,0x7c,0x0e,0xf0,0x35,0xd9,0x26,0x4f,0x0e,0x5a,0x0f,0xf7,0x37,0x27,0xf2,0x22, -0xbb,0xba,0x2b,0x37,0x42,0x93,0xde,0x2b,0xee,0x31,0x78,0x7a,0x32,0xde,0x0b,0xee, -0x47,0x96,0x5d,0xfe,0xcc,0xfe,0x00,0xbb,0x24,0xff,0x00,0x64,0x34,0x24,0xff,0x00, -0xcf,0x39,0x9b,0x8f,0xcc,0x9a,0xc7,0xba,0xfd,0x91,0xfc,0x0b,0x71,0xf7,0x12,0xf6, -0x13,0xfe,0xcc,0xaa,0x7f,0x9a,0xd7,0xb5,0xd1,0x59,0x3c,0x25,0x07,0xf6,0x11,0x8b, -0xc0,0xe1,0x9f,0xfc,0xbb,0x47,0xcf,0x37,0xbf,0xb1,0x77,0x85,0x67,0x27,0xc8,0xd4, -0x2e,0xe1,0x1e,0x8e,0x88,0xff,0x00,0xcb,0x15,0x8b,0x75,0xfb,0x0d,0x69,0x12,0xe7, -0xcb,0xd7,0x58,0x7a,0x6f,0xb4,0x07,0xff,0x00,0x66,0xaf,0xa8,0x28,0xac,0xde,0x07, -0x0e,0xfe,0xcf,0xe6,0x64,0xf2,0xcc,0x2b,0xfb,0x1f,0x8b,0x3e,0x3e,0xbf,0xfd,0x84, -0x1c,0x93,0xf6,0x7d,0x56,0xc6,0x40,0x7f,0xe7,0xac,0x4c,0xbf,0xc8,0x1a,0xc1,0xbd, -0xfd,0x83,0x35,0x65,0xc9,0x8e,0xe7,0x4b,0x97,0xe8,0xee,0x0f,0xea,0xa2,0xbe,0xdf, -0xa4,0x6e,0x95,0x93,0xcb,0xa8,0x74,0xbf,0xde,0x60,0xf2,0x8c,0x2b,0xe8,0xfe,0xf3, -0xe0,0x0b,0xef,0xd8,0x67,0xc4,0xd1,0x93,0xe5,0xe9,0xf0,0x4c,0x3f,0xe9,0x95,0xc2, -0x0f,0xe6,0x45,0x61,0x5e,0x7e,0xc5,0x7e,0x30,0xb7,0x04,0x8d,0x16,0x63,0xff,0x00, -0x5c,0xe7,0x46,0xfe,0x4c,0x6b,0xf4,0x6c,0x75,0xa0,0x75,0xac,0xde,0x5d,0x4f,0xa4, -0x99,0xcf,0x2c,0x8f,0x0c,0xfa,0xbf,0xc3,0xfc,0x8f,0xcc,0x3b,0xcf,0xd9,0x53,0xc5, -0xd6,0x8c,0x41,0xd1,0x35,0x51,0x8f,0xee,0xc0,0xec,0x3f,0x30,0x2b,0x16,0xfb,0xf6, -0x7b,0xf1,0x56,0x9e,0xa5,0xa4,0xb1,0xd4,0xa1,0x03,0xbb,0xc0,0xc3,0xfa,0x57,0xea, -0xb8,0xe9,0x4d,0x3c,0xd4,0x3c,0xbb,0xb4,0xd9,0xcb,0x2e,0x1d,0xc3,0xbe,0xbf,0x82, -0x3f,0x24,0x67,0xf8,0x59,0xaf,0xda,0x9c,0x16,0x99,0x7f,0xde,0x42,0x2a,0xa3,0xf8, -0x2b,0xc4,0x50,0x1e,0x25,0x6f,0xc4,0x1a,0xfd,0x75,0x96,0xd6,0x19,0x57,0xe7,0x89, -0x1f,0xfd,0xe5,0x06,0xb3,0x2f,0x3c,0x37,0xa4,0x5d,0xff,0x00,0xaf,0xd2,0xec,0xa6, -0xff,0x00,0xae,0x96,0xe8,0xdf,0xcc,0x57,0x34,0xf0,0x72,0x8f,0xdb,0xfc,0x3f,0xe0, -0x9e,0x65,0x5e,0x1d,0xc3,0xc7,0xb7,0xdd,0xff,0x00,0x04,0xfc,0x94,0x9b,0x44,0xf1, -0x2c,0x2b,0xc3,0x13,0xf4,0xcd,0x64,0x5d,0xe8,0x9e,0x28,0x94,0x13,0x99,0x31,0xec, -0x09,0xaf,0xd4,0x6f,0x14,0x78,0x37,0x40,0x44,0x98,0xae,0x87,0xa6,0x83,0x8e,0xa2, -0xd2,0x3f,0xf0,0xac,0x0f,0x06,0xf8,0x4b,0x43,0x9e,0xf1,0xd6,0x5d,0x1b,0x4f,0x91, -0x72,0x38,0x7b,0x54,0x23,0xf9,0x57,0x1c,0x63,0x25,0x2b,0x2b,0x7d,0xc7,0x8f,0x2c, -0x97,0x0c,0xa5,0xca,0x92,0xfb,0x8f,0xcc,0x9b,0x2f,0x86,0x9e,0x2d,0xf1,0x2d,0xd8, -0xb7,0xb3,0xd3,0xef,0x75,0x19,0xd8,0xf1,0x15,0xbc,0x4c,0xed,0xcf,0xb0,0x15,0xf4, -0x27,0xc2,0x4f,0xf8,0x27,0x6f,0x8a,0x7c,0x4d,0x3c,0x37,0x7e,0x31,0xb9,0x5f,0x0d, -0xe9,0x99,0x05,0xa0,0x52,0x24,0xba,0x71,0xd7,0x85,0x1f,0x2a,0xfd,0x58,0xe4,0x7f, -0x76,0xbf,0x46,0x74,0xed,0x2e,0xcf,0x4c,0xb7,0x58,0xac,0xed,0x20,0xb4,0x8c,0x0e, -0x12,0x08,0xd5,0x00,0xfc,0x00,0xab,0x8b,0x5e,0xfd,0x1c,0x3d,0xd2,0x94,0xdd,0xcf, -0xa2,0xc0,0xf0,0xed,0x18,0x5a,0x75,0x26,0xe4,0xbb,0x5a,0xc8,0xe2,0x7e,0x16,0xfc, -0x1b,0xf0,0xa7,0xc1,0xcd,0x0c,0x69,0x9e,0x18,0xd2,0xe3,0xb3,0x46,0x03,0xce,0xb8, -0x6f,0x9a,0x79,0xc8,0xef,0x23,0xf5,0x3f,0x4e,0x83,0xb0,0x15,0xdb,0x8e,0x28,0x1d, -0x29,0x6b,0xd0,0x49,0x25,0x64,0x7d,0x8c,0x29,0xc6,0x9c,0x54,0x20,0xac,0x90,0x51, -0x45,0x14,0xcd,0x02,0x8a,0x28,0xa0,0x0f,0xff,0xd9,}; - -static const unsigned int dummy_align__runtime_shtml = 3; -static const unsigned char data__runtime_shtml[] = { -/* /runtime.shtml (15 chars) */ -0x2f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2e,0x73,0x68,0x74,0x6d,0x6c,0x00,0x00, - -/* HTTP header */ -/* "HTTP/1.0 200 OK -" (17 bytes) */ -0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,0x20,0x32,0x30,0x30,0x20,0x4f,0x4b,0x0d, -0x0a, -/* "Server: lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip) -" (63 bytes) */ -0x53,0x65,0x72,0x76,0x65,0x72,0x3a,0x20,0x6c,0x77,0x49,0x50,0x2f,0x31,0x2e,0x33, -0x2e,0x31,0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x73,0x61,0x76,0x61,0x6e, -0x6e,0x61,0x68,0x2e,0x6e,0x6f,0x6e,0x67,0x6e,0x75,0x2e,0x6f,0x72,0x67,0x2f,0x70, -0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,0x6c,0x77,0x69,0x70,0x29,0x0d,0x0a, -/* "Content-type: text/html -Expires: Fri, 10 Apr 2008 14:00:00 GMT -Pragma: no-cache - -" (85 bytes) */ -0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2d,0x74,0x79,0x70,0x65,0x3a,0x20,0x74,0x65, -0x78,0x74,0x2f,0x68,0x74,0x6d,0x6c,0x0d,0x0a,0x45,0x78,0x70,0x69,0x72,0x65,0x73, -0x3a,0x20,0x46,0x72,0x69,0x2c,0x20,0x31,0x30,0x20,0x41,0x70,0x72,0x20,0x32,0x30, -0x30,0x38,0x20,0x31,0x34,0x3a,0x30,0x30,0x3a,0x30,0x30,0x20,0x47,0x4d,0x54,0x0d, -0x0a,0x50,0x72,0x61,0x67,0x6d,0x61,0x3a,0x20,0x6e,0x6f,0x2d,0x63,0x61,0x63,0x68, -0x65,0x0d,0x0a,0x0d,0x0a, -/* raw file data (758 bytes) */ -0x3c,0x21,0x44,0x4f,0x43,0x54,0x59,0x50,0x45,0x20,0x48,0x54,0x4d,0x4c,0x20,0x50, -0x55,0x42,0x4c,0x49,0x43,0x20,0x22,0x2d,0x2f,0x2f,0x57,0x33,0x43,0x2f,0x2f,0x44, -0x54,0x44,0x20,0x48,0x54,0x4d,0x4c,0x20,0x34,0x2e,0x30,0x31,0x20,0x54,0x72,0x61, -0x6e,0x73,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x2f,0x2f,0x45,0x4e,0x22,0x20,0x22, -0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72, -0x67,0x2f,0x54,0x52,0x2f,0x68,0x74,0x6d,0x6c,0x34,0x2f,0x6c,0x6f,0x6f,0x73,0x65, -0x2e,0x64,0x74,0x64,0x22,0x3e,0x0d,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x0d,0x0a, -0x20,0x20,0x3c,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x3c,0x74, -0x69,0x74,0x6c,0x65,0x3e,0x46,0x72,0x65,0x65,0x52,0x54,0x4f,0x53,0x2e,0x6f,0x72, -0x67,0x20,0x6c,0x77,0x49,0x50,0x20,0x57,0x45,0x42,0x20,0x73,0x65,0x72,0x76,0x65, -0x72,0x20,0x64,0x65,0x6d,0x6f,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e,0x0d,0x0a, -0x20,0x20,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x20,0x20,0x3c,0x42,0x4f, -0x44,0x59,0x20,0x6f,0x6e,0x4c,0x6f,0x61,0x64,0x3d,0x22,0x77,0x69,0x6e,0x64,0x6f, -0x77,0x2e,0x73,0x65,0x74,0x54,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x26,0x71,0x75, -0x6f,0x74,0x3b,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x68,0x72,0x65,0x66, -0x3d,0x27,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x2e,0x73,0x68,0x74,0x6d,0x6c,0x27, -0x26,0x71,0x75,0x6f,0x74,0x3b,0x2c,0x32,0x30,0x30,0x30,0x29,0x22,0x3e,0x0d,0x0a, -0x3c,0x66,0x6f,0x6e,0x74,0x20,0x66,0x61,0x63,0x65,0x3d,0x22,0x61,0x72,0x69,0x61, -0x6c,0x22,0x3e,0x0d,0x0a,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x69,0x6e, -0x64,0x65,0x78,0x2e,0x73,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x54,0x61,0x73,0x6b,0x20, -0x53,0x74,0x61,0x74,0x73,0x3c,0x2f,0x61,0x3e,0x20,0x3c,0x62,0x3e,0x7c,0x3c,0x2f, -0x62,0x3e,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x72,0x75,0x6e,0x74, -0x69,0x6d,0x65,0x2e,0x73,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x52,0x75,0x6e,0x20,0x54, -0x69,0x6d,0x65,0x20,0x53,0x74,0x61,0x74,0x73,0x3c,0x2f,0x61,0x3e,0x20,0x3c,0x62, -0x3e,0x7c,0x3c,0x2f,0x62,0x3e,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x22, -0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x66,0x72,0x65,0x65,0x72, -0x74,0x6f,0x73,0x2e,0x6f,0x72,0x67,0x2f,0x22,0x3e,0x46,0x72,0x65,0x65,0x52,0x54, -0x4f,0x53,0x20,0x48,0x6f,0x6d,0x65,0x70,0x61,0x67,0x65,0x3c,0x2f,0x61,0x3e,0x20, -0x3c,0x62,0x3e,0x7c,0x3c,0x2f,0x62,0x3e,0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66, -0x3d,0x22,0x6c,0x6f,0x67,0x6f,0x2e,0x6a,0x70,0x67,0x22,0x3e,0x33,0x37,0x4b,0x20, -0x6a,0x70,0x67,0x3c,0x2f,0x61,0x3e,0x0d,0x0a,0x3c,0x62,0x72,0x3e,0x3c,0x70,0x3e, -0x0d,0x0a,0x3c,0x68,0x72,0x3e,0x0d,0x0a,0x3c,0x62,0x72,0x3e,0x3c,0x70,0x3e,0x0d, -0x0a,0x3c,0x68,0x32,0x3e,0x52,0x75,0x6e,0x2d,0x74,0x69,0x6d,0x65,0x20,0x73,0x74, -0x61,0x74,0x69,0x73,0x74,0x69,0x63,0x73,0x3c,0x2f,0x68,0x32,0x3e,0x0d,0x0a,0x50, -0x61,0x67,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x72,0x65,0x66,0x72,0x65,0x73,0x68, -0x20,0x65,0x76,0x65,0x72,0x79,0x20,0x32,0x20,0x73,0x65,0x63,0x6f,0x6e,0x64,0x73, -0x2e,0x3c,0x70,0x3e,0x0d,0x0a,0x3c,0x66,0x6f,0x6e,0x74,0x20,0x66,0x61,0x63,0x65, -0x3d,0x22,0x63,0x6f,0x75,0x72,0x69,0x65,0x72,0x22,0x3e,0x3c,0x70,0x72,0x65,0x3e, -0x54,0x61,0x73,0x6b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, -0x41,0x62,0x73,0x20,0x54,0x69,0x6d,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x25,0x20, -0x54,0x69,0x6d,0x65,0x3c,0x62,0x72,0x3e,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, -0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, -0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, -0x3c,0x62,0x72,0x3e,0x0d,0x0a,0x3c,0x21,0x2d,0x2d,0x23,0x72,0x75,0x6e,0x5f,0x73, -0x74,0x61,0x74,0x73,0x2d,0x2d,0x3e,0x0d,0x0d,0x0a,0x3c,0x2f,0x70,0x72,0x65,0x3e, -0x3c,0x2f,0x66,0x6f,0x6e,0x74,0x3e,0x0d,0x0a,0x3c,0x2f,0x66,0x6f,0x6e,0x74,0x3e, -0x0d,0x0a,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a,0x3c,0x2f,0x68,0x74,0x6d, -0x6c,0x3e,0x0d,0x0a,0x0d,0x0a,}; - - - -const struct fsdata_file file__404_html[] = { { -file_NULL, -data__404_html, -data__404_html + 12, -sizeof(data__404_html) - 12, -1, -}}; - -const struct fsdata_file file__index_shtml[] = { { -file__404_html, -data__index_shtml, -data__index_shtml + 16, -sizeof(data__index_shtml) - 16, -1, -}}; - -const struct fsdata_file file__logo_jpg[] = { { -file__index_shtml, -data__logo_jpg, -data__logo_jpg + 12, -sizeof(data__logo_jpg) - 12, -1, -}}; - -const struct fsdata_file file__runtime_shtml[] = { { -file__logo_jpg, -data__runtime_shtml, -data__runtime_shtml + 16, -sizeof(data__runtime_shtml) - 16, -1, -}}; - -#define FS_ROOT file__runtime_shtml -#define FS_NUMFILES 4 - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.h b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.h deleted file mode 100644 index 6f6c557f3..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/fsdata.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __FSDATA_H__ -#define __FSDATA_H__ - -#include "lwip/opt.h" -#include "fs.h" - -struct fsdata_file { - const struct fsdata_file *next; - const unsigned char *name; - const unsigned char *data; - int len; - u8_t http_header_included; -#if HTTPD_PRECALCULATED_CHECKSUM - u16_t chksum_count; - const struct fsdata_chksum *chksum; -#endif /* HTTPD_PRECALCULATED_CHECKSUM */ -}; - -#endif /* __FSDATA_H__ */ diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.c deleted file mode 100644 index 6f1132caf..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.c +++ /dev/null @@ -1,2184 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* This httpd supports for a - * rudimentary server-side-include facility which will replace tags of the form - * in any file whose extension is .shtml, .shtm or .ssi with - * strings provided by an include handler whose pointer is provided to the - * module via function http_set_ssi_handler(). - * Additionally, a simple common - * gateway interface (CGI) handling mechanism has been added to allow clients - * to hook functions to particular request URIs. - * - * To enable SSI support, define label LWIP_HTTPD_SSI in lwipopts.h. - * To enable CGI support, define label LWIP_HTTPD_CGI in lwipopts.h. - * - * By default, the server assumes that HTTP headers are already present in - * each file stored in the file system. By defining LWIP_HTTPD_DYNAMIC_HEADERS in - * lwipopts.h, this behavior can be changed such that the server inserts the - * headers automatically based on the extension of the file being served. If - * this mode is used, be careful to ensure that the file system image used - * does not already contain the header information. - * - * File system images without headers can be created using the makefsfile - * tool with the -h command line option. - * - * - * Notes about valid SSI tags - * -------------------------- - * - * The following assumptions are made about tags used in SSI markers: - * - * 1. No tag may contain '-' or whitespace characters within the tag name. - * 2. Whitespace is allowed between the tag leadin "". - * 3. The maximum tag name length is LWIP_HTTPD_MAX_TAG_NAME_LEN, currently 8 characters. - * - * Notes on CGI usage - * ------------------ - * - * The simple CGI support offered here works with GET method requests only - * and can handle up to 16 parameters encoded into the URI. The handler - * function may not write directly to the HTTP output but must return a - * filename that the HTTP server will send to the browser as a response to - * the incoming CGI request. - * - * @todo: - * - don't use mem_malloc() (for SSI/dynamic headers) - * - split too long functions into multiple smaller functions? - * - support more file types? - */ -#include "lwip/debug.h" -#include "lwip/stats.h" -#include "httpd.h" -#include "httpd_structs.h" -#include "lwip/tcp.h" -#include "fs.h" - -#include -#include - -#if LWIP_TCP - -#ifndef HTTPD_DEBUG -#define HTTPD_DEBUG LWIP_DBG_OFF -#endif - -/** Set this to 1 and add the next line to lwippools.h to use a memp pool - * for allocating struct http_state instead of the heap: - * - * LWIP_MEMPOOL(HTTPD_STATE, 20, 100, "HTTPD_STATE") - */ -#ifndef HTTPD_USE_MEM_POOL -#define HTTPD_USE_MEM_POOL 0 -#endif - -/** The server port for HTTPD to use */ -#ifndef HTTPD_SERVER_PORT -#define HTTPD_SERVER_PORT 80 -#endif - -/** Maximum retries before the connection is aborted/closed. - * - number of times pcb->poll is called -> default is 4*500ms = 2s; - * - reset when pcb->sent is called - */ -#ifndef HTTPD_MAX_RETRIES -#define HTTPD_MAX_RETRIES 4 -#endif - -/** The poll delay is X*500ms */ -#ifndef HTTPD_POLL_INTERVAL -#define HTTPD_POLL_INTERVAL 4 -#endif - -/** Priority for tcp pcbs created by HTTPD (very low by default). - * Lower priorities get killed first when running out of memroy. - */ -#ifndef HTTPD_TCP_PRIO -#define HTTPD_TCP_PRIO TCP_PRIO_MIN -#endif - -/** Set this to 1 to enabled timing each file sent */ -#ifndef LWIP_HTTPD_TIMING -#define LWIP_HTTPD_TIMING 0 -#endif -#ifndef HTTPD_DEBUG_TIMING -#define HTTPD_DEBUG_TIMING LWIP_DBG_OFF -#endif - -/** Set this to 1 on platforms where strnstr is not available */ -#ifndef LWIP_HTTPD_STRNSTR_PRIVATE -#define LWIP_HTTPD_STRNSTR_PRIVATE 1 -#endif - -/** Set this to one to show error pages when parsing a request fails instead - of simply closing the connection. */ -#ifndef LWIP_HTTPD_SUPPORT_EXTSTATUS -#define LWIP_HTTPD_SUPPORT_EXTSTATUS 0 -#endif - -/** Set this to 0 to drop support for HTTP/0.9 clients (to save some bytes) */ -#ifndef LWIP_HTTPD_SUPPORT_V09 -#define LWIP_HTTPD_SUPPORT_V09 1 -#endif - -/** Set this to 1 to support HTTP request coming in in multiple packets/pbufs */ -#ifndef LWIP_HTTPD_SUPPORT_REQUESTLIST -#define LWIP_HTTPD_SUPPORT_REQUESTLIST 0 -#endif - -#if LWIP_HTTPD_SUPPORT_REQUESTLIST -/** Number of rx pbufs to enqueue to parse an incoming request (up to the first - newline) */ -#ifndef LWIP_HTTPD_REQ_QUEUELEN -#define LWIP_HTTPD_REQ_QUEUELEN 10 -#endif - -/** Number of (TCP payload-) bytes (in pbufs) to enqueue to parse and incoming - request (up to the first double-newline) */ -#ifndef LWIP_HTTPD_REQ_BUFSIZE -#define LWIP_HTTPD_REQ_BUFSIZE LWIP_HTTPD_MAX_REQ_LENGTH -#endif - -/** Defines the maximum length of a HTTP request line (up to the first CRLF, - copied from pbuf into this a global buffer when pbuf- or packet-queues - are received - otherwise the input pbuf is used directly) */ -#ifndef LWIP_HTTPD_MAX_REQ_LENGTH -#define LWIP_HTTPD_MAX_REQ_LENGTH 1023 -#endif -#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - -/** Maximum length of the filename to send as response to a POST request, - * filled in by the application when a POST is finished. - */ -#ifndef LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN -#define LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN 63 -#endif - -/** Set this to 0 to not send the SSI tag (default is on, so the tag will - * be sent in the HTML page */ -#ifndef LWIP_HTTPD_SSI_INCLUDE_TAG -#define LWIP_HTTPD_SSI_INCLUDE_TAG 1 -#endif - -/** Set this to 1 to call tcp_abort when tcp_close fails with memory error. - * This can be used to prevent consuming all memory in situations where the - * HTTP server has low priority compared to other communication. */ -#ifndef LWIP_HTTPD_ABORT_ON_CLOSE_MEM_ERROR -#define LWIP_HTTPD_ABORT_ON_CLOSE_MEM_ERROR 0 -#endif - -#ifndef true -#define true ((u8_t)1) -#endif - -#ifndef false -#define false ((u8_t)0) -#endif - -/** Minimum length for a valid HTTP/0.9 request: "GET /\r\n" -> 7 bytes */ -#define MIN_REQ_LEN 7 - -#define CRLF "\r\n" - -/** These defines check whether tcp_write has to copy data or not */ - -/** This was TI's check whether to let TCP copy data or not -#define HTTP_IS_DATA_VOLATILE(hs) ((hs->file < (char *)0x20000000) ? 0 : TCP_WRITE_FLAG_COPY)*/ -#ifndef HTTP_IS_DATA_VOLATILE -#if LWIP_HTTPD_SSI -/* Copy for SSI files, no copy for non-SSI files */ -#define HTTP_IS_DATA_VOLATILE(hs) ((hs)->tag_check ? TCP_WRITE_FLAG_COPY : 0) -#else /* LWIP_HTTPD_SSI */ -/** Default: don't copy if the data is sent from file-system directly */ -#define HTTP_IS_DATA_VOLATILE(hs) (((hs->file != NULL) && (hs->handle != NULL) && (hs->file == \ - (char*)hs->handle->data + hs->handle->len - hs->left)) \ - ? 0 : TCP_WRITE_FLAG_COPY) -#endif /* LWIP_HTTPD_SSI */ -#endif - -/** Default: headers are sent from ROM */ -#ifndef HTTP_IS_HDR_VOLATILE -#define HTTP_IS_HDR_VOLATILE(hs, ptr) 0 -#endif - -#if LWIP_HTTPD_SSI -/** Default: Tags are sent from struct http_state and are therefore volatile */ -#ifndef HTTP_IS_TAG_VOLATILE -#define HTTP_IS_TAG_VOLATILE(ptr) TCP_WRITE_FLAG_COPY -#endif -#endif /* LWIP_HTTPD_SSI */ - -typedef struct -{ - const char *name; - u8_t shtml; -} default_filename; - -const default_filename g_psDefaultFilenames[] = { - {"/index.shtml", true }, - {"/index.ssi", true }, - {"/index.shtm", true }, - {"/index.html", false }, - {"/index.htm", false } -}; - -#define NUM_DEFAULT_FILENAMES (sizeof(g_psDefaultFilenames) / \ - sizeof(default_filename)) - -#if LWIP_HTTPD_SUPPORT_REQUESTLIST -/** HTTP request is copied here from pbufs for simple parsing */ -static char httpd_req_buf[LWIP_HTTPD_MAX_REQ_LENGTH+1]; -#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - -#if LWIP_HTTPD_SUPPORT_POST -/** Filename for response file to send when POST is finished */ -static char http_post_response_filename[LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN+1]; -#endif /* LWIP_HTTPD_SUPPORT_POST */ - -#if LWIP_HTTPD_DYNAMIC_HEADERS -/* The number of individual strings that comprise the headers sent before each - * requested file. - */ -#define NUM_FILE_HDR_STRINGS 3 -#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */ - -#if LWIP_HTTPD_SSI - -#define HTTPD_LAST_TAG_PART 0xFFFF - -const char * const g_pcSSIExtensions[] = { - ".shtml", ".shtm", ".ssi", ".xml" -}; - -#define NUM_SHTML_EXTENSIONS (sizeof(g_pcSSIExtensions) / sizeof(const char *)) - -enum tag_check_state { - TAG_NONE, /* Not processing an SSI tag */ - TAG_LEADIN, /* Tag lead in "" being processed */ - TAG_SENDING /* Sending tag replacement string */ -}; -#endif /* LWIP_HTTPD_SSI */ - -struct http_state { - struct fs_file *handle; - char *file; /* Pointer to first unsent byte in buf. */ - -#if LWIP_HTTPD_SUPPORT_REQUESTLIST - struct pbuf *req; -#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - -#if LWIP_HTTPD_SSI || LWIP_HTTPD_DYNAMIC_HEADERS - char *buf; /* File read buffer. */ - int buf_len; /* Size of file read buffer, buf. */ -#endif /* LWIP_HTTPD_SSI || LWIP_HTTPD_DYNAMIC_HEADERS */ - u32_t left; /* Number of unsent bytes in buf. */ - u8_t retries; -#if LWIP_HTTPD_SSI - const char *parsed; /* Pointer to the first unparsed byte in buf. */ -#if !LWIP_HTTPD_SSI_INCLUDE_TAG - const char *tag_started;/* Poitner to the first opening '<' of the tag. */ -#endif /* !LWIP_HTTPD_SSI_INCLUDE_TAG */ - const char *tag_end; /* Pointer to char after the closing '>' of the tag. */ - u32_t parse_left; /* Number of unparsed bytes in buf. */ - u16_t tag_index; /* Counter used by tag parsing state machine */ - u16_t tag_insert_len; /* Length of insert in string tag_insert */ -#if LWIP_HTTPD_SSI_MULTIPART - u16_t tag_part; /* Counter passed to and changed by tag insertion function to insert multiple times */ -#endif /* LWIP_HTTPD_SSI_MULTIPART */ - u8_t tag_check; /* true if we are processing a .shtml file else false */ - u8_t tag_name_len; /* Length of the tag name in string tag_name */ - char tag_name[LWIP_HTTPD_MAX_TAG_NAME_LEN + 1]; /* Last tag name extracted */ - char tag_insert[LWIP_HTTPD_MAX_TAG_INSERT_LEN + 1]; /* Insert string for tag_name */ - enum tag_check_state tag_state; /* State of the tag processor */ -#endif /* LWIP_HTTPD_SSI */ -#if LWIP_HTTPD_CGI - char *params[LWIP_HTTPD_MAX_CGI_PARAMETERS]; /* Params extracted from the request URI */ - char *param_vals[LWIP_HTTPD_MAX_CGI_PARAMETERS]; /* Values for each extracted param */ -#endif /* LWIP_HTTPD_CGI */ -#if LWIP_HTTPD_DYNAMIC_HEADERS - const char *hdrs[NUM_FILE_HDR_STRINGS]; /* HTTP headers to be sent. */ - u16_t hdr_pos; /* The position of the first unsent header byte in the - current string */ - u16_t hdr_index; /* The index of the hdr string currently being sent. */ -#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */ -#if LWIP_HTTPD_TIMING - u32_t time_started; -#endif /* LWIP_HTTPD_TIMING */ -#if LWIP_HTTPD_SUPPORT_POST - u32_t post_content_len_left; -#if LWIP_HTTPD_POST_MANUAL_WND - u32_t unrecved_bytes; - struct tcp_pcb *pcb; - u8_t no_auto_wnd; -#endif /* LWIP_HTTPD_POST_MANUAL_WND */ -#endif /* LWIP_HTTPD_SUPPORT_POST*/ -}; - -static err_t http_find_file(struct http_state *hs, const char *uri, int is_09); -static err_t http_init_file(struct http_state *hs, struct fs_file *file, int is_09, const char *uri); -static err_t http_poll(void *arg, struct tcp_pcb *pcb); - -#if LWIP_HTTPD_SSI -/* SSI insert handler function pointer. */ -tSSIHandler g_pfnSSIHandler = NULL; -int g_iNumTags = 0; -const char **g_ppcTags = NULL; - -#define LEN_TAG_LEAD_IN 5 -const char * const g_pcTagLeadIn = ""; -#endif /* LWIP_HTTPD_SSI */ - -#if LWIP_HTTPD_CGI -/* CGI handler information */ -const tCGI *g_pCGIs; -int g_iNumCGIs; -#endif /* LWIP_HTTPD_CGI */ - -#if LWIP_HTTPD_STRNSTR_PRIVATE -/** Like strstr but does not need 'buffer' to be NULL-terminated */ -static char* -strnstr(const char* buffer, const char* token, size_t n) -{ - const char* p; - int tokenlen = (int)strlen(token); - if (tokenlen == 0) { - return (char *)buffer; - } - for (p = buffer; *p && (p + tokenlen <= buffer + n); p++) { - if ((*p == *token) && (strncmp(p, token, tokenlen) == 0)) { - return (char *)p; - } - } - return NULL; -} -#endif /* LWIP_HTTPD_STRNSTR_PRIVATE */ - -/** Allocate a struct http_state. */ -static struct http_state* -http_state_alloc(void) -{ - struct http_state *ret; -#if HTTPD_USE_MEM_POOL - ret = (struct http_state *)memp_malloc(MEMP_HTTPD_STATE); -#else /* HTTPD_USE_MEM_POOL */ - ret = (struct http_state *)mem_malloc(sizeof(struct http_state)); -#endif /* HTTPD_USE_MEM_POOL */ - if (ret != NULL) { - /* Initialize the structure. */ - memset(ret, 0, sizeof(struct http_state)); -#if LWIP_HTTPD_DYNAMIC_HEADERS - /* Indicate that the headers are not yet valid */ - ret->hdr_index = NUM_FILE_HDR_STRINGS; -#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */ - } - return ret; -} - -/** Free a struct http_state. - * Also frees the file data if dynamic. - */ -static void -http_state_free(struct http_state *hs) -{ - if (hs != NULL) { - if(hs->handle) { -#if LWIP_HTTPD_TIMING - u32_t ms_needed = sys_now() - hs->time_started; - u32_t needed = LWIP_MAX(1, (ms_needed/100)); - LWIP_DEBUGF(HTTPD_DEBUG_TIMING, ("httpd: needed %"U32_F" ms to send file of %d bytes -> %"U32_F" bytes/sec\n", - ms_needed, hs->handle->len, ((((u32_t)hs->handle->len) * 10) / needed))); -#endif /* LWIP_HTTPD_TIMING */ - fs_close(hs->handle); - hs->handle = NULL; - } -#if LWIP_HTTPD_SSI || LWIP_HTTPD_DYNAMIC_HEADERS - if (hs->buf != NULL) { - mem_free(hs->buf); - hs->buf = NULL; - } -#endif /* LWIP_HTTPD_SSI || LWIP_HTTPD_DYNAMIC_HEADERS */ -#if HTTPD_USE_MEM_POOL - memp_free(MEMP_HTTPD_STATE, hs); -#else /* HTTPD_USE_MEM_POOL */ - mem_free(hs); -#endif /* HTTPD_USE_MEM_POOL */ - } -} - -/** Call tcp_write() in a loop trying smaller and smaller length - * - * @param pcb tcp_pcb to send - * @param ptr Data to send - * @param length Length of data to send (in/out: on return, contains the - * amount of data sent) - * @param apiflags directly passed to tcp_write - * @return the return value of tcp_write - */ -static err_t -http_write(struct tcp_pcb *pcb, const void* ptr, u16_t *length, u8_t apiflags) -{ - u16_t len; - err_t err; - LWIP_ASSERT("length != NULL", length != NULL); - len = *length; - do { - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("Trying go send %d bytes\n", len)); - err = tcp_write(pcb, ptr, len, apiflags); - if (err == ERR_MEM) { - if ((tcp_sndbuf(pcb) == 0) || - (tcp_sndqueuelen(pcb) >= TCP_SND_QUEUELEN)) { - /* no need to try smaller sizes */ - len = 1; - } else { - len /= 2; - } - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, - ("Send failed, trying less (%d bytes)\n", len)); - } - } while ((err == ERR_MEM) && (len > 1)); - - if (err == ERR_OK) { - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("Sent %d bytes\n", len)); - } else { - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("Send failed with err %d (\"%s\")\n", err, lwip_strerr(err))); - } - - *length = len; - return err; -} - -/** - * The connection shall be actively closed. - * Reset the sent- and recv-callbacks. - * - * @param pcb the tcp pcb to reset callbacks - * @param hs connection state to free - */ -static err_t -http_close_conn(struct tcp_pcb *pcb, struct http_state *hs) -{ - err_t err; - LWIP_DEBUGF(HTTPD_DEBUG, ("Closing connection %p\n", (void*)pcb)); - -#if LWIP_HTTPD_SUPPORT_POST - if (hs != NULL) { - if ((hs->post_content_len_left != 0) -#if LWIP_HTTPD_POST_MANUAL_WND - || ((hs->no_auto_wnd != 0) && (hs->unrecved_bytes != 0)) -#endif /* LWIP_HTTPD_POST_MANUAL_WND */ - ) { - /* make sure the post code knows that the connection is closed */ - http_post_response_filename[0] = 0; - httpd_post_finished(hs, http_post_response_filename, LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN); - } - } -#endif /* LWIP_HTTPD_SUPPORT_POST*/ - - - tcp_arg(pcb, NULL); - tcp_recv(pcb, NULL); - tcp_err(pcb, NULL); - tcp_poll(pcb, NULL, 0); - tcp_sent(pcb, NULL); - if(hs != NULL) { - http_state_free(hs); - } - - err = tcp_close(pcb); - if (err != ERR_OK) { - LWIP_DEBUGF(HTTPD_DEBUG, ("Error %d closing %p\n", err, (void*)pcb)); - /* error closing, try again later in poll */ - tcp_poll(pcb, http_poll, HTTPD_POLL_INTERVAL); - } - return err; -} -#if LWIP_HTTPD_CGI -/** - * Extract URI parameters from the parameter-part of an URI in the form - * "test.cgi?x=y" @todo: better explanation! - * Pointers to the parameters are stored in hs->param_vals. - * - * @param hs http connection state - * @param params pointer to the NULL-terminated parameter string from the URI - * @return number of parameters extracted - */ -static int -extract_uri_parameters(struct http_state *hs, char *params) -{ - char *pair; - char *equals; - int loop; - - /* If we have no parameters at all, return immediately. */ - if(!params || (params[0] == '\0')) { - return(0); - } - - /* Get a pointer to our first parameter */ - pair = params; - - /* Parse up to LWIP_HTTPD_MAX_CGI_PARAMETERS from the passed string and ignore the - * remainder (if any) */ - for(loop = 0; (loop < LWIP_HTTPD_MAX_CGI_PARAMETERS) && pair; loop++) { - - /* Save the name of the parameter */ - hs->params[loop] = pair; - - /* Remember the start of this name=value pair */ - equals = pair; - - /* Find the start of the next name=value pair and replace the delimiter - * with a 0 to terminate the previous pair string. */ - pair = strchr(pair, '&'); - if(pair) { - *pair = '\0'; - pair++; - } else { - /* We didn't find a new parameter so find the end of the URI and - * replace the space with a '\0' */ - pair = strchr(equals, ' '); - if(pair) { - *pair = '\0'; - } - - /* Revert to NULL so that we exit the loop as expected. */ - pair = NULL; - } - - /* Now find the '=' in the previous pair, replace it with '\0' and save - * the parameter value string. */ - equals = strchr(equals, '='); - if(equals) { - *equals = '\0'; - hs->param_vals[loop] = equals + 1; - } else { - hs->param_vals[loop] = NULL; - } - } - - return loop; -} -#endif /* LWIP_HTTPD_CGI */ - -#if LWIP_HTTPD_SSI -/** - * Insert a tag (found in an shtml in the form of "" into the file. - * The tag's name is stored in hs->tag_name (NULL-terminated), the replacement - * should be written to hs->tag_insert (up to a length of LWIP_HTTPD_MAX_TAG_INSERT_LEN). - * The amount of data written is stored to hs->tag_insert_len. - * - * @todo: return tag_insert_len - maybe it can be removed from struct http_state? - * - * @param hs http connection state - */ -static void -get_tag_insert(struct http_state *hs) -{ - int loop; - size_t len; -#if LWIP_HTTPD_SSI_MULTIPART - u16_t current_tag_part = hs->tag_part; - hs->tag_part = HTTPD_LAST_TAG_PART; -#endif /* LWIP_HTTPD_SSI_MULTIPART */ - - if(g_pfnSSIHandler && g_ppcTags && g_iNumTags) { - - /* Find this tag in the list we have been provided. */ - for(loop = 0; loop < g_iNumTags; loop++) { - if(strcmp(hs->tag_name, g_ppcTags[loop]) == 0) { - hs->tag_insert_len = g_pfnSSIHandler(loop, hs->tag_insert, - LWIP_HTTPD_MAX_TAG_INSERT_LEN -#if LWIP_HTTPD_SSI_MULTIPART - , current_tag_part, &hs->tag_part -#endif /* LWIP_HTTPD_SSI_MULTIPART */ -#if LWIP_HTTPD_FILE_STATE - , hs->handle->state -#endif /* LWIP_HTTPD_FILE_STATE */ - ); - return; - } - } - } - - /* If we drop out, we were asked to serve a page which contains tags that - * we don't have a handler for. Merely echo back the tags with an error - * marker. */ -#define UNKNOWN_TAG1_TEXT "***UNKNOWN TAG " -#define UNKNOWN_TAG1_LEN 18 -#define UNKNOWN_TAG2_TEXT "***" -#define UNKNOWN_TAG2_LEN 7 - len = LWIP_MIN(strlen(hs->tag_name), - LWIP_HTTPD_MAX_TAG_INSERT_LEN - (UNKNOWN_TAG1_LEN + UNKNOWN_TAG2_LEN)); - MEMCPY(hs->tag_insert, UNKNOWN_TAG1_TEXT, UNKNOWN_TAG1_LEN); - MEMCPY(&hs->tag_insert[UNKNOWN_TAG1_LEN], hs->tag_name, len); - MEMCPY(&hs->tag_insert[UNKNOWN_TAG1_LEN + len], UNKNOWN_TAG2_TEXT, UNKNOWN_TAG2_LEN); - hs->tag_insert[UNKNOWN_TAG1_LEN + len + UNKNOWN_TAG2_LEN] = 0; - - len = strlen(hs->tag_insert); - LWIP_ASSERT("len <= 0xffff", len <= 0xffff); - hs->tag_insert_len = (u16_t)len; -} -#endif /* LWIP_HTTPD_SSI */ - -#if LWIP_HTTPD_DYNAMIC_HEADERS -/** - * Generate the relevant HTTP headers for the given filename and write - * them into the supplied buffer. - */ -static void -get_http_headers(struct http_state *pState, char *pszURI) -{ - unsigned int iLoop; - char *pszWork; - char *pszExt; - char *pszVars; - - /* Ensure that we initialize the loop counter. */ - iLoop = 0; - - /* In all cases, the second header we send is the server identification - so set it here. */ - pState->hdrs[1] = g_psHTTPHeaderStrings[HTTP_HDR_SERVER]; - - /* Is this a normal file or the special case we use to send back the - default "404: Page not found" response? */ - if (pszURI == NULL) { - pState->hdrs[0] = g_psHTTPHeaderStrings[HTTP_HDR_NOT_FOUND]; - pState->hdrs[2] = g_psHTTPHeaderStrings[DEFAULT_404_HTML]; - - /* Set up to send the first header string. */ - pState->hdr_index = 0; - pState->hdr_pos = 0; - return; - } else { - /* We are dealing with a particular filename. Look for one other - special case. We assume that any filename with "404" in it must be - indicative of a 404 server error whereas all other files require - the 200 OK header. */ - if (strstr(pszURI, "404")) { - pState->hdrs[0] = g_psHTTPHeaderStrings[HTTP_HDR_NOT_FOUND]; - } else if (strstr(pszURI, "400")) { - pState->hdrs[0] = g_psHTTPHeaderStrings[HTTP_HDR_BAD_REQUEST]; - } else if (strstr(pszURI, "501")) { - pState->hdrs[0] = g_psHTTPHeaderStrings[HTTP_HDR_NOT_IMPL]; - } else { - pState->hdrs[0] = g_psHTTPHeaderStrings[HTTP_HDR_OK]; - } - - /* Determine if the URI has any variables and, if so, temporarily remove - them. */ - pszVars = strchr(pszURI, '?'); - if(pszVars) { - *pszVars = '\0'; - } - - /* Get a pointer to the file extension. We find this by looking for the - last occurrence of "." in the filename passed. */ - pszExt = NULL; - pszWork = strchr(pszURI, '.'); - while(pszWork) { - pszExt = pszWork + 1; - pszWork = strchr(pszExt, '.'); - } - - /* Now determine the content type and add the relevant header for that. */ - for(iLoop = 0; (iLoop < NUM_HTTP_HEADERS) && pszExt; iLoop++) { - /* Have we found a matching extension? */ - if(!strcmp(g_psHTTPHeaders[iLoop].extension, pszExt)) { - pState->hdrs[2] = - g_psHTTPHeaderStrings[g_psHTTPHeaders[iLoop].headerIndex]; - break; - } - } - - /* Reinstate the parameter marker if there was one in the original URI. */ - if(pszVars) { - *pszVars = '?'; - } - } - - /* Does the URL passed have any file extension? If not, we assume it - is a special-case URL used for control state notification and we do - not send any HTTP headers with the response. */ - if(!pszExt) { - /* Force the header index to a value indicating that all headers - have already been sent. */ - pState->hdr_index = NUM_FILE_HDR_STRINGS; - } else { - /* Did we find a matching extension? */ - if(iLoop == NUM_HTTP_HEADERS) { - /* No - use the default, plain text file type. */ - pState->hdrs[2] = g_psHTTPHeaderStrings[HTTP_HDR_DEFAULT_TYPE]; - } - - /* Set up to send the first header string. */ - pState->hdr_index = 0; - pState->hdr_pos = 0; - } -} -#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */ - -/** - * Try to send more data on this pcb. - * - * @param pcb the pcb to send data - * @param hs connection state - */ -static u8_t -http_send_data(struct tcp_pcb *pcb, struct http_state *hs) -{ - err_t err; - u16_t len; - u16_t mss; - u8_t data_to_send = false; -#if LWIP_HTTPD_DYNAMIC_HEADERS - u16_t hdrlen, sendlen; -#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */ - - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("http_send_data: pcb=%p hs=%p left=%d\n", (void*)pcb, - (void*)hs, hs != NULL ? hs->left : 0)); - -#if LWIP_HTTPD_SUPPORT_POST && LWIP_HTTPD_POST_MANUAL_WND - if (hs->unrecved_bytes != 0) { - return 0; - } -#endif /* LWIP_HTTPD_SUPPORT_POST && LWIP_HTTPD_POST_MANUAL_WND */ - -#if LWIP_HTTPD_DYNAMIC_HEADERS - /* If we were passed a NULL state structure pointer, ignore the call. */ - if (hs == NULL) { - return 0; - } - - /* Assume no error until we find otherwise */ - err = ERR_OK; - - /* Do we have any more header data to send for this file? */ - if(hs->hdr_index < NUM_FILE_HDR_STRINGS) { - /* How much data can we send? */ - len = tcp_sndbuf(pcb); - sendlen = len; - - while(len && (hs->hdr_index < NUM_FILE_HDR_STRINGS) && sendlen) { - const void *ptr; - u16_t old_sendlen; - /* How much do we have to send from the current header? */ - hdrlen = (u16_t)strlen(hs->hdrs[hs->hdr_index]); - - /* How much of this can we send? */ - sendlen = (len < (hdrlen - hs->hdr_pos)) ? len : (hdrlen - hs->hdr_pos); - - /* Send this amount of data or as much as we can given memory - * constraints. */ - ptr = (const void *)(hs->hdrs[hs->hdr_index] + hs->hdr_pos); - old_sendlen = sendlen; - err = http_write(pcb, ptr, &sendlen, HTTP_IS_HDR_VOLATILE(hs, ptr)); - if ((err == ERR_OK) && (old_sendlen != sendlen)) { - /* Remember that we added some more data to be transmitted. */ - data_to_send = true; - } else if (err != ERR_OK) { - /* special case: http_write does not try to send 1 byte */ - sendlen = 0; - } - - /* Fix up the header position for the next time round. */ - hs->hdr_pos += sendlen; - len -= sendlen; - - /* Have we finished sending this string? */ - if(hs->hdr_pos == hdrlen) { - /* Yes - move on to the next one */ - hs->hdr_index++; - hs->hdr_pos = 0; - } - } - - /* If we get here and there are still header bytes to send, we send - * the header information we just wrote immediately. If there are no - * more headers to send, but we do have file data to send, drop through - * to try to send some file data too. */ - if((hs->hdr_index < NUM_FILE_HDR_STRINGS) || !hs->file) { - LWIP_DEBUGF(HTTPD_DEBUG, ("tcp_output\n")); - return 1; - } - } -#else /* LWIP_HTTPD_DYNAMIC_HEADERS */ - /* Assume no error until we find otherwise */ - err = ERR_OK; -#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */ - - /* Have we run out of file data to send? If so, we need to read the next - * block from the file. */ - if (hs->left == 0) { -#if LWIP_HTTPD_SSI || LWIP_HTTPD_DYNAMIC_HEADERS - int count; -#endif /* LWIP_HTTPD_SSI || LWIP_HTTPD_DYNAMIC_HEADERS */ - - /* Do we have a valid file handle? */ - if (hs->handle == NULL) { - /* No - close the connection. */ - http_close_conn(pcb, hs); - return 0; - } - if (fs_bytes_left(hs->handle) <= 0) { - /* We reached the end of the file so this request is done. - * @todo: don't close here for HTTP/1.1? */ - LWIP_DEBUGF(HTTPD_DEBUG, ("End of file.\n")); - http_close_conn(pcb, hs); - return 0; - } -#if LWIP_HTTPD_SSI || LWIP_HTTPD_DYNAMIC_HEADERS - /* Do we already have a send buffer allocated? */ - if(hs->buf) { - /* Yes - get the length of the buffer */ - count = hs->buf_len; - } else { - /* We don't have a send buffer so allocate one up to 2mss bytes long. */ - count = 2 * tcp_mss(pcb); - do { - hs->buf = (char*)mem_malloc((mem_size_t)count); - if (hs->buf != NULL) { - hs->buf_len = count; - break; - } - count = count / 2; - } while (count > 100); - - /* Did we get a send buffer? If not, return immediately. */ - if (hs->buf == NULL) { - LWIP_DEBUGF(HTTPD_DEBUG, ("No buff\n")); - return 0; - } - } - - /* Read a block of data from the file. */ - LWIP_DEBUGF(HTTPD_DEBUG, ("Trying to read %d bytes.\n", count)); - - count = fs_read(hs->handle, hs->buf, count); - if(count < 0) { - /* We reached the end of the file so this request is done. - * @todo: don't close here for HTTP/1.1? */ - LWIP_DEBUGF(HTTPD_DEBUG, ("End of file.\n")); - http_close_conn(pcb, hs); - return 1; - } - - /* Set up to send the block of data we just read */ - LWIP_DEBUGF(HTTPD_DEBUG, ("Read %d bytes.\n", count)); - hs->left = count; - hs->file = hs->buf; -#if LWIP_HTTPD_SSI - hs->parse_left = count; - hs->parsed = hs->buf; -#endif /* LWIP_HTTPD_SSI */ -#else /* LWIP_HTTPD_SSI || LWIP_HTTPD_DYNAMIC_HEADERS */ - LWIP_ASSERT("SSI and DYNAMIC_HEADERS turned off but eof not reached", 0); -#endif /* LWIP_HTTPD_SSI || LWIP_HTTPD_DYNAMIC_HEADERS */ - } - -#if LWIP_HTTPD_SSI - if(!hs->tag_check) { -#endif /* LWIP_HTTPD_SSI */ - /* We are not processing an SHTML file so no tag checking is necessary. - * Just send the data as we received it from the file. */ - - /* We cannot send more data than space available in the send - buffer. */ - if (tcp_sndbuf(pcb) < hs->left) { - len = tcp_sndbuf(pcb); - } else { - len = (u16_t)hs->left; - LWIP_ASSERT("hs->left did not fit into u16_t!", (len == hs->left)); - } - mss = tcp_mss(pcb); - if(len > (2 * mss)) { - len = 2 * mss; - } - - err = http_write(pcb, hs->file, &len, HTTP_IS_DATA_VOLATILE(hs)); - if (err == ERR_OK) { - data_to_send = true; - hs->file += len; - hs->left -= len; - } -#if LWIP_HTTPD_SSI - } else { - /* We are processing an SHTML file so need to scan for tags and replace - * them with insert strings. We need to be careful here since a tag may - * straddle the boundary of two blocks read from the file and we may also - * have to split the insert string between two tcp_write operations. */ - - /* How much data could we send? */ - len = tcp_sndbuf(pcb); - - /* Do we have remaining data to send before parsing more? */ - if(hs->parsed > hs->file) { - /* We cannot send more data than space available in the send - buffer. */ - if (tcp_sndbuf(pcb) < (hs->parsed - hs->file)) { - len = tcp_sndbuf(pcb); - } else { - LWIP_ASSERT("Data size does not fit into u16_t!", - (hs->parsed - hs->file) <= 0xffff); - len = (u16_t)(hs->parsed - hs->file); - } - mss = tcp_mss(pcb); - if(len > (2 * mss)) { - len = 2 * mss; - } - - err = http_write(pcb, hs->file, &len, HTTP_IS_DATA_VOLATILE(hs)); - if (err == ERR_OK) { - data_to_send = true; - hs->file += len; - hs->left -= len; - } - - /* If the send buffer is full, return now. */ - if(tcp_sndbuf(pcb) == 0) { - return data_to_send; - } - } - - LWIP_DEBUGF(HTTPD_DEBUG, ("State %d, %d left\n", hs->tag_state, hs->parse_left)); - - /* We have sent all the data that was already parsed so continue parsing - * the buffer contents looking for SSI tags. */ - while((hs->parse_left) && (err == ERR_OK)) { - /* @todo: somewhere in this loop, 'len' should grow again... */ - if (len == 0) { - return data_to_send; - } - switch(hs->tag_state) { - case TAG_NONE: - /* We are not currently processing an SSI tag so scan for the - * start of the lead-in marker. */ - if(*hs->parsed == g_pcTagLeadIn[0]) { - /* We found what could be the lead-in for a new tag so change - * state appropriately. */ - hs->tag_state = TAG_LEADIN; - hs->tag_index = 1; -#if !LWIP_HTTPD_SSI_INCLUDE_TAG - hs->tag_started = hs->parsed; -#endif /* !LWIP_HTTPD_SSI_INCLUDE_TAG */ - } - - /* Move on to the next character in the buffer */ - hs->parse_left--; - hs->parsed++; - break; - - case TAG_LEADIN: - /* We are processing the lead-in marker, looking for the start of - * the tag name. */ - - /* Have we reached the end of the leadin? */ - if(hs->tag_index == LEN_TAG_LEAD_IN) { - hs->tag_index = 0; - hs->tag_state = TAG_FOUND; - } else { - /* Have we found the next character we expect for the tag leadin? */ - if(*hs->parsed == g_pcTagLeadIn[hs->tag_index]) { - /* Yes - move to the next one unless we have found the complete - * leadin, in which case we start looking for the tag itself */ - hs->tag_index++; - } else { - /* We found an unexpected character so this is not a tag. Move - * back to idle state. */ - hs->tag_state = TAG_NONE; - } - - /* Move on to the next character in the buffer */ - hs->parse_left--; - hs->parsed++; - } - break; - - case TAG_FOUND: - /* We are reading the tag name, looking for the start of the - * lead-out marker and removing any whitespace found. */ - - /* Remove leading whitespace between the tag leading and the first - * tag name character. */ - if((hs->tag_index == 0) && ((*hs->parsed == ' ') || - (*hs->parsed == '\t') || (*hs->parsed == '\n') || - (*hs->parsed == '\r'))) { - /* Move on to the next character in the buffer */ - hs->parse_left--; - hs->parsed++; - break; - } - - /* Have we found the end of the tag name? This is signalled by - * us finding the first leadout character or whitespace */ - if((*hs->parsed == g_pcTagLeadOut[0]) || - (*hs->parsed == ' ') || (*hs->parsed == '\t') || - (*hs->parsed == '\n') || (*hs->parsed == '\r')) { - - if(hs->tag_index == 0) { - /* We read a zero length tag so ignore it. */ - hs->tag_state = TAG_NONE; - } else { - /* We read a non-empty tag so go ahead and look for the - * leadout string. */ - hs->tag_state = TAG_LEADOUT; - LWIP_ASSERT("hs->tag_index <= 0xff", hs->tag_index <= 0xff); - hs->tag_name_len = (u8_t)hs->tag_index; - hs->tag_name[hs->tag_index] = '\0'; - if(*hs->parsed == g_pcTagLeadOut[0]) { - hs->tag_index = 1; - } else { - hs->tag_index = 0; - } - } - } else { - /* This character is part of the tag name so save it */ - if(hs->tag_index < LWIP_HTTPD_MAX_TAG_NAME_LEN) { - hs->tag_name[hs->tag_index++] = *hs->parsed; - } else { - /* The tag was too long so ignore it. */ - hs->tag_state = TAG_NONE; - } - } - - /* Move on to the next character in the buffer */ - hs->parse_left--; - hs->parsed++; - - break; - - /* We are looking for the end of the lead-out marker. */ - case TAG_LEADOUT: - /* Remove leading whitespace between the tag leading and the first - * tag leadout character. */ - if((hs->tag_index == 0) && ((*hs->parsed == ' ') || - (*hs->parsed == '\t') || (*hs->parsed == '\n') || - (*hs->parsed == '\r'))) { - /* Move on to the next character in the buffer */ - hs->parse_left--; - hs->parsed++; - break; - } - - /* Have we found the next character we expect for the tag leadout? */ - if(*hs->parsed == g_pcTagLeadOut[hs->tag_index]) { - /* Yes - move to the next one unless we have found the complete - * leadout, in which case we need to call the client to process - * the tag. */ - - /* Move on to the next character in the buffer */ - hs->parse_left--; - hs->parsed++; - - if(hs->tag_index == (LEN_TAG_LEAD_OUT - 1)) { - /* Call the client to ask for the insert string for the - * tag we just found. */ -#if LWIP_HTTPD_SSI_MULTIPART - hs->tag_part = 0; /* start with tag part 0 */ -#endif /* LWIP_HTTPD_SSI_MULTIPART */ - get_tag_insert(hs); - - /* Next time through, we are going to be sending data - * immediately, either the end of the block we start - * sending here or the insert string. */ - hs->tag_index = 0; - hs->tag_state = TAG_SENDING; - hs->tag_end = hs->parsed; -#if !LWIP_HTTPD_SSI_INCLUDE_TAG - hs->parsed = hs->tag_started; -#endif /* !LWIP_HTTPD_SSI_INCLUDE_TAG*/ - - /* If there is any unsent data in the buffer prior to the - * tag, we need to send it now. */ - if (hs->tag_end > hs->file) { - /* How much of the data can we send? */ -#if LWIP_HTTPD_SSI_INCLUDE_TAG - if(len > hs->tag_end - hs->file) { - len = (u16_t)(hs->tag_end - hs->file); - } -#else /* LWIP_HTTPD_SSI_INCLUDE_TAG*/ - if(len > hs->tag_started - hs->file) { - /* we would include the tag in sending */ - len = (u16_t)(hs->tag_started - hs->file); - } -#endif /* LWIP_HTTPD_SSI_INCLUDE_TAG*/ - - err = http_write(pcb, hs->file, &len, HTTP_IS_DATA_VOLATILE(hs)); - if (err == ERR_OK) { - data_to_send = true; -#if !LWIP_HTTPD_SSI_INCLUDE_TAG - if(hs->tag_started <= hs->file) { - /* pretend to have sent the tag, too */ - len += hs->tag_end - hs->tag_started; - } -#endif /* !LWIP_HTTPD_SSI_INCLUDE_TAG*/ - hs->file += len; - hs->left -= len; - } - } - } else { - hs->tag_index++; - } - } else { - /* We found an unexpected character so this is not a tag. Move - * back to idle state. */ - hs->parse_left--; - hs->parsed++; - hs->tag_state = TAG_NONE; - } - break; - - /* - * We have found a valid tag and are in the process of sending - * data as a result of that discovery. We send either remaining data - * from the file prior to the insert point or the insert string itself. - */ - case TAG_SENDING: - /* Do we have any remaining file data to send from the buffer prior - * to the tag? */ - if(hs->tag_end > hs->file) { - /* How much of the data can we send? */ -#if LWIP_HTTPD_SSI_INCLUDE_TAG - if(len > hs->tag_end - hs->file) { - len = (u16_t)(hs->tag_end - hs->file); - } -#else /* LWIP_HTTPD_SSI_INCLUDE_TAG*/ - LWIP_ASSERT("hs->started >= hs->file", hs->tag_started >= hs->file); - if (len > hs->tag_started - hs->file) { - /* we would include the tag in sending */ - len = (u16_t)(hs->tag_started - hs->file); - } -#endif /* LWIP_HTTPD_SSI_INCLUDE_TAG*/ - if (len != 0) { - err = http_write(pcb, hs->file, &len, HTTP_IS_DATA_VOLATILE(hs)); - } else { - err = ERR_OK; - } - if (err == ERR_OK) { - data_to_send = true; -#if !LWIP_HTTPD_SSI_INCLUDE_TAG - if(hs->tag_started <= hs->file) { - /* pretend to have sent the tag, too */ - len += hs->tag_end - hs->tag_started; - } -#endif /* !LWIP_HTTPD_SSI_INCLUDE_TAG*/ - hs->file += len; - hs->left -= len; - } - } else { -#if LWIP_HTTPD_SSI_MULTIPART - if(hs->tag_index >= hs->tag_insert_len) { - /* Did the last SSIHandler have more to send? */ - if (hs->tag_part != HTTPD_LAST_TAG_PART) { - /* If so, call it again */ - hs->tag_index = 0; - get_tag_insert(hs); - } - } -#endif /* LWIP_HTTPD_SSI_MULTIPART */ - - /* Do we still have insert data left to send? */ - if(hs->tag_index < hs->tag_insert_len) { - /* We are sending the insert string itself. How much of the - * insert can we send? */ - if(len > (hs->tag_insert_len - hs->tag_index)) { - len = (hs->tag_insert_len - hs->tag_index); - } - - /* Note that we set the copy flag here since we only have a - * single tag insert buffer per connection. If we don't do - * this, insert corruption can occur if more than one insert - * is processed before we call tcp_output. */ - err = http_write(pcb, &(hs->tag_insert[hs->tag_index]), &len, - HTTP_IS_TAG_VOLATILE(hs)); - if (err == ERR_OK) { - data_to_send = true; - hs->tag_index += len; - /* Don't return here: keep on sending data */ - } - } else { - /* We have sent all the insert data so go back to looking for - * a new tag. */ - LWIP_DEBUGF(HTTPD_DEBUG, ("Everything sent.\n")); - hs->tag_index = 0; - hs->tag_state = TAG_NONE; -#if !LWIP_HTTPD_SSI_INCLUDE_TAG - hs->parsed = hs->tag_end; -#endif /* !LWIP_HTTPD_SSI_INCLUDE_TAG*/ - } - break; - } - } - } - - /* If we drop out of the end of the for loop, this implies we must have - * file data to send so send it now. In TAG_SENDING state, we've already - * handled this so skip the send if that's the case. */ - if((hs->tag_state != TAG_SENDING) && (hs->parsed > hs->file)) { - /* We cannot send more data than space available in the send - buffer. */ - if (tcp_sndbuf(pcb) < (hs->parsed - hs->file)) { - len = tcp_sndbuf(pcb); - } else { - LWIP_ASSERT("Data size does not fit into u16_t!", - (hs->parsed - hs->file) <= 0xffff); - len = (u16_t)(hs->parsed - hs->file); - } - if(len > (2 * tcp_mss(pcb))) { - len = 2 * tcp_mss(pcb); - } - - err = http_write(pcb, hs->file, &len, HTTP_IS_DATA_VOLATILE(hs)); - if (err == ERR_OK) { - data_to_send = true; - hs->file += len; - hs->left -= len; - } - } - } -#endif /* LWIP_HTTPD_SSI */ - - if((hs->left == 0) && (fs_bytes_left(hs->handle) <= 0)) { - /* We reached the end of the file so this request is done. - * This adds the FIN flag right into the last data segment. - * @todo: don't close here for HTTP/1.1? */ - LWIP_DEBUGF(HTTPD_DEBUG, ("End of file.\n")); - http_close_conn(pcb, hs); - return 0; - } - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("send_data end.\n")); - return data_to_send; -} - -#if LWIP_HTTPD_SUPPORT_EXTSTATUS -/** Initialize a http connection with a file to send for an error message - * - * @param hs http connection state - * @param error_nr HTTP error number - * @return ERR_OK if file was found and hs has been initialized correctly - * another err_t otherwise - */ -static err_t -http_find_error_file(struct http_state *hs, u16_t error_nr) -{ - const char *uri1, *uri2, *uri3; - struct fs_file *file; - - if (error_nr == 501) { - uri1 = "/501.html"; - uri2 = "/501.htm"; - uri3 = "/501.shtml"; - } else { - /* 400 (bad request is the default) */ - uri1 = "/400.html"; - uri2 = "/400.htm"; - uri3 = "/400.shtml"; - } - file = fs_open(uri1); - if (file == NULL) { - file = fs_open(uri2); - if (file == NULL) { - file = fs_open(uri3); - if (file == NULL) { - LWIP_DEBUGF(HTTPD_DEBUG, ("Error page for error %"U16_F" not found\n", - error_nr)); - return ERR_ARG; - } - } - } - return http_init_file(hs, file, 0, NULL); -} -#else /* LWIP_HTTPD_SUPPORT_EXTSTATUS */ -#define http_find_error_file(hs, error_nr) ERR_ARG -#endif /* LWIP_HTTPD_SUPPORT_EXTSTATUS */ - -/** - * Get the file struct for a 404 error page. - * Tries some file names and returns NULL if none found. - * - * @param uri pointer that receives the actual file name URI - * @return file struct for the error page or NULL no matching file was found - */ -static struct fs_file * -http_get_404_file(const char **uri) -{ - struct fs_file *file; - - *uri = "/404.html"; - file = fs_open(*uri); - if(file == NULL) { - /* 404.html doesn't exist. Try 404.htm instead. */ - *uri = "/404.htm"; - file = fs_open(*uri); - if(file == NULL) { - /* 404.htm doesn't exist either. Try 404.shtml instead. */ - *uri = "/404.shtml"; - file = fs_open(*uri); - if(file == NULL) { - /* 404.htm doesn't exist either. Indicate to the caller that it should - * send back a default 404 page. - */ - *uri = NULL; - } - } - } - - return file; -} - -#if LWIP_HTTPD_SUPPORT_POST -static err_t -http_handle_post_finished(struct http_state *hs) -{ - /* application error or POST finished */ - /* NULL-terminate the buffer */ - http_post_response_filename[0] = 0; - httpd_post_finished(hs, http_post_response_filename, LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN); - return http_find_file(hs, http_post_response_filename, 0); -} - -/** Pass received POST body data to the application and correctly handle - * returning a response document or closing the connection. - * ATTENTION: The application is responsible for the pbuf now, so don't free it! - * - * @param hs http connection state - * @param p pbuf to pass to the application - * @return ERR_OK if passed successfully, another err_t if the response file - * hasn't been found (after POST finished) - */ -static err_t -http_post_rxpbuf(struct http_state *hs, struct pbuf *p) -{ - err_t err; - - /* adjust remaining Content-Length */ - if (hs->post_content_len_left < p->tot_len) { - hs->post_content_len_left = 0; - } else { - hs->post_content_len_left -= p->tot_len; - } - err = httpd_post_receive_data(hs, p); - if ((err != ERR_OK) || (hs->post_content_len_left == 0)) { -#if LWIP_HTTPD_SUPPORT_POST && LWIP_HTTPD_POST_MANUAL_WND - if (hs->unrecved_bytes != 0) { - return ERR_OK; - } -#endif /* LWIP_HTTPD_SUPPORT_POST && LWIP_HTTPD_POST_MANUAL_WND */ - /* application error or POST finished */ - return http_handle_post_finished(hs); - } - - return ERR_OK; -} - -/** Handle a post request. Called from http_parse_request when method 'POST' - * is found. - * - * @param pcb The tcp_pcb which received this packet. - * @param p The input pbuf (containing the POST header and body). - * @param hs The http connection state. - * @param data HTTP request (header and part of body) from input pbuf(s). - * @param data_len Size of 'data'. - * @param uri The HTTP URI parsed from input pbuf(s). - * @param uri_end Pointer to the end of 'uri' (here, the rest of the HTTP - * header starts). - * @return ERR_OK: POST correctly parsed and accepted by the application. - * ERR_INPROGRESS: POST not completely parsed (no error yet) - * another err_t: Error parsing POST or denied by the application - */ -static err_t -http_post_request(struct tcp_pcb *pcb, struct pbuf **inp, struct http_state *hs, - char *data, u16_t data_len, char *uri, char *uri_end) -{ - err_t err; - /* search for end-of-header (first double-CRLF) */ - char* crlfcrlf = strnstr(uri_end + 1, CRLF CRLF, data_len - (uri_end + 1 - data)); - -#if LWIP_HTTPD_POST_MANUAL_WND - hs->pcb = pcb; -#else /* LWIP_HTTPD_POST_MANUAL_WND */ - LWIP_UNUSED_ARG(pcb); /* only used for LWIP_HTTPD_POST_MANUAL_WND */ -#endif /* LWIP_HTTPD_POST_MANUAL_WND */ - - if (crlfcrlf != NULL) { - /* search for "Content-Length: " */ -#define HTTP_HDR_CONTENT_LEN "Content-Length: " -#define HTTP_HDR_CONTENT_LEN_LEN 16 -#define HTTP_HDR_CONTENT_LEN_DIGIT_MAX_LEN 10 - char *scontent_len = strnstr(uri_end + 1, HTTP_HDR_CONTENT_LEN, crlfcrlf - (uri_end + 1)); - if (scontent_len != NULL) { - char *scontent_len_end = strnstr(scontent_len + HTTP_HDR_CONTENT_LEN_LEN, CRLF, HTTP_HDR_CONTENT_LEN_DIGIT_MAX_LEN); - if (scontent_len_end != NULL) { - int content_len; - char *conten_len_num = scontent_len + HTTP_HDR_CONTENT_LEN_LEN; - *scontent_len_end = 0; - content_len = atoi(conten_len_num); - if (content_len > 0) { - /* adjust length of HTTP header passed to application */ - const char *hdr_start_after_uri = uri_end + 1; - u16_t hdr_len = LWIP_MIN(data_len, crlfcrlf + 4 - data); - u16_t hdr_data_len = LWIP_MIN(data_len, crlfcrlf + 4 - hdr_start_after_uri); - u8_t post_auto_wnd = 1; - http_post_response_filename[0] = 0; - err = httpd_post_begin(hs, uri, hdr_start_after_uri, hdr_data_len, content_len, - http_post_response_filename, LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN, &post_auto_wnd); - if (err == ERR_OK) { - /* try to pass in data of the first pbuf(s) */ - struct pbuf *q = *inp; - u16_t start_offset = hdr_len; -#if LWIP_HTTPD_POST_MANUAL_WND - hs->no_auto_wnd = !post_auto_wnd; -#endif /* LWIP_HTTPD_POST_MANUAL_WND */ - /* set the Content-Length to be received for this POST */ - hs->post_content_len_left = (u32_t)content_len; - - /* get to the pbuf where the body starts */ - while((q != NULL) && (q->len <= start_offset)) { - struct pbuf *head = q; - start_offset -= q->len; - q = q->next; - /* free the head pbuf */ - head->next = NULL; - pbuf_free(head); - } - *inp = NULL; - if (q != NULL) { - /* hide the remaining HTTP header */ - pbuf_header(q, -(s16_t)start_offset); -#if LWIP_HTTPD_POST_MANUAL_WND - if (!post_auto_wnd) { - /* already tcp_recved() this data... */ - hs->unrecved_bytes = q->tot_len; - } -#endif /* LWIP_HTTPD_POST_MANUAL_WND */ - return http_post_rxpbuf(hs, q); - } else { - return ERR_OK; - } - } else { - /* return file passed from application */ - return http_find_file(hs, http_post_response_filename, 0); - } - } else { - LWIP_DEBUGF(HTTPD_DEBUG, ("POST received invalid Content-Length: %s\n", - conten_len_num)); - return ERR_ARG; - } - } - } - } - /* if we come here, the POST is incomplete */ -#if LWIP_HTTPD_SUPPORT_REQUESTLIST - return ERR_INPROGRESS; -#else /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - return ERR_ARG; -#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ -} - -#if LWIP_HTTPD_POST_MANUAL_WND -/** A POST implementation can call this function to update the TCP window. - * This can be used to throttle data reception (e.g. when received data is - * programmed to flash and data is received faster than programmed). - * - * @param connection A connection handle passed to httpd_post_begin for which - * httpd_post_finished has *NOT* been called yet! - * @param recved_len Length of data received (for window update) - */ -void httpd_post_data_recved(void *connection, u16_t recved_len) -{ - struct http_state *hs = (struct http_state*)connection; - if (hs != NULL) { - if (hs->no_auto_wnd) { - u16_t len = recved_len; - if (hs->unrecved_bytes >= recved_len) { - hs->unrecved_bytes -= recved_len; - } else { - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_LEVEL_WARNING, ("httpd_post_data_recved: recved_len too big\n")); - len = (u16_t)hs->unrecved_bytes; - hs->unrecved_bytes = 0; - } - if (hs->pcb != NULL) { - if (len != 0) { - tcp_recved(hs->pcb, len); - } - if ((hs->post_content_len_left == 0) && (hs->unrecved_bytes == 0)) { - /* finished handling POST */ - http_handle_post_finished(hs); - http_send_data(hs->pcb, hs); - } - } - } - } -} -#endif /* LWIP_HTTPD_POST_MANUAL_WND */ - -#endif /* LWIP_HTTPD_SUPPORT_POST */ - -/** - * When data has been received in the correct state, try to parse it - * as a HTTP request. - * - * @param p the received pbuf - * @param hs the connection state - * @param pcb the tcp_pcb which received this packet - * @return ERR_OK if request was OK and hs has been initialized correctly - * ERR_INPROGRESS if request was OK so far but not fully received - * another err_t otherwise - */ -static err_t -http_parse_request(struct pbuf **inp, struct http_state *hs, struct tcp_pcb *pcb) -{ - char *data; - char *crlf; - u16_t data_len; - struct pbuf *p = *inp; -#if LWIP_HTTPD_SUPPORT_REQUESTLIST - u16_t clen; -#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ -#if LWIP_HTTPD_SUPPORT_POST - err_t err; -#endif /* LWIP_HTTPD_SUPPORT_POST */ - - LWIP_UNUSED_ARG(pcb); /* only used for post */ - LWIP_ASSERT("p != NULL", p != NULL); - LWIP_ASSERT("hs != NULL", hs != NULL); - - if ((hs->handle != NULL) || (hs->file != NULL)) { - LWIP_DEBUGF(HTTPD_DEBUG, ("Received data while sending a file\n")); - /* already sending a file */ - /* @todo: abort? */ - return ERR_USE; - } - -#if LWIP_HTTPD_SUPPORT_REQUESTLIST - - LWIP_DEBUGF(HTTPD_DEBUG, ("Received %"U16_F" bytes\n", p->tot_len)); - - /* first check allowed characters in this pbuf? */ - - /* enqueue the pbuf */ - if (hs->req == NULL) { - LWIP_DEBUGF(HTTPD_DEBUG, ("First pbuf\n")); - hs->req = p; - } else { - LWIP_DEBUGF(HTTPD_DEBUG, ("pbuf enqueued\n")); - pbuf_cat(hs->req, p); - } - - if (hs->req->next != NULL) { - data_len = LWIP_MIN(hs->req->tot_len, LWIP_HTTPD_MAX_REQ_LENGTH); - pbuf_copy_partial(hs->req, httpd_req_buf, data_len, 0); - data = httpd_req_buf; - } else -#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - { - data = (char *)p->payload; - data_len = p->len; - if (p->len != p->tot_len) { - LWIP_DEBUGF(HTTPD_DEBUG, ("Warning: incomplete header due to chained pbufs\n")); - } - } - - /* received enough data for minimal request? */ - if (data_len >= MIN_REQ_LEN) { - /* wait for CRLF before parsing anything */ - crlf = strnstr(data, CRLF, data_len); - if (crlf != NULL) { -#if LWIP_HTTPD_SUPPORT_POST - int is_post = 0; -#endif /* LWIP_HTTPD_SUPPORT_POST */ - int is_09 = 0; - char *sp1, *sp2; - u16_t left_len, uri_len; - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("CRLF received, parsing request\n")); - /* parse method */ - if (!strncmp(data, "GET ", 4)) { - sp1 = data + 3; - /* received GET request */ - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("Received GET request\"\n")); -#if LWIP_HTTPD_SUPPORT_POST - } else if (!strncmp(data, "POST ", 5)) { - /* store request type */ - is_post = 1; - sp1 = data + 4; - /* received GET request */ - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("Received POST request\n")); -#endif /* LWIP_HTTPD_SUPPORT_POST */ - } else { - /* null-terminate the METHOD (pbuf is freed anyway wen returning) */ - data[4] = 0; - /* unsupported method! */ - LWIP_DEBUGF(HTTPD_DEBUG, ("Unsupported request method (not implemented): \"%s\"\n", - data)); - return http_find_error_file(hs, 501); - } - /* if we come here, method is OK, parse URI */ - left_len = data_len - ((sp1 +1) - data); - sp2 = strnstr(sp1 + 1, " ", left_len); -#if LWIP_HTTPD_SUPPORT_V09 - if (sp2 == NULL) { - /* HTTP 0.9: respond with correct protocol version */ - sp2 = strnstr(sp1 + 1, CRLF, left_len); - is_09 = 1; -#if LWIP_HTTPD_SUPPORT_POST - if (is_post) { - /* HTTP/0.9 does not support POST */ - goto badrequest; - } -#endif /* LWIP_HTTPD_SUPPORT_POST */ - } -#endif /* LWIP_HTTPD_SUPPORT_V09 */ - uri_len = sp2 - (sp1 + 1); - if ((sp2 != 0) && (sp2 > sp1)) { - char *uri = sp1 + 1; - /* null-terminate the METHOD (pbuf is freed anyway wen returning) */ - *sp1 = 0; - uri[uri_len] = 0; - LWIP_DEBUGF(HTTPD_DEBUG, ("Received \"%s\" request for URI: \"%s\"\n", - data, uri)); -#if LWIP_HTTPD_SUPPORT_POST - if (is_post) { -#if LWIP_HTTPD_SUPPORT_REQUESTLIST - struct pbuf **q = &hs->req; -#else /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - struct pbuf **q = inp; -#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - err = http_post_request(pcb, q, hs, data, data_len, uri, sp2); - if (err != ERR_OK) { - /* restore header for next try */ - *sp1 = ' '; - *sp2 = ' '; - uri[uri_len] = ' '; - } - if (err == ERR_ARG) { - goto badrequest; - } - return err; - } else -#endif /* LWIP_HTTPD_SUPPORT_POST */ - { - return http_find_file(hs, uri, is_09); - } - } else { - LWIP_DEBUGF(HTTPD_DEBUG, ("invalid URI\n")); - } - } - } - -#if LWIP_HTTPD_SUPPORT_REQUESTLIST - clen = pbuf_clen(hs->req); - if ((hs->req->tot_len <= LWIP_HTTPD_REQ_BUFSIZE) && - (clen <= LWIP_HTTPD_REQ_QUEUELEN)) { - /* request not fully received (too short or CRLF is missing) */ - return ERR_INPROGRESS; - } else -#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - { -#if LWIP_HTTPD_SUPPORT_POST -badrequest: -#endif /* LWIP_HTTPD_SUPPORT_POST */ - LWIP_DEBUGF(HTTPD_DEBUG, ("bad request\n")); - /* could not parse request */ - return http_find_error_file(hs, 400); - } -} - -/** Try to find the file specified by uri and, if found, initialize hs - * accordingly. - * - * @param hs the connection state - * @param uri the HTTP header URI - * @param is_09 1 if the request is HTTP/0.9 (no HTTP headers in response) - * @return ERR_OK if file was found and hs has been initialized correctly - * another err_t otherwise - */ -static err_t -http_find_file(struct http_state *hs, const char *uri, int is_09) -{ - size_t loop; - struct fs_file *file = NULL; - char *params; -#if LWIP_HTTPD_CGI - int i; - int count; -#endif /* LWIP_HTTPD_CGI */ - -#if LWIP_HTTPD_SSI - /* - * By default, assume we will not be processing server-side-includes - * tags - */ - hs->tag_check = false; -#endif /* LWIP_HTTPD_SSI */ - - /* Have we been asked for the default root file? */ - if((uri[0] == '/') && (uri[1] == 0)) { - /* Try each of the configured default filenames until we find one - that exists. */ - for (loop = 0; loop < NUM_DEFAULT_FILENAMES; loop++) { - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("Looking for %s...\n", g_psDefaultFilenames[loop].name)); - file = fs_open((char *)g_psDefaultFilenames[loop].name); - uri = (char *)g_psDefaultFilenames[loop].name; - if(file != NULL) { - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("Opened.\n")); -#if LWIP_HTTPD_SSI - hs->tag_check = g_psDefaultFilenames[loop].shtml; -#endif /* LWIP_HTTPD_SSI */ - break; - } - } - if (file == NULL) { - /* None of the default filenames exist so send back a 404 page */ - file = http_get_404_file(&uri); -#if LWIP_HTTPD_SSI - hs->tag_check = false; -#endif /* LWIP_HTTPD_SSI */ - } - } else { - /* No - we've been asked for a specific file. */ - /* First, isolate the base URI (without any parameters) */ - params = (char *)strchr(uri, '?'); - if (params != NULL) { - /* URI contains parameters. NULL-terminate the base URI */ - *params = '\0'; - params++; - } - -#if LWIP_HTTPD_CGI - /* Does the base URI we have isolated correspond to a CGI handler? */ - if (g_iNumCGIs && g_pCGIs) { - for (i = 0; i < g_iNumCGIs; i++) { - if (strcmp(uri, g_pCGIs[i].pcCGIName) == 0) { - /* - * We found a CGI that handles this URI so extract the - * parameters and call the handler. - */ - count = extract_uri_parameters(hs, params); - uri = g_pCGIs[i].pfnCGIHandler(i, count, hs->params, - hs->param_vals); - break; - } - } - } -#endif /* LWIP_HTTPD_CGI */ - - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("Opening %s\n", uri)); - - file = fs_open(uri); - if (file == NULL) { - file = http_get_404_file(&uri); - } -#if LWIP_HTTPD_SSI - if (file != NULL) { - /* - * See if we have been asked for an shtml file and, if so, - * enable tag checking. - */ - hs->tag_check = false; - for (loop = 0; loop < NUM_SHTML_EXTENSIONS; loop++) { - if (strstr(uri, g_pcSSIExtensions[loop])) { - hs->tag_check = true; - break; - } - } - } -#endif /* LWIP_HTTPD_SSI */ - } - return http_init_file(hs, file, is_09, uri); -} - -/** Initialize a http connection with a file to send (if found). - * Called by http_find_file and http_find_error_file. - * - * @param hs http connection state - * @param file file structure to send (or NULL if not found) - * @param is_09 1 if the request is HTTP/0.9 (no HTTP headers in response) - * @param uri the HTTP header URI - * @return ERR_OK if file was found and hs has been initialized correctly - * another err_t otherwise - */ -static err_t -http_init_file(struct http_state *hs, struct fs_file *file, int is_09, const char *uri) -{ - if (file != NULL) { - /* file opened, initialise struct http_state */ -#if LWIP_HTTPD_SSI - hs->tag_index = 0; - hs->tag_state = TAG_NONE; - hs->parsed = file->data; - hs->parse_left = file->len; - hs->tag_end = file->data; -#endif /* LWIP_HTTPD_SSI */ - hs->handle = file; - hs->file = (char*)file->data; - LWIP_ASSERT("File length must be positive!", (file->len >= 0)); - hs->left = file->len; - hs->retries = 0; -#if LWIP_HTTPD_TIMING - hs->time_started = sys_now(); -#endif /* LWIP_HTTPD_TIMING */ -#if !LWIP_HTTPD_DYNAMIC_HEADERS - LWIP_ASSERT("HTTP headers not included in file system", hs->handle->http_header_included); -#endif /* !LWIP_HTTPD_DYNAMIC_HEADERS */ -#if LWIP_HTTPD_SUPPORT_V09 - if (hs->handle->http_header_included && is_09) { - /* HTTP/0.9 responses are sent without HTTP header, - search for the end of the header. */ - char *file_start = strnstr(hs->file, CRLF CRLF, hs->left); - if (file_start != NULL) { - size_t diff = file_start + 4 - hs->file; - hs->file += diff; - hs->left -= (u32_t)diff; - } - } -#endif /* LWIP_HTTPD_SUPPORT_V09*/ - } else { - hs->handle = NULL; - hs->file = NULL; - hs->left = 0; - hs->retries = 0; - } -#if LWIP_HTTPD_DYNAMIC_HEADERS - /* Determine the HTTP headers to send based on the file extension of - * the requested URI. */ - if ((hs->handle == NULL) || !hs->handle->http_header_included) { - get_http_headers(hs, (char*)uri); - } -#else /* LWIP_HTTPD_DYNAMIC_HEADERS */ - LWIP_UNUSED_ARG(uri); -#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */ - return ERR_OK; -} - -/** - * The pcb had an error and is already deallocated. - * The argument might still be valid (if != NULL). - */ -static void -http_err(void *arg, err_t err) -{ - struct http_state *hs = (struct http_state *)arg; - LWIP_UNUSED_ARG(err); - - LWIP_DEBUGF(HTTPD_DEBUG, ("http_err: %s", lwip_strerr(err))); - - if (hs != NULL) { - http_state_free(hs); - } -} - -/** - * Data has been sent and acknowledged by the remote host. - * This means that more data can be sent. - */ -static err_t -http_sent(void *arg, struct tcp_pcb *pcb, u16_t len) -{ - struct http_state *hs = (struct http_state *)arg; - - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("http_sent %p\n", (void*)pcb)); - - LWIP_UNUSED_ARG(len); - - if (hs == NULL) { - return ERR_OK; - } - - hs->retries = 0; - - http_send_data(pcb, hs); - - return ERR_OK; -} - -/** - * The poll function is called every 2nd second. - * If there has been no data sent (which resets the retries) in 8 seconds, close. - * If the last portion of a file has not been sent in 2 seconds, close. - * - * This could be increased, but we don't want to waste resources for bad connections. - */ -static err_t -http_poll(void *arg, struct tcp_pcb *pcb) -{ - struct http_state *hs = (struct http_state *)arg; - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("http_poll: pcb=%p hs=%p pcb_state=%s\n", - (void*)pcb, (void*)hs, tcp_debug_state_str(pcb->state))); - - if (hs == NULL) { - err_t closed; - /* arg is null, close. */ - LWIP_DEBUGF(HTTPD_DEBUG, ("http_poll: arg is NULL, close\n")); - closed = http_close_conn(pcb, hs); - LWIP_UNUSED_ARG(closed); -#if LWIP_HTTPD_ABORT_ON_CLOSE_MEM_ERROR - if (closed == ERR_MEM) { - tcp_abort(pcb); - return ERR_ABRT; - } -#endif /* LWIP_HTTPD_ABORT_ON_CLOSE_MEM_ERROR */ - return ERR_OK; - } else { - hs->retries++; - if (hs->retries == HTTPD_MAX_RETRIES) { - LWIP_DEBUGF(HTTPD_DEBUG, ("http_poll: too many retries, close\n")); - http_close_conn(pcb, hs); - return ERR_OK; - } - - /* If this connection has a file open, try to send some more data. If - * it has not yet received a GET request, don't do this since it will - * cause the connection to close immediately. */ - if(hs && (hs->handle)) { - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("http_poll: try to send more data\n")); - if(http_send_data(pcb, hs)) { - /* If we wrote anything to be sent, go ahead and send it now. */ - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("tcp_output\n")); - tcp_output(pcb); - } - } - } - - return ERR_OK; -} - -/** - * Data has been received on this pcb. - * For HTTP 1.0, this should normally only happen once (if the request fits in one packet). - */ -static err_t -http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) -{ - err_t parsed = ERR_ABRT; - struct http_state *hs = (struct http_state *)arg; - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("http_recv: pcb=%p pbuf=%p err=%s\n", (void*)pcb, - (void*)p, lwip_strerr(err))); - - if ((err != ERR_OK) || (p == NULL) || (hs == NULL)) { - /* error or closed by other side? */ - if (p != NULL) { - /* Inform TCP that we have taken the data. */ - tcp_recved(pcb, p->tot_len); - pbuf_free(p); - } - if (hs == NULL) { - /* this should not happen, only to be robust */ - LWIP_DEBUGF(HTTPD_DEBUG, ("Error, http_recv: hs is NULL, close\n")); - } - http_close_conn(pcb, hs); - return ERR_OK; - } - -#if LWIP_HTTPD_SUPPORT_POST && LWIP_HTTPD_POST_MANUAL_WND - if (hs->no_auto_wnd) { - hs->unrecved_bytes += p->tot_len; - } else -#endif /* LWIP_HTTPD_SUPPORT_POST && LWIP_HTTPD_POST_MANUAL_WND */ - { - /* Inform TCP that we have taken the data. */ - tcp_recved(pcb, p->tot_len); - } - -#if LWIP_HTTPD_SUPPORT_POST - if (hs->post_content_len_left > 0) { - /* reset idle counter when POST data is received */ - hs->retries = 0; - /* this is data for a POST, pass the complete pbuf to the application */ - http_post_rxpbuf(hs, p); - /* pbuf is passed to the application, don't free it! */ - if (hs->post_content_len_left == 0) { - /* all data received, send response or close connection */ - http_send_data(pcb, hs); - } - return ERR_OK; - } else -#endif /* LWIP_HTTPD_SUPPORT_POST */ - { - if (hs->handle == NULL) { - parsed = http_parse_request(&p, hs, pcb); - LWIP_ASSERT("http_parse_request: unexpected return value", parsed == ERR_OK - || parsed == ERR_INPROGRESS ||parsed == ERR_ARG || parsed == ERR_USE); - } else { - LWIP_DEBUGF(HTTPD_DEBUG, ("http_recv: already sending data\n")); - } -#if LWIP_HTTPD_SUPPORT_REQUESTLIST - if (parsed != ERR_INPROGRESS) { - /* request fully parsed or error */ - if (hs->req != NULL) { - pbuf_free(hs->req); - hs->req = NULL; - } - } -#else /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - if (p != NULL) { - /* pbuf not passed to application, free it now */ - pbuf_free(p); - } -#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ - if (parsed == ERR_OK) { -#if LWIP_HTTPD_SUPPORT_POST - if (hs->post_content_len_left == 0) -#endif /* LWIP_HTTPD_SUPPORT_POST */ - { - LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("http_recv: data %p len %"S32_F"\n", hs->file, hs->left)); - http_send_data(pcb, hs); - } - } else if (parsed == ERR_ARG) { - /* @todo: close on ERR_USE? */ - http_close_conn(pcb, hs); - } - } - return ERR_OK; -} - -/** - * A new incoming connection has been accepted. - */ -static err_t -http_accept(void *arg, struct tcp_pcb *pcb, err_t err) -{ - struct http_state *hs; - struct tcp_pcb_listen *lpcb = (struct tcp_pcb_listen*)arg; - LWIP_UNUSED_ARG(err); - LWIP_DEBUGF(HTTPD_DEBUG, ("http_accept %p / %p\n", (void*)pcb, arg)); - - /* Decrease the listen backlog counter */ - tcp_accepted(lpcb); - /* Set priority */ - tcp_setprio(pcb, HTTPD_TCP_PRIO); - - /* Allocate memory for the structure that holds the state of the - connection - initialized by that function. */ - hs = http_state_alloc(); - if (hs == NULL) { - LWIP_DEBUGF(HTTPD_DEBUG, ("http_accept: Out of memory, RST\n")); - return ERR_MEM; - } - - /* Tell TCP that this is the structure we wish to be passed for our - callbacks. */ - tcp_arg(pcb, hs); - - /* Set up the various callback functions */ - tcp_recv(pcb, http_recv); - tcp_err(pcb, http_err); - tcp_poll(pcb, http_poll, HTTPD_POLL_INTERVAL); - tcp_sent(pcb, http_sent); - - return ERR_OK; -} - -/** - * Initialize the httpd with the specified local address. - */ -static void -httpd_init_addr(ip_addr_t *local_addr) -{ - struct tcp_pcb *pcb; - err_t err; - - pcb = tcp_new(); - LWIP_ASSERT("httpd_init: tcp_new failed", pcb != NULL); - tcp_setprio(pcb, HTTPD_TCP_PRIO); - /* set SOF_REUSEADDR here to explicitly bind httpd to multiple interfaces */ - err = tcp_bind(pcb, local_addr, HTTPD_SERVER_PORT); - LWIP_ASSERT("httpd_init: tcp_bind failed", err == ERR_OK); - pcb = tcp_listen(pcb); - LWIP_ASSERT("httpd_init: tcp_listen failed", pcb != NULL); - /* initialize callback arg and accept callback */ - tcp_arg(pcb, pcb); - tcp_accept(pcb, http_accept); -} - -/** - * Initialize the httpd: set up a listening PCB and bind it to the defined port - */ -void -httpd_init(void) -{ -#if HTTPD_USE_MEM_POOL - LWIP_ASSERT("memp_sizes[MEMP_HTTPD_STATE] >= sizeof(http_state)", - memp_sizes[MEMP_HTTPD_STATE] >= sizeof(http_state)); -#endif - LWIP_DEBUGF(HTTPD_DEBUG, ("httpd_init\n")); - - httpd_init_addr(IP_ADDR_ANY); -} - -#if LWIP_HTTPD_SSI -/** - * Set the SSI handler function. - * - * @param ssi_handler the SSI handler function - * @param tags an array of SSI tag strings to search for in SSI-enabled files - * @param num_tags number of tags in the 'tags' array - */ -void -http_set_ssi_handler(tSSIHandler ssi_handler, const char **tags, int num_tags) -{ - LWIP_DEBUGF(HTTPD_DEBUG, ("http_set_ssi_handler\n")); - - LWIP_ASSERT("no ssi_handler given", ssi_handler != NULL); - LWIP_ASSERT("no tags given", tags != NULL); - LWIP_ASSERT("invalid number of tags", num_tags > 0); - - g_pfnSSIHandler = ssi_handler; - g_ppcTags = tags; - g_iNumTags = num_tags; -} -#endif /* LWIP_HTTPD_SSI */ - -#if LWIP_HTTPD_CGI -/** - * Set an array of CGI filenames/handler functions - * - * @param cgis an array of CGI filenames/handler functions - * @param num_handlers number of elements in the 'cgis' array - */ -void -http_set_cgi_handlers(const tCGI *cgis, int num_handlers) -{ - LWIP_ASSERT("no cgis given", cgis != NULL); - LWIP_ASSERT("invalid number of handlers", num_handlers > 0); - - g_pCGIs = cgis; - g_iNumCGIs = num_handlers; -} -#endif /* LWIP_HTTPD_CGI */ - -#endif /* LWIP_TCP */ diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.h b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.h deleted file mode 100644 index 8c3c03d47..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd.h +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * This version of the file has been modified by Texas Instruments to offer - * simple server-side-include (SSI) and Common Gateway Interface (CGI) - * capability. - */ - -#ifndef __HTTPD_H__ -#define __HTTPD_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" -#include "lwip/pbuf.h" - - -/** Set this to 1 to support CGI */ -#ifndef LWIP_HTTPD_CGI -#define LWIP_HTTPD_CGI 0 -#endif - -/** Set this to 1 to support SSI (Server-Side-Includes) */ -#ifndef LWIP_HTTPD_SSI -#define LWIP_HTTPD_SSI 1 -#endif - -/** Set this to 1 to support HTTP POST */ -#ifndef LWIP_HTTPD_SUPPORT_POST -#define LWIP_HTTPD_SUPPORT_POST 0 -#endif - - -#if LWIP_HTTPD_CGI - -/* - * Function pointer for a CGI script handler. - * - * This function is called each time the HTTPD server is asked for a file - * whose name was previously registered as a CGI function using a call to - * http_set_cgi_handler. The iIndex parameter provides the index of the - * CGI within the ppcURLs array passed to http_set_cgi_handler. Parameters - * pcParam and pcValue provide access to the parameters provided along with - * the URI. iNumParams provides a count of the entries in the pcParam and - * pcValue arrays. Each entry in the pcParam array contains the name of a - * parameter with the corresponding entry in the pcValue array containing the - * value for that parameter. Note that pcParam may contain multiple elements - * with the same name if, for example, a multi-selection list control is used - * in the form generating the data. - * - * The function should return a pointer to a character string which is the - * path and filename of the response that is to be sent to the connected - * browser, for example "/thanks.htm" or "/response/error.ssi". - * - * The maximum number of parameters that will be passed to this function via - * iNumParams is defined by LWIP_HTTPD_MAX_CGI_PARAMETERS. Any parameters in the incoming - * HTTP request above this number will be discarded. - * - * Requests intended for use by this CGI mechanism must be sent using the GET - * method (which encodes all parameters within the URI rather than in a block - * later in the request). Attempts to use the POST method will result in the - * request being ignored. - * - */ -typedef const char *(*tCGIHandler)(int iIndex, int iNumParams, char *pcParam[], - char *pcValue[]); - -/* - * Structure defining the base filename (URL) of a CGI and the associated - * function which is to be called when that URL is requested. - */ -typedef struct -{ - const char *pcCGIName; - tCGIHandler pfnCGIHandler; -} tCGI; - -void http_set_cgi_handlers(const tCGI *pCGIs, int iNumHandlers); - - -/* The maximum number of parameters that the CGI handler can be sent. */ -#ifndef LWIP_HTTPD_MAX_CGI_PARAMETERS -#define LWIP_HTTPD_MAX_CGI_PARAMETERS 16 -#endif - -#endif /* LWIP_HTTPD_CGI */ - -#if LWIP_HTTPD_SSI - -/** LWIP_HTTPD_SSI_MULTIPART==1: SSI handler function is called with 2 more - * arguments indicating a counter for insert string that are too long to be - * inserted at once: the SSI handler function must then set 'next_tag_part' - * which will be passed back to it in the next call. */ -#ifndef LWIP_HTTPD_SSI_MULTIPART -#define LWIP_HTTPD_SSI_MULTIPART 0 -#endif - -/* - * Function pointer for the SSI tag handler callback. - * - * This function will be called each time the HTTPD server detects a tag of the - * form in a .shtml, .ssi or .shtm file where "name" appears as - * one of the tags supplied to http_set_ssi_handler in the ppcTags array. The - * returned insert string, which will be appended after the the string - * "" in file sent back to the client,should be written to pointer - * pcInsert. iInsertLen contains the size of the buffer pointed to by - * pcInsert. The iIndex parameter provides the zero-based index of the tag as - * found in the ppcTags array and identifies the tag that is to be processed. - * - * The handler returns the number of characters written to pcInsert excluding - * any terminating NULL or a negative number to indicate a failure (tag not - * recognized, for example). - * - * Note that the behavior of this SSI mechanism is somewhat different from the - * "normal" SSI processing as found in, for example, the Apache web server. In - * this case, the inserted text is appended following the SSI tag rather than - * replacing the tag entirely. This allows for an implementation that does not - * require significant additional buffering of output data yet which will still - * offer usable SSI functionality. One downside to this approach is when - * attempting to use SSI within JavaScript. The SSI tag is structured to - * resemble an HTML comment but this syntax does not constitute a comment - * within JavaScript and, hence, leaving the tag in place will result in - * problems in these cases. To work around this, any SSI tag which needs to - * output JavaScript code must do so in an encapsulated way, sending the whole - * HTML section as a single include. - */ -typedef u16_t (*tSSIHandler)(int iIndex, char *pcInsert, int iInsertLen -#if LWIP_HTTPD_SSI_MULTIPART - , u16_t current_tag_part, u16_t *next_tag_part -#endif /* LWIP_HTTPD_SSI_MULTIPART */ -#if LWIP_HTTPD_FILE_STATE - , void *connection_state -#endif /* LWIP_HTTPD_FILE_STATE */ - ); - -void http_set_ssi_handler(tSSIHandler pfnSSIHandler, - const char **ppcTags, int iNumTags); - -/* The maximum length of the string comprising the tag name */ -#ifndef LWIP_HTTPD_MAX_TAG_NAME_LEN -#define LWIP_HTTPD_MAX_TAG_NAME_LEN 8 -#endif - -/* The maximum length of string that can be returned to replace any given tag */ -#ifndef LWIP_HTTPD_MAX_TAG_INSERT_LEN -#define LWIP_HTTPD_MAX_TAG_INSERT_LEN 192 -#endif - -#endif /* LWIP_HTTPD_SSI */ - -#if LWIP_HTTPD_SUPPORT_POST - -/* These functions must be implemented by the application */ - -/** Called when a POST request has been received. The application can decide - * whether to accept it or not. - * - * @param connection Unique connection identifier, valid until httpd_post_end - * is called. - * @param uri The HTTP header URI receiving the POST request. - * @param http_request The raw HTTP request (the first packet, normally). - * @param http_request_len Size of 'http_request'. - * @param content_len Content-Length from HTTP header. - * @param response_uri Filename of response file, to be filled when denying the - * request - * @param response_uri_len Size of the 'response_uri' buffer. - * @param post_auto_wnd Set this to 0 to let the callback code handle window - * updates by calling 'httpd_post_data_recved' (to throttle rx speed) - * default is 1 (httpd handles window updates automatically) - * @return ERR_OK: Accept the POST request, data may be passed in - * another err_t: Deny the POST request, send back 'bad request'. - */ -err_t httpd_post_begin(void *connection, const char *uri, const char *http_request, - u16_t http_request_len, int content_len, char *response_uri, - u16_t response_uri_len, u8_t *post_auto_wnd); - -/** Called for each pbuf of data that has been received for a POST. - * ATTENTION: The application is responsible for freeing the pbufs passed in! - * - * @param connection Unique connection identifier. - * @param p Received data. - * @return ERR_OK: Data accepted. - * another err_t: Data denied, http_post_get_response_uri will be called. - */ -err_t httpd_post_receive_data(void *connection, struct pbuf *p); - -/** Called when all data is received or when the connection is closed. - * The application must return the filename/URI of a file to send in response - * to this POST request. If the response_uri buffer is untouched, a 404 - * response is returned. - * - * @param connection Unique connection identifier. - * @param response_uri Filename of response file, to be filled when denying the request - * @param response_uri_len Size of the 'response_uri' buffer. - */ -void httpd_post_finished(void *connection, char *response_uri, u16_t response_uri_len); - -#ifndef LWIP_HTTPD_POST_MANUAL_WND -#define LWIP_HTTPD_POST_MANUAL_WND 0 -#endif - -#if LWIP_HTTPD_POST_MANUAL_WND -void httpd_post_data_recved(void *connection, u16_t recved_len); -#endif /* LWIP_HTTPD_POST_MANUAL_WND */ - -#endif /* LWIP_HTTPD_SUPPORT_POST */ - -void httpd_init(void); - -#endif /* __HTTPD_H__ */ diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd_structs.h b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd_structs.h deleted file mode 100644 index 1080a5597..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/httpd_structs.h +++ /dev/null @@ -1,115 +0,0 @@ -#ifndef __HTTPD_STRUCTS_H__ -#define __HTTPD_STRUCTS_H__ - -#include "httpd.h" - -/** This string is passed in the HTTP header as "Server: " */ -#ifndef HTTPD_SERVER_AGENT -#define HTTPD_SERVER_AGENT "lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip)" -#endif - -/** Set this to 1 if you want to include code that creates HTTP headers - * at runtime. Default is off: HTTP headers are then created statically - * by the makefsdata tool. Static headers mean smaller code size, but - * the (readonly) fsdata will grow a bit as every file includes the HTTP - * header. */ -#ifndef LWIP_HTTPD_DYNAMIC_HEADERS -#define LWIP_HTTPD_DYNAMIC_HEADERS 0 -#endif - - -#if LWIP_HTTPD_DYNAMIC_HEADERS -/** This struct is used for a list of HTTP header strings for various - * filename extensions. */ -typedef struct -{ - const char *extension; - int headerIndex; -} tHTTPHeader; - -/** A list of strings used in HTTP headers */ -static const char * const g_psHTTPHeaderStrings[] = -{ - "Content-type: text/html\r\n\r\n", - "Content-type: text/html\r\nExpires: Fri, 10 Apr 2008 14:00:00 GMT\r\nPragma: no-cache\r\n\r\n", - "Content-type: image/gif\r\n\r\n", - "Content-type: image/png\r\n\r\n", - "Content-type: image/jpeg\r\n\r\n", - "Content-type: image/bmp\r\n\r\n", - "Content-type: image/x-icon\r\n\r\n", - "Content-type: application/octet-stream\r\n\r\n", - "Content-type: application/x-javascript\r\n\r\n", - "Content-type: application/x-javascript\r\n\r\n", - "Content-type: text/css\r\n\r\n", - "Content-type: application/x-shockwave-flash\r\n\r\n", - "Content-type: text/xml\r\n\r\n", - "Content-type: text/plain\r\n\r\n", - "HTTP/1.0 200 OK\r\n", - "HTTP/1.0 404 File not found\r\n", - "HTTP/1.0 400 Bad Request\r\n", - "HTTP/1.0 501 Not Implemented\r\n", - "HTTP/1.1 200 OK\r\n", - "HTTP/1.1 404 File not found\r\n", - "HTTP/1.1 400 Bad Request\r\n", - "HTTP/1.1 501 Not Implemented\r\n", - "Content-Length: ", - "Connection: Close\r\n", - "Server: "HTTPD_SERVER_AGENT"\r\n", - "\r\n

404: The requested file cannot be found.

\r\n" -}; - -/* Indexes into the g_psHTTPHeaderStrings array */ -#define HTTP_HDR_HTML 0 /* text/html */ -#define HTTP_HDR_SSI 1 /* text/html Expires... */ -#define HTTP_HDR_GIF 2 /* image/gif */ -#define HTTP_HDR_PNG 3 /* image/png */ -#define HTTP_HDR_JPG 4 /* image/jpeg */ -#define HTTP_HDR_BMP 5 /* image/bmp */ -#define HTTP_HDR_ICO 6 /* image/x-icon */ -#define HTTP_HDR_APP 7 /* application/octet-stream */ -#define HTTP_HDR_JS 8 /* application/x-javascript */ -#define HTTP_HDR_RA 9 /* application/x-javascript */ -#define HTTP_HDR_CSS 10 /* text/css */ -#define HTTP_HDR_SWF 11 /* application/x-shockwave-flash */ -#define HTTP_HDR_XML 12 /* text/xml */ -#define HTTP_HDR_DEFAULT_TYPE 13 /* text/plain */ -#define HTTP_HDR_OK 14 /* 200 OK */ -#define HTTP_HDR_NOT_FOUND 15 /* 404 File not found */ -#define HTTP_HDR_BAD_REQUEST 16 /* 400 Bad request */ -#define HTTP_HDR_NOT_IMPL 17 /* 501 Not Implemented */ -#define HTTP_HDR_OK_11 18 /* 200 OK */ -#define HTTP_HDR_NOT_FOUND_11 19 /* 404 File not found */ -#define HTTP_HDR_BAD_REQUEST_11 20 /* 400 Bad request */ -#define HTTP_HDR_NOT_IMPL_11 21 /* 501 Not Implemented */ -#define HTTP_HDR_CONTENT_LENGTH 22 /* Content-Length: (HTTP 1.1)*/ -#define HTTP_HDR_CONN_CLOSE 23 /* Connection: Close (HTTP 1.1) */ -#define HTTP_HDR_SERVER 24 /* Server: HTTPD_SERVER_AGENT */ -#define DEFAULT_404_HTML 25 /* default 404 body */ - -/** A list of extension-to-HTTP header strings */ -const static tHTTPHeader g_psHTTPHeaders[] = -{ - { "html", HTTP_HDR_HTML}, - { "htm", HTTP_HDR_HTML}, - { "shtml",HTTP_HDR_SSI}, - { "shtm", HTTP_HDR_SSI}, - { "ssi", HTTP_HDR_SSI}, - { "gif", HTTP_HDR_GIF}, - { "png", HTTP_HDR_PNG}, - { "jpg", HTTP_HDR_JPG}, - { "bmp", HTTP_HDR_BMP}, - { "ico", HTTP_HDR_ICO}, - { "class",HTTP_HDR_APP}, - { "cls", HTTP_HDR_APP}, - { "js", HTTP_HDR_JS}, - { "ram", HTTP_HDR_RA}, - { "css", HTTP_HDR_CSS}, - { "swf", HTTP_HDR_SWF}, - { "xml", HTTP_HDR_XML} -}; - -#define NUM_HTTP_HEADERS (sizeof(g_psHTTPHeaders) / sizeof(tHTTPHeader)) - -#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */ - -#endif /* __HTTPD_STRUCTS_H__ */ diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/404.html b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/404.html deleted file mode 100644 index 40b343a91..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/404.html +++ /dev/null @@ -1,21 +0,0 @@ - -lwIP - A Lightweight TCP/IP Stack - - - - -
- SICS logo - -

lwIP - A Lightweight TCP/IP Stack

-

404 - Page not found

-

- Sorry, the page you are requesting was not found on this - server. -

-
-   -
- - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/index.shtml b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/index.shtml deleted file mode 100644 index 90358d158..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/index.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org lwIP WEB server demo - - - -
Task Stats | Run Time Stats | FreeRTOS Homepage | 37K jpg -

-


-

-

Task statistics

-Page will refresh every 2 seconds.

-

Task          State  Priority  Stack	#
************************************************
- -
-
- - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/logo.jpg b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/logo.jpg deleted file mode 100644 index d3670e4f0c726e023b83ad4b1a3e6bb6b2c2446a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28602 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 diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/runtime.shtml b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/runtime.shtml deleted file mode 100644 index e66202b9d..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/fs/runtime.shtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - FreeRTOS.org lwIP WEB server demo - - - -Task Stats | Run Time Stats | FreeRTOS Homepage | 37K jpg -

-


-

-

Run-time statistics

-Page will refresh every 2 seconds.

-

Task            Abs Time      % Time
****************************************
- -
-
- - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/makefsdata.c-source-file b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/makefsdata.c-source-file deleted file mode 100644 index b065caa08..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/makefsdata.c-source-file +++ /dev/null @@ -1,610 +0,0 @@ -/** - * makefsdata: Converts a directory structure for use with the lwIP httpd. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Jim Pettinato - * Simon Goldschmidt - * - * @todo: - * - take TCP_MSS, LWIP_TCP_TIMESTAMPS and - * PAYLOAD_ALIGN_TYPE/PAYLOAD_ALIGNMENT as arguments - */ - -#include -#include -#ifdef WIN32 -#define WIN32_LEAN_AND_MEAN -#include "windows.h" -#else -#include -#endif -#include -#include - -/* Compatibility defines Win32 vs. DOS */ -#ifdef WIN32 - -#define FIND_T WIN32_FIND_DATAA -#define FIND_T_FILENAME(fInfo) (fInfo.cFileName) -#define FIND_T_IS_DIR(fInfo) ((fInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) -#define FIND_T_IS_FILE(fInfo) ((fInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) -#define FIND_RET_T HANDLE -#define FINDFIRST_FILE(path, result) FindFirstFileA(path, result) -#define FINDFIRST_DIR(path, result) FindFirstFileA(path, result) -#define FINDNEXT(ff_res, result) FindNextFileA(ff_res, result) -#define FINDFIRST_SUCCEEDED(ret) (ret != INVALID_HANDLE_VALUE) -#define FINDNEXT_SUCCEEDED(ret) (ret == TRUE) - -#define GETCWD(path, len) GetCurrentDirectoryA(len, path) -#define CHDIR(path) SetCurrentDirectoryA(path) - -#define NEWLINE "\r\n" -#define NEWLINE_LEN 2 - -#else - -#define FIND_T struct fflbk -#define FIND_T_FILENAME(fInfo) (fInfo.ff_name) -#define FIND_T_IS_DIR(fInfo) ((fInfo.ff_attrib & FA_DIREC) == FA_DIREC) -#define FIND_T_IS_FILE(fInfo) (1) -#define FIND_RET_T int -#define FINDFIRST_FILE(path, result) findfirst(path, result, FA_ARCH) -#define FINDFIRST_DIR(path, result) findfirst(path, result, FA_DIREC) -#define FINDNEXT(ff_res, result) FindNextFileA(ff_res, result) -#define FINDFIRST_SUCCEEDED(ret) (ret == 0) -#define FINDNEXT_SUCCEEDED(ret) (ret == 0) - -#define GETCWD(path, len) getcwd(path, len) -#define CHDIR(path) chdir(path) - -#endif - -/* define this to get the header variables we use to build HTTP headers */ -#define LWIP_HTTPD_DYNAMIC_HEADERS 1 -#include "../httpd_structs.h" - -#include "../../../lwip-1.4.0/src/core/ipv4/inet_chksum.c" -#include "../../../lwip-1.4.0/src/core/def.c" - -/** (Your server name here) */ -const char *serverID = "Server: "HTTPD_SERVER_AGENT"\r\n"; - -/* change this to suit your MEM_ALIGNMENT */ -#define PAYLOAD_ALIGNMENT 4 -/* set this to 0 to prevent aligning payload */ -#define ALIGN_PAYLOAD 1 -/* define this to a type that has the required alignment */ -#define PAYLOAD_ALIGN_TYPE "unsigned int" -static int payload_alingment_dummy_counter = 0; - -#define HEX_BYTES_PER_LINE 16 - -#define MAX_PATH_LEN 256 - -#define COPY_BUFSIZE 10240 - -int process_sub(FILE *data_file, FILE *struct_file); -int process_file(FILE *data_file, FILE *struct_file, const char *filename); -int file_write_http_header(FILE *data_file, const char *filename, int file_size, - u16_t *http_hdr_len, u16_t *http_hdr_chksum); -int file_put_ascii(FILE *file, const char *ascii_string, int len, int *i); -int s_put_ascii(char *buf, const char *ascii_string, int len, int *i); -void concat_files(const char *file1, const char *file2, const char *targetfile); - -static unsigned char file_buffer_raw[COPY_BUFSIZE]; -/* 5 bytes per char + 3 bytes per line */ -static char file_buffer_c[COPY_BUFSIZE * 5 + ((COPY_BUFSIZE / HEX_BYTES_PER_LINE) * 3)]; - -char curSubdir[MAX_PATH_LEN]; -char lastFileVar[MAX_PATH_LEN]; -char hdr_buf[4096]; - -unsigned char processSubs = 1; -unsigned char includeHttpHeader = 1; -unsigned char useHttp11 = 0; -unsigned char precalcChksum = 0; - -int main(int argc, char *argv[]) -{ - FIND_T fInfo; - FIND_RET_T fret; - char path[MAX_PATH_LEN]; - char appPath[MAX_PATH_LEN]; - FILE *data_file; - FILE *struct_file; - int filesProcessed; - int i; - char targetfile[MAX_PATH_LEN]; - strcpy(targetfile, "fsdata.c"); - - memset(path, 0, sizeof(path)); - memset(appPath, 0, sizeof(appPath)); - - printf(NEWLINE " makefsdata - HTML to C source converter" NEWLINE); - printf(" by Jim Pettinato - circa 2003 " NEWLINE); - printf(" extended by Simon Goldschmidt - 2009 " NEWLINE NEWLINE); - - strcpy(path, "fs"); - for(i = 1; i < argc; i++) { - if (argv[i][0] == '-') { - if (strstr(argv[i], "-s")) { - processSubs = 0; - } else if (strstr(argv[i], "-e")) { - includeHttpHeader = 0; - } else if (strstr(argv[i], "-11")) { - useHttp11 = 1; - } else if (strstr(argv[i], "-c")) { - precalcChksum = 1; - } else if((argv[i][1] == 'f') && (argv[i][2] == ':')) { - strcpy(targetfile, &argv[i][3]); - printf("Writing to file \"%s\"\n", targetfile); - } - } else { - strcpy(path, argv[i]); - } - } - - /* if command line param or subdir named 'fs' not found spout usage verbiage */ - fret = FINDFIRST_DIR(path, &fInfo); - if (!FINDFIRST_SUCCEEDED(fret)) { - /* if no subdir named 'fs' (or the one which was given) exists, spout usage verbiage */ - printf(" Failed to open directory \"%s\"." NEWLINE NEWLINE, path); - printf(" Usage: htmlgen [targetdir] [-s] [-i] [-f:]" NEWLINE NEWLINE); - printf(" targetdir: relative or absolute path to files to convert" NEWLINE); - printf(" switch -s: toggle processing of subdirectories (default is on)" NEWLINE); - printf(" switch -e: exclude HTTP header from file (header is created at runtime, default is off)" NEWLINE); - printf(" switch -11: include HTTP 1.1 header (1.0 is default)" NEWLINE); - printf(" switch -c: precalculate checksums for all pages (default is off)" NEWLINE); - printf(" switch -f: target filename (default is \"fsdata.c\")" NEWLINE); - printf(" if targetdir not specified, htmlgen will attempt to" NEWLINE); - printf(" process files in subdirectory 'fs'" NEWLINE); - exit(-1); - } - - printf("HTTP %sheader will %s statically included." NEWLINE, - (includeHttpHeader ? (useHttp11 ? "1.1 " : "1.0 ") : ""), - (includeHttpHeader ? "be" : "not be")); - - sprintf(curSubdir, ""); /* start off in web page's root directory - relative paths */ - printf(" Processing all files in directory %s", path); - if (processSubs) { - printf(" and subdirectories..." NEWLINE NEWLINE); - } else { - printf("..." NEWLINE NEWLINE); - } - - GETCWD(appPath, MAX_PATH_LEN); - data_file = fopen("fsdata.tmp", "wb"); - if (data_file == NULL) { - printf("Failed to create file \"fsdata.tmp\"\n"); - exit(-1); - } - struct_file = fopen("fshdr.tmp", "wb"); - if (struct_file == NULL) { - printf("Failed to create file \"fshdr.tmp\"\n"); - exit(-1); - } - - CHDIR(path); - - fprintf(data_file, "#include \"fs.h\"" NEWLINE); - fprintf(data_file, "#include \"lwip/def.h\"" NEWLINE); - fprintf(data_file, "#include \"fsdata.h\"" NEWLINE NEWLINE NEWLINE); - - fprintf(data_file, "#define file_NULL (struct fsdata_file *) NULL" NEWLINE NEWLINE NEWLINE); - - sprintf(lastFileVar, "NULL"); - - filesProcessed = process_sub(data_file, struct_file); - - /* data_file now contains all of the raw data.. now append linked list of - * file header structs to allow embedded app to search for a file name */ - fprintf(data_file, NEWLINE NEWLINE); - fprintf(struct_file, "#define FS_ROOT file_%s" NEWLINE, lastFileVar); - fprintf(struct_file, "#define FS_NUMFILES %d" NEWLINE NEWLINE, filesProcessed); - - fclose(data_file); - fclose(struct_file); - - CHDIR(appPath); - /* append struct_file to data_file */ - printf(NEWLINE "Creating target file..." NEWLINE NEWLINE); - concat_files("fsdata.tmp", "fshdr.tmp", targetfile); - - /* if succeeded, delete the temporary files */ - remove("fsdata.tmp"); - remove("fshdr.tmp"); - - printf(NEWLINE "Processed %d files - done." NEWLINE NEWLINE, filesProcessed); - - return 0; -} - -static void copy_file(const char *filename_in, FILE *fout) -{ - FILE *fin; - size_t len; - fin = fopen(filename_in, "rb"); - if (fin == NULL) { - printf("Failed to open file \"%s\"\n", filename_in); - exit(-1); - } - - while((len = fread(file_buffer_raw, 1, COPY_BUFSIZE, fin)) > 0) - { - fwrite(file_buffer_raw, 1, len, fout); - } - fclose(fin); -} - -void concat_files(const char *file1, const char *file2, const char *targetfile) -{ - FILE *fout; - fout = fopen(targetfile, "wb"); - if (fout == NULL) { - printf("Failed to open file \"%s\"\n", targetfile); - exit(-1); - } - copy_file(file1, fout); - copy_file(file2, fout); - fclose(fout); -} - -int process_sub(FILE *data_file, FILE *struct_file) -{ - FIND_T fInfo; - FIND_RET_T fret; - int filesProcessed = 0; - char oldSubdir[MAX_PATH_LEN]; - - if (processSubs) { - /* process subs recursively */ - strcpy(oldSubdir, curSubdir); - fret = FINDFIRST_DIR("*", &fInfo); - if (FINDFIRST_SUCCEEDED(fret)) { - do { - const char *curName = FIND_T_FILENAME(fInfo); - if (curName == NULL) continue; - if (curName[0] == '.') continue; - if (strcmp(curName, "CVS") == 0) continue; - if (!FIND_T_IS_DIR(fInfo)) continue; - CHDIR(curName); - strcat(curSubdir, "/"); - strcat(curSubdir, curName); - printf(NEWLINE "processing subdirectory %s/..." NEWLINE, curSubdir); - filesProcessed += process_sub(data_file, struct_file); - CHDIR(".."); - strcpy(curSubdir, oldSubdir); - } while (FINDNEXT_SUCCEEDED(FINDNEXT(fret, &fInfo))); - } - } - - fret = FINDFIRST_FILE("*.*", &fInfo); - if (FINDFIRST_SUCCEEDED(fret)) { - /* at least one file in directory */ - do { - if (FIND_T_IS_FILE(fInfo)) { - const char *curName = FIND_T_FILENAME(fInfo); - printf("processing %s/%s..." NEWLINE, curSubdir, curName); - if (process_file(data_file, struct_file, curName) < 0) { - printf(NEWLINE "Error... aborting" NEWLINE); - return -1; - } - filesProcessed++; - } - } while (FINDNEXT_SUCCEEDED(FINDNEXT(fret, &fInfo))); - } - return filesProcessed; -} - -int get_file_size(const char* filename) -{ - FILE *inFile; - int file_size = -1; - inFile = fopen(filename, "rb"); - if (inFile == NULL) { - printf("Failed to open file \"%s\"\n", filename); - exit(-1); - } - fseek(inFile, 0, SEEK_END); - file_size = ftell(inFile); - fclose(inFile); - return file_size; -} - -void process_file_data(const char *filename, FILE *data_file) -{ - FILE *source_file; - size_t len, written, i, src_off=0; - - source_file = fopen(filename, "rb"); - - do { - size_t off = 0; - len = fread(file_buffer_raw, 1, COPY_BUFSIZE, source_file); - if (len > 0) { - for (i = 0; i < len; i++) { - sprintf(&file_buffer_c[off], "0x%02.2x,", file_buffer_raw[i]); - off += 5; - if ((++src_off % HEX_BYTES_PER_LINE) == 0) { - memcpy(&file_buffer_c[off], NEWLINE, NEWLINE_LEN); - off += NEWLINE_LEN; - } - } - written = fwrite(file_buffer_c, 1, off, data_file); - } - } while(len > 0); - fclose(source_file); -} - -int write_checksums(FILE *struct_file, const char *filename, const char *varname, - u16_t hdr_len, u16_t hdr_chksum) -{ - int chunk_size = TCP_MSS; - int offset; - size_t len; - int i = 0; - FILE *f; -#if LWIP_TCP_TIMESTAMPS - /* when timestamps are used, usable space is 12 bytes less per segment */ - chunk_size -= 12; -#endif - - fprintf(struct_file, "#if HTTPD_PRECALCULATED_CHECKSUM" NEWLINE); - fprintf(struct_file, "const struct fsdata_chksum chksums_%s[] = {" NEWLINE, varname); - - memset(file_buffer_raw, 0xab, sizeof(file_buffer_raw)); - f = fopen(filename, "rb"); - if (f == INVALID_HANDLE_VALUE) { - printf("Failed to open file \"%s\"\n", filename); - exit(-1); - } - if (hdr_len > 0) { - /* add checksum for HTTP header */ - fprintf(struct_file, "{%d, 0x%04x, %d}," NEWLINE, 0, hdr_chksum, hdr_len); - i++; - } - for (offset = hdr_len; ; offset += len) { - unsigned short chksum; - len = fread(file_buffer_raw, 1, chunk_size, f); - if (len == 0) { - break; - } - chksum = ~inet_chksum(file_buffer_raw, (u16_t)len); - /* add checksum for data */ - fprintf(struct_file, "{%d, 0x%04x, %d}," NEWLINE, offset, chksum, len); - i++; - } - fclose(f); - fprintf(struct_file, "};" NEWLINE); - fprintf(struct_file, "#endif /* HTTPD_PRECALCULATED_CHECKSUM */" NEWLINE); - return i; -} - -int process_file(FILE *data_file, FILE *struct_file, const char *filename) -{ - char *pch; - char varname[MAX_PATH_LEN]; - int i = 0; - char qualifiedName[MAX_PATH_LEN]; - int file_size; - u16_t http_hdr_chksum = 0; - u16_t http_hdr_len = 0; - int chksum_count = 0; - - /* create qualified name (TODO: prepend slash or not?) */ - sprintf(qualifiedName,"%s/%s", curSubdir, filename); - /* create C variable name */ - strcpy(varname, qualifiedName); - /* convert slashes & dots to underscores */ - while ((pch = strpbrk(varname, "./\\")) != NULL) { - *pch = '_'; - } -#if ALIGN_PAYLOAD - /* to force even alignment of array */ - fprintf(data_file, "static const " PAYLOAD_ALIGN_TYPE " dummy_align_%s = %d;" NEWLINE, varname, payload_alingment_dummy_counter++); -#endif /* ALIGN_PAYLOAD */ - fprintf(data_file, "static const unsigned char data_%s[] = {" NEWLINE, varname); - /* encode source file name (used by file system, not returned to browser) */ - fprintf(data_file, "/* %s (%d chars) */" NEWLINE, qualifiedName, strlen(qualifiedName)+1); - file_put_ascii(data_file, qualifiedName, strlen(qualifiedName)+1, &i); -#if ALIGN_PAYLOAD - /* pad to even number of bytes to assure payload is on aligned boundary */ - while(i % PAYLOAD_ALIGNMENT != 0) { - fprintf(data_file, "0x%02.2x,", 0); - i++; - } -#endif /* ALIGN_PAYLOAD */ - fprintf(data_file, NEWLINE); - - file_size = get_file_size(filename); - if (includeHttpHeader) { - file_write_http_header(data_file, filename, file_size, &http_hdr_len, &http_hdr_chksum); - } - if (precalcChksum) { - chksum_count = write_checksums(struct_file, filename, varname, http_hdr_len, http_hdr_chksum); - } - - /* build declaration of struct fsdata_file in temp file */ - fprintf(struct_file, "const struct fsdata_file file_%s[] = { {" NEWLINE, varname); - fprintf(struct_file, "file_%s," NEWLINE, lastFileVar); - fprintf(struct_file, "data_%s," NEWLINE, varname); - fprintf(struct_file, "data_%s + %d," NEWLINE, varname, i); - fprintf(struct_file, "sizeof(data_%s) - %d," NEWLINE, varname, i); - fprintf(struct_file, "%d," NEWLINE, includeHttpHeader); - if (precalcChksum) { - fprintf(struct_file, "#if HTTPD_PRECALCULATED_CHECKSUM" NEWLINE); - fprintf(struct_file, "%d, chksums_%s," NEWLINE, chksum_count, varname); - fprintf(struct_file, "#endif /* HTTPD_PRECALCULATED_CHECKSUM */" NEWLINE); - } - fprintf(struct_file, "}};" NEWLINE NEWLINE); - strcpy(lastFileVar, varname); - - /* write actual file contents */ - i = 0; - fprintf(data_file, NEWLINE "/* raw file data (%d bytes) */" NEWLINE, file_size); - process_file_data(filename, data_file); - fprintf(data_file, "};" NEWLINE NEWLINE); - - return 0; -} - -int file_write_http_header(FILE *data_file, const char *filename, int file_size, - u16_t *http_hdr_len, u16_t *http_hdr_chksum) -{ - int i = 0; - int response_type = HTTP_HDR_OK; - int file_type = HTTP_HDR_DEFAULT_TYPE; - const char *cur_string; - size_t cur_len; - int written = 0; - size_t hdr_len = 0; - u16_t acc; - const char *file_ext; - int j; - - memset(hdr_buf, 0, sizeof(hdr_buf)); - - if (useHttp11) { - response_type = HTTP_HDR_OK_11; - } - - fprintf(data_file, NEWLINE "/* HTTP header */"); - if (strstr(filename, "404") == filename) { - response_type = HTTP_HDR_NOT_FOUND; - if (useHttp11) { - response_type = HTTP_HDR_NOT_FOUND_11; - } - } else if (strstr(filename, "400") == filename) { - response_type = HTTP_HDR_BAD_REQUEST; - if (useHttp11) { - response_type = HTTP_HDR_BAD_REQUEST_11; - } - } else if (strstr(filename, "501") == filename) { - response_type = HTTP_HDR_NOT_IMPL; - if (useHttp11) { - response_type = HTTP_HDR_NOT_IMPL_11; - } - } - cur_string = g_psHTTPHeaderStrings[response_type]; - cur_len = strlen(cur_string); - fprintf(data_file, NEWLINE "/* \"%s\" (%d bytes) */" NEWLINE, cur_string, cur_len); - written += file_put_ascii(data_file, cur_string, cur_len, &i); - i = 0; - if (precalcChksum) { - memcpy(&hdr_buf[hdr_len], cur_string, cur_len); - hdr_len += cur_len; - } - - cur_string = serverID; - cur_len = strlen(cur_string); - fprintf(data_file, NEWLINE "/* \"%s\" (%d bytes) */" NEWLINE, cur_string, cur_len); - written += file_put_ascii(data_file, cur_string, cur_len, &i); - i = 0; - if (precalcChksum) { - memcpy(&hdr_buf[hdr_len], cur_string, cur_len); - hdr_len += cur_len; - } - - file_ext = filename; - while(strstr(file_ext, ".") != NULL) { - file_ext = strstr(file_ext, "."); - file_ext++; - } - if((file_ext == NULL) || (*file_ext == 0)) { - printf("failed to get extension for file \"%s\", using default.\n", filename); - } else { - for(j = 0; j < NUM_HTTP_HEADERS; j++) { - if(!strcmp(file_ext, g_psHTTPHeaders[j].extension)) { - file_type = g_psHTTPHeaders[j].headerIndex; - break; - } - } - if (j >= NUM_HTTP_HEADERS) { - printf("failed to get file type for extension \"%s\", using default.\n", file_ext); - file_type = HTTP_HDR_DEFAULT_TYPE; - } - } - - if (useHttp11) { - char intbuf[MAX_PATH_LEN]; - memset(intbuf, 0, sizeof(intbuf)); - - cur_string = g_psHTTPHeaderStrings[HTTP_HDR_CONTENT_LENGTH]; - cur_len = strlen(cur_string); - fprintf(data_file, NEWLINE "/* \"%s%d\r\n\" (%d+ bytes) */" NEWLINE, cur_string, file_size, cur_len+2); - written += file_put_ascii(data_file, cur_string, cur_len, &i); - if (precalcChksum) { - memcpy(&hdr_buf[hdr_len], cur_string, cur_len); - hdr_len += cur_len; - } - - _itoa(file_size, intbuf, 10); - strcat(intbuf, "\r\n"); - cur_len = strlen(intbuf); - written += file_put_ascii(data_file, intbuf, cur_len, &i); - i = 0; - if (precalcChksum) { - memcpy(&hdr_buf[hdr_len], intbuf, cur_len); - hdr_len += cur_len; - } - - cur_string = g_psHTTPHeaderStrings[HTTP_HDR_CONN_CLOSE]; - cur_len = strlen(cur_string); - fprintf(data_file, NEWLINE "/* \"%s\" (%d bytes) */" NEWLINE, cur_string, cur_len); - written += file_put_ascii(data_file, cur_string, cur_len, &i); - i = 0; - if (precalcChksum) { - memcpy(&hdr_buf[hdr_len], cur_string, cur_len); - hdr_len += cur_len; - } - } - - cur_string = g_psHTTPHeaderStrings[file_type]; - cur_len = strlen(cur_string); - fprintf(data_file, NEWLINE "/* \"%s\" (%d bytes) */" NEWLINE, cur_string, cur_len); - written += file_put_ascii(data_file, cur_string, cur_len, &i); - i = 0; - if (precalcChksum) { - memcpy(&hdr_buf[hdr_len], cur_string, cur_len); - hdr_len += cur_len; - - LWIP_ASSERT("hdr_len <= 0xffff", hdr_len <= 0xffff); - LWIP_ASSERT("strlen(hdr_buf) == hdr_len", strlen(hdr_buf) == hdr_len); - acc = ~inet_chksum(hdr_buf, (u16_t)hdr_len); - *http_hdr_len = (u16_t)hdr_len; - *http_hdr_chksum = acc; - } - - return written; -} - -int file_put_ascii(FILE *file, const char* ascii_string, int len, int *i) -{ - int x; - for(x = 0; x < len; x++) { - unsigned char cur = ascii_string[x]; - fprintf(file, "0x%02.2x,", cur); - if ((++(*i) % HEX_BYTES_PER_LINE) == 0) { - fprintf(file, NEWLINE); - } - } - return len; -} - -int s_put_ascii(char *buf, const char *ascii_string, int len, int *i) -{ - int x; - int idx = 0; - for(x = 0; x < len; x++) { - unsigned char cur = ascii_string[x]; - sprintf(&buf[idx], "0x%02.2x,", cur); - idx += 5; - if ((++(*i) % HEX_BYTES_PER_LINE) == 0) { - sprintf(&buf[idx], NEWLINE); - idx += NEWLINE_LEN; - } - } - return len; -} diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/makefsdata.exe b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/apps/httpserver_raw/makefsdata/makefsdata.exe deleted file mode 100644 index 7d4271d0aa18c7f8eeb905dee82a49bce8ba89ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46592 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 See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - -/* Standard includes. */ -#include - -/* FreeRTOS includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" - -/* lwIP core includes */ -#include "lwip/opt.h" -#include "lwip/tcpip.h" - -/* lwIP netif includes */ -#include "netif/etharp.h" - -/* applications includes */ -#include "apps/httpserver_raw/httpd.h" - -/* The constants that define the IP address, net mask, gateway address and MAC -address are located at the bottom of FreeRTOSConfig.h. */ -#define LWIP_PORT_INIT_IPADDR(addr) IP4_ADDR((addr), configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ) -#define LWIP_PORT_INIT_GW(addr) IP4_ADDR((addr), configGW_IP_ADDR0, configGW_IP_ADDR1, configGW_IP_ADDR2, configGW_IP_ADDR3 ) -#define LWIP_PORT_INIT_NETMASK(addr) IP4_ADDR((addr), configNET_MASK0,configNET_MASK1,configNET_MASK2,configNET_MASK3) -#define LWIP_MAC_ADDR_BASE { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 } - -/* Definitions of the various SSI callback functions within the pccSSITags -array. If pccSSITags is updated, then these definitions must also be updated. */ -#define ssiTASK_STATS_INDEX 0 -#define ssiRUN_TIME_STATS_INDEX 1 - -/* - * The SSI handler callback function passed to lwIP. - */ -static unsigned short uslwIPAppsSSIHandler( int iIndex, char *pcBuffer, int iBufferLength ); - -/*-----------------------------------------------------------*/ - -/* The SSI strings that are embedded in the served html files. If this array -is changed, then the index position defined by the #defines such as -ssiTASK_STATS_INDEX above must also be updated. */ -static const char *pccSSITags[] = -{ - "rtos_stats", - "run_stats" -}; - -/*-----------------------------------------------------------*/ - -/* Called from the TCP/IP thread. */ -void lwIPAppsInit( void *pvArgument ) -{ -ip_addr_t xIPAddr, xNetMask, xGateway; -extern err_t ethernetif_init( struct netif *xNetIf ); -static struct netif xNetIf; - - ( void ) pvArgument; - - /* Set up the network interface. */ - ip_addr_set_zero( &xGateway ); - ip_addr_set_zero( &xIPAddr ); - ip_addr_set_zero( &xNetMask ); - - LWIP_PORT_INIT_GW(&xGateway); - LWIP_PORT_INIT_IPADDR(&xIPAddr); - LWIP_PORT_INIT_NETMASK(&xNetMask); - - netif_set_default( netif_add( &xNetIf, &xIPAddr, &xNetMask, &xGateway, NULL, ethernetif_init, tcpip_input ) ); - netif_set_up( &xNetIf ); - - /* Initialise the raw http server. */ - httpd_init(); - - /* Install the server side include handler. */ - http_set_ssi_handler( uslwIPAppsSSIHandler, pccSSITags, sizeof( pccSSITags ) / sizeof( char * ) ); -} -/*-----------------------------------------------------------*/ - -static unsigned short uslwIPAppsSSIHandler( int iIndex, char *pcBuffer, int iBufferLength ) -{ -static unsigned int uiUpdateCount = 0; -static char cUpdateString[ 200 ]; -extern char *pcMainGetTaskStatusMessage( void ); - - /* Unused parameter. */ - ( void ) iBufferLength; - - /* The SSI handler function that generates text depending on the index of - the SSI tag encountered. */ - - switch( iIndex ) - { - case ssiTASK_STATS_INDEX : - vTaskList( ( signed char * ) pcBuffer ); - break; - - case ssiRUN_TIME_STATS_INDEX : - vTaskGetRunTimeStats( ( signed char * ) pcBuffer ); - break; - } - - /* Include a count of the number of times an SSI function has been executed - in the returned string. */ - uiUpdateCount++; - sprintf( cUpdateString, "\r\n\r\n%u\r\nStatus - %s", uiUpdateCount, pcMainGetTaskStatusMessage() ); - strcat( pcBuffer, cUpdateString ); - return strlen( pcBuffer ); -} - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipcfg_MicroBlaze.h b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipcfg_MicroBlaze.h deleted file mode 100644 index f7109fad1..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipcfg_MicroBlaze.h +++ /dev/null @@ -1,15 +0,0 @@ - -#define LWIP_PORT_INIT_IPADDR(addr) IP4_ADDR((addr), configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 ) -#define LWIP_PORT_INIT_GW(addr) IP4_ADDR((addr), configGW_IP_ADDR0, configGW_IP_ADDR1, configGW_IP_ADDR2, configGW_IP_ADDR3 ) -#define LWIP_PORT_INIT_NETMASK(addr) IP4_ADDR((addr), configNET_MASK0,configNET_MASK1,configNET_MASK2,configNET_MASK3) - -/* remember to change this MAC address to suit your needs! - the last octet will be increased by netif->num for each netif */ -#define LWIP_MAC_ADDR_BASE { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 } - -/* configuration for applications */ - -#define LWIP_CHARGEN_APP 0 -#define LWIP_DNS_APP 0 -#define LWIP_HTTPD_APP 1 - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipopts.h b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipopts.h deleted file mode 100644 index 115dca014..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/lwIP/lwIP_Apps/lwipopts.h +++ /dev/null @@ -1,314 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. 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. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIPOPTS_H__ -#define __LWIPOPTS_H__ - -#include "xparameters.h" - -/* Define platform endianness (might already be defined) */ -#ifndef BYTE_ORDER - #if XPAR_MICROBLAZE_0_ENDIANNESS == 1 - #define BYTE_ORDER LITTLE_ENDIAN - #else - #define BYTE_ORDER BIG_ENDIAN - #endif -#endif /* BYTE_ORDER */ - -/* SSI options. */ -#define TCPIP_THREAD_NAME "tcpip" -#define LWIP_HTTPD_MAX_TAG_NAME_LEN 20 -#define LWIP_HTTPD_MAX_TAG_INSERT_LEN 1500 -#define TCPIP_THREAD_PRIO configLWIP_TASK_PRIORITY -#define TCPIP_THREAD_STACKSIZE configMINIMAL_STACK_SIZE * 3 - -/* MBox sizes cannot be zer, which is their default. */ -#define DEFAULT_TCP_RECVMBOX_SIZE 5 -#define DEFAULT_ACCEPTMBOX_SIZE 5 -#define TCPIP_MBOX_SIZE 10 - -/* FreeRTOS is used. */ -#define NO_SYS 0 - -/* In this example, sockets are not used, only the raw API. */ -#define LWIP_SOCKET 0 - -/* In this example, only the raw API is used. */ -#define LWIP_NETCONN 0 - -/* SNMP and IGMP are not required by this simple demo. ICMP is always useful -though. */ -#define LWIP_SNMP 0 -#define LWIP_IGMP 0 -#define LWIP_ICMP 1 - -/* DNS is not going to be used as this is a simple local example. */ -#define LWIP_DNS 0 - -#define LWIP_HAVE_LOOPIF 0 -#define TCP_LISTEN_BACKLOG 0 -#define LWIP_SO_RCVTIMEO 1 -#define LWIP_SO_RCVBUF 1 - -#ifdef LWIP_DEBUG - #define LWIP_DBG_MIN_LEVEL 0 - #define PPP_DEBUG LWIP_DBG_OFF - #define MEM_DEBUG LWIP_DBG_ON - #define MEMP_DEBUG LWIP_DBG_ON - #define PBUF_DEBUG LWIP_DBG_ON - #define API_LIB_DEBUG LWIP_DBG_OFF - #define API_MSG_DEBUG LWIP_DBG_OFF - #define TCPIP_DEBUG LWIP_DBG_OFF - #define NETIF_DEBUG LWIP_DBG_OFF - #define SOCKETS_DEBUG LWIP_DBG_OFF - #define DNS_DEBUG LWIP_DBG_OFF - #define AUTOIP_DEBUG LWIP_DBG_OFF - #define DHCP_DEBUG LWIP_DBG_OFF - #define IP_DEBUG LWIP_DBG_OFF - #define IP_REASS_DEBUG LWIP_DBG_OFF - #define ICMP_DEBUG LWIP_DBG_OFF - #define IGMP_DEBUG LWIP_DBG_OFF - #define UDP_DEBUG LWIP_DBG_OFF - #define TCP_DEBUG LWIP_DBG_OFF - #define TCP_INPUT_DEBUG LWIP_DBG_OFF - #define TCP_OUTPUT_DEBUG LWIP_DBG_OFF - #define TCP_RTO_DEBUG LWIP_DBG_OFF - #define TCP_CWND_DEBUG LWIP_DBG_OFF - #define TCP_WND_DEBUG LWIP_DBG_OFF - #define TCP_FR_DEBUG LWIP_DBG_OFF - #define TCP_QLEN_DEBUG LWIP_DBG_OFF - #define TCP_RST_DEBUG LWIP_DBG_OFF -#endif - -#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT) - - - -/* ---------- Memory options ---------- */ -/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which - lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2 - byte alignment -> define MEM_ALIGNMENT to 2. */ -/* MSVC port: intel processors don't need 4-byte alignment, - but are faster that way! */ -#define MEM_ALIGNMENT 4 - -/* MEM_SIZE: the size of the heap memory. If the application will send -a lot of data that needs to be copied, this should be set high. */ -#define MEM_SIZE 10240 - -/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application - sends a lot of data out of ROM (or other static memory), this - should be set high. */ -#define MEMP_NUM_PBUF 10 - -/* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One - per active RAW "connection". */ -#define LWIP_RAW 0 -#define MEMP_NUM_RAW_PCB 0 - -/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - per active UDP "connection". */ -#define MEMP_NUM_UDP_PCB 2 - -/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP - connections. */ -#define MEMP_NUM_TCP_PCB 40 - -/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP - connections. */ -#define MEMP_NUM_TCP_PCB_LISTEN 2 - -/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP - segments. */ -#define MEMP_NUM_TCP_SEG 10 - -/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active - timeouts. */ -#define MEMP_NUM_SYS_TIMEOUT 15 - -/* The following four are used only with the sequential API and can be - set to 0 if the application only will use the raw API. */ -/* MEMP_NUM_NETBUF: the number of struct netbufs. */ -#define MEMP_NUM_NETBUF 0 - -/* MEMP_NUM_NETCONN: the number of struct netconns. */ -#define MEMP_NUM_NETCONN 0 - -/* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used - for sequential API communication and incoming packets. Used in - src/api/tcpip.c. */ -#define MEMP_NUM_TCPIP_MSG_API 4 -#define MEMP_NUM_TCPIP_MSG_INPKT 4 - -#define MEMP_NUM_ARP_QUEUE 5 - -/* ---------- Pbuf options ---------- */ -/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */ -#define PBUF_POOL_SIZE 10 - -/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */ -#define PBUF_POOL_BUFSIZE 375 - -/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a - link level header. */ -#define PBUF_LINK_HLEN 16 - -/** SYS_LIGHTWEIGHT_PROT - * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection - * for certain critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#define SYS_LIGHTWEIGHT_PROT (NO_SYS==0) - - -/* ---------- TCP options ---------- */ -#define LWIP_TCP 1 -#define TCP_TTL 255 - -/* Controls if TCP should queue segments that arrive out of - order. Define to 0 if your device is low on memory. */ -#define TCP_QUEUE_OOSEQ 1 - -/* TCP Maximum segment size. */ -#define TCP_MSS 1460 - -/* TCP sender buffer space (bytes). */ -#define TCP_SND_BUF ( TCP_MSS * 2 ) - -/* TCP sender buffer space (pbufs). This must be at least = 2 * - TCP_SND_BUF/TCP_MSS for things to work. */ -#define TCP_SND_QUEUELEN (4 * TCP_SND_BUF/TCP_MSS) - -/* TCP writable space (bytes). This must be less than or equal - to TCP_SND_BUF. It is the amount of space which must be - available in the tcp snd_buf for select to return writable */ -#define TCP_SNDLOWAT (TCP_SND_BUF/2) - -/* TCP receive window. */ -#define TCP_WND ( PBUF_POOL_SIZE * PBUF_POOL_BUFSIZE ) - -/* Maximum number of retransmissions of data segments. */ -#define TCP_MAXRTX 12 - -/* Maximum number of retransmissions of SYN segments. */ -#define TCP_SYNMAXRTX 4 - - -/* ---------- ARP options ---------- */ -#define LWIP_ARP 1 -#define ARP_TABLE_SIZE 10 -#define ARP_QUEUEING 1 - - -/* ---------- IP options ---------- */ -/* Define IP_FORWARD to 1 if you wish to have the ability to forward - IP packets across network interfaces. If you are going to run lwIP - on a device with only one network interface, define this to 0. */ -#define IP_FORWARD 0 - -/* IP reassembly and segmentation.These are orthogonal even - * if they both deal with IP fragments */ -#define IP_REASSEMBLY 0 -#define IP_REASS_MAX_PBUFS 10 -#define MEMP_NUM_REASSDATA 10 -#define IP_FRAG 0 - - -/* ---------- ICMP options ---------- */ -#define ICMP_TTL 255 - - -/* ---------- DHCP options ---------- */ -/* Define LWIP_DHCP to 1 if you want DHCP configuration of - interfaces. */ -#define LWIP_DHCP 0 - -/* 1 if you want to do an ARP check on the offered address - (recommended). */ -#define DHCP_DOES_ARP_CHECK (LWIP_DHCP) - - -/* ---------- AUTOIP options ------- */ -#define LWIP_AUTOIP 0 -#define LWIP_DHCP_AUTOIP_COOP (LWIP_DHCP && LWIP_AUTOIP) - - -/* ---------- UDP options ---------- */ -#define LWIP_UDP 1 -#define LWIP_UDPLITE 1 -#define UDP_TTL 255 - - -/* ---------- Statistics options ---------- */ - -#define LWIP_STATS 1 -#define LWIP_STATS_DISPLAY 0 - -#if LWIP_STATS - #define LINK_STATS 1 - #define IP_STATS 1 - #define ICMP_STATS 0 - #define IGMP_STATS 0 - #define IPFRAG_STATS 0 - #define UDP_STATS 1 - #define TCP_STATS 1 - #define MEM_STATS 1 - #define MEMP_STATS 1 - #define PBUF_STATS 1 - #define SYS_STATS 1 -#endif /* LWIP_STATS */ - - -/* ---------- PPP options ---------- */ - -#define PPP_SUPPORT 0 /* Set > 0 for PPP */ - -#if PPP_SUPPORT - - #define NUM_PPP 1 /* Max PPP sessions. */ - - /* Select modules to enable. Ideally these would be set in the makefile but - * we're limited by the command line length so you need to modify the settings - * in this file. - */ - #define PPPOE_SUPPORT 1 - #define PPPOS_SUPPORT 1 - #define PAP_SUPPORT 1 /* Set > 0 for PAP. */ - #define CHAP_SUPPORT 1 /* Set > 0 for CHAP. */ - #define MSCHAP_SUPPORT 0 /* Set > 0 for MSCHAP (NOT FUNCTIONAL!) */ - #define CBCP_SUPPORT 0 /* Set > 0 for CBCP (NOT FUNCTIONAL!) */ - #define CCP_SUPPORT 0 /* Set > 0 for CCP (NOT FUNCTIONAL!) */ - #define VJ_SUPPORT 1 /* Set > 0 for VJ header compression. */ - #define MD5_SUPPORT 1 /* Set > 0 for MD5 (see also CHAP) */ - -#endif /* PPP_SUPPORT */ - -#endif /* __LWIPOPTS_H__ */ diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-blinky.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-blinky.c deleted file mode 100644 index cc8c1aa01..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-blinky.c +++ /dev/null @@ -1,530 +0,0 @@ -/* - FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd. - - - *************************************************************************** - * * - * FreeRTOS tutorial books are available in pdf and paperback. * - * Complete, revised, and edited pdf reference manuals are also * - * available. * - * * - * Purchasing FreeRTOS documentation will not only help you, by * - * ensuring you get running as quickly as possible and with an * - * in-depth knowledge of how to use FreeRTOS, it will also help * - * the FreeRTOS project to continue with its mission of providing * - * professional grade, cross platform, de facto standard solutions * - * for microcontrollers - completely free of charge! * - * * - * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - -/* - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-blinky.c (this file) defines a very simple demo that creates two tasks, - * one queue, and one timer. It also demonstrates how MicroBlaze interrupts - * can interact with FreeRTOS tasks/timers. - * - * This simple demo project was developed and tested on the Spartan-6 SP605 - * development board, using the hardware configuration found in the hardware - * project that is already included in the Eclipse project. - * - * The idle hook function: - * The idle hook function demonstrates how to query the amount of FreeRTOS heap - * space that is remaining (see vApplicationIdleHook() defined in this file). - * - * The main() Function: - * main() creates one software timer, one queue, and two tasks. It then starts - * the scheduler. - * - * The Queue Send Task: - * The queue send task is implemented by the prvQueueSendTask() function in - * this file. prvQueueSendTask() sits in a loop that causes it to repeatedly - * block for 200 milliseconds, before sending the value 100 to the queue that - * was created within main(). Once the value is sent, the task loops back - * around to block for another 200 milliseconds. - * - * The Queue Receive Task: - * The queue receive task is implemented by the prvQueueReceiveTask() function - * in this file. prvQueueReceiveTask() sits in a loop that causes it to - * repeatedly attempt to read data from the queue that was created within - * main(). When data is received, the task checks the value of the data, and - * if the value equals the expected 100, toggles an LED. The 'block time' - * parameter passed to the queue receive function specifies that the task - * should be held in the Blocked state indefinitely to wait for data to be - * available on the queue. The queue receive task will only leave the Blocked - * state when the queue send task writes to the queue. As the queue send task - * writes to the queue every 200 milliseconds, the queue receive task leaves - * the Blocked state every 200 milliseconds, and therefore toggles the LED - * every 200 milliseconds. - * - * The LED Software Timer and the Button Interrupt: - * The user buttons are configured to generate an interrupt each time one is - * pressed. The interrupt service routine switches an LED on, and resets the - * LED software timer. The LED timer has a 5000 millisecond (5 second) period, - * and uses a callback function that is defined to just turn the LED off again. - * Therefore, pressing the user button will turn the LED on, and the LED will - * remain on until a full five seconds pass without the button being pressed. - */ - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "queue.h" -#include "timers.h" - -/* BSP includes. */ -#include "xtmrctr.h" -#include "xgpio.h" - -/* Priorities at which the tasks are created. */ -#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) - -/* The rate at which data is sent to the queue, specified in milliseconds, and -converted to ticks using the portTICK_RATE_MS constant. */ -#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_RATE_MS ) - -/* The number of items the queue can hold. This is 1 as the receive task -will remove items as they are added because it has the higher priority, meaning -the send task should always find the queue empty. */ -#define mainQUEUE_LENGTH ( 1 ) - -/* The LED toggled by the queue receive task. */ -#define mainTASK_CONTROLLED_LED 0x01UL - -/* The LED turned on by the button interrupt, and turned off by the LED timer. */ -#define mainTIMER_CONTROLLED_LED 0x02UL - -/* A block time of 0 simply means, "don't block". */ -#define mainDONT_BLOCK ( portTickType ) 0 - -/*-----------------------------------------------------------*/ - -/* - * Setup the NVIC, LED outputs, and button inputs. - */ -static void prvSetupHardware( void ); - -/* - * The tasks as described in the comments at the top of this file. - */ -static void prvQueueReceiveTask( void *pvParameters ); -static void prvQueueSendTask( void *pvParameters ); - -/* - * The LED timer callback function. This does nothing but switch off the - * LED defined by the mainTIMER_CONTROLLED_LED constant. - */ -static void vLEDTimerCallback( xTimerHandle xTimer ); - -/* - * The handler executed each time a button interrupt is generated. This ensures - * the LED defined by mainTIMER_CONTROLLED_LED is on, and resets the timer so - * the timer will not turn the LED off for a full 5 seconds after the button - * interrupt occurred. - */ -static void prvButtonInputInterruptHandler( void *pvUnused ); - -/*-----------------------------------------------------------*/ - -/* The queue used by the queue send and queue receive tasks. */ -static xQueueHandle xQueue = NULL; - -/* The LED software timer. This uses vLEDTimerCallback() as its callback -function. */ -static xTimerHandle xLEDTimer = NULL; - -/* Maintains the current LED output state. */ -static volatile unsigned char ucGPIOState = 0U; - -/*-----------------------------------------------------------*/ - -/* Structures that hold the state of the various peripherals used by this demo. -These are used by the Xilinx peripheral driver API functions. */ -static XTmrCtr xTimer0Instance; -static XGpio xOutputGPIOInstance, xInputGPIOInstance; - -/* Constants required by the Xilinx peripheral driver API functions that are -relevant to the particular hardware set up. */ -static const unsigned long ulGPIOOutputChannel = 1UL, ulGPIOInputChannel = 1UL; - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /* ************************************************************************* - This is a very simple project suitable for getting started with FreeRTOS. - If you would prefer a more complex project that demonstrates a lot more - features and tests, then select the 'Full' build configuration within the - SDK Eclipse IDE. - ***************************************************************************/ - - /* Configure the interrupt controller, LED outputs and button inputs. */ - prvSetupHardware(); - - /* Create the queue used by the queue send and queue receive tasks as - described in the comments at the top of this file. */ - xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) ); - - /* Sanity check that the queue was created. */ - configASSERT( xQueue ); - - /* Start the two tasks as described in the comments at the top of this - file. */ - xTaskCreate( prvQueueReceiveTask, ( signed char * ) "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL ); - - /* Create the software timer that is responsible for turning off the LED - if the button is not pushed within 5000ms, as described at the top of - this file. The timer is not actually started until a button interrupt is - pushed, as it is not until that point that the LED is turned on. */ - xLEDTimer = xTimerCreate( ( const signed char * ) "LEDTimer", /* A text name, purely to help debugging. */ - ( 5000 / portTICK_RATE_MS ), /* The timer period, in this case 5000ms (5s). */ - pdFALSE, /* This is a one shot timer, so xAutoReload is set to pdFALSE. */ - ( void * ) 0, /* The ID is not used, so can be set to anything. */ - vLEDTimerCallback /* The callback function that switches the LED off. */ - ); - - /* Start the tasks and timer running. */ - vTaskStartScheduler(); - - /* If all is well, the scheduler will now be running, and the following line - will never be reached. If the following line does execute, then there was - insufficient FreeRTOS heap memory available for the idle and/or timer tasks - to be created. See the memory management section on the FreeRTOS web site - for more details. */ - for( ;; ); -} -/*-----------------------------------------------------------*/ - -/* The callback is executed when the LED timer expires. */ -static void vLEDTimerCallback( xTimerHandle xTimer ) -{ - /* The timer has expired - so no button pushes have occurred in the last - five seconds - turn the LED off. NOTE - accessing the LED port should use - a critical section because it is accessed from multiple tasks, and the - button interrupt - in this trivial case, for simplicity, the critical - section is omitted. */ - ucGPIOState &= ~mainTIMER_CONTROLLED_LED; - XGpio_DiscreteWrite( &xOutputGPIOInstance, ulGPIOOutputChannel, ucGPIOState ); -} -/*-----------------------------------------------------------*/ - -/* The ISR is executed when the user button is pushed. */ -static void prvButtonInputInterruptHandler( void *pvUnused ) -{ -long lHigherPriorityTaskWoken = pdFALSE; - - /* The button was pushed, so ensure the LED is on before resetting the - LED timer. The LED timer will turn the LED off if the button is not - pushed within 5000ms. */ - ucGPIOState |= mainTIMER_CONTROLLED_LED; - XGpio_DiscreteWrite( &xOutputGPIOInstance, ulGPIOOutputChannel, ucGPIOState ); - - /* Ensure only the ISR safe reset API function is used, as this is executed - in an interrupt context. */ - xTimerResetFromISR( xLEDTimer, &lHigherPriorityTaskWoken ); - - /* Clear the interrupt before leaving. */ - XGpio_InterruptClear( &xInputGPIOInstance, ulGPIOInputChannel ); - - /* If calling xTimerResetFromISR() caused a task (in this case the timer - service/daemon task) to unblock, and the unblocked task has a priority - higher than or equal to the task that was interrupted, then - lHigherPriorityTaskWoken will now be set to pdTRUE, and calling - portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */ - portYIELD_FROM_ISR( lHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvQueueSendTask( void *pvParameters ) -{ -portTickType xNextWakeTime; -const unsigned long ulValueToSend = 100UL; - - /* Initialise xNextWakeTime - this only needs to be done once. */ - xNextWakeTime = xTaskGetTickCount(); - - for( ;; ) - { - /* Place this task in the blocked state until it is time to run again. - The block time is specified in ticks, the constant used converts ticks - to ms. While in the Blocked state this task will not consume any CPU - time. */ - vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS ); - - /* Send to the queue - causing the queue receive task to unblock and - toggle an LED. 0 is used as the block time so the sending operation - will not block - it shouldn't need to block as the queue should always - be empty at this point in the code. */ - xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK ); - } -} -/*-----------------------------------------------------------*/ - -static void prvQueueReceiveTask( void *pvParameters ) -{ -unsigned long ulReceivedValue; - - for( ;; ) - { - /* Wait until something arrives in the queue - this task will block - indefinitely provided INCLUDE_vTaskSuspend is set to 1 in - FreeRTOSConfig.h. */ - xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY ); - - /* To get here something must have been received from the queue, but - is it the expected value? If it is, toggle the green LED. */ - if( ulReceivedValue == 100UL ) - { - /* NOTE - accessing the LED port should use a critical section - because it is accessed from multiple tasks, and the button interrupt - - in this trivial case, for simplicity, the critical section is - omitted. */ - if( ( ucGPIOState & mainTASK_CONTROLLED_LED ) != 0 ) - { - ucGPIOState &= ~mainTASK_CONTROLLED_LED; - } - else - { - ucGPIOState |= mainTASK_CONTROLLED_LED; - } - - XGpio_DiscreteWrite( &xOutputGPIOInstance, ulGPIOOutputChannel, ucGPIOState ); - } - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ -portBASE_TYPE xStatus; -const unsigned char ucSetToOutput = 0U; - - /* Initialize the GPIO for the LEDs. */ - xStatus = XGpio_Initialize( &xOutputGPIOInstance, XPAR_LEDS_4BITS_DEVICE_ID ); - if( xStatus == XST_SUCCESS ) - { - /* All bits on this channel are going to be outputs (LEDs). */ - XGpio_SetDataDirection( &xOutputGPIOInstance, ulGPIOOutputChannel, ucSetToOutput ); - - /* Start with all LEDs off. */ - ucGPIOState = 0U; - XGpio_DiscreteWrite( &xOutputGPIOInstance, ulGPIOOutputChannel, ucGPIOState ); - } - - /* Initialise the GPIO for the button inputs. */ - if( xStatus == XST_SUCCESS ) - { - xStatus = XGpio_Initialize( &xInputGPIOInstance, XPAR_PUSH_BUTTONS_4BITS_DEVICE_ID ); - } - - if( xStatus == XST_SUCCESS ) - { - /* Install the handler defined in this task for the button input. - *NOTE* The FreeRTOS defined xPortInstallInterruptHandler() API function - must be used for this purpose. */ - xStatus = xPortInstallInterruptHandler( XPAR_MICROBLAZE_0_INTC_PUSH_BUTTONS_4BITS_IP2INTC_IRPT_INTR, prvButtonInputInterruptHandler, NULL ); - - if( xStatus == pdPASS ) - { - /* Set buttons to input. */ - XGpio_SetDataDirection( &xInputGPIOInstance, ulGPIOInputChannel, ~( ucSetToOutput ) ); - - /* Enable the button input interrupts in the interrupt controller. - *NOTE* The vPortEnableInterrupt() API function must be used for this - purpose. */ - vPortEnableInterrupt( XPAR_MICROBLAZE_0_INTC_PUSH_BUTTONS_4BITS_IP2INTC_IRPT_INTR ); - - /* Enable GPIO channel interrupts. */ - XGpio_InterruptEnable( &xInputGPIOInstance, ulGPIOInputChannel ); - XGpio_InterruptGlobalEnable( &xInputGPIOInstance ); - } - } - - configASSERT( ( xStatus == pdPASS ) ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* vApplicationMallocFailedHook() will only be called if - configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - function that will get called if a call to pvPortMalloc() fails. - pvPortMalloc() is called internally by the kernel whenever a task, queue or - semaphore is created. It is also called by various parts of the demo - application. If heap_1.c or heap_2.c are used, then the size of the heap - available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in - FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used - to query the size of free heap space that remains (although it does not - provide information on how the remaining heap might be fragmented). */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* vApplicationStackOverflowHook() will only be called if - configCHECK_FOR_STACK_OVERFLOW is set to either 1 or 2. The handle and name - of the offending task will be passed into the hook function via its - parameters. However, when a stack has overflowed, it is possible that the - parameters will have been corrupted, in which case the pxCurrentTCB variable - can be inspected directly. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -#ifdef EXAMPLE_CODE_ONLY - - The following code can only be included if heap_1.c or heap_2.c is used in - the project. By default, heap_3.c is used, so the example code is - excluded. See http://www.freertos.org/a00111.html for more information on - memory management options. - - volatile size_t xFreeHeapSpace; - - /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set - to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle - task. It is essential that code added to this hook function never attempts - to block in any way (for example, call xQueueReceive() with a block time - specified, or call vTaskDelay()). If the application makes use of the - vTaskDelete() API function (as this demo application does) then it is also - important that vApplicationIdleHook() is permitted to return to its calling - function, because it is the responsibility of the idle task to clean up - memory allocated by the kernel to any task that has since been deleted. */ - - /* This implementation of vApplicationIdleHook() simply demonstrates how - the xPortGetFreeHeapSize() function can be used. */ - xFreeHeapSpace = xPortGetFreeHeapSize(); - - if( xFreeHeapSpace > 100 ) - { - /* By now, the kernel has allocated everything it is going to, so - if there is a lot of heap remaining unallocated then - the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be - reduced accordingly. */ - } -#endif -} -/*-----------------------------------------------------------*/ - -/* This is an application defined callback function used to install the tick -interrupt handler. It is provided as an application callback because the kernel -will run on lots of different MicroBlaze and FPGA configurations - not all of -which will have the same timer peripherals defined or available. This example -uses the AXI Timer 0. If that is available on your hardware platform then this -example callback implementation should not require modification. The name of -the interrupt handler that should be installed is vPortTickISR(), which the -function below declares as an extern. */ -void vApplicationSetupTimerInterrupt( void ) -{ -portBASE_TYPE xStatus; -const unsigned char ucTimerCounterNumber = ( unsigned char ) 0U; -const unsigned long ulCounterValue = ( ( XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / configTICK_RATE_HZ ) - 1UL ); -extern void vPortTickISR( void *pvUnused ); - - /* Initialise the timer/counter. */ - xStatus = XTmrCtr_Initialize( &xTimer0Instance, XPAR_AXI_TIMER_0_DEVICE_ID ); - - if( xStatus == XST_SUCCESS ) - { - /* Install the tick interrupt handler as the timer ISR. - *NOTE* The xPortInstallInterruptHandler() API function must be used for - this purpose. */ - xStatus = xPortInstallInterruptHandler( XPAR_INTC_0_TMRCTR_0_VEC_ID, vPortTickISR, NULL ); - } - - if( xStatus == pdPASS ) - { - /* Enable the timer interrupt in the interrupt controller. - *NOTE* The vPortEnableInterrupt() API function must be used for this - purpose. */ - vPortEnableInterrupt( XPAR_INTC_0_TMRCTR_0_VEC_ID ); - - /* Configure the timer interrupt handler. */ - XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vPortTickISR, NULL ); - - /* Set the correct period for the timer. */ - XTmrCtr_SetResetValue( &xTimer0Instance, ucTimerCounterNumber, ulCounterValue ); - - /* Enable the interrupts. Auto-reload mode is used to generate a - periodic tick. Note that interrupts are disabled when this function is - called, so interrupts will not start to be processed until the first - task has started to run. */ - XTmrCtr_SetOptions( &xTimer0Instance, ucTimerCounterNumber, ( XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION ) ); - - /* Start the timer. */ - XTmrCtr_Start( &xTimer0Instance, ucTimerCounterNumber ); - } - - /* Sanity check that the function executed as expected. */ - configASSERT( ( xStatus == pdPASS ) ); -} -/*-----------------------------------------------------------*/ - -/* This is an application defined callback function used to clear whichever -interrupt was installed by the the vApplicationSetupTimerInterrupt() callback -function - in this case the interrupt generated by the AXI timer. It is -provided as an application callback because the kernel will run on lots of -different MicroBlaze and FPGA configurations - not all of which will have the -same timer peripherals defined or available. This example uses the AXI Timer 0. -If that is available on your hardware platform then this example callback -implementation should not require modification provided the example definition -of vApplicationSetupTimerInterrupt() is also not modified. */ -void vApplicationClearTimerInterrupt( void ) -{ -unsigned long ulCSR; - - /* Clear the timer interrupt */ - ulCSR = XTmrCtr_GetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0 ); - XTmrCtr_SetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0, ulCSR ); -} -/*-----------------------------------------------------------*/ - -/* These functions are not used by the Blinky build configuration. However, -they need to be defined because the Blinky and Full build configurations share -a FreeRTOSConifg.h configuration file. */ -void vMainConfigureTimerForRunTimeStats( void ) {} -unsigned long ulMainGetRunTimeCounterValue( void ) { return 1; } diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-full.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-full.c deleted file mode 100644 index 7d3356187..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/main-full.c +++ /dev/null @@ -1,672 +0,0 @@ -/* - FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd. - - - *************************************************************************** - * * - * FreeRTOS tutorial books are available in pdf and paperback. * - * Complete, revised, and edited pdf reference manuals are also * - * available. * - * * - * Purchasing FreeRTOS documentation will not only help you, by * - * ensuring you get running as quickly as possible and with an * - * in-depth knowledge of how to use FreeRTOS, it will also help * - * the FreeRTOS project to continue with its mission of providing * - * professional grade, cross platform, de facto standard solutions * - * for microcontrollers - completely free of charge! * - * * - * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - -/* **************************************************************************** - * main-blinky.c is included when the "Blinky" build configuration is used. - * main-full.c is included when the "Full" build configuration is used. - * - * main-full.c creates a lot of demo and test tasks and timers, and is - * therefore very comprehensive but also complex. If you would prefer a much - * simpler project to get started with, then select the 'Blinky' build - * configuration within the SDK Eclipse IDE. See the documentation page for - * this demo on the http://www.FreeRTOS.org web site for more information. - * **************************************************************************** - * - * main() creates all the demo application tasks and timers, then starts the - * scheduler. The web documentation provides more details of the standard demo - * application tasks, which provide no particular functionality, but do provide - * a good example of how to use the FreeRTOS API. - * - * In addition to the standard demo tasks, the following tasks and tests are - * defined and/or created within this file: - * - * TCP/IP ("lwIP") task - lwIP is used to create a basic web server. The web - * server uses server side includes (SSI) to generate tables of task statistics, - * and run time statistics (run time statistics show how much processing time - * each task has consumed). See - * http://www.FreeRTOS.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html - * for details on setting up and using the embedded web server. - * - * "Reg test" tasks - These test the task context switch mechanism by first - * filling the MicroBlaze registers with known values, before checking that each - * register maintains the value that was written to it as the tasks are switched - * in and out. The two register test tasks do not use the same values, and - * execute at a very low priority, to ensure they are pre-empted regularly. - * - * "Check" timer - The check timer period is initially set to five seconds. - * The check timer callback function checks that all the standard demo tasks, - * and the register check tasks, are not only still executing, but are executing - * without reporting any errors. If the check timer discovers that a task has - * either stalled, or reported an error, then it changes its own period from - * the initial five seconds, to just 200ms. The check timer callback function - * also toggles an LED each time it is called. This provides a visual - * indication of the system status: If the LED toggles every five seconds then - * no issues have been discovered. If the LED toggles every 200ms then an issue - * has been discovered with at least one task. The last reported issue is - * latched into the pcStatusMessage variable, and can also be viewed at the - * bottom of the pages served by the embedded web server. - * - * ***NOTE*** This demo uses the standard comtest tasks, which has special - * hardware requirements. See - * http://www.FreeRTOS.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html - * for more information. - * - * This file also includes example implementations of the - * vApplicationIdleHook(), vApplicationStackOverflowHook(), - * vApplicationMallocFailedHook(), vApplicationClearTimerInterrupt(), and - * vApplicationSetupTimerInterrupt() callback (hook) functions. - */ - -/* Standard includes. */ -#include -#include - -/* BSP includes. */ -#include "xtmrctr.h" -#include "microblaze_exceptions_g.h" - -/* Kernel includes. */ -#include "FreeRTOS.h" -#include "task.h" -#include "timers.h" - -/* Standard demo includes. */ -#include "partest.h" -#include "flash.h" -#include "BlockQ.h" -#include "death.h" -#include "blocktim.h" -#include "semtest.h" -#include "PollQ.h" -#include "GenQTest.h" -#include "QPeek.h" -#include "recmutex.h" -#include "flop.h" -#include "dynamic.h" -#include "comtest_strings.h" -#include "TimerDemo.h" - -/* lwIP includes. */ -#include "lwip/tcpip.h" - - -/* Priorities at which the various tasks are created. */ -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) -#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) -#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) -#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) - -/* The LED toggled by the check task. */ -#define mainCHECK_LED ( 3 ) - -/* The rate at which mainCHECK_LED will toggle when all the tasks are running -without error. See the description of the check timer in the comments at the -top of this file. */ -#define mainNO_ERROR_CHECK_TIMER_PERIOD ( 5000 / portTICK_RATE_MS ) - -/* The rate at which mainCHECK_LED will toggle when an error has been reported -by at least one task. See the description of the check timer in the comments at -the top of this file. */ -#define mainERROR_CHECK_TIMER_PERIOD ( 200 / portTICK_RATE_MS ) - -/* A block time of zero simply means "don't block". */ -#define mainDONT_BLOCK ( ( portTickType ) 0 ) - -/* The LED used by the comtest tasks. See the comtest_strings.c file for more -information. In this case an invalid LED number is provided as all four -available LEDs (LEDs 0 to 3) are already in use. */ -#define mainCOM_TEST_LED ( 4 ) - -/* Baud rate used by the comtest tasks. The baud rate used is actually fixed in -UARTLite IP when the hardware was built, but the standard serial init function -required a baud rate parameter to be provided - in this case it is just -ignored. */ -#define mainCOM_TEST_BAUD_RATE ( XPAR_RS232_UART_1_BAUDRATE ) - -/* The timer test task generates a lot of timers that all use a different -period that is a multiple of the mainTIMER_TEST_PERIOD definition. */ -#define mainTIMER_TEST_PERIOD ( 20 ) - -/*-----------------------------------------------------------*/ - -/* - * The register test tasks as described in the comments at the top of this file. - * The nature of the register test tasks means they have to be implemented in - * assembler. - */ -extern void vRegisterTest1( void *pvParameters ); -extern void vRegisterTest2( void *pvParameters ); - -/* - * Defines the 'check' timer functionality as described at the top of this file. - * This function is the callback function associated with the 'check' timer. - */ -static void vCheckTimerCallback( xTimerHandle xTimer ); - -/* - * Configure the interrupt controller, LED outputs and button inputs. - */ -static void prvSetupHardware( void ); - -/* Defined in lwIPApps.c. */ -extern void lwIPAppsInit( void *pvArguments ); - -/*-----------------------------------------------------------*/ - -/* The check timer callback function sets pcStatusMessage to a string that -indicates the last reported error that it discovered. */ -static const char *pcStatusMessage = NULL; - -/* Structures that hold the state of the various peripherals used by this demo. -These are used by the Xilinx peripheral driver API functions. In this case, -only the timer/counter is used directly within this file. */ -static XTmrCtr xTimer0Instance; - -/* The 'check' timer, as described at the top of this file. */ -static xTimerHandle xCheckTimer = NULL; - -/* Used in the run time stats calculations. */ -static unsigned long ulClocksPer10thOfAMilliSecond = 0UL; - -/* Constants used to set up the AXI timer to generate ticks. */ -static const unsigned char ucTimerCounterNumber = ( unsigned char ) 0U; -static const unsigned long ulCounterReloadValue = ( ( XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / configTICK_RATE_HZ ) - 1UL ); - -/*-----------------------------------------------------------*/ - -int main( void ) -{ - /*************************************************************************** - This project includes a lot of demo and test tasks and timers, and is - therefore comprehensive, but complex. If you would prefer a much simpler - project to get started with, then select the 'Blinky' build configuration - within the SDK Eclipse IDE. - ***************************************************************************/ - - /* Configure the interrupt controller, LED outputs and button inputs. */ - prvSetupHardware(); - - xil_printf( "Hello world2. %s %u\r\n", "string", 100 ); - printf( "Hello world2. %s %u\r\n", "string", 100 ); - - /* This call creates the TCP/IP thread. */ - tcpip_init( lwIPAppsInit, NULL ); - - /* Start the reg test tasks, as described in the comments at the top of this - file. */ - xTaskCreate( vRegisterTest1, ( const signed char * const ) "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) 0, tskIDLE_PRIORITY, NULL ); - xTaskCreate( vRegisterTest2, ( const signed char * const ) "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) 0, tskIDLE_PRIORITY, NULL ); - - /* Create the standard demo tasks. */ - vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - vCreateBlockTimeTasks(); - vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); - vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); - vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); - vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); -// vStartComTestStringsTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED ); - vStartDynamicPriorityTasks(); - vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); - - /* Note - the set of standard demo tasks contains two versions of - vStartMathTasks.c. One is defined in flop.c, and uses double precision - floating point numbers and variables. The other is defined in sp_flop.c, - and uses single precision floating point numbers and variables. The - MicroBlaze floating point unit only handles single precision floating. - Therefore, to test the floating point hardware, sp_flop.c should be included - in this project. */ - vStartMathTasks( mainFLOP_TASK_PRIORITY ); - - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation. This then allows them to - ascertain whether or not the correct/expected number of tasks are running at - any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - - /* Create the 'check' timer - the timer that periodically calls the - check function as described in the comments at the top of this file. Note - that, for reasons stated in the comments within vApplicationIdleHook() - (defined in this file), the check timer is not actually started until after - the scheduler has been started. */ - xCheckTimer = xTimerCreate( ( const signed char * ) "Check timer", mainNO_ERROR_CHECK_TIMER_PERIOD, pdTRUE, ( void * ) 0, vCheckTimerCallback ); - - /* Start the scheduler running. From this point on, only tasks and - interrupts will be executing. */ - vTaskStartScheduler(); - - /* If all is well then the following line will never be reached. If - execution does reach here, then it is highly probably that the heap size - is too small for the idle and/or timer tasks to be created within - vTaskStartScheduler(). */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -static void vCheckTimerCallback( xTimerHandle xTimer ) -{ -extern unsigned long ulRegTest1CycleCount, ulRegTest2CycleCount; -static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; -static long lErrorAlreadyLatched = pdFALSE; -portTickType xExecutionRate = mainNO_ERROR_CHECK_TIMER_PERIOD; - - /* This is the callback function used by the 'check' timer, as described - in the comments at the top of this file. */ - - /* Don't overwrite any errors that have already been latched. */ - if( pcStatusMessage == NULL ) - { - /* Check the standard demo tasks are running without error. */ - if( xAreGenericQueueTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: GenQueue"; - } - else if( xAreQueuePeekTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: QueuePeek\r\n"; - } - else if( xAreBlockingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockQueue\r\n"; - } - else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: BlockTime\r\n"; - } - else if( xAreSemaphoreTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: SemTest\r\n"; - } - else if( xArePollingQueuesStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: PollQueue\r\n"; - } - else if( xIsCreateTaskStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: Death\r\n"; - } - else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - pcStatusMessage = "Error: RecMutex\r\n"; - } - else if( xAreMathsTaskStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Flop\r\n"; - } - else if( xAreComTestTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Comtest\r\n"; - } - else if( xAreDynamicPriorityTasksStillRunning() != pdPASS ) - { - pcStatusMessage = "Error: Dynamic\r\n"; - } - else if( xAreTimerDemoTasksStillRunning( xExecutionRate ) != pdTRUE ) - { - pcStatusMessage = "Error: TimerDemo"; - } - else if( ulRegTest1CycleCount == ulLastRegTest1CycleCount ) - { - /* Check the reg test tasks are still cycling. They will stop - incrementing their loop counters if they encounter an error. */ - pcStatusMessage = "Error: RegTest1\r\n"; - } - else if( ulRegTest2CycleCount == ulLastRegTest2CycleCount ) - { - pcStatusMessage = "Error: RegTest2\r\n"; - } - } - - /* Store a local copy of the current reg test loop counters. If these have - not incremented the next time this callback function is executed then the - reg test tasks have either stalled or discovered an error. */ - ulLastRegTest1CycleCount = ulRegTest1CycleCount; - ulLastRegTest2CycleCount = ulRegTest2CycleCount; - - /* Toggle the check LED to give an indication of the system status. If - the LED toggles every 5 seconds then everything is ok. A faster toggle - indicates an error. */ - vParTestToggleLED( mainCHECK_LED ); - - if( pcStatusMessage != NULL ) - { - if( lErrorAlreadyLatched == pdFALSE ) - { - /* An error has occurred, so change the period of the timer that - calls this callback function. This results in the LED toggling at - a faster rate - giving the user visual feedback that something is not - as it should be. This function is called from the context of the - timer service task so must ***not*** attempt to block while calling - this function. */ - if( xTimerChangePeriod( xTimer, mainERROR_CHECK_TIMER_PERIOD, mainDONT_BLOCK ) == pdPASS ) - { - /* If the command to change the timer period was sent to the - timer command queue successfully, then latch the fact that the - timer period has already been changed. This is just done to - prevent xTimerChangePeriod() being called on every execution of - this function once an error has been discovered. */ - lErrorAlreadyLatched = pdTRUE; - } - - /* Update the xExecutionRate variable too as the rate at which this - callback is executed has to be passed into the - xAreTimerDemoTasksStillRunning() function. */ - xExecutionRate = mainERROR_CHECK_TIMER_PERIOD; - } - } -} -/*-----------------------------------------------------------*/ - -/* This is an application defined callback function used to install the tick -interrupt handler. It is provided as an application callback because the kernel -will run on lots of different MicroBlaze and FPGA configurations - not all of -which will have the same timer peripherals defined or available. This example -uses the AXI Timer 0. If that is available on your hardware platform then this -example callback implementation should not require modification. The name of -the interrupt handler that should be installed is vPortTickISR(), which the -function below declares as an extern. */ -void vApplicationSetupTimerInterrupt( void ) -{ -portBASE_TYPE xStatus; -extern void vPortTickISR( void *pvUnused ); - - /* Initialise the timer/counter. */ - xStatus = XTmrCtr_Initialize( &xTimer0Instance, XPAR_AXI_TIMER_0_DEVICE_ID ); - - if( xStatus == XST_SUCCESS ) - { - /* Install the tick interrupt handler as the timer ISR. - *NOTE* The xPortInstallInterruptHandler() API function must be used for - this purpose. */ - xStatus = xPortInstallInterruptHandler( XPAR_INTC_0_TMRCTR_0_VEC_ID, vPortTickISR, NULL ); - } - - if( xStatus == pdPASS ) - { - /* Enable the timer interrupt in the interrupt controller. - *NOTE* The vPortEnableInterrupt() API function must be used for this - purpose. */ - vPortEnableInterrupt( XPAR_INTC_0_TMRCTR_0_VEC_ID ); - - /* Configure the timer interrupt handler. */ - XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vPortTickISR, NULL ); - - /* Set the correct period for the timer. */ - XTmrCtr_SetResetValue( &xTimer0Instance, ucTimerCounterNumber, ulCounterReloadValue ); - - /* Enable the interrupts. Auto-reload mode is used to generate a - periodic tick. Note that interrupts are disabled when this function is - called, so interrupts will not start to be processed until the first - task has started to run. */ - XTmrCtr_SetOptions( &xTimer0Instance, ucTimerCounterNumber, ( XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION ) ); - - /* Start the timer. */ - XTmrCtr_Start( &xTimer0Instance, ucTimerCounterNumber ); - } - - /* Sanity check that the function executed as expected. */ - configASSERT( ( xStatus == pdPASS ) ); -} -/*-----------------------------------------------------------*/ - -/* This is an application defined callback function used to clear whichever -interrupt was installed by the the vApplicationSetupTimerInterrupt() callback -function - in this case the interrupt generated by the AXI timer. It is -provided as an application callback because the kernel will run on lots of -different MicroBlaze and FPGA configurations - not all of which will have the -same timer peripherals defined or available. This example uses the AXI Timer 0. -If that is available on your hardware platform then this example callback -implementation should not require modification provided the example definition -of vApplicationSetupTimerInterrupt() is also not modified. */ -void vApplicationClearTimerInterrupt( void ) -{ -unsigned long ulCSR; - - /* Clear the timer interrupt */ - ulCSR = XTmrCtr_GetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0 ); - XTmrCtr_SetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0, ulCSR ); -} -/*-----------------------------------------------------------*/ - -void vApplicationMallocFailedHook( void ) -{ - /* vApplicationMallocFailedHook() will only be called if - configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - function that will get called if a call to pvPortMalloc() fails. - pvPortMalloc() is called internally by the kernel whenever a task, queue or - semaphore is created. It is also called by various parts of the demo - application. If heap_1.c or heap_2.c are used, then the size of the heap - available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in - FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used - to query the size of free heap space that remains (although it does not - provide information on how the remaining heap might be fragmented). */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName ) -{ - ( void ) pcTaskName; - ( void ) pxTask; - - /* vApplicationStackOverflowHook() will only be called if - configCHECK_FOR_STACK_OVERFLOW is set to either 1 or 2. The handle and name - of the offending task will be passed into the hook function via its - parameters. However, when a stack has overflowed, it is possible that the - parameters will have been corrupted, in which case the pxCurrentTCB variable - can be inspected directly. */ - taskDISABLE_INTERRUPTS(); - for( ;; ); -} -/*-----------------------------------------------------------*/ - -void vApplicationIdleHook( void ) -{ -static long lCheckTimerStarted = pdFALSE; - - /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set - to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle - task. It is essential that code added to this hook function never attempts - to block in any way (for example, call xQueueReceive() with a block time - specified, or call vTaskDelay()). If the application makes use of the - vTaskDelete() API function (as this demo application does) then it is also - important that vApplicationIdleHook() is permitted to return to its calling - function, because it is the responsibility of the idle task to clean up - memory allocated by the kernel to any task that has since been deleted. */ - - /* If the check timer has not already been started, then start it now. - Normally, the xTimerStart() API function can be called immediately after the - timer is created - how this demo application includes the timer demo tasks. - The timer demo tasks, as part of their test function, deliberately fill up - the timer command queue - meaning the check timer cannot be started until - after the scheduler has been started - at which point the timer command - queue will have been drained. */ - if( lCheckTimerStarted == pdFALSE ) - { - xTimerStart( xCheckTimer, mainDONT_BLOCK ); - lCheckTimerStarted = pdTRUE; - } -} -/*-----------------------------------------------------------*/ - -void vApplicationExceptionRegisterDump( xPortRegisterDump *xRegisterDump ) -{ - ( void ) xRegisterDump; - - /* If configINSTALL_EXCEPTION_HANDLERS is set to 1 in FreeRTOSConfig.h, then - the kernel will automatically install its own exception handlers before the - kernel is started, if the application writer has not already caused them to - be installed by calling either of the vPortExceptionsInstallHandlers() - or xPortInstallInterruptHandler() API functions before that time. The - kernels exception handler populates an xPortRegisterDump structure with - the processor state at the point that the exception was triggered - and also - includes a strings that say what the exception cause was and which task was - running at the time. The exception handler then passes the populated - xPortRegisterDump structure into vApplicationExceptionRegisterDump() to - allow the application writer to perform any debugging that may be necessary. - However, defining vApplicationExceptionRegisterDump() within the application - itself is optional. The kernel will use a default implementation if the - application writer chooses not to provide their own. */ - for( ;; ) - { - portNOP(); - } -} -/*-----------------------------------------------------------*/ - -static void prvSetupHardware( void ) -{ - taskDISABLE_INTERRUPTS(); - - /* Configure the LED outputs. */ - vParTestInitialise(); - - /* Tasks inherit the exception and cache configuration of the MicroBlaze - at the point that they are created. */ - #if MICROBLAZE_EXCEPTIONS_ENABLED == 1 - microblaze_enable_exceptions(); - #endif - - #if XPAR_MICROBLAZE_USE_ICACHE == 1 - microblaze_invalidate_icache(); - microblaze_enable_icache(); - #endif - - #if XPAR_MICROBLAZE_USE_DCACHE == 1 - microblaze_invalidate_dcache(); - microblaze_enable_dcache(); - #endif - -} -/*-----------------------------------------------------------*/ - -void vMainConfigureTimerForRunTimeStats( void ) -{ - /* How many times does the counter counter increment in 10ms? */ - ulClocksPer10thOfAMilliSecond = XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / 10000UL; -} -/*-----------------------------------------------------------*/ - -unsigned long ulMainGetRunTimeCounterValue( void ) -{ -unsigned long ulTimerCounts1, ulTimerCounts2, ulTickCount, ulReturn; - - /* NOTE: This can get called from a yield, in which case interrupts are - disabled, or from a tick ISR, in which case the effect is the same as if - interrupts were disabled. In either case, it is going to run atomically. */ - - /* The timer is in down count mode. How many clocks have passed since it - was last reloaded? */ - ulTimerCounts1 = ulCounterReloadValue - XTmrCtr_GetValue( &xTimer0Instance, ucTimerCounterNumber ); - - /* How many times has it overflowed? */ - ulTickCount = xTaskGetTickCountFromISR(); - - /* If this is being called from a yield, has the counter overflowed since - it was read? If that is the case then ulTickCounts will need incrementing - again as it will not yet have been incremented from the tick interrupt. */ - ulTimerCounts2 = ulCounterReloadValue - XTmrCtr_GetValue( &xTimer0Instance, ucTimerCounterNumber ); - if( ulTimerCounts2 < ulTimerCounts1 ) - { - /* There is a tick interrupt pending but the tick count not yet - incremented. */ - ulTickCount++; - - /* Use the second timer reading. */ - ulTimerCounts1 = ulTimerCounts2; - } - - /* Convert the tick count into tenths of a millisecond. THIS ASSUMES - configTICK_RATE_HZ is 1000! */ - ulReturn = ( ulTickCount * 10UL ); - - /* Add on the number of tenths of a millisecond that have passed since the - tick count last got updated. */ - ulReturn += ( ulTimerCounts1 / ulClocksPer10thOfAMilliSecond ); - - /* Some crude rounding. */ - if( ( ulTimerCounts1 % ulClocksPer10thOfAMilliSecond ) > ( ulClocksPer10thOfAMilliSecond >> 1UL ) ) - { - ulReturn++; - } - - return ulReturn; -} -/*-----------------------------------------------------------*/ - -char *pcMainGetTaskStatusMessage( void ) -{ -char * pcReturn; - - if( pcStatusMessage == NULL ) - { - pcReturn = ( char * ) "OK"; - } - else - { - pcReturn = ( char * ) pcStatusMessage; - } - - return pcReturn; -} - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/printf-stdarg.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/printf-stdarg.c deleted file mode 100644 index e93d97b39..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/printf-stdarg.c +++ /dev/null @@ -1,282 +0,0 @@ -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -#define putchar(c) outbyte(c) -*/ - -#include - -static void printchar(char **str, int c) -{ - extern int putchar(int c); - - if (str) { - **str = c; - ++(*str); - } - else (void)putchar(c); -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = -i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = t + '0'; - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -static int print( char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printf(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return print( &out, format, args ); -} - - -int snprintf( char *buf, unsigned int count, const char *format, ... ) -{ - va_list args; - - ( void ) count; - - va_start( args, format ); - return print( &buf, format, args ); -} - - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/serial.c b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/serial.c deleted file mode 100644 index 6bd74d3ab..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/serial.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd. - - - *************************************************************************** - * * - * FreeRTOS tutorial books are available in pdf and paperback. * - * Complete, revised, and edited pdf reference manuals are also * - * available. * - * * - * Purchasing FreeRTOS documentation will not only help you, by * - * ensuring you get running as quickly as possible and with an * - * in-depth knowledge of how to use FreeRTOS, it will also help * - * the FreeRTOS project to continue with its mission of providing * - * professional grade, cross platform, de facto standard solutions * - * for microcontrollers - completely free of charge! * - * * - * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - -/* - BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR a UARTLite peripheral. -*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "queue.h" -#include "comtest_strings.h" - -/* Library includes. */ -#include "xuartlite.h" -#include "xuartlite_l.h" - -/* Demo application includes. */ -#include "serial.h" - -/*-----------------------------------------------------------*/ - -/* Functions that are installed as the handler for interrupts that are caused by -Rx and Tx events respectively. */ -static void prvRxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount ); -static void prvTxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount ); - -/* Structure that hold the state of the UARTLite peripheral used by this demo. -This is used by the Xilinx peripheral driver API functions. */ -static XUartLite xUartLiteInstance; - -/* The queue used to hold received characters. */ -static xQueueHandle xRxedChars; - -/*-----------------------------------------------------------*/ - -xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength ) -{ -portBASE_TYPE xStatus; - - /* The standard demo header file requires a baud rate to be passed into this - function. However, in this case the baud rate is configured when the - hardware is generated, leaving the ulWantedBaud parameter redundant. */ - ( void ) ulWantedBaud; - - /* Create the queue used to hold Rx characters. */ - xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) ); - - /* If the queue was created correctly, then setup the serial port - hardware. */ - if( xRxedChars != NULL ) - { - xStatus = XUartLite_Initialize( &xUartLiteInstance, XPAR_UARTLITE_1_DEVICE_ID ); - - if( xStatus == XST_SUCCESS ) - { - /* Complete initialisation of the UART and its associated - interrupts. */ - XUartLite_ResetFifos( &xUartLiteInstance ); - - /* Install the handlers that the standard Xilinx library interrupt - service routine will call when Rx and Tx events occur - respectively. */ - XUartLite_SetRecvHandler( &xUartLiteInstance, ( XUartLite_Handler ) prvRxHandler, NULL ); - XUartLite_SetSendHandler( &xUartLiteInstance, ( XUartLite_Handler ) prvTxHandler, NULL ); - - /* Install the standard Xilinx library interrupt handler itself. - *NOTE* The xPortInstallInterruptHandler() API function must be used - for this purpose. */ - xStatus = xPortInstallInterruptHandler( XPAR_INTC_0_UARTLITE_1_VEC_ID, ( XInterruptHandler ) XUartLite_InterruptHandler, &xUartLiteInstance ); - - /* Enable the interrupt in the peripheral. */ - XUartLite_EnableIntr( xUartLiteInstance.RegBaseAddress ); - - /* Enable the interrupt in the interrupt controller. - *NOTE* The vPortEnableInterrupt() API function must be used for this - purpose. */ - vPortEnableInterrupt( XPAR_INTC_0_UARTLITE_1_VEC_ID ); - } - - configASSERT( xStatus == pdPASS ); - } - - /* This demo file only supports a single port but something must be - returned to comply with the standard demo header file. */ - return ( xComPortHandle ) 0; -} -/*-----------------------------------------------------------*/ - -portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, portTickType xBlockTime ) -{ - /* The port handle is not required as this driver only supports one port. */ - ( void ) pxPort; - - /* Get the next character from the receive queue. Return false if no - characters are available, or arrive before xBlockTime expires. */ - if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) ) - { - return pdTRUE; - } - else - { - return pdFALSE; - } -} -/*-----------------------------------------------------------*/ - -void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength ) -{ - ( void ) pxPort; - - /* Output uxStringLength bytes starting from pcString. */ - XUartLite_Send( &xUartLiteInstance, ( unsigned char * ) pcString, usStringLength ); -} -/*-----------------------------------------------------------*/ - -static void prvRxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount ) -{ -signed char cRxedChar; -portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; - - ( void ) pvUnused; - ( void ) uxByteCount; - - /* Place any received characters into the receive queue. */ - while( XUartLite_IsReceiveEmpty( xUartLiteInstance.RegBaseAddress ) == pdFALSE ) - { - cRxedChar = XUartLite_ReadReg( xUartLiteInstance.RegBaseAddress, XUL_RX_FIFO_OFFSET); - xQueueSendFromISR( xRxedChars, &cRxedChar, &xHigherPriorityTaskWoken ); - } - - /* If calling xQueueSendFromISR() caused a task to unblock, and the task - that unblocked has a priority equal to or greater than the task currently - in the Running state (the task that was interrupted), then - xHigherPriorityTaskWoken will have been set to pdTRUE internally within the - xQueueSendFromISR() API function. If xHigherPriorityTaskWoken is equal to - pdTRUE then a context switch should be requested to ensure that the - interrupt returns to the highest priority task that is able to run. */ - portYIELD_FROM_ISR( xHigherPriorityTaskWoken ); -} -/*-----------------------------------------------------------*/ - -static void prvTxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount ) -{ - ( void ) pvUnused; - ( void ) uxByteCount; - - /* Nothing to do here. The Xilinx library function takes care of the - transmission. */ - portNOP(); -} - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/README.txt b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/README.txt deleted file mode 100644 index c4d32efe3..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/README.txt +++ /dev/null @@ -1 +0,0 @@ -Empty application. Add your own sources. diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/lscript.ld b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/lscript.ld deleted file mode 100644 index 1bee3b54d..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/RTOSDemo/src/lscript.ld +++ /dev/null @@ -1,213 +0,0 @@ -/*******************************************************************/ -/* */ -/* This file is automatically generated by linker script generator.*/ -/* */ -/* Version: Xilinx EDK 13.1 EDK_O.40d */ -/* */ -/* Copyright (c) 2010 Xilinx, Inc. All rights reserved. */ -/* */ -/* Description : MicroBlaze Linker Script */ -/* */ -/*******************************************************************/ - -_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x400; -_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x10000; - -/* Define Memories in the system */ - -MEMORY -{ - microblaze_0_i_bram_ctrl_microblaze_0_d_bram_ctrl : ORIGIN = 0x00000050, LENGTH = 0x00001FB0 - MCB_DDR3_S0_AXI_BASEADDR : ORIGIN = 0xC0000000, LENGTH = 0x08000000 -} - -/* Specify the default entry point to the program */ - -ENTRY(_start) - -/* Define the sections, and where they are mapped in memory */ - -SECTIONS -{ -.vectors.reset 0x00000000 : { - *(.vectors.reset) -} - -.vectors.sw_exception 0x00000008 : { - *(.vectors.sw_exception) -} - -.vectors.interrupt 0x00000010 : { - *(.vectors.interrupt) -} - -.vectors.hw_exception 0x00000020 : { - *(.vectors.hw_exception) -} - -.text : { - *(.text) - *(.text.*) - *(.gnu.linkonce.t.*) -} > MCB_DDR3_S0_AXI_BASEADDR - -.init : { - KEEP (*(.init)) -} > MCB_DDR3_S0_AXI_BASEADDR - -.fini : { - KEEP (*(.fini)) -} > MCB_DDR3_S0_AXI_BASEADDR - -.rodata : { - __rodata_start = .; - *(.rodata) - *(.rodata.*) - *(.gnu.linkonce.r.*) - __rodata_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.sdata2 : { - . = ALIGN(8); - __sdata2_start = .; - *(.sdata2) - *(.sdata2.*) - *(.gnu.linkonce.s2.*) - . = ALIGN(8); - __sdata2_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.sbss2 : { - __sbss2_start = .; - *(.sbss2) - *(.sbss2.*) - *(.gnu.linkonce.sb2.*) - __sbss2_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.data : { - . = ALIGN(4); - __data_start = .; - *(.data) - *(.data.*) - *(.gnu.linkonce.d.*) - __data_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.got : { - *(.got) -} > MCB_DDR3_S0_AXI_BASEADDR - -.got1 : { - *(.got1) -} > MCB_DDR3_S0_AXI_BASEADDR - -.got2 : { - *(.got2) -} > MCB_DDR3_S0_AXI_BASEADDR - -.ctors : { - __CTOR_LIST__ = .; - ___CTORS_LIST___ = .; - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - __CTOR_END__ = .; - ___CTORS_END___ = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.dtors : { - __DTOR_LIST__ = .; - ___DTORS_LIST___ = .; - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - __DTOR_END__ = .; - ___DTORS_END___ = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.eh_frame : { - *(.eh_frame) -} > MCB_DDR3_S0_AXI_BASEADDR - -.jcr : { - *(.jcr) -} > MCB_DDR3_S0_AXI_BASEADDR - -.gcc_except_table : { - *(.gcc_except_table) -} > MCB_DDR3_S0_AXI_BASEADDR - -.sdata : { - . = ALIGN(8); - __sdata_start = .; - *(.sdata) - *(.sdata.*) - *(.gnu.linkonce.s.*) - __sdata_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.sbss : { - . = ALIGN(4); - __sbss_start = .; - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.sb.*) - . = ALIGN(8); - __sbss_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.tdata : { - __tdata_start = .; - *(.tdata) - *(.tdata.*) - *(.gnu.linkonce.td.*) - __tdata_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.tbss : { - __tbss_start = .; - *(.tbss) - *(.tbss.*) - *(.gnu.linkonce.tb.*) - __tbss_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.bss : { - . = ALIGN(4); - __bss_start = .; - *(.bss) - *(.bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - __bss_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -_SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 ); - -_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 ); - -/* Generate Stack and Heap definitions */ - -.heap : { - . = ALIGN(8); - _heap = .; - _heap_start = .; - . += _HEAP_SIZE; - _heap_end = .; -} > MCB_DDR3_S0_AXI_BASEADDR - -.stack : { - _stack_end = .; - . += _STACK_SIZE; - . = ALIGN(8); - _stack = .; - __stack = _stack; -} > MCB_DDR3_S0_AXI_BASEADDR - -_end = .; -} - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.cproject b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.cproject deleted file mode 100644 index 47795f51a..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.cproject +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.project b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.project deleted file mode 100644 index 0b1da0965..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.project +++ /dev/null @@ -1,77 +0,0 @@ - - - StandAloneBSP - - - HardwareWithEthernetFull - - - - org.eclipse.cdt.make.core.makeBuilder - clean,full,incremental, - - - org.eclipse.cdt.core.errorOutputParser - org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.MakeErrorParser; - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.build.arguments - - - - org.eclipse.cdt.make.core.build.command - make - - - org.eclipse.cdt.make.core.build.target.auto - all - - - org.eclipse.cdt.make.core.build.target.clean - clean - - - org.eclipse.cdt.make.core.build.target.inc - all - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.enabledIncrementalBuild - true - - - org.eclipse.cdt.make.core.environment - - - - org.eclipse.cdt.make.core.stopOnError - false - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - - com.xilinx.sdk.sw.SwProjectNature - org.eclipse.cdt.core.cnature - org.eclipse.cdt.make.core.makeNature - - diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.sdkproject b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.sdkproject deleted file mode 100644 index d75738c3f..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/.sdkproject +++ /dev/null @@ -1,3 +0,0 @@ -THIRPARTY=false -PROCESSOR=microblaze_0 -MSS_FILE=system.mss diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/Makefile b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/Makefile deleted file mode 100644 index fe2a0efc7..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile generated by Xilinx SDK. - --include libgen.options - -LIBRARIES = ${PROCESSOR}/lib/libxil.a -MSS = system.mss - -all: libs - @echo 'Finished building libraries' - -libs: $(LIBRARIES) - -$(LIBRARIES): $(MSS) - libgen -hw ${HWSPEC}\ - ${REPOSITORIES}\ - -pe ${PROCESSOR} \ - -log libgen.log \ - $(MSS) - -clean: - rm -rf ${PROCESSOR} diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.log b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.log deleted file mode 100644 index 23782cec9..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.log +++ /dev/null @@ -1,20 +0,0 @@ -Release 13.1 - libgen Xilinx EDK 13.1 Build EDK_O.40d - (nt) -Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. - -Command Line: libgen -hw ../HardwareWithEthernetFull/system.xml -lp -../../KernelAwareBSPRepository -pe microblaze_0 -log libgen.log system.mss - - -Staging source files. -Running DRCs. -Running generate. -Running post_generate. -Running include - 'make -s include "COMPILER=mb-gcc" "ARCHIVER=mb-ar" -"COMPILER_FLAGS=-mlittle-endian -mno-xl-soft-mul -mxl-barrel-shift --mxl-pattern-compare -mcpu=v8.10.a -O2 -c" "EXTRA_COMPILER_FLAGS=-g"'. - -Running libs - 'make -s libs "COMPILER=mb-gcc" "ARCHIVER=mb-ar" -"COMPILER_FLAGS=-mlittle-endian -mno-xl-soft-mul -mxl-barrel-shift --mxl-pattern-compare -mcpu=v8.10.a -O2 -c" "EXTRA_COMPILER_FLAGS=-g"'. -Running execs_generate. diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.options b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.options deleted file mode 100644 index 4dbed55bb..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/libgen.options +++ /dev/null @@ -1,3 +0,0 @@ -PROCESSOR=microblaze_0 -REPOSITORIES=-lp ../../KernelAwareBSPRepository -HWSPEC=../HardwareWithEthernetFull/system.xml diff --git a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/system.mss b/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/system.mss deleted file mode 100644 index fa0d8e0d0..000000000 --- a/Demo/MicroBlaze_Spartan-6_EthernetFull/SDKProjects/StandAloneBSP/system.mss +++ /dev/null @@ -1,93 +0,0 @@ - - PARAMETER VERSION = 2.2.0 - - -BEGIN OS - PARAMETER OS_NAME = standalone - PARAMETER OS_VER = 3.01.a - PARAMETER PROC_INSTANCE = microblaze_0 - PARAMETER STDIN = RS232_Uart_1 - PARAMETER STDOUT = RS232_Uart_1 -END - - -BEGIN PROCESSOR - PARAMETER DRIVER_NAME = cpu - PARAMETER DRIVER_VER = 1.13.a - PARAMETER HW_INSTANCE = microblaze_0 -END - - -BEGIN DRIVER - PARAMETER DRIVER_NAME = axiethernet - PARAMETER DRIVER_VER = 1.01.a - PARAMETER HW_INSTANCE = ETHERNET -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = axidma - PARAMETER DRIVER_VER = 3.00.a - PARAMETER HW_INSTANCE = ETHERNET_dma -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = gpio - PARAMETER DRIVER_VER = 3.00.a - PARAMETER HW_INSTANCE = LEDs_4Bits -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = gpio - PARAMETER DRIVER_VER = 3.00.a - PARAMETER HW_INSTANCE = Push_Buttons_4Bits -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = uartlite - PARAMETER DRIVER_VER = 2.00.a - PARAMETER HW_INSTANCE = RS232_Uart_1 -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = tmrctr - PARAMETER DRIVER_VER = 2.03.a - PARAMETER HW_INSTANCE = axi_timer_0 -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = uartlite - PARAMETER DRIVER_VER = 2.00.a - PARAMETER HW_INSTANCE = debug_module -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = bram - PARAMETER DRIVER_VER = 3.00.a - PARAMETER HW_INSTANCE = microblaze_0_d_bram_ctrl -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = bram - PARAMETER DRIVER_VER = 3.00.a - PARAMETER HW_INSTANCE = microblaze_0_i_bram_ctrl -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = intc - PARAMETER DRIVER_VER = 2.02.a - PARAMETER HW_INSTANCE = microblaze_0_intc -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = s6_ddrx - PARAMETER DRIVER_VER = 1.00.a - PARAMETER HW_INSTANCE = MCB_DDR3 -END - -BEGIN DRIVER - PARAMETER DRIVER_NAME = gpio - PARAMETER DRIVER_VER = 3.00.a - PARAMETER HW_INSTANCE = DIP_Switches_4Bits -END - - diff --git a/TraceCon/readme.txt b/TraceCon/readme.txt deleted file mode 100644 index ae78ac933..000000000 --- a/TraceCon/readme.txt +++ /dev/null @@ -1,6 +0,0 @@ -Tracecon.exe is a very simplistic utility for converting the trace data captured by the scheduler into a tab delimited text file. The text file can be opened using a spread sheet program as described on www.FreeRTOS.org. - -Tracecon should be executed from a command prompt. It looks for a file called Trace.bin in the current directory and creates a file called trace.txt. - -Use the big endian version for file captured on big endian targets. - diff --git a/TraceCon/tracecon_big_endian_untested.exe b/TraceCon/tracecon_big_endian_untested.exe deleted file mode 100644 index 3b5d0b079fcd736c7279e9982243e42f2eafa8dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35142 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 C{hyxz diff --git a/TraceCon/tracecon_little_endian.exe b/TraceCon/tracecon_little_endian.exe deleted file mode 100644 index 171e0d03b63840bc7f129ca6e75f7bd772d01064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34982 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 DbwCjQ -- 2.39.5